From dafb59e5a8c175df4c046adf938e71c9bde9e01b Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Fri, 17 May 2024 16:45:59 +0200 Subject: [PATCH] improve chunk existing check --- .../java/com/volmit/iris/core/nms/IHeadless.java | 2 +- .../com/volmit/iris/core/nms/v1_20_R3/Headless.java | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/com/volmit/iris/core/nms/IHeadless.java b/core/src/main/java/com/volmit/iris/core/nms/IHeadless.java index 7b32a79ca..fe289a085 100644 --- a/core/src/main/java/com/volmit/iris/core/nms/IHeadless.java +++ b/core/src/main/java/com/volmit/iris/core/nms/IHeadless.java @@ -11,7 +11,7 @@ public interface IHeadless extends Closeable { void saveAll(); - @RegionCoordinates + @ChunkCoordinates boolean exists(int x, int z); @RegionCoordinates diff --git a/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/Headless.java b/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/Headless.java index 92520cdb4..4ec5f926f 100644 --- a/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/Headless.java +++ b/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/Headless.java @@ -76,7 +76,8 @@ public class Headless implements IHeadless, LevelHeightAccessor { public boolean exists(int x, int z) { if (closed) return false; try { - return storage.getRegionFile(new ChunkPos(x << 5, z << 5), true) != null; + CompoundTag tag = storage.read(new ChunkPos(x, z)); + return tag != null && !"empty".equals(tag.getString("Status")); } catch (IOException e) { return false; } @@ -137,16 +138,9 @@ public class Headless implements IHeadless, LevelHeightAccessor { @Override public void generateChunk(int x, int z) { - if (closed) return; + if (closed || exists(x, z)) return; try { var pos = new ChunkPos(x, z); - try { - CompoundTag tag = storage.read(pos); - if (tag != null && !"empty".equals(tag.getString("Status"))) { - return; - } - } catch (Throwable ignored) {} - ProtoChunk chunk = binding.createProtoChunk(pos, this); var tc = new MCATerrainChunk(chunk);