1.21.3 + Actions!

This commit is contained in:
skippyall
2024-10-31 14:03:43 +01:00
parent 6526f92a67
commit 2f35493580
14 changed files with 165 additions and 79 deletions
@@ -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,19 @@ 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 executeContinuous(EntityPlayerActionPack.ActionType actionType, ServerPlayerEntity player, MinionFakePlayer minion) {
minion.getMinionActionPack().start(actionType, EntityPlayerActionPack.Action.continuous());
}
public static void executeInterval(EntityPlayerActionPack.ActionType actionType, ServerPlayerEntity player, MinionFakePlayer minion) {
TextInput.inputFloat(player, Text.translatable("minions.command.action.interval.enter"), "3.5").thenAccept(interval -> {
int ticks = Math.round(interval * 20);
minion.getMinionActionPack().start(actionType, EntityPlayerActionPack.Action.interval(ticks));
});
}
public static void executeStop(EntityPlayerActionPack.ActionType actionType, ServerPlayerEntity player, MinionFakePlayer minion) {
minion.getMinionActionPack().stop(actionType);
}
public static CommandExecutor detailSelectionExecutor(EntityPlayerActionPack.ActionType actionType, Text actionName) {
@@ -29,6 +41,21 @@ public class ActionModules {
.setName(Text.translatable("minions.command.action.once", actionName))
.setCallback(() -> executeOnce(actionType, player, minion))
);
gui.setSlot(3, new GuiElementBuilder()
.setItem(Items.REPEATING_COMMAND_BLOCK)
.setName(Text.translatable("minions.command.action.continuous", actionName))
.setCallback(() -> executeContinuous(actionType, player, minion))
);
gui.setSlot(5, new GuiElementBuilder()
.setItem(Items.CHAIN_COMMAND_BLOCK)
.setName(Text.translatable("minions.command.action.interval", actionName))
.setCallback(() -> executeInterval(actionType, player, minion))
);
gui.setSlot(3, new GuiElementBuilder()
.setItem(Items.BARRIER)
.setName(Text.translatable("minions.command.action.stop", actionName))
.setCallback(() -> executeStop(actionType, player, minion))
);
};
}
}
@@ -10,7 +10,11 @@ import java.util.List;
import static io.github.skippyall.minions.module.Modules.register;
public class MobSpawningModule {
public static final SimpleModuleItem MOB_SPAWNING_MODULE = register(Identifier.of(Minions.MOD_ID, "mob_spawning_module"), new SimpleModuleItem(List.of(), List.of(), Items.SPAWNER));
public static final SimpleModuleItem MOB_SPAWNING_MODULE =
register(
Identifier.of(Minions.MOD_ID, "mob_spawning_module"),
new SimpleModuleItem(List.of(), List.of(), Items.SPAWNER)
);
public static boolean canMinionSpawnMobs(MinionFakePlayer minion) {
return minion.getModuleInventory().hasModule(MOB_SPAWNING_MODULE);
@@ -6,19 +6,38 @@ import net.minecraft.item.Items;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static io.github.skippyall.minions.module.Modules.register;
public class MountModule {
public static final SimpleModuleItem MOUNT_MODULE = register(Identifier.of(Minions.MOD_ID, "mount_module"),
new SimpleModuleItem(new ArrayList<>(), Arrays.asList(
new SimpleCommand(Text.of("Mount"), Text.of("Mount the minion to the nearest mountable Entity"), Items.MINECART, (player, minion) -> minion.getMinionActionPack().mount(true)),
new SimpleCommand(Text.of("Dismount"), Text.of("Dismount the minion"), Items.BARRIER, (player, minion) -> minion.getMinionActionPack().dismount())
), Items.MINECART)
public static final SimpleCommand MOUNT_COMMAND = new SimpleCommand(
Text.of("Mount"),
Text.of("Mount the minion to the nearest mountable Entity"),
Items.MINECART,
(player, minion) -> minion.getMinionActionPack().mount(true)
);
public static void registerMe() {}
public static final SimpleCommand DISMOUNT_COMMAND = new SimpleCommand(
Text.of("Dismount"),
Text.of("Dismount the minion"),
Items.BARRIER,
(player, minion) -> minion.getMinionActionPack().dismount()
);
public static final SimpleModuleItem MOUNT_MODULE =
register(Identifier.of(Minions.MOD_ID, "mount_module"),
new SimpleModuleItem(
List.of(),
List.of(
MOUNT_COMMAND,
DISMOUNT_COMMAND
),
Items.MINECART
)
);
public static void registerMe() {
}
}
@@ -12,43 +12,45 @@ import java.util.List;
import static io.github.skippyall.minions.module.Modules.register;
public class MoveModule {
public static final SimpleCommand WALK_COMMAND = new SimpleCommand(Text.literal("Walk"), Text.literal("Walk a specific amount of blocks forward"), Items.IRON_BOOTS, (player, minion) -> {
TextInput.inputText(player, Text.literal("Amount of Blocks"), "1")
.thenAccept(string -> {
try {
float blocks = Float.parseFloat(string);
minion.moveForward(blocks);
} catch (NumberFormatException e) {
player.sendMessage(Text.literal("No valid number"));
}
});
});
public static final SimpleCommand WALK_COMMAND =
new SimpleCommand(
Text.literal("Walk"),
Text.literal("Walk a specific amount of blocks forward"),
Items.IRON_BOOTS,
(player, minion) -> TextInput.inputFloat(player, Text.literal("Amount of Blocks"), "1")
.thenAccept(minion::moveForward)
);
public static final SimpleCommand TURN_RIGHT_COMMAND = new SimpleCommand(Text.literal("Turn Right"), Text.literal("Turn a specific amount of degrees right"), Items.COMPASS, ((player, minion) -> {
TextInput.inputText(player, Text.literal("Degrees"), "90")
.thenAccept(string -> {
try {
float degrees = Float.parseFloat(string);
minion.getMinionActionPack().turn(degrees, 0);
} catch (NumberFormatException e) {
player.sendMessage(Text.literal("No valid number"));
}
});
}));
public static final SimpleCommand TURN_RIGHT_COMMAND =
new SimpleCommand(
Text.literal("Turn Right"),
Text.literal("Turn a specific amount of degrees right"),
Items.COMPASS,
(player, minion) -> TextInput.inputFloat(player, Text.literal("Degrees"), "90")
.thenAccept(degrees -> minion.getMinionActionPack().turn(degrees, 0))
);
public static final SimpleCommand TURN_LEFT_COMMAND = new SimpleCommand(Text.literal("Turn Left"), Text.literal("Turn a specific amount of degrees left"), Items.COMPASS, ((player, minion) -> {
TextInput.inputText(player, Text.literal("Degrees"), "90")
.thenAccept(string -> {
try {
float degrees = Float.parseFloat(string);
minion.getMinionActionPack().turn(-degrees, 0);
} catch (NumberFormatException e) {
player.sendMessage(Text.literal("No valid number"));
}
});
}));
public static final SimpleCommand TURN_LEFT_COMMAND =
new SimpleCommand(
Text.literal("Turn Left"),
Text.literal("Turn a specific amount of degrees left"),
Items.COMPASS,
(player, minion) -> TextInput.inputFloat(player, Text.literal("Degrees"), "90")
.thenAccept(degrees -> minion.getMinionActionPack().turn(-degrees, 0))
);
public static final SimpleModuleItem MOVE_MODULE = register(Identifier.of(Minions.MOD_ID, "move_module"), new SimpleModuleItem(List.of(), List.of(WALK_COMMAND, TURN_RIGHT_COMMAND, TURN_LEFT_COMMAND), Items.IRON_BOOTS));
public static final SimpleModuleItem MOVE_MODULE =
register(Identifier.of(Minions.MOD_ID, "move_module"),
new SimpleModuleItem(
List.of(),
List.of(
WALK_COMMAND,
TURN_RIGHT_COMMAND,
TURN_LEFT_COMMAND
),
Items.IRON_BOOTS
)
);
public static void registerMe() {}
}
@@ -5,8 +5,7 @@ import io.github.skippyall.minions.command.Command;
import io.github.skippyall.minions.program.block.CodeBlock;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.server.network.ServerPlayerEntity;
import org.jetbrains.annotations.Nullable;
import xyz.nucleoid.packettweaker.PacketContext;
import java.util.List;
@@ -33,7 +32,7 @@ public class SimpleModuleItem extends Item implements PolymerItem, ModuleItem {
}
@Override
public Item getPolymerItem(ItemStack itemStack, @Nullable ServerPlayerEntity player) {
public Item getPolymerItem(ItemStack itemStack, PacketContext context) {
return vanillaItem;
}
}