diff options
author | Raven Szewczyk <git@eigenraven.me> | 2023-03-05 13:07:26 +0000 |
---|---|---|
committer | Raven Szewczyk <git@eigenraven.me> | 2023-03-05 13:07:26 +0000 |
commit | 95403552bf214baf23b8c0b7e26db6058017c2dd (patch) | |
tree | 4f3ada70d46c3cca0389936321c5491b68799c76 /src/main | |
parent | cb9f7ba0943b8921ab3c07bdb75e5d67c502bcbf (diff) | |
download | GT5-Unofficial-95403552bf214baf23b8c0b7e26db6058017c2dd.tar.gz GT5-Unofficial-95403552bf214baf23b8c0b7e26db6058017c2dd.tar.bz2 GT5-Unofficial-95403552bf214baf23b8c0b7e26db6058017c2dd.zip |
Attempt to fix NPE in the Chunk Save handler
Related: <https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/12694>
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/github/technus/tectech/mechanics/data/ChunkDataHandler.java | 14 |
1 files changed, 9 insertions, 5 deletions
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<IChunkMetaDataHandler> clientHandlers = new ArrayList<>(); private final ArrayList<IChunkMetaDataHandler> renderHandlers = new ArrayList<>(); - @SubscribeEvent - public void onWorldLoad(WorldEvent.Load event) { - int dim = event.world.provider.dimensionId; - dimensionWiseChunkData.computeIfAbsent(dim, m -> { + private HashMap<ChunkCoordIntPair, NBTChunk> getOrCreateDimensionWiseChunkData(int dim) { + return dimensionWiseChunkData.computeIfAbsent(dim, m -> { HashMap<ChunkCoordIntPair, NBTChunk> map = new HashMap<>(); for (Map.Entry<String, IChunkMetaDataHandler> meta : metaDataHandlerHashMap.entrySet()) { dimensionWiseMetaChunkData.get(meta.getKey()).put(dim, new ChunkHashMap(meta.getValue(), map)); @@ -43,6 +41,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<ChunkCoordIntPair, NBTChunk> dimensionData = dimensionWiseChunkData .get(event.world.provider.dimensionId); @@ -62,7 +66,7 @@ public class ChunkDataHandler { return; } int dimId = event.world.provider.dimensionId; - HashMap<ChunkCoordIntPair, NBTChunk> dimensionMemory = dimensionWiseChunkData.get(dimId); + HashMap<ChunkCoordIntPair, NBTChunk> dimensionMemory = getOrCreateDimensionWiseChunkData(dimId); ChunkCoordIntPair chunkCoordIntPair = event.getChunk().getChunkCoordIntPair(); Set<String> loadedKeys = loadedTag.func_150296_c(); NBTChunk chunkMemory = dimensionMemory.get(chunkCoordIntPair); |