From 95403552bf214baf23b8c0b7e26db6058017c2dd Mon Sep 17 00:00:00 2001 From: Raven Szewczyk Date: Sun, 5 Mar 2023 13:07:26 +0000 Subject: Attempt to fix NPE in the Chunk Save handler Related: --- .../technus/tectech/mechanics/data/ChunkDataHandler.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/main/java/com/github/technus/tectech/mechanics/data/ChunkDataHandler.java b/src/main/java/com/github/technus/tectech/mechanics/data/ChunkDataHandler.java index a11e0c2329..5a70d35e10 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/data/ChunkDataHandler.java +++ b/src/main/java/com/github/technus/tectech/mechanics/data/ChunkDataHandler.java @@ -30,10 +30,8 @@ public class ChunkDataHandler { private final ArrayList clientHandlers = new ArrayList<>(); private final ArrayList renderHandlers = new ArrayList<>(); - @SubscribeEvent - public void onWorldLoad(WorldEvent.Load event) { - int dim = event.world.provider.dimensionId; - dimensionWiseChunkData.computeIfAbsent(dim, m -> { + private HashMap getOrCreateDimensionWiseChunkData(int dim) { + return dimensionWiseChunkData.computeIfAbsent(dim, m -> { HashMap map = new HashMap<>(); for (Map.Entry meta : metaDataHandlerHashMap.entrySet()) { dimensionWiseMetaChunkData.get(meta.getKey()).put(dim, new ChunkHashMap(meta.getValue(), map)); @@ -42,6 +40,12 @@ public class ChunkDataHandler { }); } + @SubscribeEvent + public void onWorldLoad(WorldEvent.Load event) { + int dim = event.world.provider.dimensionId; + getOrCreateDimensionWiseChunkData(dim); + } + @SubscribeEvent public void handleChunkSaveEvent(ChunkDataEvent.Save event) { HashMap dimensionData = dimensionWiseChunkData @@ -62,7 +66,7 @@ public class ChunkDataHandler { return; } int dimId = event.world.provider.dimensionId; - HashMap dimensionMemory = dimensionWiseChunkData.get(dimId); + HashMap dimensionMemory = getOrCreateDimensionWiseChunkData(dimId); ChunkCoordIntPair chunkCoordIntPair = event.getChunk().getChunkCoordIntPair(); Set loadedKeys = loadedTag.func_150296_c(); NBTChunk chunkMemory = dimensionMemory.get(chunkCoordIntPair); -- cgit