From c4237df1ffc9b7d323fe9111df3d33150b4e9c05 Mon Sep 17 00:00:00 2001 From: Allink Date: Thu, 30 Mar 2023 17:30:01 +0100 Subject: [PATCH] Run un-forceload task on global region scheduler --- .../main/java/pw/kaboom/extras/platform/IScheduler.java | 1 + .../java/pw/kaboom/extras/platform/PlatformScheduler.java | 4 ++++ .../pw/kaboom/extras/platform/folia/FoliaScheduler.java | 8 ++++++++ .../pw/kaboom/extras/platform/paper/PaperScheduler.java | 5 +++++ .../java/pw/kaboom/extras/modules/block/BlockCheck.java | 2 +- 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/pw/kaboom/extras/platform/IScheduler.java b/common/src/main/java/pw/kaboom/extras/platform/IScheduler.java index dcd089a..e5ced8e 100644 --- a/common/src/main/java/pw/kaboom/extras/platform/IScheduler.java +++ b/common/src/main/java/pw/kaboom/extras/platform/IScheduler.java @@ -13,4 +13,5 @@ public interface IScheduler { void runSync(final Plugin plugin, final Runnable runnable); void runAsync(final Plugin plugin, final Runnable runnable); void executeOnChunk(final Plugin plugin, final Chunk chunk, final Runnable runnable); + void executeOnGlobalRegion(final Plugin plugin, final Runnable runnable); } diff --git a/common/src/main/java/pw/kaboom/extras/platform/PlatformScheduler.java b/common/src/main/java/pw/kaboom/extras/platform/PlatformScheduler.java index bb38d7f..1baf0cf 100644 --- a/common/src/main/java/pw/kaboom/extras/platform/PlatformScheduler.java +++ b/common/src/main/java/pw/kaboom/extras/platform/PlatformScheduler.java @@ -39,4 +39,8 @@ public final class PlatformScheduler { final Runnable runnable) { currentScheduler.executeOnChunk(plugin, chunk, runnable); } + + public static void executeOnGlobalRegion(final Plugin plugin, final Runnable runnable) { + currentScheduler.executeOnGlobalRegion(plugin, runnable); + } } diff --git a/folia-platform/src/main/java/pw/kaboom/extras/platform/folia/FoliaScheduler.java b/folia-platform/src/main/java/pw/kaboom/extras/platform/folia/FoliaScheduler.java index ef3fd60..aec7870 100644 --- a/folia-platform/src/main/java/pw/kaboom/extras/platform/folia/FoliaScheduler.java +++ b/folia-platform/src/main/java/pw/kaboom/extras/platform/folia/FoliaScheduler.java @@ -1,6 +1,7 @@ package pw.kaboom.extras.platform.folia; import io.papermc.paper.threadedregions.scheduler.AsyncScheduler; +import io.papermc.paper.threadedregions.scheduler.GlobalRegionScheduler; import io.papermc.paper.threadedregions.scheduler.RegionScheduler; import io.papermc.paper.threadedregions.scheduler.ScheduledTask; import org.bukkit.Bukkit; @@ -15,6 +16,8 @@ import java.util.function.Consumer; public final class FoliaScheduler implements IScheduler { private static final AsyncScheduler ASYNC_SCHEDULER = Bukkit.getAsyncScheduler(); private static final RegionScheduler REGION_SCHEDULER = Bukkit.getRegionScheduler(); + private static final GlobalRegionScheduler GLOBAL_REGION_SCHEDULER = + Bukkit.getGlobalRegionScheduler(); @Override public void runRepeating(final Plugin plugin, final Runnable runnable, @@ -48,6 +51,11 @@ public final class FoliaScheduler implements IScheduler { REGION_SCHEDULER.execute(plugin, world, chunkX, chunkZ, runnable); } + @Override + public void executeOnGlobalRegion(final Plugin plugin, final Runnable runnable) { + GLOBAL_REGION_SCHEDULER.execute(plugin, runnable); + } + private static final class FoliaTask implements Consumer { private final Runnable runnable; diff --git a/paper-platform/src/main/java/pw/kaboom/extras/platform/paper/PaperScheduler.java b/paper-platform/src/main/java/pw/kaboom/extras/platform/paper/PaperScheduler.java index d0aa6be..f82668d 100644 --- a/paper-platform/src/main/java/pw/kaboom/extras/platform/paper/PaperScheduler.java +++ b/paper-platform/src/main/java/pw/kaboom/extras/platform/paper/PaperScheduler.java @@ -45,4 +45,9 @@ public final class PaperScheduler implements IScheduler { public void executeOnChunk(final Plugin plugin, final Chunk chunk, final Runnable runnable) { BUKKIT_SCHEDULER.runTask(plugin, runnable); } + + @Override + public void executeOnGlobalRegion(final Plugin plugin, final Runnable runnable) { + BUKKIT_SCHEDULER.runTask(plugin, runnable); + } } diff --git a/src/main/java/pw/kaboom/extras/modules/block/BlockCheck.java b/src/main/java/pw/kaboom/extras/modules/block/BlockCheck.java index 5d32f84..7153815 100644 --- a/src/main/java/pw/kaboom/extras/modules/block/BlockCheck.java +++ b/src/main/java/pw/kaboom/extras/modules/block/BlockCheck.java @@ -31,7 +31,7 @@ public final class BlockCheck implements Listener { final Main plugin = JavaPlugin.getPlugin(Main.class); for (Chunk chunk : event.getChunk().getWorld().getForceLoadedChunks()) { - PlatformScheduler.executeOnChunk(plugin, chunk, () -> chunk.setForceLoaded(false)); + PlatformScheduler.executeOnGlobalRegion(plugin, () -> chunk.setForceLoaded(false)); } }