From fe83ef09755957c689f0b00117ff2421f5e885f6 Mon Sep 17 00:00:00 2001 From: MattBDev <4009945+MattBDev@users.noreply.github.com> Date: Mon, 5 Aug 2019 13:33:27 -0400 Subject: [PATCH] Get chunks asynchronously --- Bukkit/build.gradle | 10 ++++++---- .../bukkit/util/block/BukkitLocalQueue.java | 16 +++++++++++----- .../plot/util/block/BasicLocalBlockQueue.java | 17 ++++++----------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Bukkit/build.gradle b/Bukkit/build.gradle index 9d00d7b99..6946b457b 100644 --- a/Bukkit/build.gradle +++ b/Bukkit/build.gradle @@ -10,14 +10,16 @@ repositories { mavenLocal() } +apply plugin: "com.github.johnrengelman.shadow" + dependencies { implementation project(':Core') compile project(':Core') - compile 'com.destroystokyo.paper:paper-api:1.14.3-R0.1-SNAPSHOT' + compile 'com.destroystokyo.paper:paper-api:1.14.4-R0.1-SNAPSHOT' //implementation 'com.onarandombox.multiversecore:Multiverse-Core:3.0.0-SNAPSHOT' - implementation 'org.spigotmc:spigot-api:1.14.3-R0.1-SNAPSHOT' + implementation 'org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT' compile(group: 'com.sk89q.worldedit', name: 'worldedit-bukkit', version: '7.0.0') - compile "io.papermc:paperlib:1.0.1" + compile "io.papermc:paperlib:1.0.2" compile("net.milkbowl.vault:VaultAPI:1.7") { exclude module: 'bukkit' } @@ -47,7 +49,7 @@ shadowJar { include(dependency('com.squareup.okhttp3:okhttp:3.14.0')) include(dependency('com.squareup.okio:okio:2.2.2')) include(dependency('org.jetbrains.kotlin:kotlin-stdlib:1.3.30')) - include(dependency("io.papermc:paperlib:1.0.1")) + include(dependency("io.papermc:paperlib:1.0.2")) } relocate 'io.papermc.lib', 'com.github.intellectualsites.plotsquared.bukkit.paperlib' // relocate('org.mcstats', 'com.plotsquared.stats') diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/block/BukkitLocalQueue.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/block/BukkitLocalQueue.java index 5d8f53355..28bb36efa 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/block/BukkitLocalQueue.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/block/BukkitLocalQueue.java @@ -10,6 +10,7 @@ import com.github.intellectualsites.plotsquared.plot.util.block.BasicLocalBlockQ import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.world.block.BaseBlock; +import io.papermc.lib.PaperLib; import lombok.NonNull; import org.bukkit.Bukkit; import org.bukkit.Chunk; @@ -20,6 +21,7 @@ import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; import java.util.Locale; +import java.util.concurrent.ExecutionException; public class BukkitLocalQueue extends BasicLocalBlockQueue { @@ -69,7 +71,8 @@ public class BukkitLocalQueue extends BasicLocalBlockQueue { } } - @Override public final void setComponents(LocalChunk lc) { + @Override public final void setComponents(LocalChunk lc) + throws ExecutionException, InterruptedException { setBaseBlocks(lc); } @@ -77,14 +80,17 @@ public class BukkitLocalQueue extends BasicLocalBlockQueue { return Bukkit.getWorld(getWorld()); } - public Chunk getChunk(int x, int z) { - return getBukkitWorld().getChunkAt(x, z); + public Chunk getChunk(int x, int z) throws ExecutionException, InterruptedException { + return PaperLib.getChunkAtAsync(getBukkitWorld(), x, z).get(); } - public void setBaseBlocks(LocalChunk lc) { + public void setBaseBlocks(LocalChunk lc) throws ExecutionException, InterruptedException { World worldObj = Bukkit.getWorld(getWorld()); + if (worldObj == null) { + throw new NullPointerException("World cannot be null."); + } + PaperLib.getChunkAtAsync(worldObj, lc.getX(), lc.getZ(), true).get(); Chunk chunk = worldObj.getChunkAt(lc.getX(), lc.getZ()); - chunk.load(true); for (int layer = 0; layer < lc.baseblocks.length; layer++) { BaseBlock[] blocksLayer = lc.baseblocks[layer]; if (blocksLayer != null) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/BasicLocalBlockQueue.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/BasicLocalBlockQueue.java index 4ca62eb58..6993c3208 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/BasicLocalBlockQueue.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/block/BasicLocalBlockQueue.java @@ -1,19 +1,16 @@ package com.github.intellectualsites.plotsquared.plot.util.block; -import com.github.intellectualsites.plotsquared.plot.object.LegacyPlotBlock; import com.github.intellectualsites.plotsquared.plot.object.PlotBlock; import com.github.intellectualsites.plotsquared.plot.object.RunnableVal; -import com.github.intellectualsites.plotsquared.plot.object.StringPlotBlock; import com.github.intellectualsites.plotsquared.plot.util.MainUtil; import com.github.intellectualsites.plotsquared.plot.util.MathMan; import com.github.intellectualsites.plotsquared.plot.util.TaskManager; import com.sk89q.worldedit.world.block.BaseBlock; -import com.sk89q.worldedit.world.block.BlockTypes; -import com.sk89q.worldedit.world.registry.LegacyMapper; -import lombok.Getter; +import org.jetbrains.annotations.NotNull; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.concurrent.ExecutionException; public abstract class BasicLocalBlockQueue extends LocalBlockQueue { @@ -35,7 +32,8 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue { @Override public abstract PlotBlock getBlock(int x, int y, int z); - public abstract void setComponents(LocalChunk lc); + public abstract void setComponents(LocalChunk lc) + throws ExecutionException, InterruptedException; @Override public final String getWorld() { return world; @@ -62,10 +60,8 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue { return false; } - public final boolean execute(final LocalChunk lc) { - if (lc == null) { - return false; - } + public final boolean execute(@NotNull LocalChunk lc) + throws ExecutionException, InterruptedException { this.setComponents(lc); return true; } @@ -154,7 +150,6 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue { TaskManager.IMP.sync(new RunnableVal() { @Override public void run(Object value) { while (next()) { - ; } } });