Files
TuffXOptimized/src/main/java/tf/tuff/util/SchedulerCompat.java
T
2026-07-23 18:21:37 -04:00

83 lines
3.2 KiB
Java

package tf.tuff.util;
import java.util.concurrent.TimeUnit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import io.github.retrooper.packetevents.util.folia.FoliaScheduler;
import io.github.retrooper.packetevents.util.folia.TaskWrapper;
public final class SchedulerCompat {
private SchedulerCompat() {
}
public static boolean isFolia() {
return FoliaScheduler.isFolia();
}
public static void runGlobal(Plugin plugin, Runnable task) {
FoliaScheduler.getGlobalRegionScheduler().execute(plugin, task);
}
public static TaskWrapper runGlobalLater(Plugin plugin, Runnable task, long delayTicks) {
return FoliaScheduler.getGlobalRegionScheduler().runDelayed(plugin, scheduledTask -> task.run(), delayTicks);
}
public static TaskWrapper runGlobalTimer(Plugin plugin, Runnable task, long delayTicks, long periodTicks) {
return FoliaScheduler.getGlobalRegionScheduler().runAtFixedRate(plugin, scheduledTask -> task.run(), delayTicks, periodTicks);
}
public static void runAsync(Plugin plugin, Runnable task) {
FoliaScheduler.getAsyncScheduler().runNow(plugin, scheduledTask -> task.run());
}
public static TaskWrapper runAsyncLater(Plugin plugin, Runnable task, long delayTicks) {
return FoliaScheduler.getAsyncScheduler().runDelayed(plugin, scheduledTask -> task.run(), delayTicks * 50L, TimeUnit.MILLISECONDS);
}
public static void runRegion(Plugin plugin, World world, int chunkX, int chunkZ, Runnable task) {
FoliaScheduler.getRegionScheduler().execute(plugin, world, chunkX, chunkZ, task);
}
public static TaskWrapper runRegionLater(Plugin plugin, World world, int chunkX, int chunkZ, Runnable task, long delayTicks) {
return FoliaScheduler.getRegionScheduler().runDelayed(plugin, world, chunkX, chunkZ, scheduledTask -> task.run(), delayTicks);
}
public static void runRegion(Plugin plugin, Location location, Runnable task) {
FoliaScheduler.getRegionScheduler().execute(plugin, location, task);
}
public static TaskWrapper runRegionLater(Plugin plugin, Location location, Runnable task, long delayTicks) {
return FoliaScheduler.getRegionScheduler().runDelayed(plugin, location, scheduledTask -> task.run(), delayTicks);
}
public static void runEntity(Entity entity, Plugin plugin, Runnable task) {
FoliaScheduler.getEntityScheduler().execute(entity, plugin, task, () -> {
}, 0L);
}
public static TaskWrapper runEntityLater(Entity entity, Plugin plugin, Runnable task, long delayTicks) {
return FoliaScheduler.getEntityScheduler().runDelayed(entity, plugin, scheduledTask -> task.run(), () -> {
}, delayTicks);
}
public static TaskWrapper runEntityTimer(Entity entity, Plugin plugin, Runnable task, long delayTicks, long periodTicks) {
return FoliaScheduler.getEntityScheduler().runAtFixedRate(entity, plugin, scheduledTask -> task.run(), () -> {
}, delayTicks, periodTicks);
}
public static void sendPluginMessage(Plugin plugin, Player player, String channel, byte[] payload) {
if (player == null || channel == null || payload == null || !player.isOnline()) return;
runEntity(player, plugin, () -> {
if (player.isOnline()) {
player.sendPluginMessage(plugin, channel, payload);
}
});
}
}