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 com.mojang.brigadier.context.CommandContext;
7 import com.mojang.brigadier.exceptions.CommandSyntaxException;
8 import net.minecraft.server.command.CommandManager;
9 import net.minecraft.server.command.ServerCommandSource;
11 class BoxCommandBuilder {
12 static LiteralArgumentBuilder<ServerCommandSource> build(String command) {
13 return CommandManager.literal(command)
14 .then(CommandManager.literal(ArgumentNames.ADD)
15 .then(CommandManager.argument(ArgumentNames.FROM, Arguments.coords())
16 .then(CommandManager.argument(ArgumentNames.TO, Arguments.coords())
17 .executes(BoxCommandBuilder::addBox))))
18 .then(CommandManager.literal(ArgumentNames.CLEAR)
19 .executes(context -> {
20 CustomBoxProvider.clear();
22 CommandHelper.feedback(context, "bbor.commands.box.cleared.all");
25 .then(CommandManager.argument(ArgumentNames.FROM, Arguments.coords())
26 .then(CommandManager.argument(ArgumentNames.TO, Arguments.coords())
27 .executes(context -> {
28 Coords from = Arguments.getCoords(context, ArgumentNames.FROM);
29 Coords to = Arguments.getCoords(context, ArgumentNames.TO);
30 Coords minCoords = getMinCoords(from, to);
31 Coords maxCoords = getMaxCoords(from, to);
32 boolean removed = CustomBoxProvider.remove(minCoords, maxCoords);
34 String format = removed ? "bbor.commands.box.cleared" : "bbor.commands.box.notFound";
35 CommandHelper.feedback(context, format,
36 from.getX(), from.getY(), from.getZ(),
37 to.getX(), to.getY(), to.getZ());
42 private static int addBox(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
43 Coords from = Arguments.getCoords(context, ArgumentNames.FROM);
44 Coords to = Arguments.getCoords(context, ArgumentNames.TO);
45 Coords minCoords = getMinCoords(from, to);
46 Coords maxCoords = getMaxCoords(from, to);
47 CustomBoxProvider.add(minCoords, maxCoords);
49 CommandHelper.feedback(context, "bbor.commands.box.added",
50 from.getX(), from.getY(), from.getZ(),
51 to.getX(), to.getY(), to.getZ());
55 private static Coords getMaxCoords(Coords from, Coords to) {
56 return new Coords(Math.max(from.getX(), to.getX()), Math.max(from.getY(), to.getY()), Math.max(from.getZ(), to.getZ()));
59 private static Coords getMinCoords(Coords from, Coords to) {
60 return new Coords(Math.min(from.getX(), to.getX()), Math.min(from.getY(), to.getY()), Math.min(from.getZ(), to.getZ()));