Search in sources :

Example 1 with Command

use of mathax.client.systems.commands.Command in project Client by MatHax.

the class SwarmCommand method build.

@Override
public void build(LiteralArgumentBuilder<CommandSource> builder) {
    builder.then(literal("disconnect").executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive())
            swarm.close();
        else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }));
    builder.then(literal("join").then(argument("ip", StringArgumentType.string()).then(argument("port", IntegerArgumentType.integer(0, 65535)).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (!swarm.isActive())
            swarm.toggle();
        swarm.close();
        swarm.mode.set(Swarm.Mode.Worker);
        swarm.worker = new SwarmWorker(StringArgumentType.getString(context, "ip"), IntegerArgumentType.getInteger(context, "port"));
        return SINGLE_SUCCESS;
    }))));
    builder.then(literal("connections").executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost()) {
                if (swarm.host.getConnectionCount() > 0) {
                    ChatUtils.info("--- Swarm Connections (highlight)(%s/%s)(default) ---", swarm.host.getConnectionCount(), swarm.host.getConnections().length);
                    for (int i = 0; i < swarm.host.getConnections().length; i++) {
                        SwarmConnection connection = swarm.host.getConnections()[i];
                        if (connection != null)
                            ChatUtils.info("(highlight)Worker %s(default): %s.", i, connection.getConnection());
                    }
                } else
                    warning("No active connections");
            } else if (swarm.isWorker())
                info("Connected to (highlight)%s", swarm.worker.getConnection());
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }));
    builder.then(literal("follow").executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput() + " " + mc.player.getEntityName());
            else if (swarm.isWorker())
                error("The follow host command must be used by the host.");
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }).then(argument("player", PlayerArgumentType.player()).executes(context -> {
        PlayerEntity playerEntity = PlayerArgumentType.getPlayer(context);
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker() && playerEntity != null)
                BaritoneAPI.getProvider().getPrimaryBaritone().getFollowProcess().follow(entity -> entity.getEntityName().equalsIgnoreCase(playerEntity.getEntityName()));
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    })));
    builder.then(literal("goto").then(argument("x", IntegerArgumentType.integer()).then(argument("z", IntegerArgumentType.integer()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker()) {
                int x = IntegerArgumentType.getInteger(context, "x");
                int z = IntegerArgumentType.getInteger(context, "z");
                BaritoneAPI.getProvider().getPrimaryBaritone().getCustomGoalProcess().setGoalAndPath(new GoalXZ(x, z));
            }
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }))));
    builder.then(literal("infinity-miner").executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker())
                runInfinityMiner();
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }).then(argument("target", BlockStateArgumentType.blockState()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker()) {
                Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock()));
                runInfinityMiner();
            }
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }).then(argument("repair", BlockStateArgumentType.blockState()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker()) {
                Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock()));
                Modules.get().get(InfinityMiner.class).repairBlocks.set(List.of(context.getArgument("repair", BlockStateArgument.class).getBlockState().getBlock()));
                runInfinityMiner();
            }
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }))).then(literal("logout").then(argument("logout", BoolArgumentType.bool()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker())
                Modules.get().get(InfinityMiner.class).logOut.set(BoolArgumentType.getBool(context, "logout"));
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }))).then(literal("walkhome").then(argument("walkhome", BoolArgumentType.bool()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker())
                Modules.get().get(InfinityMiner.class).walkHome.set(BoolArgumentType.getBool(context, "walkhome"));
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }))));
    builder.then(literal("mine").then(argument("block", BlockStateArgumentType.blockState()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker())
                swarm.worker.target = context.getArgument("block", BlockStateArgument.class).getBlockState().getBlock();
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    })));
    builder.then(literal("toggle").then(argument("module", ModuleArgumentType.module()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker()) {
                Module module = ModuleArgumentType.getModule(context, "module");
                module.toggle();
            }
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }).then(literal("on").executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker()) {
                Module m = ModuleArgumentType.getModule(context, "module");
                if (!m.isActive())
                    m.toggle();
            }
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    })).then(literal("off").executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker()) {
                Module m = ModuleArgumentType.getModule(context, "module");
                if (m.isActive())
                    m.toggle();
            }
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }))));
    builder.then(literal("scatter").executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker())
                scatter(100);
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }).then(argument("radius", IntegerArgumentType.integer()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker())
                scatter(IntegerArgumentType.getInteger(context, "radius"));
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    })));
    builder.then(literal("stop").executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker())
                BaritoneAPI.getProvider().getPrimaryBaritone().getPathingBehavior().cancelEverything();
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    }));
    builder.then(literal("exec").then(argument("command", StringArgumentType.greedyString()).executes(context -> {
        Swarm swarm = Modules.get().get(Swarm.class);
        if (swarm.isActive()) {
            if (swarm.isHost())
                swarm.host.sendMessage(context.getInput());
            else if (swarm.isWorker())
                mc.player.sendChatMessage(StringArgumentType.getString(context, "command"));
        } else
            throw SWARM_NOT_ACTIVE.create();
        return SINGLE_SUCCESS;
    })));
}
Also used : LiteralText(net.minecraft.text.LiteralText) InfinityMiner(mathax.client.systems.modules.world.InfinityMiner) Random(java.util.Random) PlayerArgumentType(mathax.client.systems.commands.arguments.PlayerArgumentType) SimpleCommandExceptionType(com.mojang.brigadier.exceptions.SimpleCommandExceptionType) SINGLE_SUCCESS(com.mojang.brigadier.Command.SINGLE_SUCCESS) BoolArgumentType(com.mojang.brigadier.arguments.BoolArgumentType) StringArgumentType(com.mojang.brigadier.arguments.StringArgumentType) GoalXZ(baritone.api.pathing.goals.GoalXZ) Command(mathax.client.systems.commands.Command) Module(mathax.client.systems.modules.Module) BlockStateArgument(net.minecraft.command.argument.BlockStateArgument) BaritoneAPI(baritone.api.BaritoneAPI) Swarm(mathax.client.systems.modules.client.swarm.Swarm) SwarmWorker(mathax.client.systems.modules.client.swarm.SwarmWorker) PlayerEntity(net.minecraft.entity.player.PlayerEntity) ChatUtils(mathax.client.utils.misc.ChatUtils) LiteralArgumentBuilder(com.mojang.brigadier.builder.LiteralArgumentBuilder) ModuleArgumentType(mathax.client.systems.commands.arguments.ModuleArgumentType) CommandSource(net.minecraft.command.CommandSource) BlockStateArgumentType(net.minecraft.command.argument.BlockStateArgumentType) List(java.util.List) Modules(mathax.client.systems.modules.Modules) SwarmConnection(mathax.client.systems.modules.client.swarm.SwarmConnection) IntegerArgumentType(com.mojang.brigadier.arguments.IntegerArgumentType) Swarm(mathax.client.systems.modules.client.swarm.Swarm) GoalXZ(baritone.api.pathing.goals.GoalXZ) BlockStateArgument(net.minecraft.command.argument.BlockStateArgument) SwarmConnection(mathax.client.systems.modules.client.swarm.SwarmConnection) InfinityMiner(mathax.client.systems.modules.world.InfinityMiner) SwarmWorker(mathax.client.systems.modules.client.swarm.SwarmWorker) Module(mathax.client.systems.modules.Module) PlayerEntity(net.minecraft.entity.player.PlayerEntity)

Aggregations

BaritoneAPI (baritone.api.BaritoneAPI)1 GoalXZ (baritone.api.pathing.goals.GoalXZ)1 SINGLE_SUCCESS (com.mojang.brigadier.Command.SINGLE_SUCCESS)1 BoolArgumentType (com.mojang.brigadier.arguments.BoolArgumentType)1 IntegerArgumentType (com.mojang.brigadier.arguments.IntegerArgumentType)1 StringArgumentType (com.mojang.brigadier.arguments.StringArgumentType)1 LiteralArgumentBuilder (com.mojang.brigadier.builder.LiteralArgumentBuilder)1 SimpleCommandExceptionType (com.mojang.brigadier.exceptions.SimpleCommandExceptionType)1 List (java.util.List)1 Random (java.util.Random)1 Command (mathax.client.systems.commands.Command)1 ModuleArgumentType (mathax.client.systems.commands.arguments.ModuleArgumentType)1 PlayerArgumentType (mathax.client.systems.commands.arguments.PlayerArgumentType)1 Module (mathax.client.systems.modules.Module)1 Modules (mathax.client.systems.modules.Modules)1 Swarm (mathax.client.systems.modules.client.swarm.Swarm)1 SwarmConnection (mathax.client.systems.modules.client.swarm.SwarmConnection)1 SwarmWorker (mathax.client.systems.modules.client.swarm.SwarmWorker)1 InfinityMiner (mathax.client.systems.modules.world.InfinityMiner)1 ChatUtils (mathax.client.utils.misc.ChatUtils)1