Run un-forceload task on global region scheduler

This commit is contained in:
Allink 2023-03-30 17:30:01 +01:00
parent 20eb65c607
commit c4237df1ff
No known key found for this signature in database
5 changed files with 19 additions and 1 deletions

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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<ScheduledTask> {
private final Runnable runnable;

View file

@ -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);
}
}

View file

@ -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));
}
}