From 2419eb0491d8648cbd1aef159b897fa953ca558a Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Wed, 17 Nov 2021 22:18:47 +0800 Subject: Fix NPE and math bugs Signed-off-by: Glease <4586901+Glease@users.noreply.github.com> --- src/main/java/gregtech/api/util/GT_ChunkAssociatedData.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/gregtech/api/util/GT_ChunkAssociatedData.java b/src/main/java/gregtech/api/util/GT_ChunkAssociatedData.java index b28cb429b4..bd9148b516 100644 --- a/src/main/java/gregtech/api/util/GT_ChunkAssociatedData.java +++ b/src/main/java/gregtech/api/util/GT_ChunkAssociatedData.java @@ -126,13 +126,13 @@ public abstract class GT_ChunkAssociatedData new ConcurrentHashMap<>()) .computeIfAbsent(getRegionID(chunkX, chunkZ), c -> new SuperRegion(world, c)); - return region.get(chunkX % regionLength, chunkZ % regionLength); + return region.get(Math.floorMod(chunkX, regionLength), Math.floorMod(chunkZ, regionLength)); } protected final void set(World world, int chunkX, int chunkZ, T data) { SuperRegion region = masterMap.computeIfAbsent(world.provider.dimensionId, ignored -> new ConcurrentHashMap<>()) .computeIfAbsent(getRegionID(chunkX, chunkZ), c -> new SuperRegion(world, c)); - region.set(chunkX % regionLength, chunkZ % regionLength, data); + region.set(Math.floorMod(chunkX, regionLength), Math.floorMod(chunkZ, regionLength), data); } protected final boolean isCreated(int dimId, int chunkX, int chunkZ) { @@ -142,7 +142,7 @@ public abstract class GT_ChunkAssociatedData map = masterMap.get(world.provider.dimensionId); + if (map != null) + saveRegions(map.values().stream()); } private void saveRegions(Stream stream) { -- cgit