summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/net/ess3/commands/Commandspawner.java2
-rw-r--r--Essentials/src/net/ess3/listener/EssentialsEntityListener.java8
-rw-r--r--Essentials/src/net/ess3/settings/WorldOptions.java36
-rw-r--r--EssentialsProtect/src/net/ess3/protect/EssentialsProtectEntityListener.java3
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)
{