diff options
author | ementalo <ementalodev@gmx.co.uk> | 2012-07-06 15:57:54 +0100 |
---|---|---|
committer | ementalo <ementalodev@gmx.co.uk> | 2012-07-06 15:57:54 +0100 |
commit | 06e6749ca3851b0ec6a1d0ab5f64d61e95d0be69 (patch) | |
tree | 717ebae95c7a0fe87b304d9ad594bfc2d0de0112 | |
parent | 30600295a62616dc4ef8321b420cebca6298eaa5 (diff) | |
download | Essentials-06e6749ca3851b0ec6a1d0ab5f64d61e95d0be69.tar Essentials-06e6749ca3851b0ec6a1d0ab5f64d61e95d0be69.tar.gz Essentials-06e6749ca3851b0ec6a1d0ab5f64d61e95d0be69.tar.lz Essentials-06e6749ca3851b0ec6a1d0ab5f64d61e95d0be69.tar.xz Essentials-06e6749ca3851b0ec6a1d0ab5f64d61e95d0be69.zip |
Move creature spawn prevention to core
6 files changed, 71 insertions, 64 deletions
diff --git a/Essentials/src/net/ess3/Essentials.java b/Essentials/src/net/ess3/Essentials.java index 566d1f743..89a1e6460 100644 --- a/Essentials/src/net/ess3/Essentials.java +++ b/Essentials/src/net/ess3/Essentials.java @@ -332,11 +332,13 @@ public class Essentials extends JavaPlugin implements IEssentials return backup; } + @Override public Metrics getMetrics() { return metrics; } + @Override public void setMetrics(Metrics metrics) { this.metrics = metrics; diff --git a/Essentials/src/net/ess3/listener/EssentialsEntityListener.java b/Essentials/src/net/ess3/listener/EssentialsEntityListener.java index 828bb3925..3d04f6e8c 100644 --- a/Essentials/src/net/ess3/listener/EssentialsEntityListener.java +++ b/Essentials/src/net/ess3/listener/EssentialsEntityListener.java @@ -11,6 +11,7 @@ import lombok.Cleanup; import org.bukkit.Material; import org.bukkit.entity.Ageable; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -172,4 +173,32 @@ public class EssentialsEntityListener implements Listener } } } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onCreatureSpawn(final CreatureSpawnEvent event) + { + if (event.getEntity().getType() == EntityType.PLAYER) + { + return; + } + final EntityType creature = event.getEntityType(); + if (creature == null) + { + return; + } + final ISettings settings = ess.getSettings(); + settings.acquireReadLock(); + try + { + final Boolean prevent = settings.getData().getGeneral().getPreventSpawn(creature); + if (prevent != null && prevent) + { + event.setCancelled(true); + } + } + finally + { + settings.unlock(); + } + } } diff --git a/Essentials/src/net/ess3/settings/General.java b/Essentials/src/net/ess3/settings/General.java index 831f2c869..2f247ec57 100644 --- a/Essentials/src/net/ess3/settings/General.java +++ b/Essentials/src/net/ess3/settings/General.java @@ -6,12 +6,24 @@ import java.util.HashMap; import java.util.Map; import lombok.Data; import lombok.EqualsAndHashCode; +import org.bukkit.entity.EntityType; @Data @EqualsAndHashCode(callSuper = false) public class General implements StorageObject { + public General() + { + //Populate creature spawn values + for (EntityType t : EntityType.values()) + { + if (t.isAlive()) + { + creatureSpawn.put(t, false); + } + } + } @Comment("Backup runs a command while saving is disabled") private Backup backup = new Backup(); @Comment("You can disable the death messages of minecraft.") @@ -19,8 +31,6 @@ public class General implements StorageObject @Comment("Turn this on, if you want to see more error messages, if something goes wrong.") private boolean debug = false; @Comment( - - { "Set the locale here, if you want to change the language of Essentials.", "If this is not set, Essentials will use the language of your computer.", @@ -28,8 +38,6 @@ public class General implements StorageObject }) private String locale; @Comment( - - { "The number of items given, if the quantity parameter is left out in /item or /give.", "If this number is below 1, the maximum stack size size is given. If oversized stacks", @@ -37,8 +45,6 @@ public class General implements StorageObject }) private int defaultStacksize = -1; @Comment( - - { "Oversized stacks are stacks that ignore the normal max stacksize.", "They can be obtained using /give and /item, if the player has essentials.oversizedstacks permission.", @@ -52,8 +58,6 @@ public class General implements StorageObject FILE, GROUPMANAGER, VAULT } @Comment( - - { "Sets the place where group options should be stored:", " FILE: Options are stored inside groups.yml in the Essentials folder", @@ -62,7 +66,6 @@ public class General implements StorageObject }) private GroupStorage groupStorage = GroupStorage.FILE; @Comment( - { "The delay, in seconds, a player can't be attacked by other players after he has been teleported by a command", "This will also prevent that the player can attack other players" @@ -73,34 +76,36 @@ public class General implements StorageObject { return teleportInvulnerability * 1000; } - - @Comment( + @Comment( { "Set to true to enable per-world permissions for teleporting between worlds with essentials commands", "This applies to /world, /back, /tp[a|o][here|all], but not warps.", "Give someone permission to teleport to a world with essentials.world.<worldname>" }) - private boolean worldTeleportPermissions = false; - private boolean worldHomePermissions = false; - - - @Comment("Prevent creatures spawning") - private Map<String, Boolean> creatureSpawn = new HashMap<String, Boolean>(); - + private boolean worldTeleportPermissions = false; + private boolean worldHomePermissions = false; + @Comment("Delay to wait before people can cause attack damage after logging in ") + private long loginAttackDelay = 0; + + public long getLoginAttackDelay() + { + return loginAttackDelay * 1000; + } + public boolean metricsEnabled = 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(creatureName); - } - - @Comment("Delay to wait before people can cause attack damage after logging in ") - private long loginAttackDelay = 0; - - public long getLoginAttackDelay() - { - return loginAttackDelay * 1000; + return creatureSpawn.get(creature); } } diff --git a/Essentials/src/net/ess3/settings/protect/Prevent.java b/Essentials/src/net/ess3/settings/protect/Prevent.java index 13710dcf2..37ab8ec1f 100644 --- a/Essentials/src/net/ess3/settings/protect/Prevent.java +++ b/Essentials/src/net/ess3/settings/protect/Prevent.java @@ -39,19 +39,9 @@ public class Prevent implements StorageObject "permission essentials.protect.entitytarget.bypass disables this" }) private boolean entitytarget = false; - @MapKeyType(EntityType.class) - @MapValueType(Boolean.class) - private Map<EntityType, Boolean> spawn = new HashMap<EntityType, Boolean>(); public Prevent() { - for (EntityType t : EntityType.values()) - { - if (t.isAlive()) - { - spawn.put(t, false); - } - } pistonPush.add(Material.GLASS); } }
\ No newline at end of file diff --git a/Essentials/test/net/ess3/FakeServer.java b/Essentials/test/net/ess3/FakeServer.java index 26437ddc0..86f5329fe 100644 --- a/Essentials/test/net/ess3/FakeServer.java +++ b/Essentials/test/net/ess3/FakeServer.java @@ -925,4 +925,10 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public String getMotd() + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java index 67df5c8c5..462205a09 100644 --- a/EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java +++ b/EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java @@ -1,5 +1,6 @@ package net.ess3.protect; +import net.ess3.api.ISettings; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -236,33 +237,7 @@ public class EssentialsProtectEntityListener implements Listener } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onCreatureSpawn(final CreatureSpawnEvent event) - { - if (event.getEntity().getType() == EntityType.PLAYER) - { - return; - } - final EntityType creature = event.getEntityType(); - if (creature == null) - { - return; - } - final ProtectHolder settings = prot.getSettings(); - settings.acquireReadLock(); - try - { - final Boolean prevent = settings.getData().getPrevent().getSpawn().get(creature); - if (prevent != null && prevent) - { - event.setCancelled(true); - } - } - finally - { - settings.unlock(); - } - } + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityTarget(final EntityTargetEvent event) |