diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2021-11-17 22:18:47 +0800 |
---|---|---|
committer | Glease <4586901+Glease@users.noreply.github.com> | 2021-11-17 22:18:47 +0800 |
commit | 2419eb0491d8648cbd1aef159b897fa953ca558a (patch) | |
tree | 3f19b2a1de306ca762b168a9239c87611ab7d53d /src/main | |
parent | ccca72109fb092bd88defa47cd04f5b499417877 (diff) | |
download | GT5-Unofficial-2419eb0491d8648cbd1aef159b897fa953ca558a.tar.gz GT5-Unofficial-2419eb0491d8648cbd1aef159b897fa953ca558a.tar.bz2 GT5-Unofficial-2419eb0491d8648cbd1aef159b897fa953ca558a.zip |
Fix NPE and math bugs
Signed-off-by: Glease <4586901+Glease@users.noreply.github.com>
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/gregtech/api/util/GT_ChunkAssociatedData.java | 10 |
1 files 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<T extends GT_ChunkAssociatedData.ID public final T get(World world, int chunkX, int chunkZ) { SuperRegion region = masterMap.computeIfAbsent(world.provider.dimensionId, ignored -> 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<T extends GT_ChunkAssociatedData.ID SuperRegion region = dimData.getOrDefault(getRegionID(chunkX, chunkZ), null); if (region == null) return false; - return region.isCreated(chunkX % regionLength, chunkZ % regionLength); + return region.isCreated(Math.floorMod(chunkX, regionLength), Math.floorMod(chunkZ, regionLength)); } public void clear() { @@ -162,7 +162,9 @@ public abstract class GT_ChunkAssociatedData<T extends GT_ChunkAssociatedData.ID } public void save(World world) { - saveRegions(masterMap.get(world.provider.dimensionId).values().stream()); + Map<ChunkCoordIntPair, SuperRegion> map = masterMap.get(world.provider.dimensionId); + if (map != null) + saveRegions(map.values().stream()); } private void saveRegions(Stream<SuperRegion> stream) { |