From 6526f92a67892efe56ea6a8876c61b3e72329441 Mon Sep 17 00:00:00 2001 From: skippyall <> Date: Wed, 18 Sep 2024 21:21:18 +0200 Subject: [PATCH] Actually start actions --- .../skippyall/minions/command/Command.java | 7 +--- .../minions/command/CommandExecutor.java | 8 +++++ .../minions/command/SimpleCommand.java | 13 +++---- .../skippyall/minions/gui/CommandsGui.java | 3 +- .../minions/gui/ModuleInventory.java | 2 -- .../gui/ModuleInventoryScreenHandler.java | 2 +- .../minions/module/ActionModules.java | 34 +++++++++++++++++++ .../resources/data/minions/lang/en_us.json | 6 +++- 8 files changed, 55 insertions(+), 20 deletions(-) create mode 100644 src/main/java/io/github/skippyall/minions/command/CommandExecutor.java create mode 100644 src/main/java/io/github/skippyall/minions/module/ActionModules.java diff --git a/src/main/java/io/github/skippyall/minions/command/Command.java b/src/main/java/io/github/skippyall/minions/command/Command.java index 1c5bd06..29b06e6 100644 --- a/src/main/java/io/github/skippyall/minions/command/Command.java +++ b/src/main/java/io/github/skippyall/minions/command/Command.java @@ -1,15 +1,10 @@ package io.github.skippyall.minions.command; -import io.github.skippyall.minions.fakeplayer.MinionFakePlayer; import net.minecraft.item.Item; -import net.minecraft.network.packet.LoginPackets; -import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; -public interface Command { +public interface Command extends CommandExecutor { Text getName(); Text getDescription(); Item getItemRepresentation(); - - void onRun(ServerPlayerEntity player, MinionFakePlayer minion); } diff --git a/src/main/java/io/github/skippyall/minions/command/CommandExecutor.java b/src/main/java/io/github/skippyall/minions/command/CommandExecutor.java new file mode 100644 index 0000000..4ee3fd2 --- /dev/null +++ b/src/main/java/io/github/skippyall/minions/command/CommandExecutor.java @@ -0,0 +1,8 @@ +package io.github.skippyall.minions.command; + +import io.github.skippyall.minions.fakeplayer.MinionFakePlayer; +import net.minecraft.server.network.ServerPlayerEntity; + +public interface CommandExecutor { + void execute(ServerPlayerEntity player, MinionFakePlayer minion); +} diff --git a/src/main/java/io/github/skippyall/minions/command/SimpleCommand.java b/src/main/java/io/github/skippyall/minions/command/SimpleCommand.java index bd01683..9aa2f44 100644 --- a/src/main/java/io/github/skippyall/minions/command/SimpleCommand.java +++ b/src/main/java/io/github/skippyall/minions/command/SimpleCommand.java @@ -5,20 +5,17 @@ import net.minecraft.item.Item; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; -import java.util.function.BiConsumer; -import java.util.function.Consumer; - public class SimpleCommand implements Command { private final Text name; private final Text description; private final Item itemRepresentation; - private final BiConsumer onRun; + private final CommandExecutor executor; - public SimpleCommand(Text name, Text description, Item itemRepresentation, BiConsumer onRun) { + public SimpleCommand(Text name, Text description, Item itemRepresentation, CommandExecutor executor) { this.name = name; this.description = description; this.itemRepresentation = itemRepresentation; - this.onRun = onRun; + this.executor = executor; } @Override @@ -37,7 +34,7 @@ public class SimpleCommand implements Command { } @Override - public void onRun(ServerPlayerEntity player, MinionFakePlayer minion) { - onRun.accept(player, minion); + public void execute(ServerPlayerEntity player, MinionFakePlayer minion) { + executor.execute(player, minion); } } diff --git a/src/main/java/io/github/skippyall/minions/gui/CommandsGui.java b/src/main/java/io/github/skippyall/minions/gui/CommandsGui.java index f92a740..6a21271 100644 --- a/src/main/java/io/github/skippyall/minions/gui/CommandsGui.java +++ b/src/main/java/io/github/skippyall/minions/gui/CommandsGui.java @@ -5,7 +5,6 @@ import eu.pb4.sgui.api.gui.SimpleGui; import io.github.skippyall.minions.command.Command; import io.github.skippyall.minions.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.module.ModuleItem; -import net.minecraft.item.Item; import net.minecraft.screen.ScreenHandlerType; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; @@ -44,7 +43,7 @@ public class CommandsGui { .setItem(command.getItemRepresentation()) .setName(command.getName()) .addLoreLine(command.getDescription()) - .setCallback(() -> command.onRun(player, minion)) + .setCallback(() -> command.execute(player, minion)) ); } diff --git a/src/main/java/io/github/skippyall/minions/gui/ModuleInventory.java b/src/main/java/io/github/skippyall/minions/gui/ModuleInventory.java index 45f65ee..06b10c0 100644 --- a/src/main/java/io/github/skippyall/minions/gui/ModuleInventory.java +++ b/src/main/java/io/github/skippyall/minions/gui/ModuleInventory.java @@ -4,13 +4,11 @@ import io.github.skippyall.minions.command.Command; import io.github.skippyall.minions.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.module.ModuleItem; import io.github.skippyall.minions.program.block.CodeBlock; -import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventories; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.registry.RegistryWrapper; -import net.minecraft.screen.GenericContainerScreenHandler; import net.minecraft.screen.SimpleNamedScreenHandlerFactory; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; diff --git a/src/main/java/io/github/skippyall/minions/gui/ModuleInventoryScreenHandler.java b/src/main/java/io/github/skippyall/minions/gui/ModuleInventoryScreenHandler.java index c3bf640..691b9ee 100644 --- a/src/main/java/io/github/skippyall/minions/gui/ModuleInventoryScreenHandler.java +++ b/src/main/java/io/github/skippyall/minions/gui/ModuleInventoryScreenHandler.java @@ -52,7 +52,7 @@ public class ModuleInventoryScreenHandler extends ScreenHandler { @Override public ItemStack quickMove(PlayerEntity player, int slot) { ItemStack itemStack = ItemStack.EMPTY; - Slot slot2 = (Slot)this.slots.get(slot); + Slot slot2 = this.slots.get(slot); if (slot2 != null && slot2.hasStack()) { ItemStack itemStack2 = slot2.getStack(); itemStack = itemStack2.copy(); diff --git a/src/main/java/io/github/skippyall/minions/module/ActionModules.java b/src/main/java/io/github/skippyall/minions/module/ActionModules.java new file mode 100644 index 0000000..9dfb43e --- /dev/null +++ b/src/main/java/io/github/skippyall/minions/module/ActionModules.java @@ -0,0 +1,34 @@ +package io.github.skippyall.minions.module; + +import eu.pb4.sgui.api.elements.GuiElementBuilder; +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 net.minecraft.item.Items; +import net.minecraft.screen.ScreenHandlerType; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.text.Text; + +public class ActionModules { + public static void executeOnce(EntityPlayerActionPack.ActionType actionType, ServerPlayerEntity player, MinionFakePlayer minion) { + 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 CommandExecutor detailSelectionExecutor(EntityPlayerActionPack.ActionType actionType, Text actionName) { + return (player, minion) -> { + SimpleGui gui = new SimpleGui(ScreenHandlerType.GENERIC_3X3, player, false); + gui.setTitle(Text.translatable("minions.command.action.details", actionName)); + + gui.setSlot(1, new GuiElementBuilder() + .setItem(Items.COMMAND_BLOCK) + .setName(Text.translatable("minions.command.action.once", actionName)) + .setCallback(() -> executeOnce(actionType, player, minion)) + ); + }; + } +} diff --git a/src/main/resources/data/minions/lang/en_us.json b/src/main/resources/data/minions/lang/en_us.json index d7cf7b3..8323ec4 100644 --- a/src/main/resources/data/minions/lang/en_us.json +++ b/src/main/resources/data/minions/lang/en_us.json @@ -6,5 +6,9 @@ "minions.gui.inventory.title": "%s's Inventory", "minions.gui.module_commands.title": "Commands", "minions.gui.commands.title": "%s's Commands", - "minions.gui.modules.title": "%s's Modules" + "minions.gui.modules.title": "%s's Modules", + "minions.command.action.details": "Set how to %s", + "minions.command.action.once": "%s once", + "minions.command.action.continuous": "%s continuously", + "minions.command.action.interval": "%s every x seconds" } \ No newline at end of file