From c956b264d891943cfe291d01eb7218d88eabe347 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 21 Jul 2018 16:55:04 -0400 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 0f4a894eb..995e02f1d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -156,6 +156,27 @@ public class CraftWorld implements World { } } + // Paper start - Async chunk load API + public void getChunkAtAsync(final int x, final int z, final ChunkLoadCallback callback) { + final ChunkProviderServer cps = this.world.getChunkProviderServer(); + callback.onLoad(cps.getChunkAt(x, z).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); + } + // Paper end + public Chunk getChunkAt(int x, int z) { return this.world.getChunkProviderServer().getChunkAt(x, z).bukkitChunk; } -- 2.18.0