48 lines
1.4 KiB
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());
|
|
}
|
|
}
|
|
|
|
}
|