From fff574c0dd3477556fff3e5543b41f0978012755 Mon Sep 17 00:00:00 2001 From: HexedHero <6012891+HexedHero@users.noreply.github.com> Date: Sat, 26 Sep 2020 23:51:03 +0100 Subject: [PATCH] Load chunks async when regenning blocks closes #75 --- pom.xml | 37 ++++++++++++++++++- .../mmocore/manager/CustomBlockManager.java | 11 ++++-- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 813046d6..969ad011 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,27 @@ -ea -Dfile.encoding=UTF-8 + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + + io.papermc.lib + net.indyuce.mmocore.shaded.paperlib + + + + + + package + + shade + + + + @@ -66,6 +87,10 @@ sk89q-repo https://maven.enginehub.org/repo/ + + papermc + https://papermc.io/repo/repository/maven-public/ + @@ -93,19 +118,27 @@ system ${basedir}/lib/spigot.jar - + org.jetbrains annotations 19.0.0 + provided mysql mysql-connector-java 5.1.41 + provided - + + io.papermc + paperlib + 1.0.5 + compile + + com.bekvon.bukkit diff --git a/src/main/java/net/Indyuce/mmocore/manager/CustomBlockManager.java b/src/main/java/net/Indyuce/mmocore/manager/CustomBlockManager.java index 8c394fec..4a6d4fae 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/CustomBlockManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/CustomBlockManager.java @@ -16,6 +16,7 @@ import org.bukkit.block.Block; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Entity; +import io.papermc.lib.PaperLib; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.block.BlockInfo; import net.Indyuce.mmocore.api.block.BlockInfo.RegeneratingBlock; @@ -91,9 +92,13 @@ public class CustomBlockManager extends MMOManager { } private void regen(RegeneratingBlock info, boolean shutdown) { - info.getRegeneratingBlock().getBlock().place(info.getLocation(), info); - info.getLocation().getBlock().getState().update(); - if(!shutdown) active.remove(info); + Location infoLocation = info.getLocation(); + // Get the chunk and load it async if needed. + PaperLib.getChunkAtAsync(infoLocation).whenComplete((chunk, ex) -> { + info.getRegeneratingBlock().getBlock().place(infoLocation, info); + info.getLocation().getBlock().getState().update(); + if(!shutdown) active.remove(info); + }); } /*