--- a/net/minecraft/server/MobSpawnerAbstract.java +++ b/net/minecraft/server/MobSpawnerAbstract.java @@ -4,6 +4,8 @@ import java.util.Iterator; import java.util.List; +import org.bukkit.event.entity.CreatureSpawnEvent; // CraftBukkit + public abstract class MobSpawnerAbstract { public int spawnDelay = 20; @@ -24,6 +26,11 @@ public String getMobName() { if (this.i() == null) { + // CraftBukkit start - fix NPE + if (this.mobName == null) { + this.mobName = "Pig"; + } + // CraftBukkit end if (this.mobName != null && this.mobName.equals("Minecart")) { this.mobName = "MinecartRideable"; } @@ -129,7 +136,7 @@ entity.f(nbttagcompound); if (entity.world != null && flag) { - entity.world.addEntity(entity); + entity.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit } NBTTagCompound nbttagcompound1; @@ -154,7 +161,7 @@ entity2.f(nbttagcompound2); entity2.setPositionRotation(entity1.locX, entity1.locY, entity1.locZ, entity1.yaw, entity1.pitch); if (entity.world != null && flag) { - entity.world.addEntity(entity2); + entity.world.addEntity(entity2, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit } entity1.mount(entity2); @@ -167,7 +174,7 @@ ((EntityInsentient) entity).prepare(entity.world.E(new BlockPosition(entity)), (GroupDataEntity) null); } - entity.world.addEntity(entity); + entity.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit } return entity;