diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java index 52f9323e60..3ae2e830d7 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java @@ -69,7 +69,7 @@ public final class SpawnerCreature { EnumCreatureType enumcreaturetype = aenumcreaturetype[j1]; // CraftBukkit start - use per-world spawn limits - int limit = 0; + int limit = enumcreaturetype.b(); switch (enumcreaturetype) { case MONSTER: limit = worldserver.getWorld().getMonsterSpawnLimit(); @@ -80,6 +80,9 @@ public final class SpawnerCreature { case WATER_CREATURE: limit = worldserver.getWorld().getWaterAnimalSpawnLimit(); break; + case AMBIENT: + limit = worldserver.getWorld().getAmbientSpawnLimit(); + break; } if (limit == 0) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 33bdc1220f..94b2c76086 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -155,6 +155,7 @@ public final class CraftServer implements Server { private int monsterSpawn = -1; private int animalSpawn = -1; private int waterAnimalSpawn = -1; + private int ambientSpawn = -1; private File container; private WarningState warningState = WarningState.DEFAULT; @@ -190,6 +191,7 @@ public final class CraftServer implements Server { monsterSpawn = configuration.getInt("spawn-limits.monsters"); animalSpawn = configuration.getInt("spawn-limits.animals"); waterAnimalSpawn = configuration.getInt("spawn-limits.water-animals"); + ambientSpawn = configuration.getInt("spawn-limits.ambient"); console.autosavePeriod = configuration.getInt("ticks-per.autosave"); warningState = WarningState.value(configuration.getString("settings.deprecated-verbose")); @@ -526,6 +528,7 @@ public final class CraftServer implements Server { monsterSpawn = configuration.getInt("spawn-limits.monsters"); animalSpawn = configuration.getInt("spawn-limits.animals"); waterAnimalSpawn = configuration.getInt("spawn-limits.water-animals"); + ambientSpawn = configuration.getInt("spawn-limits.ambient"); warningState = WarningState.value(configuration.getString("settings.deprecated-verbose")); console.autosavePeriod = configuration.getInt("ticks-per.autosave"); @@ -1236,6 +1239,10 @@ public final class CraftServer implements Server { return waterAnimalSpawn; } + public int getAmbientSpawnLimit() { + return ambientSpawn; + } + public boolean isPrimaryThread() { return Thread.currentThread().equals(console.primaryThread); } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 5855b5498c..45091168f4 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -57,6 +57,7 @@ public class CraftWorld implements World { private int monsterSpawn = -1; private int animalSpawn = -1; private int waterAnimalSpawn = -1; + private int ambientSpawn = -1; private static final Random rand = new Random(); @@ -1188,6 +1189,19 @@ public class CraftWorld implements World { waterAnimalSpawn = limit; } + public int getAmbientSpawnLimit() { + if (ambientSpawn < 0) { + return server.getAmbientSpawnLimit(); + } + + return ambientSpawn; + } + + public void setAmbientSpawnLimit(int limit) { + ambientSpawn = limit; + } + + public void playSound(Location loc, Sound sound, float volume, float pitch) { if (loc == null || sound == null) return; diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml index 2f587dd280..5307abe449 100644 --- a/src/main/resources/configurations/bukkit.yml +++ b/src/main/resources/configurations/bukkit.yml @@ -28,6 +28,7 @@ spawn-limits: monsters: 70 animals: 15 water-animals: 5 + ambient: 15 ticks-per: animal-spawns: 400 monster-spawns: 1