aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2023-03-05 14:20:07 +0100
committerGitHub <noreply@github.com>2023-03-05 14:20:07 +0100
commitf619df41ad277093bc9be47d39947348926c334b (patch)
tree4f3ada70d46c3cca0389936321c5491b68799c76 /src/main
parent0587be9c3c4758fe2e93feb18129c975c76509b2 (diff)
parent95403552bf214baf23b8c0b7e26db6058017c2dd (diff)
downloadGT5-Unofficial-f619df41ad277093bc9be47d39947348926c334b.tar.gz
GT5-Unofficial-f619df41ad277093bc9be47d39947348926c334b.tar.bz2
GT5-Unofficial-f619df41ad277093bc9be47d39947348926c334b.zip
Merge pull request #172 from GTNewHorizons/chunkload-npe
Attempt to fix NPE in the Chunk Save handler
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);