package luckyblock.action; import luckyblock.Main; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import java.util.LinkedList; import java.util.Queue; public class LuckyActionManager { private static class Task { String fieldName; BlockPos pos; ServerLevel level; int remainingTicks; Task(String fieldName, BlockPos pos, ServerLevel level, int remainingTicks) { this.fieldName = fieldName.replace("-", "_"); this.pos = pos; this.level = level; this.remainingTicks = remainingTicks; } } private static final Queue actions = new LinkedList<>(); public static void enqueue(String actionField, BlockPos pos, ServerLevel level, int delayTicks) { actions.offer(new Task(actionField, pos, level, delayTicks)); } public static void enqueue(String actionField, BlockPos pos, int delayTicks) { if (net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer() != null) { enqueue(actionField, pos, net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer().overworld(), delayTicks); } } @SubscribeEvent public static void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase != TickEvent.Phase.END || actions.isEmpty() || Main.settings == null) { return; } int size = actions.size(); for (int i=0;i