summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/net/ess3/Essentials.java2
-rw-r--r--Essentials/src/net/ess3/listener/EssentialsEntityListener.java29
-rw-r--r--Essentials/src/net/ess3/settings/General.java59
-rw-r--r--Essentials/src/net/ess3/settings/protect/Prevent.java10
-rw-r--r--Essentials/test/net/ess3/FakeServer.java6
-rw-r--r--EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java29
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)