From ee4c6ef02c9768504b2101a2d9fae98970746bd2 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 18 Jul 2020 21:10:10 -0700 Subject: [PATCH] Do not take chunk snapshot async. --- .../level/calculators/IslandLevelCalculator.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java index c0552a9..49f2798 100644 --- a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java +++ b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java @@ -356,11 +356,9 @@ public class IslandLevelCalculator { /** * Count the blocks on the island * @param result - the CompletableFuture that should be completed when this scan is done - * @param chunk - the chunk to scan + * @param chunkSnapshot - the chunk to scan */ - private void scanAsync(CompletableFuture result, Chunk chunk) { - // Get a thread-safe snapshot of the chunk - ChunkSnapshot chunkSnapshot = chunk.getChunkSnapshot(); + private void scanAsync(CompletableFuture result, ChunkSnapshot chunkSnapshot, Chunk chunk) { for (int x = 0; x< 16; x++) { // Check if the block coordinate is inside the protection zone and if not, don't count it if (chunkSnapshot.getX() * 16 + x < island.getMinProtectedX() || chunkSnapshot.getX() * 16 + x >= island.getMinProtectedX() + island.getProtectionRange() * 2) { @@ -442,7 +440,8 @@ public class IslandLevelCalculator { } // Count blocks in chunk CompletableFuture result = new CompletableFuture<>(); - Bukkit.getScheduler().runTaskAsynchronously(BentoBox.getInstance(), () -> scanAsync(result, chunk)); + ChunkSnapshot snapshot = chunk.getChunkSnapshot(); + Bukkit.getScheduler().runTaskAsynchronously(BentoBox.getInstance(), () -> scanAsync(result, snapshot, chunk)); return result; }