ProjectAres/PGM/src/main/java/tc/oc/pgm/modules/MobsMatchModule.java

48 lines
1.4 KiB
Java

package tc.oc.pgm.modules;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import tc.oc.pgm.events.ListenerScope;
import tc.oc.pgm.match.Match;
import tc.oc.pgm.filters.Filter;
import tc.oc.pgm.filters.query.EntitySpawnQuery;
import tc.oc.pgm.match.MatchModule;
import tc.oc.pgm.match.MatchScope;
@ListenerScope(MatchScope.LOADED)
public class MobsMatchModule extends MatchModule implements Listener {
private final Filter mobsFilter;
public MobsMatchModule(Match match, Filter mobsFilter) {
super(match);
this.mobsFilter = mobsFilter;
}
@Override
public void load() {
super.load();
getMatch().getWorld().setSpawnFlags(false, false);
}
@Override
public void enable() {
getMatch().getWorld().setSpawnFlags(true, true);
}
@Override
public void disable() {
getMatch().getWorld().setSpawnFlags(false, false);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void checkSpawn(final CreatureSpawnEvent event) {
if(event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.CUSTOM) {
event.setCancelled(mobsFilter.query(new EntitySpawnQuery(event, event.getEntity(), event.getSpawnReason())).isDenied());
}
}
}