From 8354ed6c09e960d2f48d7bc40b7c7978947524eb Mon Sep 17 00:00:00 2001 From: ketsuban_152 Date: Sat, 4 Jul 2026 21:59:07 +0900 Subject: Initial commit --- .../java/luckyblock/action/LuckyActionManager.java | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/main/java/luckyblock/action/LuckyActionManager.java (limited to 'src/main/java/luckyblock/action/LuckyActionManager.java') diff --git a/src/main/java/luckyblock/action/LuckyActionManager.java b/src/main/java/luckyblock/action/LuckyActionManager.java new file mode 100644 index 0000000..4acc2eb --- /dev/null +++ b/src/main/java/luckyblock/action/LuckyActionManager.java @@ -0,0 +1,67 @@ +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