ProjectAres/PGM/src/main/java/tc/oc/pgm/terrain/BlockPhysicsListener.java

40 lines
1.0 KiB
Java

package tc.oc.pgm.terrain;
import javax.inject.Inject;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPhysicsEvent;
import tc.oc.pgm.events.ListenerScope;
import tc.oc.pgm.match.Match;
import tc.oc.pgm.match.MatchScope;
/**
* Freeze block physics after the match ends, and before it starts too,
* unless pre-match-physics is enabled.
*/
@ListenerScope(MatchScope.LOADED)
public class BlockPhysicsListener implements Listener {
private final TerrainOptions options;
private final Match match;
@Inject private BlockPhysicsListener(TerrainOptions options, Match match) {
this.options = options;
this.match = match;
}
private boolean allowPhysics() {
if(match.isFinished()) return false;
if(match.hasStarted()) return true;
return options.initialPhysics();
}
@EventHandler
public void onBlockPhysics(BlockPhysicsEvent event) {
if(!allowPhysics()) {
event.setCancelled(true);
}
}
}