aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorRaven Szewczyk <git@eigenraven.me>2023-03-05 13:07:26 +0000
committerRaven Szewczyk <git@eigenraven.me>2023-03-05 13:07:26 +0000
commit95403552bf214baf23b8c0b7e26db6058017c2dd (patch)
tree4f3ada70d46c3cca0389936321c5491b68799c76 /src/main
parentcb9f7ba0943b8921ab3c07bdb75e5d67c502bcbf (diff)
downloadGT5-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.java14
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);