From 82dbf9ca951c1b78a6cbf1660eb1a2204e833e2a Mon Sep 17 00:00:00 2001 From: skippyall <121978267+skippyall@users.noreply.github.com> Date: Thu, 19 Sep 2024 10:14:28 +0200 Subject: [PATCH] Update ActionModules.java --- .../minions/module/ActionModules.java | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/skippyall/minions/module/ActionModules.java b/src/main/java/io/github/skippyall/minions/module/ActionModules.java index 9dfb43e..9722582 100644 --- a/src/main/java/io/github/skippyall/minions/module/ActionModules.java +++ b/src/main/java/io/github/skippyall/minions/module/ActionModules.java @@ -5,6 +5,7 @@ import eu.pb4.sgui.api.gui.SimpleGui; import io.github.skippyall.minions.command.CommandExecutor; import io.github.skippyall.minions.fakeplayer.EntityPlayerActionPack; import io.github.skippyall.minions.fakeplayer.MinionFakePlayer; +import io.github.skippyall.minions.input.TextInput; import net.minecraft.item.Items; import net.minecraft.screen.ScreenHandlerType; import net.minecraft.server.network.ServerPlayerEntity; @@ -15,8 +16,22 @@ public class ActionModules { minion.getMinionActionPack().start(actionType, EntityPlayerActionPack.Action.once()); } - public static void intervalExecutor(EntityPlayerActionPack.ActionType actionType, ServerPlayerEntity player, MinionFakePlayer minion) { - minion.getMinionActionPack().start(actionType, EntityPlayerActionPack.Action.interval()); + public static void executeInterval(EntityPlayerActionPack.ActionType actionType, ServerPlayerEntity player, MinionFakePlayer minion) { + TextInput.inputText(player, Text.translatable("minions.command.action.interval.enter_interval"), "1") + .thenAccept(string -> { + try { + int ticks = Integer.parseInt(string); + minion.getMinionActionPack().start(actionType, EntityPlayerActionPack.Action.interval(ticks)); + } catch (NumberFormatException ignored) {} + }); + } + + public static void executeContinuous(EntityPlayerActionPack.ActionType actionType, ServerPlayerEntity player, MinionFakePlayer minion) { + minion.getMinionActionPack().start(actionType, EntityPlayerActionPack.Action.continuous()); + } + + public static void stop(EntityPlayerActionPack.ActionType actionType, ServerPlayerEntity player, MinionFakePlayer minion) { + minion.getMinionActionPack().stop(actionType); } public static CommandExecutor detailSelectionExecutor(EntityPlayerActionPack.ActionType actionType, Text actionName) { @@ -24,11 +39,26 @@ public class ActionModules { SimpleGui gui = new SimpleGui(ScreenHandlerType.GENERIC_3X3, player, false); gui.setTitle(Text.translatable("minions.command.action.details", actionName)); - gui.setSlot(1, new GuiElementBuilder() + gui.setSlot(3, new GuiElementBuilder() .setItem(Items.COMMAND_BLOCK) .setName(Text.translatable("minions.command.action.once", actionName)) .setCallback(() -> executeOnce(actionType, player, minion)) ); + gui.setSlot(4, new GuiElementBuilder() + .setItem(Items.CHAIN_COMMAND_BLOCK) + .setName(Text.translatable("minions.command.action.interval", actionName)) + .setCallback(() -> executeInterval(actionType, player, minion)) + ); + gui.setSlot(5, new GuiElementBuilder() + .setItem(Items.REPEATING_COMMAND_BLOCK) + .setName(Text.translatable("minions.command.action.continuous", actionName)) + .setCallback(() -> executeContinuous()) + ); + gui.setSlot(7, new GuiElementBuilder() + .setItem(Items.BARRIER) + .setName(Text.translatable("minions.command.action.stop", actionName)) + .setCallback(() -> stop(actionType, player, minion)) + ); }; } }