From 45bda8ffe1e8b0f5f2cdf358acd8e92e67d5a613 Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Mon, 31 Oct 2022 17:48:53 -0500 Subject: [PATCH] NPC Natural Spawning: -Further small fixes to natural spawning. -Fixed "Skipping Entity with id " console spam. -Entity entries can now be set to null. -Fixed incorrect event bus logic. --- src/main/java/noppes/npcs/NPCSpawning.java | 15 ++++++++++++--- .../noppes/npcs/controllers/data/SpawnData.java | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) 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) {