]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/commands/BoxCommand.java
Extract shared argument names
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / commands / BoxCommand.java
1 package com.irtimaled.bbor.client.commands;
2
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;
11
12 public class BoxCommand {
13     private static final String COMMAND = "bbor:box";
14
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);
26
27                                             CommandHelper.feedback(context, "bbor.commands.box.added",
28                                                     from.getX(), from.getY(), from.getZ(),
29                                                     to.getX(), to.getY(), to.getZ());
30                                             return 0;
31                                         }))))
32                 .then(Commands.literal(ArgumentNames.CLEAR)
33                         .executes(context -> {
34                             CustomBoxProvider.clear();
35
36                             CommandHelper.feedback(context, "bbor.commands.box.cleared.all");
37                             return 0;
38                         })
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);
47
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());
52                                             return 0;
53                                         }))));
54         commandDispatcher.register(command);
55     }
56
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()));
59     }
60
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()));
63     }
64 }