diff --git a/src/main/java/net/minecraft/server/EntityEgg.java b/src/main/java/net/minecraft/server/EntityEgg.java index 3cf3c43ee0..5459af4df0 100644 --- a/src/main/java/net/minecraft/server/EntityEgg.java +++ b/src/main/java/net/minecraft/server/EntityEgg.java @@ -249,12 +249,8 @@ public class EntityEgg extends Entity { break; } - // The world we're spawning in accepts this creature - boolean isAnimal = entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal; - if ((isAnimal && this.world.allowAnimals) || (!isAnimal && this.world.allowMonsters)) { - entity.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, 0.0F); - this.world.addEntity(entity, SpawnReason.EGG); - } + entity.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, 0.0F); + this.world.addEntity(entity, SpawnReason.EGG); // CraftBukkit end } } diff --git a/src/main/java/net/minecraft/server/TileEntityMobSpawner.java b/src/main/java/net/minecraft/server/TileEntityMobSpawner.java index a7704187a8..c40e65bdc4 100644 --- a/src/main/java/net/minecraft/server/TileEntityMobSpawner.java +++ b/src/main/java/net/minecraft/server/TileEntityMobSpawner.java @@ -54,13 +54,6 @@ public class TileEntityMobSpawner extends TileEntity { return; } - // CraftBukkit start - The world we're spawning in accepts this creature - boolean isAnimal = entityliving instanceof EntityAnimal || entityliving instanceof EntityWaterAnimal; - if ((isAnimal && !this.world.allowAnimals) || (!isAnimal && !this.world.allowMonsters)) { - return; - } - // CraftBukkit end - int j = this.world.a(entityliving.getClass(), AxisAlignedBB.b((double) this.x, (double) this.y, (double) this.z, (double) (this.x + 1), (double) (this.y + 1), (double) (this.z + 1)).b(8.0D, 4.0D, 8.0D)).size(); if (j >= 6) { diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 4814f90d65..f4cf254d88 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -839,6 +839,13 @@ public class World implements IBlockAccess { // CraftBukkit start if (entity instanceof EntityLiving && !(entity instanceof EntityPlayer)) { + boolean isAnimal = entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal; + boolean isMonster = entity instanceof EntityMonster || entity instanceof EntityGhast || entity instanceof EntitySlime; + + if (spawnReason == SpawnReason.NATURAL || spawnReason == SpawnReason.SPAWNER || spawnReason == SpawnReason.BED || spawnReason == SpawnReason.EGG) { + if (isAnimal && !allowAnimals || isMonster && !allowMonsters) return false; + } + CreatureSpawnEvent event = CraftEventFactory.callCreatureSpawnEvent((EntityLiving) entity, spawnReason); if (event.isCancelled()) {