1 package com.irtimaled.bbor.client.commands;
3 import com.irtimaled.bbor.client.providers.CustomBoxProvider;
4 import com.irtimaled.bbor.common.models.Coords;
5 import com.mojang.brigadier.CommandDispatcher;
6 import com.mojang.brigadier.builder.LiteralArgumentBuilder;
7 import net.minecraft.command.Commands;
8 import net.minecraft.command.ISuggestionProvider;
9 import net.minecraft.command.arguments.BlockPosArgument;
10 import net.minecraft.util.math.BlockPos;
12 public class BoxCommand {
13 private static final String COMMAND = "bbor:box";
15 public static void register(CommandDispatcher<ISuggestionProvider> commandDispatcher) {
16 LiteralArgumentBuilder command = Commands.literal(COMMAND)
17 .then(Commands.literal(ArgumentNames.ADD)
18 .then(Commands.argument(ArgumentNames.FROM, BlockPosArgument.blockPos())
19 .then(Commands.argument(ArgumentNames.TO, BlockPosArgument.blockPos())
20 .executes(context -> {
21 BlockPos from = BlockPosArgument.getBlockPos(context, ArgumentNames.FROM);
22 BlockPos to = BlockPosArgument.getBlockPos(context, ArgumentNames.TO);
23 Coords minCoords = getMinCoords(from, to);
24 Coords maxCoords = getMaxCoords(from, to);
25 CustomBoxProvider.add(minCoords, maxCoords);
27 CommandHelper.feedback(context, "bbor.commands.box.added",
28 from.getX(), from.getY(), from.getZ(),
29 to.getX(), to.getY(), to.getZ());
32 .then(Commands.literal(ArgumentNames.CLEAR)
33 .executes(context -> {
34 CustomBoxProvider.clear();
36 CommandHelper.feedback(context, "bbor.commands.box.cleared.all");
39 .then(Commands.argument(ArgumentNames.FROM, BlockPosArgument.blockPos())
40 .then(Commands.argument(ArgumentNames.TO, BlockPosArgument.blockPos())
41 .executes(context -> {
42 BlockPos from = BlockPosArgument.getBlockPos(context, ArgumentNames.FROM);
43 BlockPos to = BlockPosArgument.getBlockPos(context, ArgumentNames.TO);
44 Coords minCoords = getMinCoords(from, to);
45 Coords maxCoords = getMaxCoords(from, to);
46 boolean removed = CustomBoxProvider.remove(minCoords, maxCoords);
48 String format = removed ? "bbor.commands.box.cleared" : "bbor.commands.box.notFound";
49 CommandHelper.feedback(context, format,
50 from.getX(), from.getY(), from.getZ(),
51 to.getX(), to.getY(), to.getZ());
54 commandDispatcher.register(command);
57 private static Coords getMaxCoords(BlockPos from, BlockPos to) {
58 return new Coords(Math.max(from.getX(), to.getX()), Math.max(from.getY(), to.getY()), Math.max(from.getZ(), to.getZ()));
61 private static Coords getMinCoords(BlockPos from, BlockPos to) {
62 return new Coords(Math.min(from.getX(), to.getX()), Math.min(from.getY(), to.getY()), Math.min(from.getZ(), to.getZ()));