mirror of
https://github.com/PaperMC/Paper.git
synced 2025-03-23 15:29:34 +01:00
Fix CraftWorld#isChunkGenerated
The upstream implementation is returning true for non-full chunks.
This commit is contained in:
parent
35f6f25e78
commit
1218a52ac9
1 changed files with 21 additions and 4 deletions
|
@ -398,11 +398,28 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChunkGenerated(int x, int z) {
|
public boolean isChunkGenerated(int x, int z) {
|
||||||
try {
|
// Paper start - Fix this method
|
||||||
return this.isChunkLoaded(x, z) || this.world.getChunkSource().chunkMap.read(new ChunkPos(x, z)).get().isPresent();
|
if (!Bukkit.isPrimaryThread()) {
|
||||||
} catch (InterruptedException | ExecutionException ex) {
|
return java.util.concurrent.CompletableFuture.supplyAsync(() -> {
|
||||||
throw new RuntimeException(ex);
|
return CraftWorld.this.isChunkGenerated(x, z);
|
||||||
|
}, world.getChunkSource().mainThreadProcessor).join();
|
||||||
}
|
}
|
||||||
|
ChunkAccess chunk = world.getChunkSource().getChunkAtImmediately(x, z);
|
||||||
|
if (chunk != null) {
|
||||||
|
return chunk instanceof ImposterProtoChunk || chunk instanceof net.minecraft.world.level.chunk.LevelChunk;
|
||||||
|
}
|
||||||
|
final java.util.concurrent.CompletableFuture<ChunkAccess> future = new java.util.concurrent.CompletableFuture<>();
|
||||||
|
ca.spottedleaf.moonrise.common.util.ChunkSystem.scheduleChunkLoad(
|
||||||
|
this.world, x, z, false, ChunkStatus.EMPTY, true, ca.spottedleaf.concurrentutil.util.Priority.NORMAL, future::complete
|
||||||
|
);
|
||||||
|
world.getChunkSource().mainThreadProcessor.managedBlock(future::isDone);
|
||||||
|
return future.thenApply(c -> {
|
||||||
|
if (c != null) {
|
||||||
|
return c.getPersistedStatus() == ChunkStatus.FULL;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}).join();
|
||||||
|
// Paper end - Fix this method
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Reference in a new issue