From de8f1ba2aa6f044348cedb98f300f7ffff482e47 Mon Sep 17 00:00:00 2001 From: Colton Kennedy Date: Thu, 22 Jun 2023 18:52:39 -0400 Subject: [PATCH] Reworked some of the Command system. Added Autofill for command parameters. Cleaned up some code and variable names. --- src/main/java/net/aoba/cmd/Command.java | 31 +++++++- .../java/net/aoba/cmd/CommandManager.java | 77 ++++++++++++------- .../java/net/aoba/cmd/commands/CmdAimbot.java | 10 ++- .../net/aoba/cmd/commands/CmdAutoEat.java | 10 ++- .../net/aoba/cmd/commands/CmdChestESP.java | 10 ++- .../net/aoba/cmd/commands/CmdEntityESP.java | 10 ++- .../net/aoba/cmd/commands/CmdFastBreak.java | 10 ++- .../java/net/aoba/cmd/commands/CmdFly.java | 21 +++-- .../net/aoba/cmd/commands/CmdFreecam.java | 10 ++- .../net/aoba/cmd/commands/CmdFullbright.java | 10 ++- .../java/net/aoba/cmd/commands/CmdHelp.java | 58 +++++++++----- .../java/net/aoba/cmd/commands/CmdHud.java | 10 ++- .../net/aoba/cmd/commands/CmdItemESP.java | 10 ++- .../java/net/aoba/cmd/commands/CmdNoFall.java | 10 ++- .../net/aoba/cmd/commands/CmdNoSlowdown.java | 10 ++- .../java/net/aoba/cmd/commands/CmdNoclip.java | 10 ++- .../java/net/aoba/cmd/commands/CmdNuker.java | 10 ++- .../java/net/aoba/cmd/commands/CmdPOV.java | 10 ++- .../net/aoba/cmd/commands/CmdPlayerESP.java | 10 ++- .../java/net/aoba/cmd/commands/CmdReach.java | 10 ++- .../java/net/aoba/cmd/commands/CmdSpam.java | 10 ++- .../java/net/aoba/cmd/commands/CmdSprint.java | 10 ++- .../java/net/aoba/cmd/commands/CmdStep.java | 10 ++- .../java/net/aoba/cmd/commands/CmdTP.java | 10 ++- .../net/aoba/cmd/commands/CmdTileBreaker.java | 10 ++- .../java/net/aoba/cmd/commands/CmdTimer.java | 10 ++- .../java/net/aoba/cmd/commands/CmdTracer.java | 10 ++- .../java/net/aoba/cmd/commands/CmdXRay.java | 58 +++++++++++--- .../aoba/mixin/ChatInputSuggestorMixin.java | 66 ++++++++++------ 29 files changed, 404 insertions(+), 137 deletions(-) diff --git a/src/main/java/net/aoba/cmd/Command.java b/src/main/java/net/aoba/cmd/Command.java index 876d480..0be5892 100644 --- a/src/main/java/net/aoba/cmd/Command.java +++ b/src/main/java/net/aoba/cmd/Command.java @@ -21,18 +21,29 @@ */ package net.aoba.cmd; +import java.util.Objects; + import net.aoba.AobaClient; import net.minecraft.client.MinecraftClient; public abstract class Command { - protected String description; + protected final String name; + protected final String description; + protected static final MinecraftClient mc = AobaClient.MC; + public Command(String name, String description) { + this.name = Objects.requireNonNull(name); + this.description = Objects.requireNonNull(description); + } + /** - * Runs the intended action of the command. - * @param parameters The parameters being passed. + * Gets the name of the command. + * @return The name of the command. */ - public abstract void command(String[] parameters); + public String getName() { + return this.name; + } /** * Gets the description of the command. @@ -41,4 +52,16 @@ public abstract class Command { public String getDescription() { return this.description; } + + /** + * Runs the intended action of the command. + * @param parameters The parameters being passed. + */ + public abstract void runCommand(String[] parameters); + + /** + * Gets the next Autocorrect suggestions given the last typed parameter. + * @param previousParameter + */ + public abstract String[] getAutocorrect(String previousParameter); } diff --git a/src/main/java/net/aoba/cmd/CommandManager.java b/src/main/java/net/aoba/cmd/CommandManager.java index 6758c88..a0fcccf 100644 --- a/src/main/java/net/aoba/cmd/CommandManager.java +++ b/src/main/java/net/aoba/cmd/CommandManager.java @@ -21,7 +21,10 @@ */ package net.aoba.cmd; +import java.lang.reflect.Field; import java.util.HashMap; + +import net.aoba.Aoba; import net.aoba.cmd.commands.*; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; @@ -29,36 +32,51 @@ public class CommandManager { private HashMap commands = new HashMap(); + public final CmdAimbot aimbot = new CmdAimbot(); + public final CmdAutoEat autoeat = new CmdAutoEat(); + public final CmdChestESP chestesp = new CmdChestESP(); + public final CmdEntityESP entityesp = new CmdEntityESP(); + public final CmdFastBreak fastbreak = new CmdFastBreak(); + public final CmdFly fly = new CmdFly(); + public final CmdFreecam freecam = new CmdFreecam(); + public final CmdFullbright fullbright = new CmdFullbright(); + public final CmdHelp help = new CmdHelp(); + public final CmdHud hud = new CmdHud(); + public final CmdItemESP itemesp = new CmdItemESP(); + public final CmdNoclip noclip = new CmdNoclip(); + public final CmdNoFall nofall = new CmdNoFall(); + public final CmdNoSlowdown noslowdown = new CmdNoSlowdown(); + public final CmdNuker nuker = new CmdNuker(); + public final CmdPlayerESP playeresp = new CmdPlayerESP(); + public final CmdPOV pov = new CmdPOV(); + public final CmdReach reach = new CmdReach(); + public final CmdSpam spam = new CmdSpam(); + public final CmdSprint sprint = new CmdSprint(); + public final CmdStep step = new CmdStep(); + public final CmdTileBreaker tilebreaker = new CmdTileBreaker(); + public final CmdTimer timer = new CmdTimer(); + public final CmdTP tp = new CmdTP(); + public final CmdTracer tracer = new CmdTracer(); + public final CmdXRay xray = new CmdXRay(); + /** * Constructor for Command Manager. Initializes all commands. */ public CommandManager() { - commands.put("aimbot", new CmdAimbot()); - commands.put("autoeat", new CmdAutoEat()); - commands.put("chestesp", new CmdChestESP()); - commands.put("entityesp", new CmdEntityESP()); - commands.put("fastbreak", new CmdFastBreak()); - commands.put("fly", new CmdFly()); - commands.put("freecam", new CmdFreecam()); - commands.put("fullbright", new CmdFullbright()); - commands.put("help", new CmdHelp()); - commands.put("hud", new CmdHud()); - commands.put("itemesp", new CmdItemESP()); - commands.put("noclip", new CmdNoclip()); - commands.put("nofall", new CmdNoFall()); - commands.put("noslowdown", new CmdNoSlowdown()); - commands.put("nuker", new CmdNuker()); - commands.put("playeresp", new CmdPlayerESP()); - commands.put("pov", new CmdPOV()); - commands.put("reach", new CmdReach()); - commands.put("spam", new CmdSpam()); - commands.put("sprint", new CmdSprint()); - commands.put("step", new CmdStep()); - commands.put("tilebreaker", new CmdTileBreaker()); - commands.put("timer", new CmdTimer()); - commands.put("tp", new CmdTP()); - commands.put("tracer", new CmdTracer()); - commands.put("xray", new CmdXRay()); + try + { + for(Field field : CommandManager.class.getDeclaredFields()) + { + if (!Command.class.isAssignableFrom(field.getType())) + continue; + Command cmd = (Command)field.get(this); + commands.put(cmd.getName(), cmd); + } + }catch(Exception e) + { + System.out.println("Error initializing Aoba commands."); + System.out.println(e.getStackTrace().toString()); + } } /** @@ -94,6 +112,7 @@ public int getNumOfCommands() { */ public void command(String[] commandIn) { try { + // Get the command from the user's message. (Index 0 is Username) Command command = commands.get(commandIn[1]); @@ -110,10 +129,10 @@ public void command(String[] commandIn) { } // Runs the command. - command.command(parameterList); + command.runCommand(parameterList); } } catch (Exception e) { - sendChatMessage("Error occured whilst running command. Please try again."); + System.out.println("Error occured whilst running command. Please try again."); e.printStackTrace(); } } @@ -124,6 +143,6 @@ public void command(String[] commandIn) { */ public static void sendChatMessage(String message) { MinecraftClient mc = MinecraftClient.getInstance(); - mc.inGameHud.getChatHud().addMessage(Text.of("§5[Aoba] §f" + message)); + mc.inGameHud.getChatHud().addMessage(Text.of("§5[Aoba]§f " + message)); } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdAimbot.java b/src/main/java/net/aoba/cmd/commands/CmdAimbot.java index 3982536..dfe38ee 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdAimbot.java +++ b/src/main/java/net/aoba/cmd/commands/CmdAimbot.java @@ -26,11 +26,11 @@ public class CmdAimbot extends Command { public CmdAimbot() { - this.description = "Allows the player to see chest locations through ESP"; + super("aimbot", "Allows the player to see chest locations through ESP"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Aimbot module = (Aimbot) Aoba.getInstance().moduleManager.aimbot; if (parameters.length == 2) { switch (parameters[0]) { @@ -54,4 +54,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba aimbot [toggle/mode] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdAutoEat.java b/src/main/java/net/aoba/cmd/commands/CmdAutoEat.java index 13d3ec7..a38d608 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdAutoEat.java +++ b/src/main/java/net/aoba/cmd/commands/CmdAutoEat.java @@ -26,11 +26,11 @@ public class CmdAutoEat extends Command { public CmdAutoEat() { - this.description = "Allows the player to see chest locations through ESP"; + super("autoeat", "Automatically eats when the player is hungry."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { AutoEat module = (AutoEat) Aoba.getInstance().moduleManager.autoeat; if (parameters.length == 2) { switch (parameters[0]) { @@ -63,4 +63,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba autoeat [toggle/set] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } \ No newline at end of file diff --git a/src/main/java/net/aoba/cmd/commands/CmdChestESP.java b/src/main/java/net/aoba/cmd/commands/CmdChestESP.java index 44891bf..2729ed2 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdChestESP.java +++ b/src/main/java/net/aoba/cmd/commands/CmdChestESP.java @@ -26,11 +26,11 @@ public class CmdChestESP extends Command { public CmdChestESP() { - this.description = "Allows the player to see chest locations through ESP"; + super("chestesp", "Allows the player to see chest locations through ESP"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { ChestESP module = (ChestESP) Aoba.getInstance().moduleManager.chestesp; if (parameters.length == 2) { switch (parameters[0]) { @@ -54,4 +54,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba chestesp [toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdEntityESP.java b/src/main/java/net/aoba/cmd/commands/CmdEntityESP.java index fe861f9..bb704ca 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdEntityESP.java +++ b/src/main/java/net/aoba/cmd/commands/CmdEntityESP.java @@ -26,11 +26,11 @@ public class CmdEntityESP extends Command { public CmdEntityESP() { - this.description = "Allows the player to see mobs through ESP."; + super("entityesp", "Allows the player to see mobs through ESP."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { EntityESP module = (EntityESP) Aoba.getInstance().moduleManager.entityesp; if (parameters.length == 2) { switch (parameters[0]) { @@ -54,4 +54,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba entityesp [toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdFastBreak.java b/src/main/java/net/aoba/cmd/commands/CmdFastBreak.java index cb1caf7..4e8dadf 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdFastBreak.java +++ b/src/main/java/net/aoba/cmd/commands/CmdFastBreak.java @@ -26,11 +26,11 @@ public class CmdFastBreak extends Command { public CmdFastBreak() { - this.description = "Decreases the time it takes to break blocks"; + super("fastbreak", "Decreases the time it takes to break blocks"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { FastBreak module = (FastBreak) Aoba.getInstance().moduleManager.fastbreak; if (parameters.length == 2) { switch (parameters[0]) { @@ -65,4 +65,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba fastbreak [multiplier, toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdFly.java b/src/main/java/net/aoba/cmd/commands/CmdFly.java index 5aea7ee..b3a0419 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdFly.java +++ b/src/main/java/net/aoba/cmd/commands/CmdFly.java @@ -26,16 +26,13 @@ public class CmdFly extends Command { public CmdFly() { - this.description = "Allows the player to fly"; + super("fly", "Allows the player to fly"); } @Override - public void command(String[] parameters) { - for(int i = 0; i < parameters.length; i++) { - System.out.println(parameters[i]); - } - Fly module = (Fly) Aoba.getInstance().moduleManager.fly; + public void runCommand(String[] parameters) { if (parameters.length == 2) { + Fly module = (Fly) Aoba.getInstance().moduleManager.fly; switch (parameters[0]) { case "speed": try { @@ -67,4 +64,16 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba fly [speed, toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + switch(previousParameter) { + case "toggle": + return new String[] {"on", "off"}; + case "speed": + return new String[] {"0.0", "1.0", "5.0", "10.0"}; + default: + return new String[] {"speed", "toggle"}; + } + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdFreecam.java b/src/main/java/net/aoba/cmd/commands/CmdFreecam.java index e64c39b..399d55b 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdFreecam.java +++ b/src/main/java/net/aoba/cmd/commands/CmdFreecam.java @@ -26,11 +26,11 @@ public class CmdFreecam extends Command { public CmdFreecam() { - this.description = "Disables fall damage for the player"; + super("freecam", "Disables fall damage for the player"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Freecam module = (Freecam) Aoba.getInstance().moduleManager.freecam; if (parameters.length == 2) { switch (parameters[0]) { @@ -55,4 +55,10 @@ public void command(String[] parameters) { } } + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/main/java/net/aoba/cmd/commands/CmdFullbright.java b/src/main/java/net/aoba/cmd/commands/CmdFullbright.java index 8c173a6..0a80a10 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdFullbright.java +++ b/src/main/java/net/aoba/cmd/commands/CmdFullbright.java @@ -26,11 +26,11 @@ public class CmdFullbright extends Command { public CmdFullbright() { - this.description = "Brightens up the world!"; + super("fullbright", "Brightens up the world!"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Fullbright module = (Fullbright) Aoba.getInstance().moduleManager.fullbright; if (parameters.length == 2) { switch (parameters[0]) { @@ -54,4 +54,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba fullbright [toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdHelp.java b/src/main/java/net/aoba/cmd/commands/CmdHelp.java index 5c12533..4e918f2 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdHelp.java +++ b/src/main/java/net/aoba/cmd/commands/CmdHelp.java @@ -18,6 +18,10 @@ package net.aoba.cmd.commands; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Set; + import org.apache.commons.lang3.StringUtils; import net.aoba.module.Module; import net.aoba.Aoba; @@ -29,28 +33,16 @@ public class CmdHelp extends Command { int indexesPerPage = 5; public CmdHelp() { - this.description = "Shows the avaiable commands."; + super("help", "Shows the avaiable commands."); } @Override - public void command(String[] parameters) { - if (StringUtils.isNumeric(parameters[0])) { - CommandManager.sendChatMessage("------------ Help [Page " + parameters[0] + " of 4] ------------"); - CommandManager.sendChatMessage("Use .aoba help [n] to get page n of help."); - - // Fetch the commands. - String[] commands = (String[])Aoba.getInstance().commandManager.getCommands().values().toArray(); - for (int i = (Integer.parseInt(parameters[0]) - 1) - * indexesPerPage; i <= (Integer.parseInt(parameters[0]) * indexesPerPage - + indexesPerPage); i++) { - try { - if (!(i > Aoba.getInstance().commandManager.getNumOfCommands())) { - CommandManager.sendChatMessage(" .aoba " + commands[i]); - } - }catch(Exception e) { - - } - } + public void runCommand(String[] parameters) { + if (parameters.length <= 0) { + ShowCommands(0); + } else if (StringUtils.isNumeric(parameters[0])) { + int page = Integer.parseInt(parameters[0]); + ShowCommands(page); } else { Module module = Aoba.getInstance().moduleManager.getModuleByName(parameters[0]); if (module == null) { @@ -65,4 +57,32 @@ public void command(String[] parameters) { } + private void ShowCommands(int page) { + CommandManager.sendChatMessage("------------ Help [Page " + page + " of 4] ------------"); + CommandManager.sendChatMessage("Use .aoba help [n] to get page n of help."); + + // Fetch the commands. + String[] commands = (String[]) Aoba.getInstance().commandManager.getCommands().values().toArray(); + for (int i = (page - 1) * indexesPerPage; i <= (page * indexesPerPage + indexesPerPage); i++) { + if (!(i > Aoba.getInstance().commandManager.getNumOfCommands())) { + CommandManager.sendChatMessage(" .aoba " + commands[i]); + } + } + } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + CommandManager cm = Aoba.getInstance().commandManager; + int numCmds = cm.getNumOfCommands(); + String[] commands = new String[numCmds]; + + Set cmds = Aoba.getInstance().commandManager.getCommands().keySet(); + int i = 0; + for (String x : cmds) + commands[i++] = x; + + return commands; + } + } diff --git a/src/main/java/net/aoba/cmd/commands/CmdHud.java b/src/main/java/net/aoba/cmd/commands/CmdHud.java index 7b02f9a..245aa9f 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdHud.java +++ b/src/main/java/net/aoba/cmd/commands/CmdHud.java @@ -24,11 +24,11 @@ public class CmdHud extends Command { public CmdHud() { - this.description = "Allows you to customize the hud using commands."; + super("hud", "Allows you to customize the hud using commands."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { if (parameters.length == 2) { switch (parameters[0]) { @@ -40,4 +40,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba hud"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdItemESP.java b/src/main/java/net/aoba/cmd/commands/CmdItemESP.java index 71bbf76..d2a075e 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdItemESP.java +++ b/src/main/java/net/aoba/cmd/commands/CmdItemESP.java @@ -26,11 +26,11 @@ public class CmdItemESP extends Command { public CmdItemESP() { - this.description = "Allows the player to see items through ESP"; + super("itemesp", "Allows the player to see items through walls."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { ItemESP module = (ItemESP) Aoba.getInstance().moduleManager.itemesp; if (parameters.length == 2) { switch (parameters[0]) { @@ -54,4 +54,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba itemesp [toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdNoFall.java b/src/main/java/net/aoba/cmd/commands/CmdNoFall.java index 16cac41..b60d919 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdNoFall.java +++ b/src/main/java/net/aoba/cmd/commands/CmdNoFall.java @@ -26,11 +26,11 @@ public class CmdNoFall extends Command { public CmdNoFall() { - this.description = "Disables fall damage for the player"; + super("nofall", "Disables fall damage for the player"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { NoFall module = (NoFall) Aoba.getInstance().moduleManager.nofall; if (parameters.length == 2) { switch (parameters[0]) { @@ -55,4 +55,10 @@ public void command(String[] parameters) { } } + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/main/java/net/aoba/cmd/commands/CmdNoSlowdown.java b/src/main/java/net/aoba/cmd/commands/CmdNoSlowdown.java index 28dd8ac..bca3edf 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdNoSlowdown.java +++ b/src/main/java/net/aoba/cmd/commands/CmdNoSlowdown.java @@ -26,11 +26,11 @@ public class CmdNoSlowdown extends Command { public CmdNoSlowdown() { - this.description = "Disables webs from slowing the player down"; + super("noslowdown", "Disables webs from slowing the player down"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { NoSlowdown module = (NoSlowdown) Aoba.getInstance().moduleManager.noslowdown; if (parameters.length == 2) { switch (parameters[0]) { @@ -55,4 +55,10 @@ public void command(String[] parameters) { } } + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/main/java/net/aoba/cmd/commands/CmdNoclip.java b/src/main/java/net/aoba/cmd/commands/CmdNoclip.java index 8c56217..ba1df8e 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdNoclip.java +++ b/src/main/java/net/aoba/cmd/commands/CmdNoclip.java @@ -26,11 +26,11 @@ public class CmdNoclip extends Command { public CmdNoclip() { - this.description = "Allows the player to phase through blocks."; + super("noclip", "Allows the player to phase through blocks."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Noclip module = (Noclip) Aoba.getInstance().moduleManager.noclip; if (parameters.length == 2) { switch (parameters[0]) { @@ -65,4 +65,10 @@ public void command(String[] parameters) { } } + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/main/java/net/aoba/cmd/commands/CmdNuker.java b/src/main/java/net/aoba/cmd/commands/CmdNuker.java index f81246f..24cd121 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdNuker.java +++ b/src/main/java/net/aoba/cmd/commands/CmdNuker.java @@ -26,11 +26,11 @@ public class CmdNuker extends Command { public CmdNuker() { - this.description = "Destroys blocks within a certain distance"; + super("nuker", "Destroys blocks within a certain distance of the player."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Nuker module = (Nuker) Aoba.getInstance().moduleManager.nuker; if (parameters.length == 2) { switch (parameters[0]) { @@ -69,4 +69,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba nuker [radius, toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdPOV.java b/src/main/java/net/aoba/cmd/commands/CmdPOV.java index cce8e92..dbaa004 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdPOV.java +++ b/src/main/java/net/aoba/cmd/commands/CmdPOV.java @@ -26,11 +26,11 @@ public class CmdPOV extends Command { public CmdPOV() { - this.description = "Decreases the time it takes to break blocks"; + super("pov", "Allows the player to see through someone else's POV."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { POV module = (POV) Aoba.getInstance().moduleManager.pov; if (parameters.length == 2) { switch (parameters[0]) { @@ -63,4 +63,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba pov [set, toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } \ No newline at end of file diff --git a/src/main/java/net/aoba/cmd/commands/CmdPlayerESP.java b/src/main/java/net/aoba/cmd/commands/CmdPlayerESP.java index 291342a..c64dcac 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdPlayerESP.java +++ b/src/main/java/net/aoba/cmd/commands/CmdPlayerESP.java @@ -26,11 +26,11 @@ public class CmdPlayerESP extends Command { public CmdPlayerESP() { - this.description = "Allows the player to see other players through ESP"; + super("playeresp", "Allows the player to see other players through walls."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { PlayerESP module = (PlayerESP) Aoba.getInstance().moduleManager.playeresp; if (parameters.length == 2) { switch (parameters[0]) { @@ -54,4 +54,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba playeresp [toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdReach.java b/src/main/java/net/aoba/cmd/commands/CmdReach.java index 1e3f2aa..27f2219 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdReach.java +++ b/src/main/java/net/aoba/cmd/commands/CmdReach.java @@ -26,11 +26,11 @@ public class CmdReach extends Command { public CmdReach() { - this.description = "Allows the player to reach further."; + super("reach", "Allows the player to reach further."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Reach module = (Reach) Aoba.getInstance().moduleManager.reach; if (parameters.length == 2) { switch (parameters[0]) { @@ -64,4 +64,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba reach [toggle/distance] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } \ No newline at end of file diff --git a/src/main/java/net/aoba/cmd/commands/CmdSpam.java b/src/main/java/net/aoba/cmd/commands/CmdSpam.java index 7246f3f..e0ace6e 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdSpam.java +++ b/src/main/java/net/aoba/cmd/commands/CmdSpam.java @@ -24,11 +24,11 @@ public class CmdSpam extends Command { public CmdSpam() { - this.description = "Spams the chat with a certain message"; + super("spam", "Spams the chat with a certain message."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { if (parameters.length > 1) { String message = ""; for(int msg = 1; msg < parameters.length; msg++) { @@ -41,4 +41,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Use format '.aoba spam [Times] [Message]'"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdSprint.java b/src/main/java/net/aoba/cmd/commands/CmdSprint.java index cb701e2..a82eb49 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdSprint.java +++ b/src/main/java/net/aoba/cmd/commands/CmdSprint.java @@ -26,11 +26,11 @@ public class CmdSprint extends Command { public CmdSprint() { - this.description = "Forces the player to constantly sprint"; + super("sprint", "Forces the player to constantly sprint."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Sprint module = (Sprint) Aoba.getInstance().moduleManager.sprint; if (parameters.length == 2) { switch (parameters[0]) { @@ -54,4 +54,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba sprint [toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdStep.java b/src/main/java/net/aoba/cmd/commands/CmdStep.java index f0d64a8..e4ca89d 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdStep.java +++ b/src/main/java/net/aoba/cmd/commands/CmdStep.java @@ -26,11 +26,11 @@ public class CmdStep extends Command { public CmdStep() { - this.description = "Allows the player to step up blocks"; + super("step", "Allows the player to step up blocks"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Step module = (Step) Aoba.getInstance().moduleManager.step; if (parameters.length == 2) { switch (parameters[0]) { @@ -64,4 +64,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba step [toggle/height] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdTP.java b/src/main/java/net/aoba/cmd/commands/CmdTP.java index 89bce80..05fcfaa 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdTP.java +++ b/src/main/java/net/aoba/cmd/commands/CmdTP.java @@ -24,15 +24,21 @@ public class CmdTP extends Command { public CmdTP() { - this.description = "Teleports the player certain blocks away (Vanilla only)"; + super("tp", "Teleports the player certain blocks away (Vanilla only)"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { if (parameters.length == 3) { mc.player.setPosition(Double.parseDouble(parameters[0]), Double.parseDouble(parameters[1]), Double.parseDouble(parameters[2])); } else { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba tp [x] [y] [z]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdTileBreaker.java b/src/main/java/net/aoba/cmd/commands/CmdTileBreaker.java index f27d2de..69408fd 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdTileBreaker.java +++ b/src/main/java/net/aoba/cmd/commands/CmdTileBreaker.java @@ -26,11 +26,11 @@ public class CmdTileBreaker extends Command { public CmdTileBreaker() { - this.description = "Breaks insta-break blocks within a certain radius"; + super("tilebreaker", "Breaks insta-break blocks within a certain radius"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { TileBreaker module = (TileBreaker) Aoba.getInstance().moduleManager.tilebreaker; if (parameters.length == 2) { switch (parameters[0]) { @@ -69,4 +69,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba tilebreaker [radius, toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdTimer.java b/src/main/java/net/aoba/cmd/commands/CmdTimer.java index 4ce94f4..bdbf82a 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdTimer.java +++ b/src/main/java/net/aoba/cmd/commands/CmdTimer.java @@ -26,11 +26,11 @@ public class CmdTimer extends Command { public CmdTimer() { - this.description = "Disables fall damage for the player"; + super("timer", "Speeds up the game."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Timer module = (Timer) Aoba.getInstance().moduleManager.timer; if (parameters.length == 2) { switch (parameters[0]) { @@ -67,4 +67,10 @@ public void command(String[] parameters) { } } + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } + } \ No newline at end of file diff --git a/src/main/java/net/aoba/cmd/commands/CmdTracer.java b/src/main/java/net/aoba/cmd/commands/CmdTracer.java index ebf3723..12ae91d 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdTracer.java +++ b/src/main/java/net/aoba/cmd/commands/CmdTracer.java @@ -26,11 +26,11 @@ public class CmdTracer extends Command { public CmdTracer() { - this.description = "Draws a tracer that points towards players"; + super("tracer", "Draws a tracer that points towards players."); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { Tracer module = (Tracer) Aoba.getInstance().moduleManager.tracer; if (parameters.length == 2) { switch (parameters[0]) { @@ -54,4 +54,10 @@ public void command(String[] parameters) { CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba tracer [toggle] [value]"); } } + + @Override + public String[] getAutocorrect(String previousParameter) { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/net/aoba/cmd/commands/CmdXRay.java b/src/main/java/net/aoba/cmd/commands/CmdXRay.java index dca17f5..9813411 100644 --- a/src/main/java/net/aoba/cmd/commands/CmdXRay.java +++ b/src/main/java/net/aoba/cmd/commands/CmdXRay.java @@ -18,21 +18,27 @@ package net.aoba.cmd.commands; +import java.util.ArrayList; +import java.util.List; + import net.aoba.Aoba; import net.aoba.cmd.Command; import net.aoba.cmd.CommandManager; import net.aoba.module.modules.render.XRay; import net.minecraft.block.Block; import net.minecraft.block.Blocks; +import net.minecraft.registry.Registries; +import net.minecraft.util.Identifier; +import net.minecraft.util.InvalidIdentifierException; public class CmdXRay extends Command { public CmdXRay() { - this.description = "Allows the player to see certain blocks through walls"; + super("xray", "Allows the player to see certain blocks through walls"); } @Override - public void command(String[] parameters) { + public void runCommand(String[] parameters) { XRay module = (XRay) Aoba.getInstance().moduleManager.xray; if (parameters.length >= 2 && parameters.length <= 3) { switch (parameters[0]) { @@ -52,16 +58,30 @@ public void command(String[] parameters) { switch (parameters[1]) { case "add": String block1 = parameters[2].toLowerCase(); - // TODO MIXIN FIX FIND BLOCK BY NAME - //Block tempBlock1 = Blocks.getBlockByName(block1); + Block tempBlock1; + try + { + tempBlock1 = Registries.BLOCK.get(new Identifier(block1)); + }catch(InvalidIdentifierException e) + { + tempBlock1= Blocks.AIR; + } - XRay.blocks.add(Blocks.AIR); + XRay.blocks.add(tempBlock1); mc.worldRenderer.reload(); break; case "remove": String block2 = parameters[2].toLowerCase(); - //Block tempBlock2 = Blocks.getBlockByName(block2); - XRay.blocks.remove(Blocks.AIR); + Block tempBlock2; + try + { + tempBlock2 = Registries.BLOCK.get(new Identifier(block2)); + }catch(InvalidIdentifierException e) + { + tempBlock2= Blocks.AIR; + } + + XRay.blocks.remove(tempBlock2); mc.worldRenderer.reload(); break; case "list": @@ -75,11 +95,31 @@ public void command(String[] parameters) { } break; default: - CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba xray [toggle] [value]"); + CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba xray [toggle/block] [value]"); break; } } else { - CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba xray [toggle] [value]"); + CommandManager.sendChatMessage("Invalid Usage! Usage: .aoba xray [toggle/block] [value]"); + } + } + + @Override + public String[] getAutocorrect(String previousParameter) { + switch (previousParameter) { + case "toggle": + return new String[] {"on", "off"}; + case "block": + return new String[] {"add", "remove"}; + case "add": + String[] blockNames = new String[Registries.BLOCK.size()]; + for(int i = 0; i < Registries.BLOCK.size(); i++) { + blockNames[i] = Registries.BLOCK.get(i).getTranslationKey(); + } + return blockNames; + case "remove": + return new String[] { "xray", "delete" }; + default: + return new String[] { "toggle", "block"}; } } } diff --git a/src/main/java/net/aoba/mixin/ChatInputSuggestorMixin.java b/src/main/java/net/aoba/mixin/ChatInputSuggestorMixin.java index 24e6da1..d09a2fa 100644 --- a/src/main/java/net/aoba/mixin/ChatInputSuggestorMixin.java +++ b/src/main/java/net/aoba/mixin/ChatInputSuggestorMixin.java @@ -6,26 +6,25 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.ParseResults; -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.context.CommandContextBuilder; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import net.aoba.Aoba; import net.aoba.AobaClient; -import net.aoba.interfaces.IChatInputSuggestor; +import net.aoba.cmd.Command; import net.minecraft.client.gui.screen.ChatInputSuggestor; import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.command.CommandSource; +import net.minecraft.text.Text; +import net.minecraft.text.TextContent; +import net.minecraft.text.MutableText; import net.minecraft.text.OrderedText; @Mixin(ChatInputSuggestor.class) @@ -48,33 +47,52 @@ public abstract class ChatInputSuggestorMixin { private void onRefresh(CallbackInfo ci) { String prefix = AobaClient.PREFIX; String string = this.textField.getText(); - + if(string.length() > 0) { - SuggestionsBuilder builder; int cursorPos = this.textField.getCursor(); - String string2 = string.substring(0, cursorPos); - int j = 0; - Matcher matcher = Pattern.compile("(\\s+)").matcher(string2); - while (matcher.find()) { - j = matcher.end(); - } - - if(string.charAt(0) == '.') { - builder = new SuggestionsBuilder(string2, j); - if(string.length() <= prefix.length() && string.equals(prefix.substring(0, string.length()))) { - builder.suggest(prefix + " "); + if(string2.charAt(0) == '.') { + int j = 0; + Matcher matcher = Pattern.compile("(\\s+)").matcher(string2); + while (matcher.find()) { + j = matcher.end(); + } + + SuggestionsBuilder builder = new SuggestionsBuilder(string2, j); + if(string2.length() <= prefix.length()) { + if(prefix.startsWith(string2)) { + builder.suggest(prefix + " "); + }else { + return; + } }else { - - for (Object strObj : Aoba.getInstance().commandManager.getCommands().keySet().toArray()) { - String str = (String) strObj; - builder.suggest(str); + int count = StringUtils.countMatches(string2, " "); + List seperated = Arrays.asList(string2.split(" ")); + if(count == 1) { + for (Object strObj : Aoba.getInstance().commandManager.getCommands().keySet().toArray()) { + String str = (String) strObj; + builder.suggest(str + " "); + } + }else { + if(seperated.size() <= 1) return; + Command c = Aoba.getInstance().commandManager.getCommandBySyntax(seperated.get(1)); + if (c == null) { + messages.add(Text.of("Aoba: No commands found with name: " + string2).asOrderedText()); + return; + } + + String[] suggestions = c.getAutocorrect(seperated.get(seperated.size() - 1)); + + if(suggestions == null || suggestions.length == 0) return; + for(String str : suggestions) { + builder.suggest(str + " "); + } } } + this.pendingSuggestions = builder.buildFuture(); this.show(false); - ci.cancel(); } } }