aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2021-11-17 22:18:47 +0800
committerGlease <4586901+Glease@users.noreply.github.com>2021-11-17 22:18:47 +0800
commit2419eb0491d8648cbd1aef159b897fa953ca558a (patch)
tree3f19b2a1de306ca762b168a9239c87611ab7d53d
parentccca72109fb092bd88defa47cd04f5b499417877 (diff)
downloadGT5-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>
-rw-r--r--src/main/java/gregtech/api/util/GT_ChunkAssociatedData.java10
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) {