From f3ebf86b1e5f100f438a599997438457191ac889 Mon Sep 17 00:00:00 2001 From: luisc Date: Mon, 29 Nov 2021 21:21:49 -0600 Subject: [PATCH] Critical fix to NBT loading when loading entities into chunks from a different version. --- src/main/java/noppes/npcs/DataDisplay.java | 14 +++++++++----- .../java/noppes/npcs/entity/data/DataTimers.java | 12 +++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/noppes/npcs/DataDisplay.java b/src/main/java/noppes/npcs/DataDisplay.java index 942afc39c..f7697233f 100644 --- a/src/main/java/noppes/npcs/DataDisplay.java +++ b/src/main/java/noppes/npcs/DataDisplay.java @@ -87,7 +87,6 @@ public class DataDisplay { markovGeneratorId = new Random().nextInt(CustomNpcs.MARKOV_GENERATOR.length-1); name = getRandomName(); - } public String getRandomName() { @@ -168,11 +167,16 @@ public class DataDisplay { disableLivingAnimation = nbttagcompound.getBoolean("NoLivingAnimation"); showBossBar = nbttagcompound.getByte("BossBar"); - invisibleToList.clear(); NBTTagList tagList = (NBTTagList)nbttagcompound.getTag("InvisibleToList"); - for(int i = 0; i < tagList.tagCount(); i++){ - String nbtTagString = tagList.getStringTagAt(i); - invisibleToList.add(UUID.fromString(nbtTagString)); + if(tagList != null) { + invisibleToList.clear(); + for (int i = 0; i < tagList.tagCount(); i++) { + String nbtTagString = tagList.getStringTagAt(i); + invisibleToList.add(UUID.fromString(nbtTagString)); + } + } + else { + invisibleToList = new ArrayList<>(); } if(prevSkinType != skinType || !texture.equals(prevTexture)) diff --git a/src/main/java/noppes/npcs/entity/data/DataTimers.java b/src/main/java/noppes/npcs/entity/data/DataTimers.java index 42b05f298..34f0adb3b 100644 --- a/src/main/java/noppes/npcs/entity/data/DataTimers.java +++ b/src/main/java/noppes/npcs/entity/data/DataTimers.java @@ -76,11 +76,13 @@ public class DataTimers implements ITimers { Map timers = new HashMap(); NBTTagList list = compound.getTagList("NpcsTimers", 10); - for(int i = 0; i < list.tagCount(); ++i) { - NBTTagCompound c = list.getCompoundTagAt(i); - DataTimers.Timer t = new DataTimers.Timer(c.getInteger("ID"), c.getInteger("TimerTicks"), c.getBoolean("Repeat")); - t.ticks = c.getInteger("Ticks"); - timers.put(t.id, t); + if(list != null) { + for (int i = 0; i < list.tagCount(); ++i) { + NBTTagCompound c = list.getCompoundTagAt(i); + DataTimers.Timer t = new DataTimers.Timer(c.getInteger("ID"), c.getInteger("TimerTicks"), c.getBoolean("Repeat")); + t.ticks = c.getInteger("Ticks"); + timers.put(t.id, t); + } } this.timers = timers;