diff options
4 files changed, 39 insertions, 10 deletions
diff --git a/Essentials/src/net/ess3/commands/Commandspawner.java b/Essentials/src/net/ess3/commands/Commandspawner.java index ee8b6f1d1..f54b7fc55 100644 --- a/Essentials/src/net/ess3/commands/Commandspawner.java +++ b/Essentials/src/net/ess3/commands/Commandspawner.java @@ -42,7 +42,7 @@ public class Commandspawner extends EssentialsCommand @Cleanup ISettings settings = ess.getSettings(); settings.acquireReadLock(); - if (settings.getData().getGeneral().getPreventSpawn(mob.getType().toString().toLowerCase(Locale.ENGLISH))) + if (settings.getData().getWorldOptions(user.getWorld().getName()).getPreventSpawn(mob.getType().toString().toLowerCase(Locale.ENGLISH))) { throw new Exception(_("disabledToSpawnMob")); } diff --git a/Essentials/src/net/ess3/listener/EssentialsEntityListener.java b/Essentials/src/net/ess3/listener/EssentialsEntityListener.java index 3d04f6e8c..c3f145ea7 100644 --- a/Essentials/src/net/ess3/listener/EssentialsEntityListener.java +++ b/Essentials/src/net/ess3/listener/EssentialsEntityListener.java @@ -134,7 +134,7 @@ public class EssentialsEntityListener implements Listener event.setDeathMessage(""); } } - + @EventHandler(priority = EventPriority.LOW) public void onPlayerDeathExpEvent(final PlayerDeathEvent event) { @@ -173,7 +173,7 @@ public class EssentialsEntityListener implements Listener } } } - + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onCreatureSpawn(final CreatureSpawnEvent event) { @@ -186,11 +186,11 @@ public class EssentialsEntityListener implements Listener { return; } - final ISettings settings = ess.getSettings(); + final ISettings settings = ess.getSettings(); settings.acquireReadLock(); try { - final Boolean prevent = settings.getData().getGeneral().getPreventSpawn(creature); + final Boolean prevent = settings.getData().getWorldOptions(event.getLocation().getWorld().getName()).getPreventSpawn(creature); if (prevent != null && prevent) { event.setCancelled(true); diff --git a/Essentials/src/net/ess3/settings/WorldOptions.java b/Essentials/src/net/ess3/settings/WorldOptions.java index 4b667c25e..fe6cbaa8e 100644 --- a/Essentials/src/net/ess3/settings/WorldOptions.java +++ b/Essentials/src/net/ess3/settings/WorldOptions.java @@ -1,16 +1,48 @@ package net.ess3.settings; -import net.ess3.storage.Comment; -import net.ess3.storage.StorageObject; +import java.util.HashMap; +import java.util.Map; import lombok.Data; import lombok.EqualsAndHashCode; +import net.ess3.storage.Comment; +import net.ess3.storage.StorageObject; +import org.bukkit.entity.EntityType; @Data @EqualsAndHashCode(callSuper = false) public class WorldOptions implements StorageObject { + public WorldOptions() + { + //Populate creature spawn values + for (EntityType t : EntityType.values()) + { + if (t.isAlive()) + { + creatureSpawn.put(t, false); + } + } + } + @Comment("Disables godmode for all players if they teleport to this world.") private boolean godmode = true; + + @Comment("Prevent creatures spawning") + private Map<EntityType, Boolean> creatureSpawn = new HashMap<EntityType, Boolean>(); + + public boolean getPreventSpawn(String creatureName) + { + return getPreventSpawn(EntityType.fromName(creatureName)); + } + + public boolean getPreventSpawn(EntityType creature) + { + if (creatureSpawn == null) + { + return false; + } + return creatureSpawn.get(creature); + } } diff --git a/EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java index 462205a09..d8c882acc 100644 --- a/EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java +++ b/EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java @@ -1,6 +1,5 @@ package net.ess3.protect; -import net.ess3.api.ISettings; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -237,8 +236,6 @@ public class EssentialsProtectEntityListener implements Listener } } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityTarget(final EntityTargetEvent event) { |