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 588389cf..7d158f62 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 static void onChunkHolderDelete(final ServerLevel level, final ChunkHolde } - 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 6fa148f3..cd34147d 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 boolean handleFullStatusChange(final List changedFullStat // 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 boolean handleFullStatusChange(final List changedFullStat this.onFullChunkLoadChange(false, changedFullStatus); this.changeEntityChunkStatus(FullChunkStatus.INACCESSIBLE); ChunkSystem.onChunkNotBorder(chunk, this.vanillaChunkHolder); + ChunkSystem.onChunkPostNotBorder(chunk, this.vanillaChunkHolder); this.updateCurrentState(FullChunkStatus.INACCESSIBLE); } }