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.
This commit is contained in:
Spottedleaf
2024-06-19 10:10:31 -07:00
parent 393bd84ca8
commit 4911c5033a
2 changed files with 11 additions and 1 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}