mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-30 20:03:51 -07:00
Fix plugins calling getChunkAtAsync asynchronously
While this method has async in it's name, it's not actually meant to be called asynchronously.... It just means IT will load the chunk asynchronously without blocking main. So fix this so that if a plugin calls it async, it forces the request back to main thread.
This commit is contained in:
@@ -4182,6 +4182,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ if (immediate != null) {
|
||||
+ return CompletableFuture.completedFuture(immediate.getBukkitChunk());
|
||||
+ }
|
||||
+ } else {
|
||||
+ CompletableFuture<Chunk> future = new CompletableFuture<Chunk>();
|
||||
+ world.getMinecraftServer().execute(() -> {
|
||||
+ getChunkAtAsync(x, z, gen, urgent).whenComplete((chunk, err) -> {
|
||||
+ if (err != null) {
|
||||
+ future.completeExceptionally(err);
|
||||
+ } else {
|
||||
+ future.complete(chunk);
|
||||
+ }
|
||||
+ });
|
||||
+ });
|
||||
+ return future;
|
||||
+ }
|
||||
+
|
||||
+ return this.world.getChunkProvider().getChunkAtAsynchronously(x, z, gen, urgent).thenComposeAsync((either) -> {
|
||||
|
Reference in New Issue
Block a user