--- a/net/minecraft/server/PlayerChunk.java +++ b/net/minecraft/server/PlayerChunk.java @@ -43,7 +43,7 @@ this.fullChunkFuture = PlayerChunk.UNLOADED_CHUNK_FUTURE; this.tickingFuture = PlayerChunk.UNLOADED_CHUNK_FUTURE; this.entityTickingFuture = PlayerChunk.UNLOADED_CHUNK_FUTURE; - this.chunkSave = CompletableFuture.completedFuture((Object) null); + this.chunkSave = CompletableFuture.completedFuture(null); // CraftBukkit - decompile error this.dirtyBlocks = new short[64]; this.location = chunkcoordintpair; this.lightEngine = lightengine; @@ -76,9 +76,9 @@ @Nullable public Chunk getChunk() { CompletableFuture> completablefuture = this.a(); - Either either = (Either) completablefuture.getNow((Object) null); + Either either = (Either) completablefuture.getNow(null); // CraftBukkit - decompile error - return either == null ? null : (Chunk) either.left().orElse((Object) null); + return either == null ? null : (Chunk) either.left().orElse(null); // CraftBukkit - decompile error } public CompletableFuture getChunkSave() { @@ -201,7 +201,7 @@ CompletableFuture> completablefuture = (CompletableFuture) this.statusFutures.get(i); if (completablefuture != null) { - Either either = (Either) completablefuture.getNow((Object) null); + Either either = (Either) completablefuture.getNow(null); // CraftBukkit - decompile error if (either == null || either.left().isPresent()) { return completablefuture; @@ -213,6 +213,15 @@ this.a(completablefuture1); this.statusFutures.set(i, completablefuture1); + // CraftBukkit start + if (chunkstatus == ChunkStatus.FULL) { + completablefuture1.thenAccept((either) -> { + Chunk chunk = (Chunk) either.left().get(); + + chunk.loadCallback(); + }); + } + // CraftBukkit end return completablefuture1; } else { return completablefuture == null ? PlayerChunk.UNLOADED_CHUNK_ACCESS_FUTURE : completablefuture; @@ -294,7 +303,7 @@ if (flag2 && !flag3) { completablefuture = this.fullChunkFuture; this.fullChunkFuture = PlayerChunk.UNLOADED_CHUNK_FUTURE; - this.a(completablefuture.thenApply((either1) -> { + this.a(((CompletableFuture>) completablefuture).thenApply((either1) -> { // CraftBukkit - decompile error playerchunkmap.getClass(); return either1.ifLeft(playerchunkmap::a); }));