From 4911c5033aa944c38d2f566c0f9f204d6b790f0e Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Wed, 19 Jun 2024 10:10:31 -0700 Subject: [PATCH] Move addition to full chunk map before calling callbacks The full chunk map should mirror immediately the full chunk status, so it should be added immediately after upgrading to FULL or removed immediately before downgrading to INACCESSIBLE. --- .../moonrise/patches/chunk_system/ChunkSystem.java | 10 +++++++++- .../chunk_system/scheduling/NewChunkHolder.java | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ChunkSystem.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ChunkSystem.java index 588389c..7d158f6 100644 --- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ChunkSystem.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ChunkSystem.java @@ -80,12 +80,20 @@ public final class ChunkSystem { } - public static void onChunkBorder(final LevelChunk chunk, final ChunkHolder holder) { + public static void onChunkPreBorder(final LevelChunk chunk, final ChunkHolder holder) { ((ChunkSystemServerChunkCache)((ServerLevel)chunk.getLevel()).getChunkSource()) .moonrise$setFullChunk(chunk.getPos().x, chunk.getPos().z, chunk); } + public static void onChunkBorder(final LevelChunk chunk, final ChunkHolder holder) { + + } + public static void onChunkNotBorder(final LevelChunk chunk, final ChunkHolder holder) { + + } + + public static void onChunkPostNotBorder(final LevelChunk chunk, final ChunkHolder holder) { ((ChunkSystemServerChunkCache)((ServerLevel)chunk.getLevel()).getChunkSource()) .moonrise$setFullChunk(chunk.getPos().x, chunk.getPos().z, null); } diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java index 6fa148f..cd34147 100644 --- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java @@ -1276,6 +1276,7 @@ public final class NewChunkHolder { // state upgrade if (!current.isOrAfter(FullChunkStatus.FULL) && pending.isOrAfter(FullChunkStatus.FULL)) { this.updateCurrentState(FullChunkStatus.FULL); + ChunkSystem.onChunkPreBorder(chunk, this.vanillaChunkHolder); this.scheduler.chunkHolderManager.ensureInAutosave(this); this.changeEntityChunkStatus(FullChunkStatus.FULL); ChunkSystem.onChunkBorder(chunk, this.vanillaChunkHolder); @@ -1313,6 +1314,7 @@ public final class NewChunkHolder { this.onFullChunkLoadChange(false, changedFullStatus); this.changeEntityChunkStatus(FullChunkStatus.INACCESSIBLE); ChunkSystem.onChunkNotBorder(chunk, this.vanillaChunkHolder); + ChunkSystem.onChunkPostNotBorder(chunk, this.vanillaChunkHolder); this.updateCurrentState(FullChunkStatus.INACCESSIBLE); } }