mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-03 13:42:25 -07:00
Rework Async Chunks API in prep for merge, add utility
This adds a new Future based, Consumer<Chunk> based, and ability to control whether or not to generate to the Async Chunk API. Until Async Chunks merges, these API's are still synchronous, but this commit will allow plugins to start using the API's in use with the Async Chunks beta.
This commit is contained in:
@@ -5,7 +5,7 @@ Subject: [PATCH] Add async chunk load API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index e4c4cdb980..af977b171a 100644
|
||||
index e4c4cdb980..c2aa3917bf 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -0,0 +0,0 @@ public class CraftWorld implements World {
|
||||
@@ -13,23 +13,14 @@ index e4c4cdb980..af977b171a 100644
|
||||
}
|
||||
|
||||
+ // Paper start - Async chunk load API
|
||||
+ public void getChunkAtAsync(final int x, final int z, final ChunkLoadCallback callback) {
|
||||
+ @Override
|
||||
+ public java.util.concurrent.CompletableFuture<Chunk> getChunkAtAsync(final int x, final int z, final boolean gen) {
|
||||
+ final ChunkProviderServer cps = this.world.getChunkProviderServer();
|
||||
+ callback.onLoad(cps.getChunkAt(x, z, true, true).bukkitChunk); // TODO: Add back async variant
|
||||
+ /*cps.getChunkAt(x, z, new Runnable() {
|
||||
+ @Override
|
||||
+ public void run() {
|
||||
+ callback.onLoad(cps.getChunkAt(x, z).bukkitChunk);
|
||||
+ }
|
||||
+ });*/
|
||||
+ }
|
||||
+
|
||||
+ public void getChunkAtAsync(Block block, ChunkLoadCallback callback) {
|
||||
+ getChunkAtAsync(block.getX() >> 4, block.getZ() >> 4, callback);
|
||||
+ }
|
||||
+
|
||||
+ public void getChunkAtAsync(Location location, ChunkLoadCallback callback) {
|
||||
+ getChunkAtAsync(location.getBlockX() >> 4, location.getBlockZ() >> 4, callback);
|
||||
+ java.util.concurrent.CompletableFuture<Chunk> future = new java.util.concurrent.CompletableFuture<>();
|
||||
+ net.minecraft.server.Chunk chunk = cps.getChunkAt(x, z, true, gen);
|
||||
+ // TODO: Add back async variant
|
||||
+ future.complete(chunk != null ? chunk.bukkitChunk : null);
|
||||
+ return future;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
|
Reference in New Issue
Block a user