diff --git a/src/main/java/noppes/npcs/NPCSpawning.java b/src/main/java/noppes/npcs/NPCSpawning.java index a1af2da03..19cf27a60 100644 --- a/src/main/java/noppes/npcs/NPCSpawning.java +++ b/src/main/java/noppes/npcs/NPCSpawning.java @@ -156,6 +156,10 @@ public class NPCSpawning { for (NBTTagCompound compound : allCompoundList) { Entity entity; try { + Class oclass = (Class)EntityList.stringToClassMapping.get(compound.getString("id")); + if (oclass == null) { + continue; + } entity = EntityList.createEntityFromNBT(compound, world); } catch (Exception e) { continue; @@ -165,10 +169,15 @@ public class NPCSpawning { } } + if (entities.size() == 0) { + return false; + } + Entity spawnEntity = entities.get((int)Math.floor(Math.random()*entities.size())); - if(!(spawnEntity instanceof EntityLiving)) - return false; + if (!(spawnEntity instanceof EntityLiving)) { + return false; + } entityliving = (EntityLiving) spawnEntity; @@ -192,7 +201,7 @@ public class NPCSpawning { if (canSpawn == Result.DENY || (canSpawn == Result.DEFAULT && !canEntitySpawn(data,entityliving))) return false; - if (!EventHooks.onCNPCNaturalSpawn(data, new BlockPos(x,y,z), NPCSpawning.animalSpawn, NPCSpawning.monsterSpawn, NPCSpawning.liquidSpawn, NPCSpawning.airSpawn)) { + if (EventHooks.onCNPCNaturalSpawn(data, new BlockPos(x,y,z), NPCSpawning.animalSpawn, NPCSpawning.monsterSpawn, NPCSpawning.liquidSpawn, NPCSpawning.airSpawn)) { return false; } diff --git a/src/main/java/noppes/npcs/controllers/data/SpawnData.java b/src/main/java/noppes/npcs/controllers/data/SpawnData.java index 5ceb23f08..ac5729497 100644 --- a/src/main/java/noppes/npcs/controllers/data/SpawnData.java +++ b/src/main/java/noppes/npcs/controllers/data/SpawnData.java @@ -104,7 +104,7 @@ public class SpawnData extends WeightedRandom.Item implements INaturalSpawn { slot = 5; NBTTagCompound compound = new NBTTagCompound(); - if (!entity.getMCEntity().writeToNBTOptional(compound)) { + if (entity != null && !entity.getMCEntity().writeToNBTOptional(compound)) { throw new CustomNPCsException("Entity could not be written to NBT"); } else { switch (slot) {