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.builder.LiteralArgumentBuilder;
6 import net.minecraft.command.CommandSource;
7 import net.minecraft.command.Commands;
8 import net.minecraft.command.arguments.BlockPosArgument;
9 import net.minecraft.util.math.BlockPos;
11 class BoxCommandBuilder {
12 static LiteralArgumentBuilder<CommandSource> build(String command) {
13 return Commands.literal(command)
14 .then(Commands.literal(ArgumentNames.ADD)
15 .then(Commands.argument(ArgumentNames.FROM, BlockPosArgument.blockPos())
16 .then(Commands.argument(ArgumentNames.TO, BlockPosArgument.blockPos())
17 .executes(context -> {
18 BlockPos from = BlockPosArgument.getBlockPos(context, ArgumentNames.FROM);
19 BlockPos to = BlockPosArgument.getBlockPos(context, ArgumentNames.TO);
20 Coords minCoords = getMinCoords(from, to);
21 Coords maxCoords = getMaxCoords(from, to);
22 CustomBoxProvider.add(minCoords, maxCoords);
24 CommandHelper.feedback(context, "bbor.commands.box.added",
25 from.getX(), from.getY(), from.getZ(),
26 to.getX(), to.getY(), to.getZ());
29 .then(Commands.literal(ArgumentNames.CLEAR)
30 .executes(context -> {
31 CustomBoxProvider.clear();
33 CommandHelper.feedback(context, "bbor.commands.box.cleared.all");
36 .then(Commands.argument(ArgumentNames.FROM, BlockPosArgument.blockPos())
37 .then(Commands.argument(ArgumentNames.TO, BlockPosArgument.blockPos())
38 .executes(context -> {
39 BlockPos from = BlockPosArgument.getBlockPos(context, ArgumentNames.FROM);
40 BlockPos to = BlockPosArgument.getBlockPos(context, ArgumentNames.TO);
41 Coords minCoords = getMinCoords(from, to);
42 Coords maxCoords = getMaxCoords(from, to);
43 boolean removed = CustomBoxProvider.remove(minCoords, maxCoords);
45 String format = removed ? "bbor.commands.box.cleared" : "bbor.commands.box.notFound";
46 CommandHelper.feedback(context, format,
47 from.getX(), from.getY(), from.getZ(),
48 to.getX(), to.getY(), to.getZ());
53 private static Coords getMaxCoords(BlockPos from, BlockPos to) {
54 return new Coords(Math.max(from.getX(), to.getX()), Math.max(from.getY(), to.getY()), Math.max(from.getZ(), to.getZ()));
57 private static Coords getMinCoords(BlockPos from, BlockPos to) {
58 return new Coords(Math.min(from.getX(), to.getX()), Math.min(from.getY(), to.getY()), Math.min(from.getZ(), to.getZ()));