package wtf.hak.survivalfabric.utils; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class Scheduler { private static Scheduler INSTANCE; private final Map tasks = new ConcurrentHashMap<>(); public Scheduler() { ServerTickEvents.END_SERVER_TICK.register((server) -> { for(Runnable task : tasks.keySet()) { long delay = tasks.get(task); if(delay <= 0) { task.run(); tasks.remove(task); } else { tasks.put(task, delay-1); } } }); } public void scheduleTask(Runnable task) { scheduleTask(task, 0L); } public void scheduleTask(Runnable task, long delay) { tasks.put(task, delay); } public static Scheduler get() { return INSTANCE; } public static Scheduler initialize() { INSTANCE = new Scheduler(); return INSTANCE; } }