From f1fb109d40c48e79ba6ac18361d738873a05f7f2 Mon Sep 17 00:00:00 2001 From: Brady Date: Mon, 30 Sep 2019 21:41:30 -0500 Subject: [PATCH 01/13] Remove ICommandExecution due to redundancy --- .../baritone/api/utils/command/Command.java | 30 +------ .../command/execution/ICommandExecution.java | 68 --------------- .../utils/command/BaritoneChatControl.java | 6 +- .../utils/command/defaults/AxisCommand.java | 4 +- .../command/defaults/BlacklistCommand.java | 4 +- .../utils/command/defaults/BuildCommand.java | 4 +- .../utils/command/defaults/CancelCommand.java | 4 +- .../utils/command/defaults/ChestsCommand.java | 4 +- .../utils/command/defaults/ClickCommand.java | 4 +- .../utils/command/defaults/ComeCommand.java | 4 +- .../utils/command/defaults/CommandAlias.java | 4 +- .../command/defaults/ExploreCommand.java | 4 +- .../defaults/ExploreFilterCommand.java | 4 +- .../utils/command/defaults/FarmCommand.java | 4 +- .../utils/command/defaults/FindCommand.java | 4 +- .../utils/command/defaults/FollowCommand.java | 4 +- .../command/defaults/ForceCancelCommand.java | 4 +- .../utils/command/defaults/GcCommand.java | 4 +- .../utils/command/defaults/GoalCommand.java | 4 +- .../utils/command/defaults/HelpCommand.java | 4 +- .../utils/command/defaults/InvertCommand.java | 4 +- .../utils/command/defaults/MineCommand.java | 4 +- .../utils/command/defaults/PathCommand.java | 4 +- .../command/defaults/PauseResumeCommands.java | 12 +-- .../utils/command/defaults/ProcCommand.java | 4 +- .../command/defaults/ReloadAllCommand.java | 4 +- .../utils/command/defaults/RenderCommand.java | 4 +- .../utils/command/defaults/RepackCommand.java | 4 +- .../command/defaults/SaveAllCommand.java | 4 +- .../command/defaults/SchematicaCommand.java | 4 +- .../utils/command/defaults/SelCommand.java | 4 +- .../utils/command/defaults/SetCommand.java | 4 +- .../command/defaults/ThisWayCommand.java | 4 +- .../utils/command/defaults/TunnelCommand.java | 4 +- .../command/defaults/VersionCommand.java | 4 +- .../command/defaults/WaypointsCommand.java | 4 +- .../command/execution/CommandExecution.java | 85 ------------------- .../utils/command/manager/CommandManager.java | 59 +++++++++++-- 38 files changed, 126 insertions(+), 262 deletions(-) delete mode 100644 src/api/java/baritone/api/utils/command/execution/ICommandExecution.java delete mode 100644 src/main/java/baritone/utils/command/execution/CommandExecution.java diff --git a/src/api/java/baritone/api/utils/command/Command.java b/src/api/java/baritone/api/utils/command/Command.java index e83d6c50b..280c5f03b 100644 --- a/src/api/java/baritone/api/utils/command/Command.java +++ b/src/api/java/baritone/api/utils/command/Command.java @@ -21,7 +21,6 @@ import baritone.api.IBaritone; import baritone.api.utils.Helper; import baritone.api.utils.IPlayerContext; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.execution.ICommandExecution; import baritone.api.utils.command.helpers.arguments.ArgConsumer; import java.util.Collections; @@ -57,41 +56,16 @@ public abstract class Command implements Helper { this(baritone, Collections.singletonList(name)); } - /** - * Executes this command with the specified arguments. - * - * @param execution The command execution to execute this command with - */ - public final void execute(ICommandExecution execution) throws CommandException { - this.executed(execution.getLabel(), execution.getArguments()); - } - - /** - * Tab completes this command with the specified arguments. Any exception that is thrown by - * {@link #tabCompleted(String, ArgConsumer)} will be caught by this method, and then {@link Stream#empty()} - * will be returned. - * - * @param execution The command execution to tab complete - * @return The list of completions. - */ - public final Stream tabComplete(ICommandExecution execution) { - try { - return this.tabCompleted(execution.getLabel(), execution.getArguments()); - } catch (Throwable t) { - return Stream.empty(); - } - } - /** * Called when this command is executed. */ - protected abstract void executed(String label, ArgConsumer args) throws CommandException; + public abstract void execute(String label, ArgConsumer args) throws CommandException; /** * Called when the command needs to tab complete. Return a Stream representing the entries to put in the completions * list. */ - protected abstract Stream tabCompleted(String label, ArgConsumer args) throws CommandException; + public abstract Stream tabComplete(String label, ArgConsumer args) throws CommandException; /** * @return A single-line string containing a short description of this command's purpose. diff --git a/src/api/java/baritone/api/utils/command/execution/ICommandExecution.java b/src/api/java/baritone/api/utils/command/execution/ICommandExecution.java deleted file mode 100644 index 4ca5b193c..000000000 --- a/src/api/java/baritone/api/utils/command/execution/ICommandExecution.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Baritone. If not, see . - */ - -package baritone.api.utils.command.execution; - -import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.CommandArgument; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; -import net.minecraft.util.Tuple; - -import java.util.List; -import java.util.stream.Stream; - -/** - * @author Brady - * @since 9/28/2019 - */ -public interface ICommandExecution { - - /** - * @return The label that was used to target the {@link Command} - */ - String getLabel(); - - /** - * @return The arguments to be passed to the {@link Command} - */ - ArgConsumer getArguments(); - - /** - * Executes the target command for this {@link ICommandExecution}. This method should never - * {@code throw} any exception, anything that is thrown during the target command execution - * should be safely handled. - */ - void execute(); - - /** - * Forwards this {@link ICommandExecution} to the target {@link Command} to perform a tab-completion. - * If the tab-completion operation is a failure, then {@link Stream#empty()} will be returned. - * - * @return The tab-completed arguments, if possible. - */ - Stream tabComplete(); - - static Tuple> expand(String string, boolean preserveEmptyLast) { - String label = string.split("\\s", 2)[0]; - List args = CommandArgument.from(string.substring(label.length()), preserveEmptyLast); - return new Tuple<>(label, args); - } - - static Tuple> expand(String string) { - return expand(string, false); - } -} diff --git a/src/main/java/baritone/utils/command/BaritoneChatControl.java b/src/main/java/baritone/utils/command/BaritoneChatControl.java index facc24dac..30ba92445 100644 --- a/src/main/java/baritone/utils/command/BaritoneChatControl.java +++ b/src/main/java/baritone/utils/command/BaritoneChatControl.java @@ -29,10 +29,10 @@ import baritone.api.utils.SettingsUtil; import baritone.api.utils.command.argument.CommandArgument; import baritone.api.utils.command.exception.CommandNotEnoughArgumentsException; import baritone.api.utils.command.exception.CommandNotFoundException; -import baritone.api.utils.command.execution.ICommandExecution; import baritone.api.utils.command.helpers.arguments.ArgConsumer; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import baritone.api.utils.command.manager.ICommandManager; +import baritone.utils.command.manager.CommandManager; import net.minecraft.util.Tuple; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; @@ -67,7 +67,7 @@ public class BaritoneChatControl implements Helper, AbstractGameEventListener { event.cancel(); String commandStr = msg.substring(forceRun ? FORCE_COMMAND_PREFIX.length() : prefix.length()); if (!runCommand(commandStr) && !commandStr.trim().isEmpty()) { - new CommandNotFoundException(ICommandExecution.expand(commandStr).getFirst()).handle(null, null); + new CommandNotFoundException(CommandManager.expand(commandStr).getFirst()).handle(null, null); } } else if ((settings.chatControl.value || settings.chatControlAnyway.value) && runCommand(msg)) { event.cancel(); @@ -106,7 +106,7 @@ public class BaritoneChatControl implements Helper, AbstractGameEventListener { if (msg.isEmpty()) { return this.runCommand("help"); } - Tuple> pair = ICommandExecution.expand(msg); + Tuple> pair = CommandManager.expand(msg); String command = pair.getFirst(); String rest = msg.substring(pair.getFirst().length()); ArgConsumer argc = new ArgConsumer(this.manager, pair.getSecond()); diff --git a/src/main/java/baritone/utils/command/defaults/AxisCommand.java b/src/main/java/baritone/utils/command/defaults/AxisCommand.java index ae52bfb25..f80356ad9 100644 --- a/src/main/java/baritone/utils/command/defaults/AxisCommand.java +++ b/src/main/java/baritone/utils/command/defaults/AxisCommand.java @@ -35,7 +35,7 @@ public class AxisCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); Goal goal = new GoalAxis(); baritone.getCustomGoalProcess().setGoal(goal); @@ -43,7 +43,7 @@ public class AxisCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java b/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java index 21551782b..43aaa7370 100644 --- a/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java +++ b/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java @@ -35,7 +35,7 @@ public class BlacklistCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); IGetToBlockProcess proc = baritone.getGetToBlockProcess(); if (!proc.isActive()) { @@ -49,7 +49,7 @@ public class BlacklistCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/BuildCommand.java b/src/main/java/baritone/utils/command/defaults/BuildCommand.java index f45371136..5d084d48e 100644 --- a/src/main/java/baritone/utils/command/defaults/BuildCommand.java +++ b/src/main/java/baritone/utils/command/defaults/BuildCommand.java @@ -42,7 +42,7 @@ public class BuildCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { File file = args.getDatatypePost(RelativeFile.INSTANCE, schematicsDir).getAbsoluteFile(); if (!file.getName().toLowerCase(Locale.US).endsWith(".schematic")) { file = new File(file.getAbsolutePath() + ".schematic"); @@ -64,7 +64,7 @@ public class BuildCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return RelativeFile.tabComplete(args, schematicsDir); } else if (args.has(2)) { diff --git a/src/main/java/baritone/utils/command/defaults/CancelCommand.java b/src/main/java/baritone/utils/command/defaults/CancelCommand.java index a4ef4cc7b..67cde8f49 100644 --- a/src/main/java/baritone/utils/command/defaults/CancelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/CancelCommand.java @@ -33,14 +33,14 @@ public class CancelCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); baritone.getPathingBehavior().cancelEverything(); logDirect("ok canceled"); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ChestsCommand.java b/src/main/java/baritone/utils/command/defaults/ChestsCommand.java index d4101a629..f65a18e5b 100644 --- a/src/main/java/baritone/utils/command/defaults/ChestsCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ChestsCommand.java @@ -41,7 +41,7 @@ public class ChestsCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); Set> entries = ctx.worldData().getContainerMemory().getRememberedInventories().entrySet(); @@ -62,7 +62,7 @@ public class ChestsCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ClickCommand.java b/src/main/java/baritone/utils/command/defaults/ClickCommand.java index e5180b2ff..07bd4de9f 100644 --- a/src/main/java/baritone/utils/command/defaults/ClickCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ClickCommand.java @@ -33,14 +33,14 @@ public class ClickCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); baritone.openClick(); logDirect("aight dude"); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ComeCommand.java b/src/main/java/baritone/utils/command/defaults/ComeCommand.java index bbefeb43a..52a0cec67 100644 --- a/src/main/java/baritone/utils/command/defaults/ComeCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ComeCommand.java @@ -37,7 +37,7 @@ public class ComeCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); Entity entity = mc.getRenderViewEntity(); if (entity == null) { @@ -48,7 +48,7 @@ public class ComeCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/CommandAlias.java b/src/main/java/baritone/utils/command/defaults/CommandAlias.java index cbd8ac77c..0f28e48ee 100644 --- a/src/main/java/baritone/utils/command/defaults/CommandAlias.java +++ b/src/main/java/baritone/utils/command/defaults/CommandAlias.java @@ -43,12 +43,12 @@ public class CommandAlias extends Command { } @Override - protected void executed(String label, ArgConsumer args) { + public void execute(String label, ArgConsumer args) { this.baritone.getCommandManager().execute(String.format("%s %s", target, args.rawRest())); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return this.baritone.getCommandManager().tabComplete(String.format("%s %s", target, args.rawRest())); } diff --git a/src/main/java/baritone/utils/command/defaults/ExploreCommand.java b/src/main/java/baritone/utils/command/defaults/ExploreCommand.java index dc156d0e0..55e3d756a 100644 --- a/src/main/java/baritone/utils/command/defaults/ExploreCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ExploreCommand.java @@ -35,7 +35,7 @@ public class ExploreCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { if (args.hasAny()) { args.requireExactly(2); } else { @@ -49,7 +49,7 @@ public class ExploreCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { if (args.hasAtMost(2)) { return args.tabCompleteDatatype(RelativeGoalXZ.INSTANCE); } diff --git a/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java b/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java index 4d75d1b49..29f34c866 100644 --- a/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java @@ -39,7 +39,7 @@ public class ExploreFilterCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(2); File file = args.getDatatypePost(RelativeFile.INSTANCE, mc.gameDir.getAbsoluteFile().getParentFile()); boolean invert = false; @@ -63,7 +63,7 @@ public class ExploreFilterCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return RelativeFile.tabComplete(args, RelativeFile.gameDir()); } diff --git a/src/main/java/baritone/utils/command/defaults/FarmCommand.java b/src/main/java/baritone/utils/command/defaults/FarmCommand.java index 1f803ec60..a9dc7a8b6 100644 --- a/src/main/java/baritone/utils/command/defaults/FarmCommand.java +++ b/src/main/java/baritone/utils/command/defaults/FarmCommand.java @@ -33,14 +33,14 @@ public class FarmCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); baritone.getFarmProcess().farm(); logDirect("Farming"); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/FindCommand.java b/src/main/java/baritone/utils/command/defaults/FindCommand.java index 8848db810..513d65392 100644 --- a/src/main/java/baritone/utils/command/defaults/FindCommand.java +++ b/src/main/java/baritone/utils/command/defaults/FindCommand.java @@ -37,7 +37,7 @@ public class FindCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { List toFind = new ArrayList<>(); while (args.hasAny()) { toFind.add(args.getDatatypeFor(BlockById.INSTANCE)); @@ -59,7 +59,7 @@ public class FindCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return args.tabCompleteDatatype(BlockById.INSTANCE); } diff --git a/src/main/java/baritone/utils/command/defaults/FollowCommand.java b/src/main/java/baritone/utils/command/defaults/FollowCommand.java index e3e0c3d15..d2e674c98 100644 --- a/src/main/java/baritone/utils/command/defaults/FollowCommand.java +++ b/src/main/java/baritone/utils/command/defaults/FollowCommand.java @@ -42,7 +42,7 @@ public class FollowCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMin(1); FollowGroup group; FollowList list; @@ -88,7 +88,7 @@ public class FollowCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return new TabCompleteHelper() .append(FollowGroup.class) diff --git a/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java b/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java index 3de8a056b..05b629922 100644 --- a/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java @@ -34,7 +34,7 @@ public class ForceCancelCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); IPathingBehavior pathingBehavior = baritone.getPathingBehavior(); pathingBehavior.cancelEverything(); @@ -43,7 +43,7 @@ public class ForceCancelCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/GcCommand.java b/src/main/java/baritone/utils/command/defaults/GcCommand.java index c2e7952cd..068b5136c 100644 --- a/src/main/java/baritone/utils/command/defaults/GcCommand.java +++ b/src/main/java/baritone/utils/command/defaults/GcCommand.java @@ -33,14 +33,14 @@ public class GcCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); System.gc(); logDirect("ok called System.gc()"); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/GoalCommand.java b/src/main/java/baritone/utils/command/defaults/GoalCommand.java index 3f7601117..baac24b69 100644 --- a/src/main/java/baritone/utils/command/defaults/GoalCommand.java +++ b/src/main/java/baritone/utils/command/defaults/GoalCommand.java @@ -39,7 +39,7 @@ public class GoalCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { ICustomGoalProcess goalProcess = baritone.getCustomGoalProcess(); if (args.hasAny() && Arrays.asList("reset", "clear", "none").contains(args.peekString())) { args.requireMax(1); @@ -59,7 +59,7 @@ public class GoalCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { TabCompleteHelper helper = new TabCompleteHelper(); if (args.hasExactlyOne()) { helper.append("reset", "clear", "none", "~"); diff --git a/src/main/java/baritone/utils/command/defaults/HelpCommand.java b/src/main/java/baritone/utils/command/defaults/HelpCommand.java index a9d0e1047..7db0d8935 100644 --- a/src/main/java/baritone/utils/command/defaults/HelpCommand.java +++ b/src/main/java/baritone/utils/command/defaults/HelpCommand.java @@ -44,7 +44,7 @@ public class HelpCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(1); if (!args.hasAny() || args.is(Integer.class)) { Paginator.paginate( @@ -97,7 +97,7 @@ public class HelpCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return new TabCompleteHelper() .addCommands(this.baritone.getCommandManager()) diff --git a/src/main/java/baritone/utils/command/defaults/InvertCommand.java b/src/main/java/baritone/utils/command/defaults/InvertCommand.java index f52e6226c..232ac0f37 100644 --- a/src/main/java/baritone/utils/command/defaults/InvertCommand.java +++ b/src/main/java/baritone/utils/command/defaults/InvertCommand.java @@ -37,7 +37,7 @@ public class InvertCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); ICustomGoalProcess customGoalProcess = baritone.getCustomGoalProcess(); Goal goal; @@ -54,7 +54,7 @@ public class InvertCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/MineCommand.java b/src/main/java/baritone/utils/command/defaults/MineCommand.java index e77c3bd75..da92b0988 100644 --- a/src/main/java/baritone/utils/command/defaults/MineCommand.java +++ b/src/main/java/baritone/utils/command/defaults/MineCommand.java @@ -38,7 +38,7 @@ public class MineCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { int quantity = args.getAsOrDefault(Integer.class, 0); args.requireMin(1); List boms = new ArrayList<>(); @@ -51,7 +51,7 @@ public class MineCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return args.tabCompleteDatatype(BlockById.INSTANCE); } diff --git a/src/main/java/baritone/utils/command/defaults/PathCommand.java b/src/main/java/baritone/utils/command/defaults/PathCommand.java index 4cd766ea1..6de333737 100644 --- a/src/main/java/baritone/utils/command/defaults/PathCommand.java +++ b/src/main/java/baritone/utils/command/defaults/PathCommand.java @@ -40,7 +40,7 @@ public class PathCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { ICustomGoalProcess customGoalProcess = baritone.getCustomGoalProcess(); Goal goal; if (args.hasAny()) { @@ -56,7 +56,7 @@ public class PathCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { if (args.hasAny() && !args.has(4)) { while (args.has(2)) { if (args.peekDatatypeOrNull(RelativeCoordinate.INSTANCE) == null) { diff --git a/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java b/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java index bc3c392ac..2c363ff4e 100644 --- a/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java +++ b/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java @@ -79,7 +79,7 @@ public class PauseResumeCommands { ); pauseCommand = new Command(baritone, "pause") { @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); if (paused[0]) { throw new CommandInvalidStateException("Already paused"); @@ -89,7 +89,7 @@ public class PauseResumeCommands { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } @@ -112,7 +112,7 @@ public class PauseResumeCommands { }; resumeCommand = new Command(baritone, "resume") { @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); if (!paused[0]) { throw new CommandInvalidStateException("Not paused"); @@ -122,7 +122,7 @@ public class PauseResumeCommands { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } @@ -143,13 +143,13 @@ public class PauseResumeCommands { }; pausedCommand = new Command(baritone, "paused") { @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); logDirect(String.format("Baritone is %spaused", paused[0] ? "" : "not ")); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ProcCommand.java b/src/main/java/baritone/utils/command/defaults/ProcCommand.java index 40d8e72b5..232a53a29 100644 --- a/src/main/java/baritone/utils/command/defaults/ProcCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ProcCommand.java @@ -37,7 +37,7 @@ public class ProcCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); IPathingControlManager pathingControlManager = baritone.getPathingControlManager(); IBaritoneProcess process = pathingControlManager.mostRecentInControl().orElse(null); @@ -62,7 +62,7 @@ public class ProcCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java b/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java index c16000f73..f13af77d6 100644 --- a/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java @@ -33,14 +33,14 @@ public class ReloadAllCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); ctx.worldData().getCachedWorld().reloadAllFromDisk(); logDirect("Reloaded"); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/RenderCommand.java b/src/main/java/baritone/utils/command/defaults/RenderCommand.java index 7c100c8ed..710df10f5 100644 --- a/src/main/java/baritone/utils/command/defaults/RenderCommand.java +++ b/src/main/java/baritone/utils/command/defaults/RenderCommand.java @@ -34,7 +34,7 @@ public class RenderCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); BetterBlockPos origin = ctx.playerFeet(); int renderDistance = (mc.gameSettings.renderDistanceChunks + 1) * 16; @@ -50,7 +50,7 @@ public class RenderCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/RepackCommand.java b/src/main/java/baritone/utils/command/defaults/RepackCommand.java index bd918f097..2f1a988d3 100644 --- a/src/main/java/baritone/utils/command/defaults/RepackCommand.java +++ b/src/main/java/baritone/utils/command/defaults/RepackCommand.java @@ -34,13 +34,13 @@ public class RepackCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); logDirect(String.format("Queued %d chunks for repacking", WorldScanner.INSTANCE.repack(ctx))); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java b/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java index 8343f7533..21dbfb649 100644 --- a/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java @@ -33,14 +33,14 @@ public class SaveAllCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); ctx.worldData().getCachedWorld().save(); logDirect("Saved"); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java b/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java index 91e31daa4..ed695169b 100644 --- a/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java @@ -33,13 +33,13 @@ public class SchematicaCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); baritone.getBuilderProcess().buildOpenSchematic(); } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/SelCommand.java b/src/main/java/baritone/utils/command/defaults/SelCommand.java index d9899f429..8e2512d12 100644 --- a/src/main/java/baritone/utils/command/defaults/SelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SelCommand.java @@ -75,7 +75,7 @@ public class SelCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { Action action = Action.getByName(args.getString()); if (action == null) { throw new CommandInvalidTypeException(args.consumed(), "an action"); @@ -186,7 +186,7 @@ public class SelCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return new TabCompleteHelper() .append(Action.getAllNames()) diff --git a/src/main/java/baritone/utils/command/defaults/SetCommand.java b/src/main/java/baritone/utils/command/defaults/SetCommand.java index 48c4580f5..8add3fed2 100644 --- a/src/main/java/baritone/utils/command/defaults/SetCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SetCommand.java @@ -50,7 +50,7 @@ public class SetCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { String arg = args.hasAny() ? args.getString().toLowerCase(Locale.US) : "list"; if (Arrays.asList("s", "save").contains(arg)) { SettingsUtil.save(Baritone.settings()); @@ -186,7 +186,7 @@ public class SetCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { if (args.hasAny()) { String arg = args.getString(); if (args.hasExactlyOne() && !Arrays.asList("s", "save").contains(args.peekString().toLowerCase(Locale.US))) { diff --git a/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java b/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java index 4c6f35226..d11346cc5 100644 --- a/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java @@ -34,7 +34,7 @@ public class ThisWayCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireExactly(1); GoalXZ goal = GoalXZ.fromDirection( ctx.playerFeetAsVec(), @@ -46,7 +46,7 @@ public class ThisWayCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/TunnelCommand.java b/src/main/java/baritone/utils/command/defaults/TunnelCommand.java index 588287d64..b7e00fe66 100644 --- a/src/main/java/baritone/utils/command/defaults/TunnelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/TunnelCommand.java @@ -35,7 +35,7 @@ public class TunnelCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); Goal goal = new GoalStrictDirection( ctx.playerFeet(), @@ -46,7 +46,7 @@ public class TunnelCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/VersionCommand.java b/src/main/java/baritone/utils/command/defaults/VersionCommand.java index fe53f523e..89dc6576e 100644 --- a/src/main/java/baritone/utils/command/defaults/VersionCommand.java +++ b/src/main/java/baritone/utils/command/defaults/VersionCommand.java @@ -34,7 +34,7 @@ public class VersionCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { args.requireMax(0); String version = getClass().getPackage().getImplementationVersion(); if (version == null) { @@ -45,7 +45,7 @@ public class VersionCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) { + public Stream tabComplete(String label, ArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java b/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java index 01f5817e9..45bd7b50f 100644 --- a/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java +++ b/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java @@ -52,7 +52,7 @@ public class WaypointsCommand extends Command { } @Override - protected void executed(String label, ArgConsumer args) throws CommandException { + public void execute(String label, ArgConsumer args) throws CommandException { Action action = args.hasAny() ? Action.getByName(args.getString()) : Action.LIST; if (action == null) { throw new CommandInvalidTypeException(args.consumed(), "an action"); @@ -241,7 +241,7 @@ public class WaypointsCommand extends Command { } @Override - protected Stream tabCompleted(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, ArgConsumer args) throws CommandException { if (args.hasAny()) { if (args.hasExactlyOne()) { return new TabCompleteHelper() diff --git a/src/main/java/baritone/utils/command/execution/CommandExecution.java b/src/main/java/baritone/utils/command/execution/CommandExecution.java deleted file mode 100644 index 1e8fe8382..000000000 --- a/src/main/java/baritone/utils/command/execution/CommandExecution.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Baritone. If not, see . - */ - -package baritone.utils.command.execution; - -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandUnhandledException; -import baritone.api.utils.command.exception.ICommandException; -import baritone.api.utils.command.execution.ICommandExecution; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; -import baritone.utils.command.manager.CommandManager; - -import java.util.stream.Stream; - -/** - * The default, internal implementation of {@link ICommandExecution}, which is used by {@link CommandManager} - * - * @author LoganDark, Brady - */ -public class CommandExecution implements ICommandExecution { - - /** - * The command itself - */ - private final Command command; - - /** - * The name this command was called with - */ - private final String label; - - /** - * The arg consumer - */ - private final ArgConsumer args; - - public CommandExecution(Command command, String label, ArgConsumer args) { - this.command = command; - this.label = label; - this.args = args; - } - - @Override - public String getLabel() { - return this.label; - } - - @Override - public ArgConsumer getArguments() { - return this.args; - } - - @Override - public void execute() { - try { - command.execute(this); - } catch (Throwable t) { - // Create a handleable exception, wrap if needed - ICommandException exception = t instanceof ICommandException - ? (ICommandException) t - : new CommandUnhandledException(t); - - exception.handle(command, args.args); - } - } - - @Override - public Stream tabComplete() { - return command.tabComplete(this); - } -} diff --git a/src/main/java/baritone/utils/command/manager/CommandManager.java b/src/main/java/baritone/utils/command/manager/CommandManager.java index e5c5d0356..c9c51eb12 100644 --- a/src/main/java/baritone/utils/command/manager/CommandManager.java +++ b/src/main/java/baritone/utils/command/manager/CommandManager.java @@ -21,13 +21,13 @@ import baritone.Baritone; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.argument.CommandArgument; -import baritone.api.utils.command.execution.ICommandExecution; +import baritone.api.utils.command.exception.CommandUnhandledException; +import baritone.api.utils.command.exception.ICommandException; import baritone.api.utils.command.helpers.arguments.ArgConsumer; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import baritone.api.utils.command.manager.ICommandManager; import baritone.api.utils.command.registry.Registry; import baritone.utils.command.defaults.DefaultCommands; -import baritone.utils.command.execution.CommandExecution; import net.minecraft.util.Tuple; import java.util.List; @@ -72,12 +72,12 @@ public class CommandManager implements ICommandManager { @Override public boolean execute(String string) { - return this.execute(ICommandExecution.expand(string)); + return this.execute(expand(string)); } @Override public boolean execute(Tuple> expanded) { - ICommandExecution execution = this.from(expanded); + ExecutionWrapper execution = this.from(expanded); if (execution != null) { execution.execute(); } @@ -86,13 +86,13 @@ public class CommandManager implements ICommandManager { @Override public Stream tabComplete(Tuple> expanded) { - ICommandExecution execution = this.from(expanded); + ExecutionWrapper execution = this.from(expanded); return execution == null ? Stream.empty() : execution.tabComplete(); } @Override public Stream tabComplete(String prefix) { - Tuple> pair = ICommandExecution.expand(prefix, true); + Tuple> pair = expand(prefix, true); String label = pair.getFirst(); List args = pair.getSecond(); if (args.isEmpty()) { @@ -105,11 +105,54 @@ public class CommandManager implements ICommandManager { } } - private ICommandExecution from(Tuple> expanded) { + private ExecutionWrapper from(Tuple> expanded) { String label = expanded.getFirst(); ArgConsumer args = new ArgConsumer(this, expanded.getSecond()); Command command = this.getCommand(label); - return command == null ? null : new CommandExecution(command, label, args); + return command == null ? null : new ExecutionWrapper(command, label, args); + } + + private static Tuple> expand(String string, boolean preserveEmptyLast) { + String label = string.split("\\s", 2)[0]; + List args = CommandArgument.from(string.substring(label.length()), preserveEmptyLast); + return new Tuple<>(label, args); + } + + public static Tuple> expand(String string) { + return expand(string, false); + } + + private static final class ExecutionWrapper { + private Command command; + private String label; + private ArgConsumer args; + + private ExecutionWrapper(Command command, String label, ArgConsumer args) { + this.command = command; + this.label = label; + this.args = args; + } + + private void execute() { + try { + this.command.execute(this.label, this.args); + } catch (Throwable t) { + // Create a handleable exception, wrap if needed + ICommandException exception = t instanceof ICommandException + ? (ICommandException) t + : new CommandUnhandledException(t); + + exception.handle(command, args.args); + } + } + + private Stream tabComplete() { + try { + return this.command.tabComplete(this.label, this.args); + } catch (Throwable t) { + return Stream.empty(); + } + } } } From 089c5fb0951c64e0c30059a34b788bf43c64d17d Mon Sep 17 00:00:00 2001 From: Leijurv Date: Tue, 1 Oct 2019 14:29:19 -0700 Subject: [PATCH 02/13] fix buildinlayers crash --- src/main/java/baritone/process/BuilderProcess.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index ab1400f87..cd15f2837 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -363,7 +363,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil @Override public boolean inSchematic(int x, int y, int z, IBlockState currentState) { - return ISchematic.super.inSchematic(x, y, z, currentState) && y >= minYInclusive && y <= maxYInclusive; + return ISchematic.super.inSchematic(x, y, z, currentState) && y >= minYInclusive && y <= maxYInclusive && realSchematic.inSchematic(x, y, z, currentState); } @Override From 3a3d880d814f70cee2fb0eb8aa7c4853502f9e7c Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 4 Oct 2019 08:55:02 -0500 Subject: [PATCH 03/13] ArgConsumer API separation --- .../baritone/api/utils/command/Command.java | 6 +- .../command/argparser/ArgParserManager.java | 7 +- .../command/argparser/DefaultArgParsers.java | 22 +- .../utils/command/argparser/IArgParser.java | 10 +- .../command/argument/CommandArgument.java | 170 ------- .../command/argument/ICommandArgument.java | 102 ++++ .../utils/command/datatypes/IDatatype.java | 6 +- .../command/datatypes/IDatatypeContext.java | 8 +- .../command/datatypes/RelativeBlockPos.java | 6 +- .../command/datatypes/RelativeCoordinate.java | 4 +- .../utils/command/datatypes/RelativeFile.java | 4 +- .../utils/command/datatypes/RelativeGoal.java | 6 +- .../command/datatypes/RelativeGoalBlock.java | 6 +- .../command/datatypes/RelativeGoalXZ.java | 6 +- .../command/datatypes/RelativeGoalYLevel.java | 4 +- .../CommandInvalidArgumentException.java | 8 +- .../CommandInvalidTypeException.java | 10 +- .../exception/CommandNotFoundException.java | 4 +- .../exception/CommandUnhandledException.java | 4 +- .../command/exception/ICommandException.java | 4 +- .../{ArgConsumer.java => IArgConsumer.java} | 425 ++++------------- .../command/helpers/pagination/Paginator.java | 28 +- .../tabcomplete/TabCompleteHelper.java | 5 +- .../command/manager/ICommandManager.java | 6 +- .../utils/command/BaritoneChatControl.java | 11 +- .../command/argument/CommandArgument.java | 97 ++++ .../command/argument/CommandArguments.java | 79 ++++ .../utils/command/defaults/AxisCommand.java | 6 +- .../command/defaults/BlacklistCommand.java | 6 +- .../utils/command/defaults/BuildCommand.java | 6 +- .../utils/command/defaults/CancelCommand.java | 6 +- .../utils/command/defaults/ChestsCommand.java | 6 +- .../utils/command/defaults/ClickCommand.java | 6 +- .../utils/command/defaults/ComeCommand.java | 6 +- .../utils/command/defaults/CommandAlias.java | 6 +- .../command/defaults/ExploreCommand.java | 6 +- .../defaults/ExploreFilterCommand.java | 6 +- .../utils/command/defaults/FarmCommand.java | 6 +- .../utils/command/defaults/FindCommand.java | 6 +- .../utils/command/defaults/FollowCommand.java | 6 +- .../command/defaults/ForceCancelCommand.java | 6 +- .../utils/command/defaults/GcCommand.java | 6 +- .../utils/command/defaults/GoalCommand.java | 6 +- .../utils/command/defaults/HelpCommand.java | 6 +- .../utils/command/defaults/InvertCommand.java | 6 +- .../utils/command/defaults/MineCommand.java | 6 +- .../utils/command/defaults/PathCommand.java | 6 +- .../command/defaults/PauseResumeCommands.java | 14 +- .../utils/command/defaults/ProcCommand.java | 6 +- .../command/defaults/ReloadAllCommand.java | 6 +- .../utils/command/defaults/RenderCommand.java | 6 +- .../utils/command/defaults/RepackCommand.java | 6 +- .../command/defaults/SaveAllCommand.java | 6 +- .../command/defaults/SchematicaCommand.java | 6 +- .../utils/command/defaults/SelCommand.java | 6 +- .../utils/command/defaults/SetCommand.java | 6 +- .../command/defaults/ThisWayCommand.java | 6 +- .../utils/command/defaults/TunnelCommand.java | 6 +- .../command/defaults/VersionCommand.java | 6 +- .../command/defaults/WaypointsCommand.java | 6 +- .../helpers/arguments/ArgConsumer.java | 444 ++++++++++++++++++ .../utils/command/manager/CommandManager.java | 23 +- 62 files changed, 1025 insertions(+), 696 deletions(-) delete mode 100644 src/api/java/baritone/api/utils/command/argument/CommandArgument.java create mode 100644 src/api/java/baritone/api/utils/command/argument/ICommandArgument.java rename src/api/java/baritone/api/utils/command/helpers/arguments/{ArgConsumer.java => IArgConsumer.java} (58%) create mode 100644 src/main/java/baritone/utils/command/argument/CommandArgument.java create mode 100644 src/main/java/baritone/utils/command/argument/CommandArguments.java create mode 100644 src/main/java/baritone/utils/command/helpers/arguments/ArgConsumer.java diff --git a/src/api/java/baritone/api/utils/command/Command.java b/src/api/java/baritone/api/utils/command/Command.java index 280c5f03b..ba4ed9386 100644 --- a/src/api/java/baritone/api/utils/command/Command.java +++ b/src/api/java/baritone/api/utils/command/Command.java @@ -21,7 +21,7 @@ import baritone.api.IBaritone; import baritone.api.utils.Helper; import baritone.api.utils.IPlayerContext; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Collections; import java.util.List; @@ -59,13 +59,13 @@ public abstract class Command implements Helper { /** * Called when this command is executed. */ - public abstract void execute(String label, ArgConsumer args) throws CommandException; + public abstract void execute(String label, IArgConsumer args) throws CommandException; /** * Called when the command needs to tab complete. Return a Stream representing the entries to put in the completions * list. */ - public abstract Stream tabComplete(String label, ArgConsumer args) throws CommandException; + public abstract Stream tabComplete(String label, IArgConsumer args) throws CommandException; /** * @return A single-line string containing a short description of this command's purpose. diff --git a/src/api/java/baritone/api/utils/command/argparser/ArgParserManager.java b/src/api/java/baritone/api/utils/command/argparser/ArgParserManager.java index 1b0730c60..2b864f420 100644 --- a/src/api/java/baritone/api/utils/command/argparser/ArgParserManager.java +++ b/src/api/java/baritone/api/utils/command/argparser/ArgParserManager.java @@ -17,10 +17,9 @@ package baritone.api.utils.command.argparser; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import baritone.api.utils.command.exception.CommandInvalidTypeException; import baritone.api.utils.command.exception.CommandNoParserForTypeException; -import baritone.api.utils.command.exception.CommandUnhandledException; import baritone.api.utils.command.registry.Registry; public class ArgParserManager { @@ -69,7 +68,7 @@ public class ArgParserManager { * @return An instance of the specified class. * @throws CommandInvalidTypeException If the parsing failed */ - public static T parseStateless(Class type, CommandArgument arg) throws CommandInvalidTypeException { + public static T parseStateless(Class type, ICommandArgument arg) throws CommandInvalidTypeException { IArgParser.Stateless parser = getParserStateless(type); if (parser == null) { throw new CommandNoParserForTypeException(type); @@ -91,7 +90,7 @@ public class ArgParserManager { * @throws CommandInvalidTypeException If the parsing failed * @see IArgParser.Stated */ - public static T parseStated(Class type, Class stateKlass, CommandArgument arg, S state) throws CommandInvalidTypeException { + public static T parseStated(Class type, Class stateKlass, ICommandArgument arg, S state) throws CommandInvalidTypeException { IArgParser.Stated parser = getParserStated(type, stateKlass); if (parser == null) { throw new CommandNoParserForTypeException(type); diff --git a/src/api/java/baritone/api/utils/command/argparser/DefaultArgParsers.java b/src/api/java/baritone/api/utils/command/argparser/DefaultArgParsers.java index c33f61fbd..b734f47da 100644 --- a/src/api/java/baritone/api/utils/command/argparser/DefaultArgParsers.java +++ b/src/api/java/baritone/api/utils/command/argparser/DefaultArgParsers.java @@ -17,7 +17,7 @@ package baritone.api.utils.command.argparser; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import java.util.Arrays; import java.util.List; @@ -34,8 +34,8 @@ public class DefaultArgParsers { } @Override - public Integer parseArg(CommandArgument arg) throws RuntimeException { - return Integer.parseInt(arg.value); + public Integer parseArg(ICommandArgument arg) throws RuntimeException { + return Integer.parseInt(arg.getValue()); } } @@ -48,8 +48,8 @@ public class DefaultArgParsers { } @Override - public Long parseArg(CommandArgument arg) throws RuntimeException { - return Long.parseLong(arg.value); + public Long parseArg(ICommandArgument arg) throws RuntimeException { + return Long.parseLong(arg.getValue()); } } @@ -62,8 +62,8 @@ public class DefaultArgParsers { } @Override - public Float parseArg(CommandArgument arg) throws RuntimeException { - String value = arg.value; + public Float parseArg(ICommandArgument arg) throws RuntimeException { + String value = arg.getValue(); if (!value.matches("^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)|)$")) { throw new IllegalArgumentException("failed float format check"); } @@ -80,8 +80,8 @@ public class DefaultArgParsers { } @Override - public Double parseArg(CommandArgument arg) throws RuntimeException { - String value = arg.value; + public Double parseArg(ICommandArgument arg) throws RuntimeException { + String value = arg.getValue(); if (!value.matches("^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)|)$")) { throw new IllegalArgumentException("failed double format check"); } @@ -101,8 +101,8 @@ public class DefaultArgParsers { } @Override - public Boolean parseArg(CommandArgument arg) throws RuntimeException { - String value = arg.value; + public Boolean parseArg(ICommandArgument arg) throws RuntimeException { + String value = arg.getValue(); if (TRUTHY_VALUES.contains(value.toLowerCase(Locale.US))) { return true; } else if (FALSY_VALUES.contains(value.toLowerCase(Locale.US))) { diff --git a/src/api/java/baritone/api/utils/command/argparser/IArgParser.java b/src/api/java/baritone/api/utils/command/argparser/IArgParser.java index 09e2aa2ea..c1f615f6f 100644 --- a/src/api/java/baritone/api/utils/command/argparser/IArgParser.java +++ b/src/api/java/baritone/api/utils/command/argparser/IArgParser.java @@ -17,7 +17,7 @@ package baritone.api.utils.command.argparser; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; public interface IArgParser { @@ -27,7 +27,7 @@ public interface IArgParser { Class getTarget(); /** - * A stateless argument parser is just that. It takes a {@link CommandArgument} and outputs its type. + * A stateless argument parser is just that. It takes a {@link ICommandArgument} and outputs its type. * * @see ArgParserManager#REGISTRY */ @@ -39,11 +39,11 @@ public interface IArgParser { * @throws RuntimeException if you want the parsing to fail. The exception will be caught and turned into an * appropriate error. */ - T parseArg(CommandArgument arg) throws Exception; + T parseArg(ICommandArgument arg) throws Exception; } /** - * A stated argument parser is similar to a stateless one. It also takes a {@link CommandArgument}, but it also + * A stated argument parser is similar to a stateless one. It also takes a {@link ICommandArgument}, but it also * takes a second argument that can be any type, referred to as the state. * * @see ArgParserManager#REGISTRY @@ -59,6 +59,6 @@ public interface IArgParser { * @throws RuntimeException if you want the parsing to fail. The exception will be caught and turned into an * appropriate error. */ - T parseArg(CommandArgument arg, S state) throws Exception; + T parseArg(ICommandArgument arg, S state) throws Exception; } } diff --git a/src/api/java/baritone/api/utils/command/argument/CommandArgument.java b/src/api/java/baritone/api/utils/command/argument/CommandArgument.java deleted file mode 100644 index a5b044c43..000000000 --- a/src/api/java/baritone/api/utils/command/argument/CommandArgument.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Baritone. If not, see . - */ - -package baritone.api.utils.command.argument; - -import baritone.api.utils.command.argparser.ArgParserManager; -import baritone.api.utils.command.argparser.IArgParser; -import baritone.api.utils.command.exception.CommandInvalidArgumentException; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; -import net.minecraft.util.EnumFacing; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Stream; - -/** - * A {@link CommandArgument} is an immutable object representing one command argument. It contains data on the index of - * that argument, its value, and the rest of the string that argument was found in - *

- * You're recommended to use {@link ArgConsumer}s to handle these. - */ -public class CommandArgument { - - public final int index; - public final String value; - public final String rawRest; - public final static Pattern argPattern = Pattern.compile("\\S+"); - - private CommandArgument(int index, String value, String rawRest) { - this.index = index; - this.value = value; - this.rawRest = rawRest; - } - - /** - * Gets an enum value from the enum class with the same name as this argument's value - *

- * For example if you getEnum as an {@link EnumFacing}, and this argument's value is "up", it will return {@link - * EnumFacing#UP} - * - * @param enumClass The enum class to search - * @return An enum constant of that class with the same name as this argument's value - * @throws CommandInvalidTypeException If the constant couldn't be found - * @see ArgConsumer#peekEnum(Class) - * @see ArgConsumer#peekEnum(Class, int) - * @see ArgConsumer#peekEnumOrNull(Class) - * @see ArgConsumer#peekEnumOrNull(Class, int) - * @see ArgConsumer#getEnum(Class) - * @see ArgConsumer#getEnumOrNull(Class) - */ - public > E getEnum(Class enumClass) throws CommandInvalidTypeException { - return Stream.of(enumClass.getEnumConstants()) - .filter(e -> e.name().equalsIgnoreCase(value)) - .findFirst() - .orElseThrow(() -> new CommandInvalidTypeException(this, enumClass.getSimpleName())); - } - - /** - * Tries to use a stateless {@link IArgParser} to parse this argument into the specified class - * - * @param type The class to parse this argument into - * @return An instance of the specified type - * @throws CommandInvalidTypeException If the parsing failed - */ - public T getAs(Class type) throws CommandInvalidTypeException { - return ArgParserManager.parseStateless(type, this); - } - - /** - * Tries to use a stateless {@link IArgParser} to parse this argument into the specified class - * - * @param type The class to parse this argument into - * @return If the parser succeeded - */ - public boolean is(Class type) { - try { - getAs(type); - return true; - } catch (Throwable t) { - return false; - } - } - - /** - * Tries to use a stated {@link IArgParser} to parse this argument into the specified class - * - * @param type The class to parse this argument into - * @return An instance of the specified type - * @throws CommandInvalidTypeException If the parsing failed - */ - @SuppressWarnings("UnusedReturnValue") - public T getAs(Class type, Class stateType, S state) throws CommandInvalidTypeException { - return ArgParserManager.parseStated(type, stateType, this, state); - } - - /** - * Tries to use a stated {@link IArgParser} to parse this argument into the specified class - * - * @param type The class to parse this argument into - * @return If the parser succeeded - */ - public boolean is(Class type, Class stateType, S state) { - try { - getAs(type, stateType, state); - return true; - } catch (Throwable t) { - return false; - } - } - - /** - * Turn a string into a list of {@link CommandArgument}s. This is needed because of {@link CommandArgument#rawRest} - * - * @param string The string to convert - * @param preserveEmptyLast If the string ends with whitespace, add an empty {@link CommandArgument} to the end This - * is useful for tab completion - * @return A list of {@link CommandArgument}s - */ - public static List from(String string, boolean preserveEmptyLast) { - List args = new ArrayList<>(); - Matcher argMatcher = argPattern.matcher(string); - int lastEnd = -1; - while (argMatcher.find()) { - args.add(new CommandArgument( - args.size(), - argMatcher.group(), - string.substring(argMatcher.start()) - )); - lastEnd = argMatcher.end(); - } - if (preserveEmptyLast && lastEnd < string.length()) { - args.add(new CommandArgument(args.size(), "", "")); - } - return args; - } - - /** - * @see #from(String, boolean) - */ - public static List from(String string) { - return from(string, false); - } - - /** - * Returns an "unknown" {@link CommandArgument}. This shouldn't be used unless you absolutely have no information - - * ESPECIALLY not with {@link CommandInvalidArgumentException}s - * - * @return The unknown {@link CommandArgument} - */ - public static CommandArgument unknown() { - return new CommandArgument(-1, "", ""); - } -} diff --git a/src/api/java/baritone/api/utils/command/argument/ICommandArgument.java b/src/api/java/baritone/api/utils/command/argument/ICommandArgument.java new file mode 100644 index 000000000..7cbe2540d --- /dev/null +++ b/src/api/java/baritone/api/utils/command/argument/ICommandArgument.java @@ -0,0 +1,102 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.api.utils.command.argument; + +import baritone.api.utils.command.argparser.IArgParser; +import baritone.api.utils.command.exception.CommandInvalidTypeException; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import net.minecraft.util.EnumFacing; + +/** + * A {@link ICommandArgument} is an immutable object representing one command argument. It contains data on the index of + * that argument, its value, and the rest of the string that argument was found in + *

+ * You're recommended to use {@link IArgConsumer}}s to handle these. + * + * @author Brady + * @since 10/2/2019 + */ +public interface ICommandArgument { + + /** + * @return The index of this command argument in the list of command arguments generated + */ + int getIndex(); + + /** + * @return The raw value of just this argument + */ + String getValue(); + + /** + * @return The raw value of the remaining arguments after this one was captured + */ + String getRawRest(); + + /** + * Gets an enum value from the enum class with the same name as this argument's value + *

+ * For example if you getEnum as an {@link EnumFacing}, and this argument's value is "up", it will return {@link + * EnumFacing#UP} + * + * @param enumClass The enum class to search + * @return An enum constant of that class with the same name as this argument's value + * @throws CommandInvalidTypeException If the constant couldn't be found + * @see IArgConsumer#peekEnum(Class) + * @see IArgConsumer#peekEnum(Class, int) + * @see IArgConsumer#peekEnumOrNull(Class) + * @see IArgConsumer#peekEnumOrNull(Class, int) + * @see IArgConsumer#getEnum(Class) + * @see IArgConsumer#getEnumOrNull(Class) + */ + > E getEnum(Class enumClass) throws CommandInvalidTypeException; + + /** + * Tries to use a stateless {@link IArgParser} to parse this argument into the specified class + * + * @param type The class to parse this argument into + * @return An instance of the specified type + * @throws CommandInvalidTypeException If the parsing failed + */ + T getAs(Class type) throws CommandInvalidTypeException; + + /** + * Tries to use a stateless {@link IArgParser} to parse this argument into the specified class + * + * @param type The class to parse this argument into + * @return If the parser succeeded + */ + boolean is(Class type); + + /** + * Tries to use a stated {@link IArgParser} to parse this argument into the specified class + * + * @param type The class to parse this argument into + * @return An instance of the specified type + * @throws CommandInvalidTypeException If the parsing failed + */ + T getAs(Class type, Class stateType, S state) throws CommandInvalidTypeException; + + /** + * Tries to use a stated {@link IArgParser} to parse this argument into the specified class + * + * @param type The class to parse this argument into + * @return If the parser succeeded + */ + boolean is(Class type, Class stateType, S state); +} diff --git a/src/api/java/baritone/api/utils/command/datatypes/IDatatype.java b/src/api/java/baritone/api/utils/command/datatypes/IDatatype.java index 8c155fb68..36a37fecd 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/IDatatype.java +++ b/src/api/java/baritone/api/utils/command/datatypes/IDatatype.java @@ -19,7 +19,7 @@ package baritone.api.utils.command.datatypes; import baritone.api.utils.command.argparser.IArgParser; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.stream.Stream; @@ -41,7 +41,7 @@ import java.util.stream.Stream; public interface IDatatype { /** - * Attempts to complete missing or partial input provided through the {@link ArgConsumer} provided by + * Attempts to complete missing or partial input provided through the {@link IArgConsumer}} provided by * {@link IDatatypeContext#getConsumer()} in order to aide the user in executing commands. *

* One benefit over datatypes over {@link IArgParser}s is that instead of each command trying to guess what values @@ -50,7 +50,7 @@ public interface IDatatype { * * @param ctx The argument consumer to tab complete * @return A stream representing the strings that can be tab completed. DO NOT INCLUDE SPACES IN ANY STRINGS. - * @see ArgConsumer#tabCompleteDatatype(IDatatype) + * @see IArgConsumer#tabCompleteDatatype(IDatatype) */ Stream tabComplete(IDatatypeContext ctx) throws CommandException; } diff --git a/src/api/java/baritone/api/utils/command/datatypes/IDatatypeContext.java b/src/api/java/baritone/api/utils/command/datatypes/IDatatypeContext.java index 1452bf4ab..33f3ad232 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/IDatatypeContext.java +++ b/src/api/java/baritone/api/utils/command/datatypes/IDatatypeContext.java @@ -18,7 +18,7 @@ package baritone.api.utils.command.datatypes; import baritone.api.IBaritone; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; /** * Provides an {@link IDatatype} with contextual information so @@ -39,9 +39,9 @@ public interface IDatatypeContext { IBaritone getBaritone(); /** - * Provides the {@link ArgConsumer} to fetch input information from. + * Provides the {@link IArgConsumer}} to fetch input information from. * - * @return The context {@link ArgConsumer}. + * @return The context {@link IArgConsumer}}. */ - ArgConsumer getConsumer(); + IArgConsumer getConsumer(); } diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeBlockPos.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeBlockPos.java index 8459db88d..4a8762204 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeBlockPos.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeBlockPos.java @@ -19,7 +19,7 @@ package baritone.api.utils.command.datatypes; import baritone.api.utils.BetterBlockPos; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.stream.Stream; @@ -32,7 +32,7 @@ public enum RelativeBlockPos implements IDatatypePost tabComplete(IDatatypeContext ctx) throws CommandException { - final ArgConsumer consumer = ctx.getConsumer(); + final IArgConsumer consumer = ctx.getConsumer(); if (consumer.hasAny() && !consumer.has(4)) { while (consumer.has(2)) { if (consumer.peekDatatypeOrNull(RelativeCoordinate.INSTANCE) == null) { diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java index 84a29f63d..7ef3532a3 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java @@ -18,7 +18,7 @@ package baritone.api.utils.command.datatypes; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -51,7 +51,7 @@ public enum RelativeCoordinate implements IDatatypePost { @Override public Stream tabComplete(IDatatypeContext ctx) throws CommandException { - final ArgConsumer consumer = ctx.getConsumer(); + final IArgConsumer consumer = ctx.getConsumer(); if (!consumer.has(2) && consumer.getString().matches("^(~|$)")) { return Stream.of("~"); } diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeFile.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeFile.java index 71a9ca58c..0ad4b88b0 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeFile.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeFile.java @@ -18,7 +18,7 @@ package baritone.api.utils.command.datatypes; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.io.File; import java.io.IOException; @@ -70,7 +70,7 @@ public enum RelativeFile implements IDatatypePost { } } - public static Stream tabComplete(ArgConsumer consumer, File base0) throws CommandException { + public static Stream tabComplete(IArgConsumer consumer, File base0) throws CommandException { // I will not make the caller deal with this, seriously // Tab complete code is beautiful and I'm not going to bloat it with dumb ass checked exception bullshit -LoganDark diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoal.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeGoal.java index d47e05ce4..0c98073f5 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoal.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeGoal.java @@ -23,7 +23,7 @@ import baritone.api.pathing.goals.GoalXZ; import baritone.api.pathing.goals.GoalYLevel; import baritone.api.utils.BetterBlockPos; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.util.math.MathHelper; import java.util.ArrayList; @@ -38,10 +38,10 @@ public enum RelativeGoal implements IDatatypePost { if (origin == null) { origin = BetterBlockPos.ORIGIN; } - final ArgConsumer consumer = ctx.getConsumer(); + final IArgConsumer consumer = ctx.getConsumer(); List> coords = new ArrayList<>(); - final ArgConsumer copy = consumer.copy(); // This is a hack and should be fixed in the future probably + final IArgConsumer copy = consumer.copy(); // This is a hack and should be fixed in the future probably for (int i = 0; i < 3; i++) { if (copy.peekDatatypeOrNull(RelativeCoordinate.INSTANCE) != null) { coords.add(o -> consumer.getDatatypePost(RelativeCoordinate.INSTANCE, o)); diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalBlock.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalBlock.java index cd1c0be10..b3c0e2846 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalBlock.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalBlock.java @@ -20,7 +20,7 @@ package baritone.api.utils.command.datatypes; import baritone.api.pathing.goals.GoalBlock; import baritone.api.utils.BetterBlockPos; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.util.math.MathHelper; import java.util.stream.Stream; @@ -34,7 +34,7 @@ public enum RelativeGoalBlock implements IDatatypePost tabComplete(IDatatypeContext ctx) { - final ArgConsumer consumer = ctx.getConsumer(); + final IArgConsumer consumer = ctx.getConsumer(); if (consumer.hasAtMost(3)) { return consumer.tabCompleteDatatype(RelativeCoordinate.INSTANCE); } diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalXZ.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalXZ.java index b8bd0cd62..22d50ebfa 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalXZ.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalXZ.java @@ -20,7 +20,7 @@ package baritone.api.utils.command.datatypes; import baritone.api.pathing.goals.GoalXZ; import baritone.api.utils.BetterBlockPos; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.util.math.MathHelper; import java.util.stream.Stream; @@ -34,7 +34,7 @@ public enum RelativeGoalXZ implements IDatatypePost { origin = BetterBlockPos.ORIGIN; } - final ArgConsumer consumer = ctx.getConsumer(); + final IArgConsumer consumer = ctx.getConsumer(); return new GoalXZ( MathHelper.floor(consumer.getDatatypePost(RelativeCoordinate.INSTANCE, (double) origin.x)), MathHelper.floor(consumer.getDatatypePost(RelativeCoordinate.INSTANCE, (double) origin.y)) @@ -43,7 +43,7 @@ public enum RelativeGoalXZ implements IDatatypePost { @Override public Stream tabComplete(IDatatypeContext ctx) { - final ArgConsumer consumer = ctx.getConsumer(); + final IArgConsumer consumer = ctx.getConsumer(); if (consumer.hasAtMost(2)) { return consumer.tabCompleteDatatype(RelativeCoordinate.INSTANCE); } diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalYLevel.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalYLevel.java index a8a9b232e..7a443b27d 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalYLevel.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalYLevel.java @@ -20,7 +20,7 @@ package baritone.api.utils.command.datatypes; import baritone.api.pathing.goals.GoalYLevel; import baritone.api.utils.BetterBlockPos; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.util.math.MathHelper; import java.util.stream.Stream; @@ -41,7 +41,7 @@ public enum RelativeGoalYLevel implements IDatatypePost tabComplete(IDatatypeContext ctx) { - final ArgConsumer consumer = ctx.getConsumer(); + final IArgConsumer consumer = ctx.getConsumer(); if (consumer.hasAtMost(1)) { return consumer.tabCompleteDatatype(RelativeCoordinate.INSTANCE); } diff --git a/src/api/java/baritone/api/utils/command/exception/CommandInvalidArgumentException.java b/src/api/java/baritone/api/utils/command/exception/CommandInvalidArgumentException.java index 627067051..bc9236e45 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandInvalidArgumentException.java +++ b/src/api/java/baritone/api/utils/command/exception/CommandInvalidArgumentException.java @@ -17,16 +17,16 @@ package baritone.api.utils.command.exception; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; public abstract class CommandInvalidArgumentException extends CommandErrorMessageException { - public final CommandArgument arg; + public final ICommandArgument arg; - protected CommandInvalidArgumentException(CommandArgument arg, String reason) { + protected CommandInvalidArgumentException(ICommandArgument arg, String reason) { super(String.format( "Error at argument #%s: %s", - arg.index == -1 ? "" : Integer.toString(arg.index + 1), + arg.getIndex() == -1 ? "" : Integer.toString(arg.getIndex() + 1), reason )); this.arg = arg; diff --git a/src/api/java/baritone/api/utils/command/exception/CommandInvalidTypeException.java b/src/api/java/baritone/api/utils/command/exception/CommandInvalidTypeException.java index 5e5b81cdd..8dffe1d02 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandInvalidTypeException.java +++ b/src/api/java/baritone/api/utils/command/exception/CommandInvalidTypeException.java @@ -17,23 +17,23 @@ package baritone.api.utils.command.exception; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; public class CommandInvalidTypeException extends CommandInvalidArgumentException { - public CommandInvalidTypeException(CommandArgument arg, String expected) { + public CommandInvalidTypeException(ICommandArgument arg, String expected) { super(arg, String.format("Expected %s", expected)); } - public CommandInvalidTypeException(CommandArgument arg, String expected, Throwable cause) { + public CommandInvalidTypeException(ICommandArgument arg, String expected, Throwable cause) { super(arg, String.format("Expected %s.\nMore details: %s", expected, cause.getMessage())); } - public CommandInvalidTypeException(CommandArgument arg, String expected, String got) { + public CommandInvalidTypeException(ICommandArgument arg, String expected, String got) { super(arg, String.format("Expected %s, but got %s instead", expected, got)); } - public CommandInvalidTypeException(CommandArgument arg, String expected, String got, Throwable cause) { + public CommandInvalidTypeException(ICommandArgument arg, String expected, String got, Throwable cause) { super(arg, String.format("Expected %s, but got %s instead.\nMore details: %s", expected, got, cause.getMessage())); } } diff --git a/src/api/java/baritone/api/utils/command/exception/CommandNotFoundException.java b/src/api/java/baritone/api/utils/command/exception/CommandNotFoundException.java index e8904cbc8..bca8d543d 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandNotFoundException.java +++ b/src/api/java/baritone/api/utils/command/exception/CommandNotFoundException.java @@ -18,7 +18,7 @@ package baritone.api.utils.command.exception; import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import java.util.List; @@ -34,7 +34,7 @@ public class CommandNotFoundException extends CommandException { } @Override - public void handle(Command command, List args) { + public void handle(Command command, List args) { HELPER.logDirect(getMessage()); } } diff --git a/src/api/java/baritone/api/utils/command/exception/CommandUnhandledException.java b/src/api/java/baritone/api/utils/command/exception/CommandUnhandledException.java index 6d647a201..55b359cc6 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandUnhandledException.java +++ b/src/api/java/baritone/api/utils/command/exception/CommandUnhandledException.java @@ -18,7 +18,7 @@ package baritone.api.utils.command.exception; import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import net.minecraft.util.text.TextFormatting; import java.util.List; @@ -36,7 +36,7 @@ public class CommandUnhandledException extends RuntimeException implements IComm } @Override - public void handle(Command command, List args) { + public void handle(Command command, List args) { HELPER.logDirect("An unhandled exception occurred." + "The error is in your game's log, please report this at https://github.com/cabaletta/baritone/issues", TextFormatting.RED); diff --git a/src/api/java/baritone/api/utils/command/exception/ICommandException.java b/src/api/java/baritone/api/utils/command/exception/ICommandException.java index 379e97b7f..229c08c04 100644 --- a/src/api/java/baritone/api/utils/command/exception/ICommandException.java +++ b/src/api/java/baritone/api/utils/command/exception/ICommandException.java @@ -18,7 +18,7 @@ package baritone.api.utils.command.exception; import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import net.minecraft.util.text.TextFormatting; import java.util.List; @@ -49,7 +49,7 @@ public interface ICommandException { * @param command The command that threw it. * @param args The arguments the command was called with. */ - default void handle(Command command, List args) { + default void handle(Command command, List args) { HELPER.logDirect(this.getMessage(), TextFormatting.RED); } } diff --git a/src/api/java/baritone/api/utils/command/helpers/arguments/ArgConsumer.java b/src/api/java/baritone/api/utils/command/helpers/arguments/IArgConsumer.java similarity index 58% rename from src/api/java/baritone/api/utils/command/helpers/arguments/ArgConsumer.java rename to src/api/java/baritone/api/utils/command/helpers/arguments/IArgConsumer.java index e92855d1d..1e50a5304 100644 --- a/src/api/java/baritone/api/utils/command/helpers/arguments/ArgConsumer.java +++ b/src/api/java/baritone/api/utils/command/helpers/arguments/IArgConsumer.java @@ -17,171 +17,118 @@ package baritone.api.utils.command.helpers.arguments; -import baritone.api.IBaritone; import baritone.api.utils.Helper; import baritone.api.utils.command.Command; import baritone.api.utils.command.argparser.IArgParser; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import baritone.api.utils.command.datatypes.IDatatype; -import baritone.api.utils.command.datatypes.IDatatypeContext; import baritone.api.utils.command.datatypes.IDatatypeFor; import baritone.api.utils.command.datatypes.IDatatypePost; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidTypeException; import baritone.api.utils.command.exception.CommandNotEnoughArgumentsException; import baritone.api.utils.command.exception.CommandTooManyArgumentsException; -import baritone.api.utils.command.manager.ICommandManager; import net.minecraft.util.EnumFacing; -import java.util.ArrayList; import java.util.Deque; import java.util.LinkedList; -import java.util.List; import java.util.stream.Stream; /** - * The {@link ArgConsumer} is how {@link Command}s read the arguments passed to them. This class has many benefits: + * The {@link IArgConsumer} is how {@link Command}s read the arguments passed to them. This class has many benefits: * *

    - *
  • Mutability. The whole concept of the {@link ArgConsumer} is to let you gradually consume arguments in any way + *
  • Mutability. The whole concept of the {@link IArgConsumer}} is to let you gradually consume arguments in any way * you'd like. You can change your consumption based on earlier arguments, for subcommands for example.
  • - *
  • You don't need to keep track of your consumption. The {@link ArgConsumer} keeps track of the arguments you + *
  • You don't need to keep track of your consumption. The {@link IArgConsumer}} keeps track of the arguments you * consume so that it can throw detailed exceptions whenever something is out of the ordinary. Additionally, if you * need to retrieve an argument after you've already consumed it - look no further than {@link #consumed()}!
  • *
  • Easy retrieval of many different types. If you need to retrieve an instance of an int or float for example, * look no further than {@link #getAs(Class)}. If you need a more powerful way of retrieving data, try out the many * {@code getDatatype...} methods.
  • - *
  • It's very easy to throw detailed exceptions. The {@link ArgConsumer} has many different methods that can + *
  • It's very easy to throw detailed exceptions. The {@link IArgConsumer}} has many different methods that can * enforce the number of arguments, the type of arguments, and more, throwing different types of * {@link CommandException}s if something seems off. You're recommended to do all validation and store all needed * data in variables BEFORE logging any data to chat via {@link Helper#logDirect(String)}, so that the error * handlers can do their job and log the error to chat.
  • *
*/ -public class ArgConsumer { +public interface IArgConsumer { - /** - * The parent {@link ICommandManager} for this {@link ArgConsumer}. Used by {@link #context}. - */ - private final ICommandManager manager; + LinkedList getArgs(); - /** - * The {@link IDatatypeContext} instance for this {@link ArgConsumer}, passed to - * datatypes when an operation is performed upon them. - * - * @see IDatatype - * @see IDatatypeContext - */ - private final IDatatypeContext context; - - /** - * The list of arguments in this ArgConsumer - */ - public final LinkedList args; - - /** - * The list of consumed arguments for this ArgConsumer. The most recently consumed argument is the last one - */ - public final Deque consumed; - - private ArgConsumer(ICommandManager manager, Deque args, Deque consumed) { - this.manager = manager; - this.context = this.new Context(); - this.args = new LinkedList<>(args); - this.consumed = new LinkedList<>(consumed); - } - - public ArgConsumer(ICommandManager manager, List args) { - this(manager, new LinkedList<>(args), new LinkedList<>()); - } + Deque getConsumed(); /** * @param num The number of arguments to check for - * @return {@code true} if there are at least {@code num} arguments left in this {@link ArgConsumer} + * @return {@code true} if there are at least {@code num} arguments left in this {@link IArgConsumer}} * @see #hasAny() * @see #hasAtMost(int) * @see #hasExactly(int) */ - public boolean has(int num) { - return args.size() >= num; - } + boolean has(int num); /** - * @return {@code true} if there is at least 1 argument left in this {@link ArgConsumer} + * @return {@code true} if there is at least 1 argument left in this {@link IArgConsumer}} * @see #has(int) * @see #hasAtMostOne() * @see #hasExactlyOne() */ - public boolean hasAny() { - return has(1); - } + boolean hasAny(); /** * @param num The number of arguments to check for - * @return {@code true} if there are at most {@code num} arguments left in this {@link ArgConsumer} + * @return {@code true} if there are at most {@code num} arguments left in this {@link IArgConsumer}} * @see #has(int) * @see #hasAtMost(int) * @see #hasExactly(int) */ - public boolean hasAtMost(int num) { - return args.size() <= num; - } + boolean hasAtMost(int num); /** - * @return {@code true} if there is at most 1 argument left in this {@link ArgConsumer} + * @return {@code true} if there is at most 1 argument left in this {@link IArgConsumer}} * @see #hasAny() * @see #hasAtMostOne() * @see #hasExactlyOne() */ - public boolean hasAtMostOne() { - return hasAtMost(1); - } + boolean hasAtMostOne(); /** * @param num The number of arguments to check for - * @return {@code true} if there are exactly {@code num} arguments left in this {@link ArgConsumer} + * @return {@code true} if there are exactly {@code num} arguments left in this {@link IArgConsumer}} * @see #has(int) * @see #hasAtMost(int) */ - public boolean hasExactly(int num) { - return args.size() == num; - } + boolean hasExactly(int num); /** - * @return {@code true} if there is exactly 1 argument left in this {@link ArgConsumer} + * @return {@code true} if there is exactly 1 argument left in this {@link IArgConsumer}} * @see #hasAny() * @see #hasAtMostOne() */ - public boolean hasExactlyOne() { - return hasExactly(1); - } + boolean hasExactlyOne(); /** * @param index The index to peek - * @return The argument at index {@code index} in this {@link ArgConsumer}, with 0 being the next one. This does not - * mutate the {@link ArgConsumer} + * @return The argument at index {@code index} in this {@link IArgConsumer}}, with 0 being the next one. This does not + * mutate the {@link IArgConsumer}} * @throws CommandNotEnoughArgumentsException If there is less than {@code index + 1} arguments left * @see #peek() * @see #peekString(int) * @see #peekAs(Class, int) * @see #get() */ - public CommandArgument peek(int index) throws CommandNotEnoughArgumentsException { - requireMin(index + 1); - return args.get(index); - } + ICommandArgument peek(int index) throws CommandNotEnoughArgumentsException; /** - * @return The next argument in this {@link ArgConsumer}. This does not mutate the {@link ArgConsumer} + * @return The next argument in this {@link IArgConsumer}}. This does not mutate the {@link IArgConsumer}} * @throws CommandNotEnoughArgumentsException If there is less than one argument left * @see #peek(int) * @see #peekString() * @see #peekAs(Class) * @see #get() */ - public CommandArgument peek() throws CommandNotEnoughArgumentsException { - return peek(0); - } + ICommandArgument peek() throws CommandNotEnoughArgumentsException; /** * @param index The index to peek @@ -192,9 +139,7 @@ public class ArgConsumer { * @see #peek() * @see #getAs(Class) */ - public boolean is(Class type, int index) throws CommandNotEnoughArgumentsException { - return peek(index).is(type); - } + boolean is(Class type, int index) throws CommandNotEnoughArgumentsException; /** * @param type The type to check for @@ -204,31 +149,25 @@ public class ArgConsumer { * @see #peek() * @see #getAs(Class) */ - public boolean is(Class type) throws CommandNotEnoughArgumentsException { - return is(type, 0); - } + boolean is(Class type) throws CommandNotEnoughArgumentsException; /** * @param index The index to peek - * @return The value of the argument at index {@code index} in this {@link ArgConsumer}, with 0 being the next one - * This does not mutate the {@link ArgConsumer} + * @return The value of the argument at index {@code index} in this {@link IArgConsumer}}, with 0 being the next one + * This does not mutate the {@link IArgConsumer}} * @throws CommandNotEnoughArgumentsException If there is less than {@code index + 1} arguments left * @see #peek() * @see #peekString() */ - public String peekString(int index) throws CommandNotEnoughArgumentsException { - return peek(index).value; - } + String peekString(int index) throws CommandNotEnoughArgumentsException; /** - * @return The value of the next argument in this {@link ArgConsumer}. This does not mutate the {@link ArgConsumer} + * @return The value of the next argument in this {@link IArgConsumer}}. This does not mutate the {@link IArgConsumer}} * @throws CommandNotEnoughArgumentsException If there is less than one argument left * @see #peekString(int) * @see #getString() */ - public String peekString() throws CommandNotEnoughArgumentsException { - return peekString(0); - } + String peekString() throws CommandNotEnoughArgumentsException; /** * @param index The index to peek @@ -238,11 +177,9 @@ public class ArgConsumer { * @throws java.util.NoSuchElementException If the constant couldn't be found * @see #peekEnumOrNull(Class) * @see #getEnum(Class) - * @see CommandArgument#getEnum(Class) + * @see ICommandArgument#getEnum(Class) */ - public > E peekEnum(Class enumClass, int index) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return peek(index).getEnum(enumClass); - } + > E peekEnum(Class enumClass, int index) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; /** * @param enumClass The class to search @@ -251,11 +188,9 @@ public class ArgConsumer { * @throws CommandInvalidTypeException If the constant couldn't be found * @see #peekEnumOrNull(Class) * @see #getEnum(Class) - * @see CommandArgument#getEnum(Class) + * @see ICommandArgument#getEnum(Class) */ - public > E peekEnum(Class enumClass) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return peekEnum(enumClass, 0); - } + > E peekEnum(Class enumClass) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; /** * @param index The index to peek @@ -264,15 +199,9 @@ public class ArgConsumer { * next argument's value. If no constant could be found, null * @see #peekEnum(Class) * @see #getEnumOrNull(Class) - * @see CommandArgument#getEnum(Class) + * @see ICommandArgument#getEnum(Class) */ - public > E peekEnumOrNull(Class enumClass, int index) throws CommandNotEnoughArgumentsException { - try { - return peekEnum(enumClass, index); - } catch (CommandInvalidTypeException e) { - return null; - } - } + > E peekEnumOrNull(Class enumClass, int index) throws CommandNotEnoughArgumentsException; /** * @param enumClass The class to search @@ -280,11 +209,9 @@ public class ArgConsumer { * next argument's value. If no constant could be found, null * @see #peekEnum(Class) * @see #getEnumOrNull(Class) - * @see CommandArgument#getEnum(Class) + * @see ICommandArgument#getEnum(Class) */ - public > E peekEnumOrNull(Class enumClass) throws CommandNotEnoughArgumentsException { - return peekEnumOrNull(enumClass, 0); - } + > E peekEnumOrNull(Class enumClass) throws CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the argument at the specified index into the specified @@ -292,7 +219,7 @@ public class ArgConsumer { *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @param index The index to peek @@ -303,16 +230,14 @@ public class ArgConsumer { * @see #peekAsOrDefault(Class, Object, int) * @see #peekAsOrNull(Class, int) */ - public T peekAs(Class type, int index) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return peek(index).getAs(type); - } + T peekAs(Class type, int index) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the next argument into the specified class *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @return An instance of the specified type @@ -322,9 +247,7 @@ public class ArgConsumer { * @see #peekAsOrDefault(Class, Object) * @see #peekAsOrNull(Class) */ - public T peekAs(Class type) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return peekAs(type, 0); - } + T peekAs(Class type) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the argument at the specified index into the specified @@ -332,7 +255,7 @@ public class ArgConsumer { *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @param def The value to return if the argument can't be parsed @@ -343,20 +266,14 @@ public class ArgConsumer { * @see #peekAs(Class, int) * @see #peekAsOrNull(Class, int) */ - public T peekAsOrDefault(Class type, T def, int index) throws CommandNotEnoughArgumentsException { - try { - return peekAs(type, index); - } catch (CommandInvalidTypeException e) { - return def; - } - } + T peekAsOrDefault(Class type, T def, int index) throws CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the next argument into the specified class *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @param def The value to return if the argument can't be parsed @@ -366,9 +283,7 @@ public class ArgConsumer { * @see #peekAs(Class) * @see #peekAsOrNull(Class) */ - public T peekAsOrDefault(Class type, T def) throws CommandNotEnoughArgumentsException { - return peekAsOrDefault(type, def, 0); - } + T peekAsOrDefault(Class type, T def) throws CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the argument at the specified index into the specified @@ -376,7 +291,7 @@ public class ArgConsumer { *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @param index The index to peek @@ -386,16 +301,14 @@ public class ArgConsumer { * @see #peekAs(Class, int) * @see #peekAsOrDefault(Class, Object, int) */ - public T peekAsOrNull(Class type, int index) throws CommandNotEnoughArgumentsException { - return peekAsOrDefault(type, null, index); - } + T peekAsOrNull(Class type, int index) throws CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the next argument into the specified class *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @return An instance of the specified type, or {@code null} if it couldn't be parsed @@ -404,48 +317,30 @@ public class ArgConsumer { * @see #peekAs(Class) * @see #peekAsOrDefault(Class, Object) */ - public T peekAsOrNull(Class type) throws CommandNotEnoughArgumentsException { - return peekAsOrNull(type, 0); - } + T peekAsOrNull(Class type) throws CommandNotEnoughArgumentsException; - public T peekDatatype(IDatatypeFor datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return copy().getDatatypeFor(datatype); - } + T peekDatatype(IDatatypeFor datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; - public T peekDatatype(IDatatypePost datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return this.peekDatatype(datatype, null); - } + T peekDatatype(IDatatypePost datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; - public T peekDatatype(IDatatypePost datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return copy().getDatatypePost(datatype, original); - } + T peekDatatype(IDatatypePost datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; - public T peekDatatypeOrNull(IDatatypeFor datatype) { - return copy().getDatatypeForOrNull(datatype); - } + T peekDatatypeOrNull(IDatatypeFor datatype); - public T peekDatatypeOrNull(IDatatypePost datatype) { - return copy().getDatatypePostOrNull(datatype, null); - } + T peekDatatypeOrNull(IDatatypePost datatype); - public > T peekDatatypePost(D datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return copy().getDatatypePost(datatype, original); - } + > T peekDatatypePost(D datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; - public > T peekDatatypePostOrDefault(D datatype, O original, T def) { - return copy().getDatatypePostOrDefault(datatype, original, def); - } + > T peekDatatypePostOrDefault(D datatype, O original, T def); - public > T peekDatatypePostOrNull(D datatype, O original) { - return peekDatatypePostOrDefault(datatype, original, null); - } + > T peekDatatypePostOrNull(D datatype, O original); /** * Attempts to get the specified {@link IDatatypeFor} from this ArgConsumer *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. *

* Since this is a peek operation, this ArgConsumer will not be mutated by any call to this method. * @@ -454,16 +349,14 @@ public class ArgConsumer { * @see IDatatype * @see IDatatypeFor */ - public > T peekDatatypeFor(Class datatype) { - return copy().peekDatatypeFor(datatype); - } + > T peekDatatypeFor(Class datatype); /** * Attempts to get the specified {@link IDatatypeFor} from this ArgConsumer *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. *

* Since this is a peek operation, this ArgConsumer will not be mutated by any call to this method. * @@ -473,16 +366,14 @@ public class ArgConsumer { * @see IDatatype * @see IDatatypeFor */ - public > T peekDatatypeForOrDefault(Class datatype, T def) { - return copy().peekDatatypeForOrDefault(datatype, def); - } + > T peekDatatypeForOrDefault(Class datatype, T def); /** * Attempts to get the specified {@link IDatatypeFor} from this ArgConsumer *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. *

* Since this is a peek operation, this ArgConsumer will not be mutated by any call to this method. * @@ -491,9 +382,7 @@ public class ArgConsumer { * @see IDatatype * @see IDatatypeFor */ - public > T peekDatatypeForOrNull(Class datatype) { - return peekDatatypeForOrDefault(datatype, null); - } + > T peekDatatypeForOrNull(Class datatype); /** * Gets the next argument and returns it. This consumes the first argument so that subsequent calls will return @@ -502,12 +391,7 @@ public class ArgConsumer { * @return The next argument * @throws CommandNotEnoughArgumentsException If there's less than one argument left */ - public CommandArgument get() throws CommandNotEnoughArgumentsException { - requireMin(1); - CommandArgument arg = args.removeFirst(); - consumed.add(arg); - return arg; - } + ICommandArgument get() throws CommandNotEnoughArgumentsException; /** * Gets the value of the next argument and returns it. This consumes the first argument so that subsequent calls @@ -516,9 +400,7 @@ public class ArgConsumer { * @return The value of the next argument * @throws CommandNotEnoughArgumentsException If there's less than one argument left */ - public String getString() throws CommandNotEnoughArgumentsException { - return get().value; - } + String getString() throws CommandNotEnoughArgumentsException; /** * Gets an enum value from the enum class with the same name as the next argument's value @@ -531,11 +413,9 @@ public class ArgConsumer { * @throws CommandInvalidTypeException If the constant couldn't be found * @see #peekEnum(Class) * @see #getEnumOrNull(Class) - * @see CommandArgument#getEnum(Class) + * @see ICommandArgument#getEnum(Class) */ - public > E getEnum(Class enumClass) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return get().getEnum(enumClass); - } + > E getEnum(Class enumClass) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; /** * Gets an enum value from the enum class with the same name as the next argument's value @@ -550,16 +430,9 @@ public class ArgConsumer { * @see #getEnum(Class) * @see #getEnumOrNull(Class) * @see #peekEnumOrNull(Class) - * @see CommandArgument#getEnum(Class) + * @see ICommandArgument#getEnum(Class) */ - public > E getEnumOrDefault(Class enumClass, E def) throws CommandNotEnoughArgumentsException { - try { - peekEnum(enumClass); - return getEnum(enumClass); - } catch (CommandInvalidTypeException e) { - return def; - } - } + > E getEnumOrDefault(Class enumClass, E def) throws CommandNotEnoughArgumentsException; /** * Gets an enum value from the enum class with the same name as the next argument's value @@ -573,18 +446,16 @@ public class ArgConsumer { * @see #getEnum(Class) * @see #getEnumOrDefault(Class, Enum) * @see #peekEnumOrNull(Class) - * @see CommandArgument#getEnum(Class) + * @see ICommandArgument#getEnum(Class) */ - public > E getEnumOrNull(Class enumClass) throws CommandNotEnoughArgumentsException { - return getEnumOrDefault(enumClass, null); - } + > E getEnumOrNull(Class enumClass) throws CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the next argument into the specified class *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @return An instance of the specified type @@ -597,16 +468,14 @@ public class ArgConsumer { * @see #peekAsOrDefault(Class, Object, int) * @see #peekAsOrNull(Class, int) */ - public T getAs(Class type) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - return get().getAs(type); - } + T getAs(Class type) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the next argument into the specified class *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @param def The default value @@ -619,22 +488,14 @@ public class ArgConsumer { * @see #peekAsOrDefault(Class, Object, int) * @see #peekAsOrNull(Class, int) */ - public T getAsOrDefault(Class type, T def) throws CommandNotEnoughArgumentsException { - try { - T val = peek().getAs(type); - get(); - return val; - } catch (CommandInvalidTypeException e) { - return def; - } - } + T getAsOrDefault(Class type, T def) throws CommandNotEnoughArgumentsException; /** * Tries to use a stateless {@link IArgParser} to parse the next argument into the specified class *

* A critical difference between {@link IDatatype}s and {@link IArgParser}s is how many arguments they can take. * While {@link IArgParser}s always operate on a single argument's value, {@link IDatatype}s get access to the entire - * {@link ArgConsumer}. + * {@link IArgConsumer}}. * * @param type The type to peek as * @return An instance of the specified type, or {@code null} if it couldn't be parsed @@ -646,75 +507,25 @@ public class ArgConsumer { * @see #peekAsOrDefault(Class, Object, int) * @see #peekAsOrNull(Class, int) */ - public T getAsOrNull(Class type) throws CommandNotEnoughArgumentsException { - return getAsOrDefault(type, null); - } + T getAsOrNull(Class type) throws CommandNotEnoughArgumentsException; - public > T getDatatypePost(D datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - try { - return datatype.apply(this.context, original); - } catch (Exception e) { - e.printStackTrace(); - throw new CommandInvalidTypeException(hasAny() ? peek() : consumed(), datatype.getClass().getSimpleName()); - } - } + > T getDatatypePost(D datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; - public > T getDatatypePostOrDefault(D datatype, O original, T _default) { - final List argsSnapshot = new ArrayList<>(this.args); - final List consumedSnapshot = new ArrayList<>(this.consumed); - try { - return this.getDatatypePost(datatype, original); - } catch (Exception e) { - this.args.clear(); - this.args.addAll(argsSnapshot); - this.consumed.clear(); - this.consumed.addAll(consumedSnapshot); - return _default; - } - } + > T getDatatypePostOrDefault(D datatype, O original, T _default); - public > T getDatatypePostOrNull(D datatype, O original) { - return this.getDatatypePostOrDefault(datatype, original, null); - } + > T getDatatypePostOrNull(D datatype, O original); - public > T getDatatypeFor(D datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { - try { - return datatype.get(this.context); - } catch (Exception e) { - throw new CommandInvalidTypeException(hasAny() ? peek() : consumed(), datatype.getClass().getSimpleName()); - } - } + > T getDatatypeFor(D datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException; - public > T getDatatypeForOrDefault(D datatype, T def) { - final List argsSnapshot = new ArrayList<>(this.args); - final List consumedSnapshot = new ArrayList<>(this.consumed); - try { - return this.getDatatypeFor(datatype); - } catch (Exception e) { - this.args.clear(); - this.args.addAll(argsSnapshot); - this.consumed.clear(); - this.consumed.addAll(consumedSnapshot); - return def; - } - } + > T getDatatypeForOrDefault(D datatype, T def); - public > T getDatatypeForOrNull(D datatype) { - return this.getDatatypeForOrDefault(datatype, null); - } + > T getDatatypeForOrNull(D datatype); - public Stream tabCompleteDatatype(T datatype) { - try { - return datatype.tabComplete(this.context); - } catch (Exception e) { - e.printStackTrace(); - } - return Stream.empty(); - } + Stream tabCompleteDatatype(T datatype); /** * Returns the "raw rest" of the string. For example, from a string arg1 arg2  arg3, split - * into three {@link CommandArgument}s {@code "arg1"}, {@code "arg2"}, and {@code "arg3"}: + * into three {@link ICommandArgument}s {@code "arg1"}, {@code "arg2"}, and {@code "arg3"}: * *

    *
  • {@code rawRest()} would return arg1 arg2  arg3
  • @@ -726,9 +537,7 @@ public class ArgConsumer { * * @return The "raw rest" of the string. */ - public String rawRest() { - return args.size() > 0 ? args.getFirst().rawRest : ""; - } + String rawRest(); /** * @param min The minimum amount of arguments to require. @@ -736,11 +545,7 @@ public class ArgConsumer { * @see #requireMax(int) * @see #requireExactly(int) */ - public void requireMin(int min) throws CommandNotEnoughArgumentsException { - if (args.size() < min) { - throw new CommandNotEnoughArgumentsException(min + consumed.size()); - } - } + void requireMin(int min) throws CommandNotEnoughArgumentsException; /** * @param max The maximum amount of arguments allowed. @@ -748,11 +553,7 @@ public class ArgConsumer { * @see #requireMin(int) * @see #requireExactly(int) */ - public void requireMax(int max) throws CommandTooManyArgumentsException { - if (args.size() > max) { - throw new CommandTooManyArgumentsException(max + consumed.size()); - } - } + void requireMax(int max) throws CommandTooManyArgumentsException; /** * @param args The exact amount of arguments to require. @@ -761,58 +562,34 @@ public class ArgConsumer { * @see #requireMin(int) * @see #requireMax(int) */ - public void requireExactly(int args) throws CommandException { - requireMin(args); - requireMax(args); - } + void requireExactly(int args) throws CommandException; /** - * @return If this {@link ArgConsumer} has consumed at least one argument. + * @return If this {@link IArgConsumer}} has consumed at least one argument. * @see #consumed() * @see #consumedString() */ - public boolean hasConsumed() { - return !consumed.isEmpty(); - } + boolean hasConsumed(); /** - * @return The last argument this {@link ArgConsumer} has consumed, or the {@link CommandArgument#unknown() unknown} - * argument if no arguments have been consumed yet. + * @return The last argument this {@link IArgConsumer}} has consumed, or an "unknown" argument, indicated by a + * comamnd argument index that has a value of {@code -1}, if no arguments have been consumed yet. * @see #consumedString() * @see #hasConsumed() */ - public CommandArgument consumed() { - return consumed.size() > 0 ? consumed.getLast() : CommandArgument.unknown(); - } + ICommandArgument consumed(); /** - * @return The value of thelast argument this {@link ArgConsumer} has consumed, or an empty string if no arguments + * @return The value of thelast argument this {@link IArgConsumer}} has consumed, or an empty string if no arguments * have been consumed yet * @see #consumed() * @see #hasConsumed() */ - public String consumedString() { - return consumed().value; - } + String consumedString(); /** - * @return A copy of this {@link ArgConsumer}. It has the same arguments (both consumed and not), but does not + * @return A copy of this {@link IArgConsumer}}. It has the same arguments (both consumed and not), but does not * affect or mutate this instance. Useful for the various {@code peek} functions */ - public ArgConsumer copy() { - return new ArgConsumer(manager, args, consumed); - } - - private final class Context implements IDatatypeContext { - - @Override - public final IBaritone getBaritone() { - return ArgConsumer.this.manager.getBaritone(); - } - - @Override - public final ArgConsumer getConsumer() { - return ArgConsumer.this; - } - } + IArgConsumer copy(); } diff --git a/src/api/java/baritone/api/utils/command/helpers/pagination/Paginator.java b/src/api/java/baritone/api/utils/command/helpers/pagination/Paginator.java index da5ac4362..cf5d5d7c7 100644 --- a/src/api/java/baritone/api/utils/command/helpers/pagination/Paginator.java +++ b/src/api/java/baritone/api/utils/command/helpers/pagination/Paginator.java @@ -20,7 +20,7 @@ package baritone.api.utils.command.helpers.pagination; import baritone.api.utils.Helper; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextFormatting; @@ -115,7 +115,7 @@ public class Paginator implements Helper { display(transform, null); } - public static void paginate(ArgConsumer consumer, Paginator pagi, Runnable pre, Function transform, String commandPrefix) throws CommandException { + public static void paginate(IArgConsumer consumer, Paginator pagi, Runnable pre, Function transform, String commandPrefix) throws CommandException { int page = 1; consumer.requireMax(1); if (consumer.hasAny()) { @@ -127,7 +127,7 @@ public class Paginator implements Helper { "a valid page (1-%d)", pagi.getMaxPage() ), - consumer.consumed().value + consumer.consumed().getValue() ); } } @@ -138,47 +138,47 @@ public class Paginator implements Helper { pagi.display(transform, commandPrefix); } - public static void paginate(ArgConsumer consumer, List elems, Runnable pre, Function transform, String commandPrefix) throws CommandException { + public static void paginate(IArgConsumer consumer, List elems, Runnable pre, Function transform, String commandPrefix) throws CommandException { paginate(consumer, new Paginator<>(elems), pre, transform, commandPrefix); } - public static void paginate(ArgConsumer consumer, T[] elems, Runnable pre, Function transform, String commandPrefix) throws CommandException { + public static void paginate(IArgConsumer consumer, T[] elems, Runnable pre, Function transform, String commandPrefix) throws CommandException { paginate(consumer, Arrays.asList(elems), pre, transform, commandPrefix); } - public static void paginate(ArgConsumer consumer, Paginator pagi, Function transform, String commandPrefix) throws CommandException { + public static void paginate(IArgConsumer consumer, Paginator pagi, Function transform, String commandPrefix) throws CommandException { paginate(consumer, pagi, null, transform, commandPrefix); } - public static void paginate(ArgConsumer consumer, List elems, Function transform, String commandPrefix) throws CommandException { + public static void paginate(IArgConsumer consumer, List elems, Function transform, String commandPrefix) throws CommandException { paginate(consumer, new Paginator<>(elems), null, transform, commandPrefix); } - public static void paginate(ArgConsumer consumer, T[] elems, Function transform, String commandPrefix) throws CommandException { + public static void paginate(IArgConsumer consumer, T[] elems, Function transform, String commandPrefix) throws CommandException { paginate(consumer, Arrays.asList(elems), null, transform, commandPrefix); } - public static void paginate(ArgConsumer consumer, Paginator pagi, Runnable pre, Function transform) throws CommandException { + public static void paginate(IArgConsumer consumer, Paginator pagi, Runnable pre, Function transform) throws CommandException { paginate(consumer, pagi, pre, transform, null); } - public static void paginate(ArgConsumer consumer, List elems, Runnable pre, Function transform) throws CommandException { + public static void paginate(IArgConsumer consumer, List elems, Runnable pre, Function transform) throws CommandException { paginate(consumer, new Paginator<>(elems), pre, transform, null); } - public static void paginate(ArgConsumer consumer, T[] elems, Runnable pre, Function transform) throws CommandException { + public static void paginate(IArgConsumer consumer, T[] elems, Runnable pre, Function transform) throws CommandException { paginate(consumer, Arrays.asList(elems), pre, transform, null); } - public static void paginate(ArgConsumer consumer, Paginator pagi, Function transform) throws CommandException { + public static void paginate(IArgConsumer consumer, Paginator pagi, Function transform) throws CommandException { paginate(consumer, pagi, null, transform, null); } - public static void paginate(ArgConsumer consumer, List elems, Function transform) throws CommandException { + public static void paginate(IArgConsumer consumer, List elems, Function transform) throws CommandException { paginate(consumer, new Paginator<>(elems), null, transform, null); } - public static void paginate(ArgConsumer consumer, T[] elems, Function transform) throws CommandException { + public static void paginate(IArgConsumer consumer, T[] elems, Function transform) throws CommandException { paginate(consumer, Arrays.asList(elems), null, transform, null); } } diff --git a/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java b/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java index db63b2d58..9be9dfb3d 100644 --- a/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java +++ b/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java @@ -21,8 +21,7 @@ import baritone.api.BaritoneAPI; import baritone.api.Settings; import baritone.api.event.events.TabCompleteEvent; import baritone.api.utils.SettingsUtil; -import baritone.api.utils.command.datatypes.IDatatype; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.api.utils.command.manager.ICommandManager; import net.minecraft.util.ResourceLocation; @@ -45,7 +44,7 @@ import java.util.stream.Stream; * {@link #filterPrefix(String)} *
  • Get the stream using {@link #stream()}
  • *
  • Pass it up to whatever's calling your tab complete function (i.e. - * {@link ICommandManager#tabComplete(String)} or {@link ArgConsumer#tabCompleteDatatype(IDatatype)})
  • + * {@link ICommandManager#tabComplete(String)} or {@link IArgConsumer}#tabCompleteDatatype(IDatatype)}) *
*

* For advanced users: if you're intercepting {@link TabCompleteEvent}s directly, use {@link #build()} instead for an diff --git a/src/api/java/baritone/api/utils/command/manager/ICommandManager.java b/src/api/java/baritone/api/utils/command/manager/ICommandManager.java index 63682433e..d3fac415b 100644 --- a/src/api/java/baritone/api/utils/command/manager/ICommandManager.java +++ b/src/api/java/baritone/api/utils/command/manager/ICommandManager.java @@ -19,7 +19,7 @@ package baritone.api.utils.command.manager; import baritone.api.IBaritone; import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import baritone.api.utils.command.registry.Registry; import net.minecraft.util.Tuple; @@ -44,9 +44,9 @@ public interface ICommandManager { boolean execute(String string); - boolean execute(Tuple> expanded); + boolean execute(Tuple> expanded); - Stream tabComplete(Tuple> expanded); + Stream tabComplete(Tuple> expanded); Stream tabComplete(String prefix); } diff --git a/src/main/java/baritone/utils/command/BaritoneChatControl.java b/src/main/java/baritone/utils/command/BaritoneChatControl.java index 30ba92445..70e2370ec 100644 --- a/src/main/java/baritone/utils/command/BaritoneChatControl.java +++ b/src/main/java/baritone/utils/command/BaritoneChatControl.java @@ -26,12 +26,13 @@ import baritone.api.event.events.TabCompleteEvent; import baritone.api.event.listener.AbstractGameEventListener; import baritone.api.utils.Helper; import baritone.api.utils.SettingsUtil; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import baritone.api.utils.command.exception.CommandNotEnoughArgumentsException; import baritone.api.utils.command.exception.CommandNotFoundException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.utils.command.helpers.arguments.ArgConsumer; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import baritone.api.utils.command.manager.ICommandManager; +import baritone.utils.command.argument.CommandArguments; import baritone.utils.command.manager.CommandManager; import net.minecraft.util.Tuple; import net.minecraft.util.text.ITextComponent; @@ -106,7 +107,7 @@ public class BaritoneChatControl implements Helper, AbstractGameEventListener { if (msg.isEmpty()) { return this.runCommand("help"); } - Tuple> pair = CommandManager.expand(msg); + Tuple> pair = CommandManager.expand(msg); String command = pair.getFirst(); String rest = msg.substring(pair.getFirst().length()); ArgConsumer argc = new ArgConsumer(this.manager, pair.getSecond()); @@ -155,7 +156,7 @@ public class BaritoneChatControl implements Helper, AbstractGameEventListener { return; } String msg = prefix.substring(commandPrefix.length()); - List args = CommandArgument.from(msg, true); + List args = CommandArguments.from(msg, true); Stream stream = tabComplete(msg); if (args.size() == 1) { stream = stream.map(x -> commandPrefix + x); @@ -165,7 +166,7 @@ public class BaritoneChatControl implements Helper, AbstractGameEventListener { public Stream tabComplete(String msg) { try { - List args = CommandArgument.from(msg, true); + List args = CommandArguments.from(msg, true); ArgConsumer argc = new ArgConsumer(this.manager, args); if (argc.hasAtMost(2)) { if (argc.hasExactly(1)) { diff --git a/src/main/java/baritone/utils/command/argument/CommandArgument.java b/src/main/java/baritone/utils/command/argument/CommandArgument.java new file mode 100644 index 000000000..9c374248d --- /dev/null +++ b/src/main/java/baritone/utils/command/argument/CommandArgument.java @@ -0,0 +1,97 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.utils.command.argument; + +import baritone.api.utils.command.argparser.ArgParserManager; +import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.utils.command.exception.CommandInvalidArgumentException; +import baritone.api.utils.command.exception.CommandInvalidTypeException; + +import java.util.stream.Stream; + +/** + * The default implementation of {@link ICommandArgument} + * + * @author LoganDark + */ +class CommandArgument implements ICommandArgument { + + private final int index; + private final String value; + private final String rawRest; + + CommandArgument(int index, String value, String rawRest) { + this.index = index; + this.value = value; + this.rawRest = rawRest; + } + + @Override + public int getIndex() { + return this.index; + } + + @Override + public String getValue() { + return this.value; + } + + @Override + public String getRawRest() { + return this.rawRest; + } + + @Override + public > E getEnum(Class enumClass) throws CommandInvalidTypeException { + return Stream.of(enumClass.getEnumConstants()) + .filter(e -> e.name().equalsIgnoreCase(value)) + .findFirst() + .orElseThrow(() -> new CommandInvalidTypeException(this, enumClass.getSimpleName())); + } + + @Override + public T getAs(Class type) throws CommandInvalidTypeException { + return ArgParserManager.parseStateless(type, this); + } + + @Override + public boolean is(Class type) { + try { + getAs(type); + return true; + } catch (Throwable t) { + return false; + } + } + + @SuppressWarnings("UnusedReturnValue") + @Override + public T getAs(Class type, Class stateType, S state) throws CommandInvalidTypeException { + return ArgParserManager.parseStated(type, stateType, this, state); + } + + @Override + public boolean is(Class type, Class stateType, S state) { + try { + getAs(type, stateType, state); + return true; + } catch (Throwable t) { + return false; + } + } +} diff --git a/src/main/java/baritone/utils/command/argument/CommandArguments.java b/src/main/java/baritone/utils/command/argument/CommandArguments.java new file mode 100644 index 000000000..22f895596 --- /dev/null +++ b/src/main/java/baritone/utils/command/argument/CommandArguments.java @@ -0,0 +1,79 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.utils.command.argument; + +import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.utils.command.exception.CommandInvalidArgumentException; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author LoganDark + */ +public final class CommandArguments { + + private CommandArguments() {} + + private static final Pattern ARG_PATTERN = Pattern.compile("\\S+"); + + /** + * Turn a string into a list of {@link ICommandArgument}s. This is needed because of {@link ICommandArgument#getRawRest()} + * + * @param string The string to convert + * @param preserveEmptyLast If the string ends with whitespace, add an empty {@link ICommandArgument} to the end This + * is useful for tab completion + * @return A list of {@link ICommandArgument}s + */ + public static List from(String string, boolean preserveEmptyLast) { + List args = new ArrayList<>(); + Matcher argMatcher = ARG_PATTERN.matcher(string); + int lastEnd = -1; + while (argMatcher.find()) { + args.add(new CommandArgument( + args.size(), + argMatcher.group(), + string.substring(argMatcher.start()) + )); + lastEnd = argMatcher.end(); + } + if (preserveEmptyLast && lastEnd < string.length()) { + args.add(new CommandArgument(args.size(), "", "")); + } + return args; + } + + /** + * @see #from(String, boolean) + */ + public static List from(String string) { + return from(string, false); + } + + /** + * Returns an "unknown" {@link CommandArgument}. This shouldn't be used unless you absolutely have no information - + * ESPECIALLY not with {@link CommandInvalidArgumentException}s + * + * @return The unknown {@link CommandArgument} + */ + public static CommandArgument unknown() { + return new CommandArgument(-1, "", ""); + } +} diff --git a/src/main/java/baritone/utils/command/defaults/AxisCommand.java b/src/main/java/baritone/utils/command/defaults/AxisCommand.java index f80356ad9..f67c82e56 100644 --- a/src/main/java/baritone/utils/command/defaults/AxisCommand.java +++ b/src/main/java/baritone/utils/command/defaults/AxisCommand.java @@ -22,7 +22,7 @@ import baritone.api.pathing.goals.Goal; import baritone.api.pathing.goals.GoalAxis; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -35,7 +35,7 @@ public class AxisCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); Goal goal = new GoalAxis(); baritone.getCustomGoalProcess().setGoal(goal); @@ -43,7 +43,7 @@ public class AxisCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java b/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java index 43aaa7370..accda72bd 100644 --- a/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java +++ b/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java @@ -22,7 +22,7 @@ import baritone.api.process.IGetToBlockProcess; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -35,7 +35,7 @@ public class BlacklistCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); IGetToBlockProcess proc = baritone.getGetToBlockProcess(); if (!proc.isActive()) { @@ -49,7 +49,7 @@ public class BlacklistCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/BuildCommand.java b/src/main/java/baritone/utils/command/defaults/BuildCommand.java index 5d084d48e..b852d0bea 100644 --- a/src/main/java/baritone/utils/command/defaults/BuildCommand.java +++ b/src/main/java/baritone/utils/command/defaults/BuildCommand.java @@ -24,7 +24,7 @@ import baritone.api.utils.command.datatypes.RelativeBlockPos; import baritone.api.utils.command.datatypes.RelativeFile; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.client.Minecraft; import java.io.File; @@ -42,7 +42,7 @@ public class BuildCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { File file = args.getDatatypePost(RelativeFile.INSTANCE, schematicsDir).getAbsoluteFile(); if (!file.getName().toLowerCase(Locale.US).endsWith(".schematic")) { file = new File(file.getAbsolutePath() + ".schematic"); @@ -64,7 +64,7 @@ public class BuildCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return RelativeFile.tabComplete(args, schematicsDir); } else if (args.has(2)) { diff --git a/src/main/java/baritone/utils/command/defaults/CancelCommand.java b/src/main/java/baritone/utils/command/defaults/CancelCommand.java index 67cde8f49..868da5e0f 100644 --- a/src/main/java/baritone/utils/command/defaults/CancelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/CancelCommand.java @@ -20,7 +20,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -33,14 +33,14 @@ public class CancelCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); baritone.getPathingBehavior().cancelEverything(); logDirect("ok canceled"); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ChestsCommand.java b/src/main/java/baritone/utils/command/defaults/ChestsCommand.java index f65a18e5b..130d5909f 100644 --- a/src/main/java/baritone/utils/command/defaults/ChestsCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ChestsCommand.java @@ -23,7 +23,7 @@ import baritone.api.utils.BetterBlockPos; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; @@ -41,7 +41,7 @@ public class ChestsCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); Set> entries = ctx.worldData().getContainerMemory().getRememberedInventories().entrySet(); @@ -62,7 +62,7 @@ public class ChestsCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ClickCommand.java b/src/main/java/baritone/utils/command/defaults/ClickCommand.java index 07bd4de9f..ba8e917c3 100644 --- a/src/main/java/baritone/utils/command/defaults/ClickCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ClickCommand.java @@ -20,7 +20,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -33,14 +33,14 @@ public class ClickCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); baritone.openClick(); logDirect("aight dude"); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ComeCommand.java b/src/main/java/baritone/utils/command/defaults/ComeCommand.java index 52a0cec67..cc4f4071b 100644 --- a/src/main/java/baritone/utils/command/defaults/ComeCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ComeCommand.java @@ -22,7 +22,7 @@ import baritone.api.pathing.goals.GoalBlock; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; @@ -37,7 +37,7 @@ public class ComeCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); Entity entity = mc.getRenderViewEntity(); if (entity == null) { @@ -48,7 +48,7 @@ public class ComeCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/CommandAlias.java b/src/main/java/baritone/utils/command/defaults/CommandAlias.java index 0f28e48ee..6aa32af13 100644 --- a/src/main/java/baritone/utils/command/defaults/CommandAlias.java +++ b/src/main/java/baritone/utils/command/defaults/CommandAlias.java @@ -19,7 +19,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Collections; import java.util.List; @@ -43,12 +43,12 @@ public class CommandAlias extends Command { } @Override - public void execute(String label, ArgConsumer args) { + public void execute(String label, IArgConsumer args) { this.baritone.getCommandManager().execute(String.format("%s %s", target, args.rawRest())); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return this.baritone.getCommandManager().tabComplete(String.format("%s %s", target, args.rawRest())); } diff --git a/src/main/java/baritone/utils/command/defaults/ExploreCommand.java b/src/main/java/baritone/utils/command/defaults/ExploreCommand.java index 55e3d756a..15a8e2412 100644 --- a/src/main/java/baritone/utils/command/defaults/ExploreCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ExploreCommand.java @@ -22,7 +22,7 @@ import baritone.api.pathing.goals.GoalXZ; import baritone.api.utils.command.Command; import baritone.api.utils.command.datatypes.RelativeGoalXZ; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -35,7 +35,7 @@ public class ExploreCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { if (args.hasAny()) { args.requireExactly(2); } else { @@ -49,7 +49,7 @@ public class ExploreCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { if (args.hasAtMost(2)) { return args.tabCompleteDatatype(RelativeGoalXZ.INSTANCE); } diff --git a/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java b/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java index 29f34c866..6f60a55de 100644 --- a/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java @@ -23,7 +23,7 @@ import baritone.api.utils.command.datatypes.RelativeFile; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import com.google.gson.JsonSyntaxException; import java.io.File; @@ -39,7 +39,7 @@ public class ExploreFilterCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(2); File file = args.getDatatypePost(RelativeFile.INSTANCE, mc.gameDir.getAbsoluteFile().getParentFile()); boolean invert = false; @@ -63,7 +63,7 @@ public class ExploreFilterCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return RelativeFile.tabComplete(args, RelativeFile.gameDir()); } diff --git a/src/main/java/baritone/utils/command/defaults/FarmCommand.java b/src/main/java/baritone/utils/command/defaults/FarmCommand.java index a9dc7a8b6..0ece390d4 100644 --- a/src/main/java/baritone/utils/command/defaults/FarmCommand.java +++ b/src/main/java/baritone/utils/command/defaults/FarmCommand.java @@ -20,7 +20,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -33,14 +33,14 @@ public class FarmCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); baritone.getFarmProcess().farm(); logDirect("Farming"); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/FindCommand.java b/src/main/java/baritone/utils/command/defaults/FindCommand.java index 513d65392..62a49e029 100644 --- a/src/main/java/baritone/utils/command/defaults/FindCommand.java +++ b/src/main/java/baritone/utils/command/defaults/FindCommand.java @@ -22,7 +22,7 @@ import baritone.api.utils.BetterBlockPos; import baritone.api.utils.command.Command; import baritone.api.utils.command.datatypes.BlockById; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import net.minecraft.block.Block; import java.util.ArrayList; @@ -37,7 +37,7 @@ public class FindCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { List toFind = new ArrayList<>(); while (args.hasAny()) { toFind.add(args.getDatatypeFor(BlockById.INSTANCE)); @@ -59,7 +59,7 @@ public class FindCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return args.tabCompleteDatatype(BlockById.INSTANCE); } diff --git a/src/main/java/baritone/utils/command/defaults/FollowCommand.java b/src/main/java/baritone/utils/command/defaults/FollowCommand.java index d2e674c98..b1cb5a803 100644 --- a/src/main/java/baritone/utils/command/defaults/FollowCommand.java +++ b/src/main/java/baritone/utils/command/defaults/FollowCommand.java @@ -23,7 +23,7 @@ import baritone.api.utils.command.datatypes.EntityClassById; import baritone.api.utils.command.datatypes.IDatatypeFor; import baritone.api.utils.command.datatypes.NearbyPlayer; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; @@ -42,7 +42,7 @@ public class FollowCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMin(1); FollowGroup group; FollowList list; @@ -88,7 +88,7 @@ public class FollowCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return new TabCompleteHelper() .append(FollowGroup.class) diff --git a/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java b/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java index 05b629922..7a020b148 100644 --- a/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java @@ -21,7 +21,7 @@ import baritone.api.IBaritone; import baritone.api.behavior.IPathingBehavior; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -34,7 +34,7 @@ public class ForceCancelCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); IPathingBehavior pathingBehavior = baritone.getPathingBehavior(); pathingBehavior.cancelEverything(); @@ -43,7 +43,7 @@ public class ForceCancelCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/GcCommand.java b/src/main/java/baritone/utils/command/defaults/GcCommand.java index 068b5136c..20b2e334c 100644 --- a/src/main/java/baritone/utils/command/defaults/GcCommand.java +++ b/src/main/java/baritone/utils/command/defaults/GcCommand.java @@ -20,7 +20,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -33,14 +33,14 @@ public class GcCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); System.gc(); logDirect("ok called System.gc()"); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/GoalCommand.java b/src/main/java/baritone/utils/command/defaults/GoalCommand.java index baac24b69..f2692fb25 100644 --- a/src/main/java/baritone/utils/command/defaults/GoalCommand.java +++ b/src/main/java/baritone/utils/command/defaults/GoalCommand.java @@ -25,7 +25,7 @@ import baritone.api.utils.command.Command; import baritone.api.utils.command.datatypes.RelativeCoordinate; import baritone.api.utils.command.datatypes.RelativeGoal; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import java.util.Arrays; @@ -39,7 +39,7 @@ public class GoalCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { ICustomGoalProcess goalProcess = baritone.getCustomGoalProcess(); if (args.hasAny() && Arrays.asList("reset", "clear", "none").contains(args.peekString())) { args.requireMax(1); @@ -59,7 +59,7 @@ public class GoalCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { TabCompleteHelper helper = new TabCompleteHelper(); if (args.hasExactlyOne()) { helper.append("reset", "clear", "none", "~"); diff --git a/src/main/java/baritone/utils/command/defaults/HelpCommand.java b/src/main/java/baritone/utils/command/defaults/HelpCommand.java index 7db0d8935..480207f1b 100644 --- a/src/main/java/baritone/utils/command/defaults/HelpCommand.java +++ b/src/main/java/baritone/utils/command/defaults/HelpCommand.java @@ -21,7 +21,7 @@ import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandNotFoundException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.api.utils.command.helpers.pagination.Paginator; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import net.minecraft.util.text.ITextComponent; @@ -44,7 +44,7 @@ public class HelpCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(1); if (!args.hasAny() || args.is(Integer.class)) { Paginator.paginate( @@ -97,7 +97,7 @@ public class HelpCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return new TabCompleteHelper() .addCommands(this.baritone.getCommandManager()) diff --git a/src/main/java/baritone/utils/command/defaults/InvertCommand.java b/src/main/java/baritone/utils/command/defaults/InvertCommand.java index 232ac0f37..9b5d0a16d 100644 --- a/src/main/java/baritone/utils/command/defaults/InvertCommand.java +++ b/src/main/java/baritone/utils/command/defaults/InvertCommand.java @@ -24,7 +24,7 @@ import baritone.api.process.ICustomGoalProcess; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -37,7 +37,7 @@ public class InvertCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); ICustomGoalProcess customGoalProcess = baritone.getCustomGoalProcess(); Goal goal; @@ -54,7 +54,7 @@ public class InvertCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/MineCommand.java b/src/main/java/baritone/utils/command/defaults/MineCommand.java index da92b0988..2a91c6e63 100644 --- a/src/main/java/baritone/utils/command/defaults/MineCommand.java +++ b/src/main/java/baritone/utils/command/defaults/MineCommand.java @@ -23,7 +23,7 @@ import baritone.api.utils.command.Command; import baritone.api.utils.command.datatypes.BlockById; import baritone.api.utils.command.datatypes.ForBlockOptionalMeta; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.cache.WorldScanner; import java.util.ArrayList; @@ -38,7 +38,7 @@ public class MineCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { int quantity = args.getAsOrDefault(Integer.class, 0); args.requireMin(1); List boms = new ArrayList<>(); @@ -51,7 +51,7 @@ public class MineCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return args.tabCompleteDatatype(BlockById.INSTANCE); } diff --git a/src/main/java/baritone/utils/command/defaults/PathCommand.java b/src/main/java/baritone/utils/command/defaults/PathCommand.java index 6de333737..e52a93a47 100644 --- a/src/main/java/baritone/utils/command/defaults/PathCommand.java +++ b/src/main/java/baritone/utils/command/defaults/PathCommand.java @@ -25,7 +25,7 @@ import baritone.api.utils.command.datatypes.RelativeCoordinate; import baritone.api.utils.command.datatypes.RelativeGoal; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import baritone.cache.WorldScanner; @@ -40,7 +40,7 @@ public class PathCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { ICustomGoalProcess customGoalProcess = baritone.getCustomGoalProcess(); Goal goal; if (args.hasAny()) { @@ -56,7 +56,7 @@ public class PathCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { if (args.hasAny() && !args.has(4)) { while (args.has(2)) { if (args.peekDatatypeOrNull(RelativeCoordinate.INSTANCE) == null) { diff --git a/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java b/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java index 2c363ff4e..08a0ae66b 100644 --- a/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java +++ b/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java @@ -24,7 +24,7 @@ import baritone.api.process.PathingCommandType; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -79,7 +79,7 @@ public class PauseResumeCommands { ); pauseCommand = new Command(baritone, "pause") { @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); if (paused[0]) { throw new CommandInvalidStateException("Already paused"); @@ -89,7 +89,7 @@ public class PauseResumeCommands { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } @@ -112,7 +112,7 @@ public class PauseResumeCommands { }; resumeCommand = new Command(baritone, "resume") { @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); if (!paused[0]) { throw new CommandInvalidStateException("Not paused"); @@ -122,7 +122,7 @@ public class PauseResumeCommands { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } @@ -143,13 +143,13 @@ public class PauseResumeCommands { }; pausedCommand = new Command(baritone, "paused") { @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); logDirect(String.format("Baritone is %spaused", paused[0] ? "" : "not ")); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ProcCommand.java b/src/main/java/baritone/utils/command/defaults/ProcCommand.java index 232a53a29..233c18a33 100644 --- a/src/main/java/baritone/utils/command/defaults/ProcCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ProcCommand.java @@ -24,7 +24,7 @@ import baritone.api.process.PathingCommand; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -37,7 +37,7 @@ public class ProcCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); IPathingControlManager pathingControlManager = baritone.getPathingControlManager(); IBaritoneProcess process = pathingControlManager.mostRecentInControl().orElse(null); @@ -62,7 +62,7 @@ public class ProcCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java b/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java index f13af77d6..6128094ce 100644 --- a/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java @@ -20,7 +20,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -33,14 +33,14 @@ public class ReloadAllCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); ctx.worldData().getCachedWorld().reloadAllFromDisk(); logDirect("Reloaded"); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/RenderCommand.java b/src/main/java/baritone/utils/command/defaults/RenderCommand.java index 710df10f5..15473afa0 100644 --- a/src/main/java/baritone/utils/command/defaults/RenderCommand.java +++ b/src/main/java/baritone/utils/command/defaults/RenderCommand.java @@ -21,7 +21,7 @@ import baritone.api.IBaritone; import baritone.api.utils.BetterBlockPos; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -34,7 +34,7 @@ public class RenderCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); BetterBlockPos origin = ctx.playerFeet(); int renderDistance = (mc.gameSettings.renderDistanceChunks + 1) * 16; @@ -50,7 +50,7 @@ public class RenderCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/RepackCommand.java b/src/main/java/baritone/utils/command/defaults/RepackCommand.java index 2f1a988d3..1f11802a4 100644 --- a/src/main/java/baritone/utils/command/defaults/RepackCommand.java +++ b/src/main/java/baritone/utils/command/defaults/RepackCommand.java @@ -20,7 +20,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.cache.WorldScanner; import java.util.Arrays; @@ -34,13 +34,13 @@ public class RepackCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); logDirect(String.format("Queued %d chunks for repacking", WorldScanner.INSTANCE.repack(ctx))); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java b/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java index 21dbfb649..9c507f697 100644 --- a/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java @@ -20,7 +20,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -33,14 +33,14 @@ public class SaveAllCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); ctx.worldData().getCachedWorld().save(); logDirect("Saved"); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java b/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java index ed695169b..c531a48bb 100644 --- a/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java @@ -20,7 +20,7 @@ package baritone.utils.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -33,13 +33,13 @@ public class SchematicaCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); baritone.getBuilderProcess().buildOpenSchematic(); } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/SelCommand.java b/src/main/java/baritone/utils/command/defaults/SelCommand.java index 8e2512d12..83fc77e38 100644 --- a/src/main/java/baritone/utils/command/defaults/SelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SelCommand.java @@ -35,7 +35,7 @@ import baritone.api.utils.command.datatypes.RelativeBlockPos; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import baritone.utils.IRenderer; import net.minecraft.init.Blocks; @@ -75,7 +75,7 @@ public class SelCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { Action action = Action.getByName(args.getString()); if (action == null) { throw new CommandInvalidTypeException(args.consumed(), "an action"); @@ -186,7 +186,7 @@ public class SelCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { if (args.hasExactlyOne()) { return new TabCompleteHelper() .append(Action.getAllNames()) diff --git a/src/main/java/baritone/utils/command/defaults/SetCommand.java b/src/main/java/baritone/utils/command/defaults/SetCommand.java index 8add3fed2..be07a7aec 100644 --- a/src/main/java/baritone/utils/command/defaults/SetCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SetCommand.java @@ -24,7 +24,7 @@ import baritone.api.utils.SettingsUtil; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.api.utils.command.helpers.pagination.Paginator; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import net.minecraft.util.text.ITextComponent; @@ -50,7 +50,7 @@ public class SetCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { String arg = args.hasAny() ? args.getString().toLowerCase(Locale.US) : "list"; if (Arrays.asList("s", "save").contains(arg)) { SettingsUtil.save(Baritone.settings()); @@ -186,7 +186,7 @@ public class SetCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { if (args.hasAny()) { String arg = args.getString(); if (args.hasExactlyOne() && !Arrays.asList("s", "save").contains(args.peekString().toLowerCase(Locale.US))) { diff --git a/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java b/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java index d11346cc5..bef3a5138 100644 --- a/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java @@ -21,7 +21,7 @@ import baritone.api.IBaritone; import baritone.api.pathing.goals.GoalXZ; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -34,7 +34,7 @@ public class ThisWayCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireExactly(1); GoalXZ goal = GoalXZ.fromDirection( ctx.playerFeetAsVec(), @@ -46,7 +46,7 @@ public class ThisWayCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/TunnelCommand.java b/src/main/java/baritone/utils/command/defaults/TunnelCommand.java index b7e00fe66..1b9066f98 100644 --- a/src/main/java/baritone/utils/command/defaults/TunnelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/TunnelCommand.java @@ -22,7 +22,7 @@ import baritone.api.pathing.goals.Goal; import baritone.api.pathing.goals.GoalStrictDirection; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -35,7 +35,7 @@ public class TunnelCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); Goal goal = new GoalStrictDirection( ctx.playerFeet(), @@ -46,7 +46,7 @@ public class TunnelCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/VersionCommand.java b/src/main/java/baritone/utils/command/defaults/VersionCommand.java index 89dc6576e..4c9aa8505 100644 --- a/src/main/java/baritone/utils/command/defaults/VersionCommand.java +++ b/src/main/java/baritone/utils/command/defaults/VersionCommand.java @@ -21,7 +21,7 @@ import baritone.api.IBaritone; import baritone.api.utils.command.Command; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; @@ -34,7 +34,7 @@ public class VersionCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); String version = getClass().getPackage().getImplementationVersion(); if (version == null) { @@ -45,7 +45,7 @@ public class VersionCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) { + public Stream tabComplete(String label, IArgConsumer args) { return Stream.empty(); } diff --git a/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java b/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java index 45bd7b50f..bda39e2a0 100644 --- a/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java +++ b/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java @@ -29,7 +29,7 @@ import baritone.api.utils.command.datatypes.RelativeBlockPos; import baritone.api.utils.command.exception.CommandException; import baritone.api.utils.command.exception.CommandInvalidStateException; import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; import baritone.api.utils.command.helpers.pagination.Paginator; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import net.minecraft.util.text.ITextComponent; @@ -52,7 +52,7 @@ public class WaypointsCommand extends Command { } @Override - public void execute(String label, ArgConsumer args) throws CommandException { + public void execute(String label, IArgConsumer args) throws CommandException { Action action = args.hasAny() ? Action.getByName(args.getString()) : Action.LIST; if (action == null) { throw new CommandInvalidTypeException(args.consumed(), "an action"); @@ -241,7 +241,7 @@ public class WaypointsCommand extends Command { } @Override - public Stream tabComplete(String label, ArgConsumer args) throws CommandException { + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { if (args.hasAny()) { if (args.hasExactlyOne()) { return new TabCompleteHelper() diff --git a/src/main/java/baritone/utils/command/helpers/arguments/ArgConsumer.java b/src/main/java/baritone/utils/command/helpers/arguments/ArgConsumer.java new file mode 100644 index 000000000..06aaa6eb7 --- /dev/null +++ b/src/main/java/baritone/utils/command/helpers/arguments/ArgConsumer.java @@ -0,0 +1,444 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.utils.command.helpers.arguments; + +import baritone.api.IBaritone; +import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.utils.command.datatypes.IDatatype; +import baritone.api.utils.command.datatypes.IDatatypeContext; +import baritone.api.utils.command.datatypes.IDatatypeFor; +import baritone.api.utils.command.datatypes.IDatatypePost; +import baritone.api.utils.command.exception.CommandException; +import baritone.api.utils.command.exception.CommandInvalidTypeException; +import baritone.api.utils.command.exception.CommandNotEnoughArgumentsException; +import baritone.api.utils.command.exception.CommandTooManyArgumentsException; +import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.utils.command.manager.ICommandManager; +import baritone.utils.command.argument.CommandArguments; + +import java.util.ArrayList; +import java.util.Deque; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Stream; + +public class ArgConsumer implements IArgConsumer { + + /** + * The parent {@link ICommandManager} for this {@link IArgConsumer}}. Used by {@link #context}. + */ + private final ICommandManager manager; + + /** + * The {@link IDatatypeContext} instance for this {@link IArgConsumer}}, passed to + * datatypes when an operation is performed upon them. + * + * @see IDatatype + * @see IDatatypeContext + */ + private final IDatatypeContext context; + + /** + * The list of arguments in this ArgConsumer + */ + private final LinkedList args; + + /** + * The list of consumed arguments for this ArgConsumer. The most recently consumed argument is the last one + */ + private final Deque consumed; + + private ArgConsumer(ICommandManager manager, Deque args, Deque consumed) { + this.manager = manager; + this.context = this.new Context(); + this.args = new LinkedList<>(args); + this.consumed = new LinkedList<>(consumed); + } + + public ArgConsumer(ICommandManager manager, List args) { + this(manager, new LinkedList<>(args), new LinkedList<>()); + } + + @Override + public LinkedList getArgs() { + return this.args; + } + + @Override + public Deque getConsumed() { + return this.consumed; + } + + @Override + public boolean has(int num) { + return args.size() >= num; + } + + @Override + public boolean hasAny() { + return has(1); + } + + @Override + public boolean hasAtMost(int num) { + return args.size() <= num; + } + + @Override + public boolean hasAtMostOne() { + return hasAtMost(1); + } + + @Override + public boolean hasExactly(int num) { + return args.size() == num; + } + + @Override + public boolean hasExactlyOne() { + return hasExactly(1); + } + + @Override + public ICommandArgument peek(int index) throws CommandNotEnoughArgumentsException { + requireMin(index + 1); + return args.get(index); + } + + @Override + public ICommandArgument peek() throws CommandNotEnoughArgumentsException { + return peek(0); + } + + @Override + public boolean is(Class type, int index) throws CommandNotEnoughArgumentsException { + return peek(index).is(type); + } + + @Override + public boolean is(Class type) throws CommandNotEnoughArgumentsException { + return is(type, 0); + } + + @Override + public String peekString(int index) throws CommandNotEnoughArgumentsException { + return peek(index).getValue(); + } + + @Override + public String peekString() throws CommandNotEnoughArgumentsException { + return peekString(0); + } + + @Override + public > E peekEnum(Class enumClass, int index) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return peek(index).getEnum(enumClass); + } + + @Override + public > E peekEnum(Class enumClass) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return peekEnum(enumClass, 0); + } + + @Override + public > E peekEnumOrNull(Class enumClass, int index) throws CommandNotEnoughArgumentsException { + try { + return peekEnum(enumClass, index); + } catch (CommandInvalidTypeException e) { + return null; + } + } + + @Override + public > E peekEnumOrNull(Class enumClass) throws CommandNotEnoughArgumentsException { + return peekEnumOrNull(enumClass, 0); + } + + @Override + public T peekAs(Class type, int index) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return peek(index).getAs(type); + } + + @Override + public T peekAs(Class type) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return peekAs(type, 0); + } + + @Override + public T peekAsOrDefault(Class type, T def, int index) throws CommandNotEnoughArgumentsException { + try { + return peekAs(type, index); + } catch (CommandInvalidTypeException e) { + return def; + } + } + + @Override + public T peekAsOrDefault(Class type, T def) throws CommandNotEnoughArgumentsException { + return peekAsOrDefault(type, def, 0); + } + + @Override + public T peekAsOrNull(Class type, int index) throws CommandNotEnoughArgumentsException { + return peekAsOrDefault(type, null, index); + } + + @Override + public T peekAsOrNull(Class type) throws CommandNotEnoughArgumentsException { + return peekAsOrNull(type, 0); + } + + @Override + public T peekDatatype(IDatatypeFor datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return copy().getDatatypeFor(datatype); + } + + @Override + public T peekDatatype(IDatatypePost datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return this.peekDatatype(datatype, null); + } + + @Override + public T peekDatatype(IDatatypePost datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return copy().getDatatypePost(datatype, original); + } + + @Override + public T peekDatatypeOrNull(IDatatypeFor datatype) { + return copy().getDatatypeForOrNull(datatype); + } + + @Override + public T peekDatatypeOrNull(IDatatypePost datatype) { + return copy().getDatatypePostOrNull(datatype, null); + } + + @Override + public > T peekDatatypePost(D datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return copy().getDatatypePost(datatype, original); + } + + @Override + public > T peekDatatypePostOrDefault(D datatype, O original, T def) { + return copy().getDatatypePostOrDefault(datatype, original, def); + } + + @Override + public > T peekDatatypePostOrNull(D datatype, O original) { + return peekDatatypePostOrDefault(datatype, original, null); + } + + @Override + public > T peekDatatypeFor(Class datatype) { + return copy().peekDatatypeFor(datatype); + } + + @Override + public > T peekDatatypeForOrDefault(Class datatype, T def) { + return copy().peekDatatypeForOrDefault(datatype, def); + } + + @Override + public > T peekDatatypeForOrNull(Class datatype) { + return peekDatatypeForOrDefault(datatype, null); + } + + @Override + public ICommandArgument get() throws CommandNotEnoughArgumentsException { + requireMin(1); + ICommandArgument arg = args.removeFirst(); + consumed.add(arg); + return arg; + } + + @Override + public String getString() throws CommandNotEnoughArgumentsException { + return get().getValue(); + } + + @Override + public > E getEnum(Class enumClass) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return get().getEnum(enumClass); + } + + @Override + public > E getEnumOrDefault(Class enumClass, E def) throws CommandNotEnoughArgumentsException { + try { + peekEnum(enumClass); + return getEnum(enumClass); + } catch (CommandInvalidTypeException e) { + return def; + } + } + + @Override + public > E getEnumOrNull(Class enumClass) throws CommandNotEnoughArgumentsException { + return getEnumOrDefault(enumClass, null); + } + + @Override + public T getAs(Class type) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + return get().getAs(type); + } + + @Override + public T getAsOrDefault(Class type, T def) throws CommandNotEnoughArgumentsException { + try { + T val = peek().getAs(type); + get(); + return val; + } catch (CommandInvalidTypeException e) { + return def; + } + } + + @Override + public T getAsOrNull(Class type) throws CommandNotEnoughArgumentsException { + return getAsOrDefault(type, null); + } + + @Override + public > T getDatatypePost(D datatype, O original) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + try { + return datatype.apply(this.context, original); + } catch (Exception e) { + e.printStackTrace(); + throw new CommandInvalidTypeException(hasAny() ? peek() : consumed(), datatype.getClass().getSimpleName()); + } + } + + @Override + public > T getDatatypePostOrDefault(D datatype, O original, T _default) { + final List argsSnapshot = new ArrayList<>(this.args); + final List consumedSnapshot = new ArrayList<>(this.consumed); + try { + return this.getDatatypePost(datatype, original); + } catch (Exception e) { + this.args.clear(); + this.args.addAll(argsSnapshot); + this.consumed.clear(); + this.consumed.addAll(consumedSnapshot); + return _default; + } + } + + @Override + public > T getDatatypePostOrNull(D datatype, O original) { + return this.getDatatypePostOrDefault(datatype, original, null); + } + + @Override + public > T getDatatypeFor(D datatype) throws CommandInvalidTypeException, CommandNotEnoughArgumentsException { + try { + return datatype.get(this.context); + } catch (Exception e) { + throw new CommandInvalidTypeException(hasAny() ? peek() : consumed(), datatype.getClass().getSimpleName()); + } + } + + @Override + public > T getDatatypeForOrDefault(D datatype, T def) { + final List argsSnapshot = new ArrayList<>(this.args); + final List consumedSnapshot = new ArrayList<>(this.consumed); + try { + return this.getDatatypeFor(datatype); + } catch (Exception e) { + this.args.clear(); + this.args.addAll(argsSnapshot); + this.consumed.clear(); + this.consumed.addAll(consumedSnapshot); + return def; + } + } + + @Override + public > T getDatatypeForOrNull(D datatype) { + return this.getDatatypeForOrDefault(datatype, null); + } + + @Override + public Stream tabCompleteDatatype(T datatype) { + try { + return datatype.tabComplete(this.context); + } catch (Exception e) { + e.printStackTrace(); + } + return Stream.empty(); + } + + @Override + public String rawRest() { + return args.size() > 0 ? args.getFirst().getRawRest() : ""; + } + + @Override + public void requireMin(int min) throws CommandNotEnoughArgumentsException { + if (args.size() < min) { + throw new CommandNotEnoughArgumentsException(min + consumed.size()); + } + } + + @Override + public void requireMax(int max) throws CommandTooManyArgumentsException { + if (args.size() > max) { + throw new CommandTooManyArgumentsException(max + consumed.size()); + } + } + + @Override + public void requireExactly(int args) throws CommandException { + requireMin(args); + requireMax(args); + } + + @Override + public boolean hasConsumed() { + return !consumed.isEmpty(); + } + + @Override + public ICommandArgument consumed() { + return consumed.size() > 0 ? consumed.getLast() : CommandArguments.unknown(); + } + + @Override + public String consumedString() { + return consumed().getValue(); + } + + @Override + public ArgConsumer copy() { + return new ArgConsumer(manager, args, consumed); + } + + /** + * Implementation of {@link IDatatypeContext} which adapts to the parent {@link IArgConsumer}} + */ + private final class Context implements IDatatypeContext { + + @Override + public final IBaritone getBaritone() { + return ArgConsumer.this.manager.getBaritone(); + } + + @Override + public final ArgConsumer getConsumer() { + return ArgConsumer.this; + } + } +} diff --git a/src/main/java/baritone/utils/command/manager/CommandManager.java b/src/main/java/baritone/utils/command/manager/CommandManager.java index c9c51eb12..290b38524 100644 --- a/src/main/java/baritone/utils/command/manager/CommandManager.java +++ b/src/main/java/baritone/utils/command/manager/CommandManager.java @@ -20,13 +20,14 @@ package baritone.utils.command.manager; import baritone.Baritone; import baritone.api.IBaritone; import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.CommandArgument; +import baritone.api.utils.command.argument.ICommandArgument; import baritone.api.utils.command.exception.CommandUnhandledException; import baritone.api.utils.command.exception.ICommandException; -import baritone.api.utils.command.helpers.arguments.ArgConsumer; +import baritone.utils.command.helpers.arguments.ArgConsumer; import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; import baritone.api.utils.command.manager.ICommandManager; import baritone.api.utils.command.registry.Registry; +import baritone.utils.command.argument.CommandArguments; import baritone.utils.command.defaults.DefaultCommands; import net.minecraft.util.Tuple; @@ -76,7 +77,7 @@ public class CommandManager implements ICommandManager { } @Override - public boolean execute(Tuple> expanded) { + public boolean execute(Tuple> expanded) { ExecutionWrapper execution = this.from(expanded); if (execution != null) { execution.execute(); @@ -85,16 +86,16 @@ public class CommandManager implements ICommandManager { } @Override - public Stream tabComplete(Tuple> expanded) { + public Stream tabComplete(Tuple> expanded) { ExecutionWrapper execution = this.from(expanded); return execution == null ? Stream.empty() : execution.tabComplete(); } @Override public Stream tabComplete(String prefix) { - Tuple> pair = expand(prefix, true); + Tuple> pair = expand(prefix, true); String label = pair.getFirst(); - List args = pair.getSecond(); + List args = pair.getSecond(); if (args.isEmpty()) { return new TabCompleteHelper() .addCommands(this.baritone.getCommandManager()) @@ -105,7 +106,7 @@ public class CommandManager implements ICommandManager { } } - private ExecutionWrapper from(Tuple> expanded) { + private ExecutionWrapper from(Tuple> expanded) { String label = expanded.getFirst(); ArgConsumer args = new ArgConsumer(this, expanded.getSecond()); @@ -113,13 +114,13 @@ public class CommandManager implements ICommandManager { return command == null ? null : new ExecutionWrapper(command, label, args); } - private static Tuple> expand(String string, boolean preserveEmptyLast) { + private static Tuple> expand(String string, boolean preserveEmptyLast) { String label = string.split("\\s", 2)[0]; - List args = CommandArgument.from(string.substring(label.length()), preserveEmptyLast); + List args = CommandArguments.from(string.substring(label.length()), preserveEmptyLast); return new Tuple<>(label, args); } - public static Tuple> expand(String string) { + public static Tuple> expand(String string) { return expand(string, false); } @@ -143,7 +144,7 @@ public class CommandManager implements ICommandManager { ? (ICommandException) t : new CommandUnhandledException(t); - exception.handle(command, args.args); + exception.handle(command, args.getArgs()); } } From bfd8773efa6f9fc08db48551cc2b2d0c2d3abaab Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 4 Oct 2019 09:20:26 -0500 Subject: [PATCH 04/13] Make getBaritoneForPlayer null-safe --- src/api/java/baritone/api/IBaritoneProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/api/java/baritone/api/IBaritoneProvider.java b/src/api/java/baritone/api/IBaritoneProvider.java index bdefb66f1..c5c6cf39f 100644 --- a/src/api/java/baritone/api/IBaritoneProvider.java +++ b/src/api/java/baritone/api/IBaritoneProvider.java @@ -21,6 +21,7 @@ import baritone.api.cache.IWorldScanner; import net.minecraft.client.entity.EntityPlayerSP; import java.util.List; +import java.util.Objects; /** * Provides the present {@link IBaritone} instances @@ -57,7 +58,7 @@ public interface IBaritoneProvider { */ default IBaritone getBaritoneForPlayer(EntityPlayerSP player) { for (IBaritone baritone : getAllBaritones()) { - if (player.equals(baritone.getPlayerContext().player())) { + if (Objects.equals(player, baritone.getPlayerContext().player())) { return baritone; } } From 1440e81ea40ec4a74bd10081ea0d4203782db84a Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 4 Oct 2019 18:12:36 -0500 Subject: [PATCH 05/13] IArgParser API --- .../java/baritone/api/IBaritoneProvider.java | 12 +++- .../api/utils/command/ICommandSystem.java | 29 +++++++++ .../utils/command/argparser/IArgParser.java | 4 -- .../command/argparser/IArgParserManager.java | 65 +++++++++++++++++++ src/main/java/baritone/BaritoneProvider.java | 7 ++ .../baritone/utils/command/CommandSystem.java | 35 ++++++++++ .../command/argparser/ArgParserManager.java | 64 +++++++----------- .../command/argparser/DefaultArgParsers.java | 3 +- .../command/argument/CommandArgument.java | 7 +- 9 files changed, 177 insertions(+), 49 deletions(-) create mode 100644 src/api/java/baritone/api/utils/command/ICommandSystem.java create mode 100644 src/api/java/baritone/api/utils/command/argparser/IArgParserManager.java create mode 100644 src/main/java/baritone/utils/command/CommandSystem.java rename src/{api/java/baritone/api => main/java/baritone}/utils/command/argparser/ArgParserManager.java (53%) rename src/{api/java/baritone/api => main/java/baritone}/utils/command/argparser/DefaultArgParsers.java (97%) diff --git a/src/api/java/baritone/api/IBaritoneProvider.java b/src/api/java/baritone/api/IBaritoneProvider.java index c5c6cf39f..bdd396d43 100644 --- a/src/api/java/baritone/api/IBaritoneProvider.java +++ b/src/api/java/baritone/api/IBaritoneProvider.java @@ -18,13 +18,15 @@ package baritone.api; import baritone.api.cache.IWorldScanner; +import baritone.api.utils.command.Command; +import baritone.api.utils.command.ICommandSystem; import net.minecraft.client.entity.EntityPlayerSP; import java.util.List; import java.util.Objects; /** - * Provides the present {@link IBaritone} instances + * Provides the present {@link IBaritone} instances, as well as non-baritone instance related APIs. * * @author leijurv */ @@ -72,4 +74,12 @@ public interface IBaritoneProvider { * @return The {@link IWorldScanner} instance. */ IWorldScanner getWorldScanner(); + + /** + * Returns the {@link ICommandSystem} instance. This is not bound to a specific {@link IBaritone} + * instance because {@link ICommandSystem} itself controls global behavior for {@link Command}s. + * + * @return The {@link ICommandSystem} instance. + */ + ICommandSystem getCommandSystem(); } diff --git a/src/api/java/baritone/api/utils/command/ICommandSystem.java b/src/api/java/baritone/api/utils/command/ICommandSystem.java new file mode 100644 index 000000000..22055b572 --- /dev/null +++ b/src/api/java/baritone/api/utils/command/ICommandSystem.java @@ -0,0 +1,29 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.api.utils.command; + +import baritone.api.utils.command.argparser.IArgParserManager; + +/** + * @author Brady + * @since 10/4/2019 + */ +public interface ICommandSystem { + + IArgParserManager getParserManager(); +} diff --git a/src/api/java/baritone/api/utils/command/argparser/IArgParser.java b/src/api/java/baritone/api/utils/command/argparser/IArgParser.java index c1f615f6f..cf87258bc 100644 --- a/src/api/java/baritone/api/utils/command/argparser/IArgParser.java +++ b/src/api/java/baritone/api/utils/command/argparser/IArgParser.java @@ -28,8 +28,6 @@ public interface IArgParser { /** * A stateless argument parser is just that. It takes a {@link ICommandArgument} and outputs its type. - * - * @see ArgParserManager#REGISTRY */ interface Stateless extends IArgParser { @@ -45,8 +43,6 @@ public interface IArgParser { /** * A stated argument parser is similar to a stateless one. It also takes a {@link ICommandArgument}, but it also * takes a second argument that can be any type, referred to as the state. - * - * @see ArgParserManager#REGISTRY */ interface Stated extends IArgParser { diff --git a/src/api/java/baritone/api/utils/command/argparser/IArgParserManager.java b/src/api/java/baritone/api/utils/command/argparser/IArgParserManager.java new file mode 100644 index 000000000..e714d30e1 --- /dev/null +++ b/src/api/java/baritone/api/utils/command/argparser/IArgParserManager.java @@ -0,0 +1,65 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.api.utils.command.argparser; + +import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.utils.command.exception.CommandInvalidTypeException; +import baritone.api.utils.command.registry.Registry; + +/** + * @author Brady + * @since 10/4/2019 + */ +public interface IArgParserManager { + + /** + * @param type The type trying to be parsed + * @return A parser that can parse arguments into this class, if found. + */ + IArgParser.Stateless getParserStateless(Class type); + + /** + * @param type The type trying to be parsed + * @return A parser that can parse arguments into this class, if found. + */ + IArgParser.Stated getParserStated(Class type, Class stateKlass); + + /** + * Attempt to parse the specified argument with a stateless {@link IArgParser} that outputs the specified class. + * + * @param type The type to try and parse the argument into. + * @param arg The argument to parse. + * @return An instance of the specified class. + * @throws CommandInvalidTypeException If the parsing failed + */ + T parseStateless(Class type, ICommandArgument arg) throws CommandInvalidTypeException; + + /** + * Attempt to parse the specified argument with a stated {@link IArgParser} that outputs the specified class. + * + * @param type The type to try and parse the argument into. + * @param arg The argument to parse. + * @param state The state to pass to the {@link IArgParser.Stated}. + * @return An instance of the specified class. + * @throws CommandInvalidTypeException If the parsing failed + * @see IArgParser.Stated + */ + T parseStated(Class type, Class stateKlass, ICommandArgument arg, S state) throws CommandInvalidTypeException; + + Registry getRegistry(); +} diff --git a/src/main/java/baritone/BaritoneProvider.java b/src/main/java/baritone/BaritoneProvider.java index 416f1cae5..3f6f82835 100644 --- a/src/main/java/baritone/BaritoneProvider.java +++ b/src/main/java/baritone/BaritoneProvider.java @@ -20,8 +20,10 @@ package baritone; import baritone.api.IBaritone; import baritone.api.IBaritoneProvider; import baritone.api.cache.IWorldScanner; +import baritone.api.utils.command.ICommandSystem; import baritone.utils.command.BaritoneChatControl; import baritone.cache.WorldScanner; +import baritone.utils.command.CommandSystem; import java.util.Collections; import java.util.List; @@ -57,4 +59,9 @@ public final class BaritoneProvider implements IBaritoneProvider { public IWorldScanner getWorldScanner() { return WorldScanner.INSTANCE; } + + @Override + public ICommandSystem getCommandSystem() { + return CommandSystem.INSTANCE; + } } diff --git a/src/main/java/baritone/utils/command/CommandSystem.java b/src/main/java/baritone/utils/command/CommandSystem.java new file mode 100644 index 000000000..56d977a24 --- /dev/null +++ b/src/main/java/baritone/utils/command/CommandSystem.java @@ -0,0 +1,35 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.utils.command; + +import baritone.api.utils.command.ICommandSystem; +import baritone.utils.command.argparser.ArgParserManager; +import baritone.api.utils.command.argparser.IArgParserManager; + +/** + * @author Brady + * @since 10/4/2019 + */ +public enum CommandSystem implements ICommandSystem { + INSTANCE; + + @Override + public IArgParserManager getParserManager() { + return ArgParserManager.INSTANCE; + } +} diff --git a/src/api/java/baritone/api/utils/command/argparser/ArgParserManager.java b/src/main/java/baritone/utils/command/argparser/ArgParserManager.java similarity index 53% rename from src/api/java/baritone/api/utils/command/argparser/ArgParserManager.java rename to src/main/java/baritone/utils/command/argparser/ArgParserManager.java index 2b864f420..75c16cd79 100644 --- a/src/api/java/baritone/api/utils/command/argparser/ArgParserManager.java +++ b/src/main/java/baritone/utils/command/argparser/ArgParserManager.java @@ -15,28 +15,28 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.argparser; +package baritone.utils.command.argparser; +import baritone.api.utils.command.argparser.IArgParser; +import baritone.api.utils.command.argparser.IArgParserManager; import baritone.api.utils.command.argument.ICommandArgument; import baritone.api.utils.command.exception.CommandInvalidTypeException; import baritone.api.utils.command.exception.CommandNoParserForTypeException; import baritone.api.utils.command.registry.Registry; -public class ArgParserManager { +public enum ArgParserManager implements IArgParserManager { + INSTANCE; - public static final Registry REGISTRY = new Registry<>(); + public final Registry registry = new Registry<>(); - static { - DefaultArgParsers.ALL.forEach(REGISTRY::register); + ArgParserManager() { + DefaultArgParsers.ALL.forEach(this.registry::register); } - /** - * @param type The type trying to be parsed - * @return A parser that can parse arguments into this class, if found. - */ - public static IArgParser.Stateless getParserStateless(Class type) { + @Override + public IArgParser.Stateless getParserStateless(Class type) { //noinspection unchecked - return REGISTRY.descendingStream() + return this.registry.descendingStream() .filter(IArgParser.Stateless.class::isInstance) .map(IArgParser.Stateless.class::cast) .filter(parser -> parser.getTarget().isAssignableFrom(type)) @@ -44,13 +44,10 @@ public class ArgParserManager { .orElse(null); } - /** - * @param type The type trying to be parsed - * @return A parser that can parse arguments into this class, if found. - */ - public static IArgParser.Stated getParserStated(Class type, Class stateKlass) { + @Override + public IArgParser.Stated getParserStated(Class type, Class stateKlass) { //noinspection unchecked - return REGISTRY.descendingStream() + return this.registry.descendingStream() .filter(IArgParser.Stated.class::isInstance) .map(IArgParser.Stated.class::cast) .filter(parser -> parser.getTarget().isAssignableFrom(type)) @@ -60,16 +57,9 @@ public class ArgParserManager { .orElse(null); } - /** - * Attempt to parse the specified argument with a stateless {@link IArgParser} that outputs the specified class. - * - * @param type The type to try and parse the argument into. - * @param arg The argument to parse. - * @return An instance of the specified class. - * @throws CommandInvalidTypeException If the parsing failed - */ - public static T parseStateless(Class type, ICommandArgument arg) throws CommandInvalidTypeException { - IArgParser.Stateless parser = getParserStateless(type); + @Override + public T parseStateless(Class type, ICommandArgument arg) throws CommandInvalidTypeException { + IArgParser.Stateless parser = this.getParserStateless(type); if (parser == null) { throw new CommandNoParserForTypeException(type); } @@ -80,18 +70,9 @@ public class ArgParserManager { } } - /** - * Attempt to parse the specified argument with a stated {@link IArgParser} that outputs the specified class. - * - * @param type The type to try and parse the argument into. - * @param arg The argument to parse. - * @param state The state to pass to the {@link IArgParser.Stated}. - * @return An instance of the specified class. - * @throws CommandInvalidTypeException If the parsing failed - * @see IArgParser.Stated - */ - public static T parseStated(Class type, Class stateKlass, ICommandArgument arg, S state) throws CommandInvalidTypeException { - IArgParser.Stated parser = getParserStated(type, stateKlass); + @Override + public T parseStated(Class type, Class stateKlass, ICommandArgument arg, S state) throws CommandInvalidTypeException { + IArgParser.Stated parser = this.getParserStated(type, stateKlass); if (parser == null) { throw new CommandNoParserForTypeException(type); } @@ -101,4 +82,9 @@ public class ArgParserManager { throw new CommandInvalidTypeException(arg, type.getSimpleName()); } } + + @Override + public Registry getRegistry() { + return this.registry; + } } diff --git a/src/api/java/baritone/api/utils/command/argparser/DefaultArgParsers.java b/src/main/java/baritone/utils/command/argparser/DefaultArgParsers.java similarity index 97% rename from src/api/java/baritone/api/utils/command/argparser/DefaultArgParsers.java rename to src/main/java/baritone/utils/command/argparser/DefaultArgParsers.java index b734f47da..41c95af73 100644 --- a/src/api/java/baritone/api/utils/command/argparser/DefaultArgParsers.java +++ b/src/main/java/baritone/utils/command/argparser/DefaultArgParsers.java @@ -15,8 +15,9 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.argparser; +package baritone.utils.command.argparser; +import baritone.api.utils.command.argparser.IArgParser; import baritone.api.utils.command.argument.ICommandArgument; import java.util.Arrays; diff --git a/src/main/java/baritone/utils/command/argument/CommandArgument.java b/src/main/java/baritone/utils/command/argument/CommandArgument.java index 9c374248d..d1b7a1571 100644 --- a/src/main/java/baritone/utils/command/argument/CommandArgument.java +++ b/src/main/java/baritone/utils/command/argument/CommandArgument.java @@ -17,9 +17,8 @@ package baritone.utils.command.argument; -import baritone.api.utils.command.argparser.ArgParserManager; +import baritone.utils.command.argparser.ArgParserManager; import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.exception.CommandInvalidArgumentException; import baritone.api.utils.command.exception.CommandInvalidTypeException; import java.util.stream.Stream; @@ -66,7 +65,7 @@ class CommandArgument implements ICommandArgument { @Override public T getAs(Class type) throws CommandInvalidTypeException { - return ArgParserManager.parseStateless(type, this); + return ArgParserManager.INSTANCE.parseStateless(type, this); } @Override @@ -82,7 +81,7 @@ class CommandArgument implements ICommandArgument { @SuppressWarnings("UnusedReturnValue") @Override public T getAs(Class type, Class stateType, S state) throws CommandInvalidTypeException { - return ArgParserManager.parseStated(type, stateType, this, state); + return ArgParserManager.INSTANCE.parseStated(type, stateType, this, state); } @Override From 29d8ab43f2b810a1228227db058c48a318cf5abb Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 4 Oct 2019 19:22:15 -0500 Subject: [PATCH 06/13] un-poz some Command stuff --- .../java/baritone/api/utils/command/Command.java | 16 ++++++++-------- .../helpers/tabcomplete/TabCompleteHelper.java | 2 +- .../utils/command/defaults/AxisCommand.java | 2 +- .../utils/command/defaults/CancelCommand.java | 2 +- .../utils/command/defaults/CommandAlias.java | 2 +- .../utils/command/defaults/HelpCommand.java | 10 +++++----- .../utils/command/defaults/PathCommand.java | 2 +- .../utils/command/defaults/RepackCommand.java | 2 +- .../utils/command/defaults/SelCommand.java | 2 +- .../utils/command/defaults/SetCommand.java | 2 +- .../utils/command/defaults/ThisWayCommand.java | 2 +- .../utils/command/defaults/WaypointsCommand.java | 2 +- .../utils/command/manager/CommandManager.java | 2 +- 13 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/api/java/baritone/api/utils/command/Command.java b/src/api/java/baritone/api/utils/command/Command.java index ba4ed9386..6293fd58f 100644 --- a/src/api/java/baritone/api/utils/command/Command.java +++ b/src/api/java/baritone/api/utils/command/Command.java @@ -37,25 +37,21 @@ public abstract class Command implements Helper { /** * The names of this command. This is what you put after the command prefix. */ - public final List names; + protected final List names; /** * Creates a new Baritone control command. * * @param names The names of this command. This is what you put after the command prefix. */ - protected Command(IBaritone baritone, List names) { - this.names = names.stream() + protected Command(IBaritone baritone, String... names) { + this.names = Collections.unmodifiableList(Stream.of(names) .map(s -> s.toLowerCase(Locale.US)) - .collect(Collectors.toList()); + .collect(Collectors.toList())); this.baritone = baritone; this.ctx = baritone.getPlayerContext(); } - protected Command(IBaritone baritone, String name) { - this(baritone, Collections.singletonList(name)); - } - /** * Called when this command is executed. */ @@ -83,4 +79,8 @@ public abstract class Command implements Helper { public boolean hiddenFromHelp() { return false; } + + public final List getNames() { + return this.names; + } } diff --git a/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java b/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java index 9be9dfb3d..dd14e2bc8 100644 --- a/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java +++ b/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java @@ -241,7 +241,7 @@ public class TabCompleteHelper { */ public TabCompleteHelper addCommands(ICommandManager manager) { return append(manager.getRegistry().descendingStream() - .flatMap(command -> command.names.stream()) + .flatMap(command -> command.getNames().stream()) .distinct() ); } diff --git a/src/main/java/baritone/utils/command/defaults/AxisCommand.java b/src/main/java/baritone/utils/command/defaults/AxisCommand.java index f67c82e56..e454cfc71 100644 --- a/src/main/java/baritone/utils/command/defaults/AxisCommand.java +++ b/src/main/java/baritone/utils/command/defaults/AxisCommand.java @@ -31,7 +31,7 @@ import java.util.stream.Stream; public class AxisCommand extends Command { public AxisCommand(IBaritone baritone) { - super(baritone, Arrays.asList("axis", "highway")); + super(baritone, "axis", "highway"); } @Override diff --git a/src/main/java/baritone/utils/command/defaults/CancelCommand.java b/src/main/java/baritone/utils/command/defaults/CancelCommand.java index 868da5e0f..f37835375 100644 --- a/src/main/java/baritone/utils/command/defaults/CancelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/CancelCommand.java @@ -29,7 +29,7 @@ import java.util.stream.Stream; public class CancelCommand extends Command { public CancelCommand(IBaritone baritone) { - super(baritone, Arrays.asList("cancel", "stop")); + super(baritone, "cancel", "stop"); } @Override diff --git a/src/main/java/baritone/utils/command/defaults/CommandAlias.java b/src/main/java/baritone/utils/command/defaults/CommandAlias.java index 6aa32af13..69d4e0bea 100644 --- a/src/main/java/baritone/utils/command/defaults/CommandAlias.java +++ b/src/main/java/baritone/utils/command/defaults/CommandAlias.java @@ -31,7 +31,7 @@ public class CommandAlias extends Command { public final String target; public CommandAlias(IBaritone baritone, List names, String shortDesc, String target) { - super(baritone, names); + super(baritone, names.toArray(new String[0])); this.shortDesc = shortDesc; this.target = target; } diff --git a/src/main/java/baritone/utils/command/defaults/HelpCommand.java b/src/main/java/baritone/utils/command/defaults/HelpCommand.java index 480207f1b..039506c1c 100644 --- a/src/main/java/baritone/utils/command/defaults/HelpCommand.java +++ b/src/main/java/baritone/utils/command/defaults/HelpCommand.java @@ -40,7 +40,7 @@ import static baritone.api.utils.command.IBaritoneChatControl.FORCE_COMMAND_PREF public class HelpCommand extends Command { public HelpCommand(IBaritone baritone) { - super(baritone, Arrays.asList("help", "?")); + super(baritone, "help", "?"); } @Override @@ -55,8 +55,8 @@ public class HelpCommand extends Command { ), () -> logDirect("All Baritone commands (clickable):"), command -> { - String names = String.join("/", command.names); - String name = command.names.get(0); + String names = String.join("/", command.getNames()); + String name = command.getNames().get(0); ITextComponent shortDescComponent = new TextComponentString(" - " + command.getShortDesc()); shortDescComponent.getStyle().setColor(TextFormatting.DARK_GRAY); ITextComponent namesComponent = new TextComponentString(names); @@ -66,7 +66,7 @@ public class HelpCommand extends Command { hoverComponent.appendSibling(namesComponent); hoverComponent.appendText("\n" + command.getShortDesc()); hoverComponent.appendText("\n\nClick to view full help"); - String clickCommand = FORCE_COMMAND_PREFIX + String.format("%s %s", label, command.names.get(0)); + String clickCommand = FORCE_COMMAND_PREFIX + String.format("%s %s", label, command.getNames().get(0)); ITextComponent component = new TextComponentString(name); component.getStyle().setColor(TextFormatting.GRAY); component.appendSibling(shortDescComponent); @@ -83,7 +83,7 @@ public class HelpCommand extends Command { if (command == null) { throw new CommandNotFoundException(commandName); } - logDirect(String.format("%s - %s", String.join(" / ", command.names), command.getShortDesc())); + logDirect(String.format("%s - %s", String.join(" / ", command.getNames()), command.getShortDesc())); logDirect(""); command.getLongDesc().forEach(this::logDirect); logDirect(""); diff --git a/src/main/java/baritone/utils/command/defaults/PathCommand.java b/src/main/java/baritone/utils/command/defaults/PathCommand.java index e52a93a47..257556b06 100644 --- a/src/main/java/baritone/utils/command/defaults/PathCommand.java +++ b/src/main/java/baritone/utils/command/defaults/PathCommand.java @@ -36,7 +36,7 @@ import java.util.stream.Stream; public class PathCommand extends Command { public PathCommand(IBaritone baritone) { - super(baritone, Arrays.asList("path", "goto")); + super(baritone, "path", "goto"); } @Override diff --git a/src/main/java/baritone/utils/command/defaults/RepackCommand.java b/src/main/java/baritone/utils/command/defaults/RepackCommand.java index 1f11802a4..dcbe4b39c 100644 --- a/src/main/java/baritone/utils/command/defaults/RepackCommand.java +++ b/src/main/java/baritone/utils/command/defaults/RepackCommand.java @@ -30,7 +30,7 @@ import java.util.stream.Stream; public class RepackCommand extends Command { public RepackCommand(IBaritone baritone) { - super(baritone, Arrays.asList("repack", "rescan")); + super(baritone, "repack", "rescan"); } @Override diff --git a/src/main/java/baritone/utils/command/defaults/SelCommand.java b/src/main/java/baritone/utils/command/defaults/SelCommand.java index 83fc77e38..b6c38ec0a 100644 --- a/src/main/java/baritone/utils/command/defaults/SelCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SelCommand.java @@ -56,7 +56,7 @@ public class SelCommand extends Command { private BetterBlockPos pos1 = null; public SelCommand(IBaritone baritone) { - super(baritone, Arrays.asList("sel", "selection", "s")); + super(baritone, "sel", "selection", "s"); baritone.getGameEventHandler().registerEventListener(new AbstractGameEventListener() { @Override public void onRenderPass(RenderEvent event) { diff --git a/src/main/java/baritone/utils/command/defaults/SetCommand.java b/src/main/java/baritone/utils/command/defaults/SetCommand.java index be07a7aec..f6aed80a5 100644 --- a/src/main/java/baritone/utils/command/defaults/SetCommand.java +++ b/src/main/java/baritone/utils/command/defaults/SetCommand.java @@ -46,7 +46,7 @@ import static baritone.api.utils.command.IBaritoneChatControl.FORCE_COMMAND_PREF public class SetCommand extends Command { public SetCommand(IBaritone baritone) { - super(baritone, Arrays.asList("set", "setting", "settings")); + super(baritone, "set", "setting", "settings"); } @Override diff --git a/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java b/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java index bef3a5138..4c2f4003d 100644 --- a/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java +++ b/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java @@ -30,7 +30,7 @@ import java.util.stream.Stream; public class ThisWayCommand extends Command { public ThisWayCommand(IBaritone baritone) { - super(baritone, Arrays.asList("thisway", "forward")); + super(baritone, "thisway", "forward"); } @Override diff --git a/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java b/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java index bda39e2a0..7cf418631 100644 --- a/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java +++ b/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java @@ -48,7 +48,7 @@ import static baritone.api.utils.command.IBaritoneChatControl.FORCE_COMMAND_PREF public class WaypointsCommand extends Command { public WaypointsCommand(IBaritone baritone) { - super(baritone, Arrays.asList("waypoints", "waypoint", "wp")); + super(baritone, "waypoints", "waypoint", "wp"); } @Override diff --git a/src/main/java/baritone/utils/command/manager/CommandManager.java b/src/main/java/baritone/utils/command/manager/CommandManager.java index 290b38524..2e37a7f74 100644 --- a/src/main/java/baritone/utils/command/manager/CommandManager.java +++ b/src/main/java/baritone/utils/command/manager/CommandManager.java @@ -64,7 +64,7 @@ public class CommandManager implements ICommandManager { @Override public Command getCommand(String name) { for (Command command : this.registry.entries) { - if (command.names.contains(name.toLowerCase(Locale.US))) { + if (command.getNames().contains(name.toLowerCase(Locale.US))) { return command; } } From 9843e8048de5097e7bae4b3dc7ec53ebb8886f56 Mon Sep 17 00:00:00 2001 From: Joerez Date: Sat, 5 Oct 2019 14:46:19 -0700 Subject: [PATCH 07/13] issue-1015 better handling Delete org.eclipse.buildship.core.prefs Delete .project issue-1015 removed unessesary conversion issue-1015 users can use k in their #todo arguments to multiply the goal by 1000 --- .../utils/command/datatypes/RelativeCoordinate.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java index 7ef3532a3..e56f4b8c1 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java @@ -26,8 +26,7 @@ import java.util.stream.Stream; public enum RelativeCoordinate implements IDatatypePost { INSTANCE; - - private static Pattern PATTERN = Pattern.compile("^(~?)([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)|)$"); + private static Pattern PATTERN = Pattern.compile("^(~?)([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)([k-k]?)|)$"); @Override public Double apply(IDatatypeContext ctx, Double origin) throws CommandException { @@ -41,7 +40,15 @@ public enum RelativeCoordinate implements IDatatypePost { } boolean isRelative = !matcher.group(1).isEmpty(); - double offset = matcher.group(2).isEmpty() ? 0 : Double.parseDouble(matcher.group(2)); + + double offset = matcher.group(2).isEmpty() ? 0 : Double.parseDouble(matcher.group(2).replaceAll("k", "")); + + if (matcher.group(2).contains("k")) { + String newString = matcher.group(2).replaceAll("k", ""); + double convertedNumber = Double.parseDouble(newString); + convertedNumber = convertedNumber * 1000; + offset = convertedNumber; + } if (isRelative) { return origin + offset; From 06805057d4123b761d45dbe2fbb32db1dc0a7552 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sat, 5 Oct 2019 19:49:38 -0700 Subject: [PATCH 08/13] unscuff js code --- .../api/utils/command/datatypes/RelativeCoordinate.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java b/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java index e56f4b8c1..c8ae3519e 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java +++ b/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java @@ -44,10 +44,7 @@ public enum RelativeCoordinate implements IDatatypePost { double offset = matcher.group(2).isEmpty() ? 0 : Double.parseDouble(matcher.group(2).replaceAll("k", "")); if (matcher.group(2).contains("k")) { - String newString = matcher.group(2).replaceAll("k", ""); - double convertedNumber = Double.parseDouble(newString); - convertedNumber = convertedNumber * 1000; - offset = convertedNumber; + offset *= 1000; } if (isRelative) { From 889e288524e989a8d2d7b5d18826acf63bf676fe Mon Sep 17 00:00:00 2001 From: Brady Date: Sun, 6 Oct 2019 15:20:42 -0500 Subject: [PATCH 09/13] Refactor *.util.command to *.command --- src/api/java/baritone/api/IBaritone.java | 2 +- .../java/baritone/api/IBaritoneProvider.java | 4 +-- .../api/{utils => }/command/Command.java | 6 ++--- .../command/IBaritoneChatControl.java | 2 +- .../{utils => }/command/ICommandSystem.java | 4 +-- .../command/argparser/IArgParser.java | 4 +-- .../command/argparser/IArgParserManager.java | 8 +++--- .../command/argument/ICommandArgument.java | 8 +++--- .../command/datatypes/BlockById.java | 6 ++--- .../command/datatypes/EntityClassById.java | 6 ++--- .../datatypes/ForBlockOptionalMeta.java | 4 +-- .../command/datatypes/ForEnumFacing.java | 6 ++--- .../command/datatypes/ForWaypoints.java | 6 ++--- .../command/datatypes/IDatatype.java | 8 +++--- .../command/datatypes/IDatatypeContext.java | 4 +-- .../command/datatypes/IDatatypeFor.java | 4 +-- .../command/datatypes/IDatatypePost.java | 4 +-- .../datatypes/IDatatypePostFunction.java | 4 +-- .../command/datatypes/NearbyPlayer.java | 6 ++--- .../command/datatypes/RelativeBlockPos.java | 6 ++--- .../command/datatypes/RelativeCoordinate.java | 6 ++--- .../command/datatypes/RelativeFile.java | 6 ++--- .../command/datatypes/RelativeGoal.java | 6 ++--- .../command/datatypes/RelativeGoalBlock.java | 6 ++--- .../command/datatypes/RelativeGoalXZ.java | 6 ++--- .../command/datatypes/RelativeGoalYLevel.java | 6 ++--- .../CommandErrorMessageException.java | 2 +- .../command/exception/CommandException.java | 2 +- .../CommandInvalidArgumentException.java | 4 +-- .../CommandInvalidStateException.java | 2 +- .../CommandInvalidTypeException.java | 4 +-- .../CommandNoParserForTypeException.java | 2 +- .../CommandNotEnoughArgumentsException.java | 2 +- .../exception/CommandNotFoundException.java | 6 ++--- .../CommandTooManyArgumentsException.java | 2 +- .../exception/CommandUnhandledException.java | 6 ++--- .../command/exception/ICommandException.java | 6 ++--- .../helpers/arguments/IArgConsumer.java | 22 ++++++++-------- .../command/helpers/pagination/Paginator.java | 8 +++--- .../tabcomplete/TabCompleteHelper.java | 6 ++--- .../command/manager/ICommandManager.java | 8 +++--- .../command/registry/Registry.java | 2 +- src/main/java/baritone/Baritone.java | 2 +- src/main/java/baritone/BaritoneProvider.java | 6 ++--- .../command/BaritoneChatControl.java | 20 +++++++------- .../{utils => }/command/CommandSystem.java | 8 +++--- .../command/argparser/ArgParserManager.java | 14 +++++----- .../command/argparser/DefaultArgParsers.java | 6 ++--- .../command/argument/CommandArgument.java | 8 +++--- .../command/argument/CommandArguments.java | 6 ++--- .../command/defaults/AxisCommand.java | 8 +++--- .../command/defaults/BlacklistCommand.java | 10 +++---- .../command/defaults/BuildCommand.java | 14 +++++----- .../command/defaults/CancelCommand.java | 8 +++--- .../command/defaults/ChestsCommand.java | 10 +++---- .../command/defaults/ClickCommand.java | 8 +++--- .../command/defaults/ComeCommand.java | 10 +++---- .../command/defaults/CommandAlias.java | 6 ++--- .../command/defaults/DefaultCommands.java | 4 +-- .../command/defaults/ExploreCommand.java | 10 +++---- .../defaults/ExploreFilterCommand.java | 14 +++++----- .../command/defaults/FarmCommand.java | 8 +++--- .../command/defaults/FindCommand.java | 10 +++---- .../command/defaults/FollowCommand.java | 16 ++++++------ .../command/defaults/ForceCancelCommand.java | 8 +++--- .../command/defaults/GcCommand.java | 8 +++--- .../command/defaults/GoalCommand.java | 14 +++++----- .../command/defaults/HelpCommand.java | 16 ++++++------ .../command/defaults/InvertCommand.java | 10 +++---- .../command/defaults/MineCommand.java | 12 ++++----- .../command/defaults/PathCommand.java | 16 ++++++------ .../command/defaults/PauseResumeCommands.java | 10 +++---- .../command/defaults/ProcCommand.java | 10 +++---- .../command/defaults/ReloadAllCommand.java | 8 +++--- .../command/defaults/RenderCommand.java | 8 +++--- .../command/defaults/RepackCommand.java | 8 +++--- .../command/defaults/SaveAllCommand.java | 8 +++--- .../command/defaults/SchematicaCommand.java | 8 +++--- .../command/defaults/SelCommand.java | 20 +++++++------- .../command/defaults/SetCommand.java | 16 ++++++------ .../command/defaults/ThisWayCommand.java | 8 +++--- .../command/defaults/TunnelCommand.java | 8 +++--- .../command/defaults/VersionCommand.java | 10 +++---- .../command/defaults/WaypointsCommand.java | 22 ++++++++-------- .../helpers/arguments/ArgConsumer.java | 26 +++++++++---------- .../command/manager/CommandManager.java | 22 ++++++++-------- src/main/java/baritone/utils/GuiClick.java | 2 +- 87 files changed, 353 insertions(+), 353 deletions(-) rename src/api/java/baritone/api/{utils => }/command/Command.java (94%) rename src/api/java/baritone/api/{utils => }/command/IBaritoneChatControl.java (98%) rename src/api/java/baritone/api/{utils => }/command/ICommandSystem.java (89%) rename src/api/java/baritone/api/{utils => }/command/argparser/IArgParser.java (95%) rename src/api/java/baritone/api/{utils => }/command/argparser/IArgParserManager.java (90%) rename src/api/java/baritone/api/{utils => }/command/argument/ICommandArgument.java (93%) rename src/api/java/baritone/api/{utils => }/command/datatypes/BlockById.java (90%) rename src/api/java/baritone/api/{utils => }/command/datatypes/EntityClassById.java (90%) rename src/api/java/baritone/api/{utils => }/command/datatypes/ForBlockOptionalMeta.java (91%) rename src/api/java/baritone/api/{utils => }/command/datatypes/ForEnumFacing.java (88%) rename src/api/java/baritone/api/{utils => }/command/datatypes/ForWaypoints.java (94%) rename src/api/java/baritone/api/{utils => }/command/datatypes/IDatatype.java (91%) rename src/api/java/baritone/api/{utils => }/command/datatypes/IDatatypeContext.java (92%) rename src/api/java/baritone/api/{utils => }/command/datatypes/IDatatypeFor.java (94%) rename src/api/java/baritone/api/{utils => }/command/datatypes/IDatatypePost.java (93%) rename src/api/java/baritone/api/{utils => }/command/datatypes/IDatatypePostFunction.java (88%) rename src/api/java/baritone/api/{utils => }/command/datatypes/NearbyPlayer.java (91%) rename src/api/java/baritone/api/{utils => }/command/datatypes/RelativeBlockPos.java (92%) rename src/api/java/baritone/api/{utils => }/command/datatypes/RelativeCoordinate.java (92%) rename src/api/java/baritone/api/{utils => }/command/datatypes/RelativeFile.java (95%) rename src/api/java/baritone/api/{utils => }/command/datatypes/RelativeGoal.java (94%) rename src/api/java/baritone/api/{utils => }/command/datatypes/RelativeGoalBlock.java (91%) rename src/api/java/baritone/api/{utils => }/command/datatypes/RelativeGoalXZ.java (91%) rename src/api/java/baritone/api/{utils => }/command/datatypes/RelativeGoalYLevel.java (90%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandErrorMessageException.java (94%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandException.java (94%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandInvalidArgumentException.java (91%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandInvalidStateException.java (94%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandInvalidTypeException.java (93%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandNoParserForTypeException.java (95%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandNotEnoughArgumentsException.java (95%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandNotFoundException.java (88%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandTooManyArgumentsException.java (95%) rename src/api/java/baritone/api/{utils => }/command/exception/CommandUnhandledException.java (90%) rename src/api/java/baritone/api/{utils => }/command/exception/ICommandException.java (91%) rename src/api/java/baritone/api/{utils => }/command/helpers/arguments/IArgConsumer.java (97%) rename src/api/java/baritone/api/{utils => }/command/helpers/pagination/Paginator.java (96%) rename src/api/java/baritone/api/{utils => }/command/helpers/tabcomplete/TabCompleteHelper.java (98%) rename src/api/java/baritone/api/{utils => }/command/manager/ICommandManager.java (87%) rename src/api/java/baritone/api/{utils => }/command/registry/Registry.java (99%) rename src/main/java/baritone/{utils => }/command/BaritoneChatControl.java (92%) rename src/main/java/baritone/{utils => }/command/CommandSystem.java (82%) rename src/main/java/baritone/{utils => }/command/argparser/ArgParserManager.java (87%) rename src/main/java/baritone/{utils => }/command/argparser/DefaultArgParsers.java (96%) rename src/main/java/baritone/{utils => }/command/argument/CommandArgument.java (91%) rename src/main/java/baritone/{utils => }/command/argument/CommandArguments.java (93%) rename src/main/java/baritone/{utils => }/command/defaults/AxisCommand.java (89%) rename src/main/java/baritone/{utils => }/command/defaults/BlacklistCommand.java (87%) rename src/main/java/baritone/{utils => }/command/defaults/BuildCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/CancelCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/ChestsCommand.java (90%) rename src/main/java/baritone/{utils => }/command/defaults/ClickCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/ComeCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/CommandAlias.java (92%) rename src/main/java/baritone/{utils => }/command/defaults/DefaultCommands.java (97%) rename src/main/java/baritone/{utils => }/command/defaults/ExploreCommand.java (89%) rename src/main/java/baritone/{utils => }/command/defaults/ExploreFilterCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/FarmCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/FindCommand.java (89%) rename src/main/java/baritone/{utils => }/command/defaults/FollowCommand.java (91%) rename src/main/java/baritone/{utils => }/command/defaults/ForceCancelCommand.java (89%) rename src/main/java/baritone/{utils => }/command/defaults/GcCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/GoalCommand.java (89%) rename src/main/java/baritone/{utils => }/command/defaults/HelpCommand.java (91%) rename src/main/java/baritone/{utils => }/command/defaults/InvertCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/MineCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/PathCommand.java (85%) rename src/main/java/baritone/{utils => }/command/defaults/PauseResumeCommands.java (95%) rename src/main/java/baritone/{utils => }/command/defaults/ProcCommand.java (90%) rename src/main/java/baritone/{utils => }/command/defaults/ReloadAllCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/RenderCommand.java (90%) rename src/main/java/baritone/{utils => }/command/defaults/RepackCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/SaveAllCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/SchematicaCommand.java (88%) rename src/main/java/baritone/{utils => }/command/defaults/SelCommand.java (95%) rename src/main/java/baritone/{utils => }/command/defaults/SetCommand.java (96%) rename src/main/java/baritone/{utils => }/command/defaults/ThisWayCommand.java (90%) rename src/main/java/baritone/{utils => }/command/defaults/TunnelCommand.java (90%) rename src/main/java/baritone/{utils => }/command/defaults/VersionCommand.java (87%) rename src/main/java/baritone/{utils => }/command/defaults/WaypointsCommand.java (95%) rename src/main/java/baritone/{utils => }/command/helpers/arguments/ArgConsumer.java (94%) rename src/main/java/baritone/{utils => }/command/manager/CommandManager.java (88%) diff --git a/src/api/java/baritone/api/IBaritone.java b/src/api/java/baritone/api/IBaritone.java index 8c5de47ab..64c4a2918 100644 --- a/src/api/java/baritone/api/IBaritone.java +++ b/src/api/java/baritone/api/IBaritone.java @@ -26,7 +26,7 @@ import baritone.api.process.*; import baritone.api.selection.ISelectionManager; import baritone.api.utils.IInputOverrideHandler; import baritone.api.utils.IPlayerContext; -import baritone.api.utils.command.manager.ICommandManager; +import baritone.api.command.manager.ICommandManager; /** * @author Brady diff --git a/src/api/java/baritone/api/IBaritoneProvider.java b/src/api/java/baritone/api/IBaritoneProvider.java index bdd396d43..e31ef0f8e 100644 --- a/src/api/java/baritone/api/IBaritoneProvider.java +++ b/src/api/java/baritone/api/IBaritoneProvider.java @@ -18,8 +18,8 @@ package baritone.api; import baritone.api.cache.IWorldScanner; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.ICommandSystem; +import baritone.api.command.Command; +import baritone.api.command.ICommandSystem; import net.minecraft.client.entity.EntityPlayerSP; import java.util.List; diff --git a/src/api/java/baritone/api/utils/command/Command.java b/src/api/java/baritone/api/command/Command.java similarity index 94% rename from src/api/java/baritone/api/utils/command/Command.java rename to src/api/java/baritone/api/command/Command.java index 6293fd58f..cd8fa5de3 100644 --- a/src/api/java/baritone/api/utils/command/Command.java +++ b/src/api/java/baritone/api/command/Command.java @@ -15,13 +15,13 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command; +package baritone.api.command; import baritone.api.IBaritone; import baritone.api.utils.Helper; import baritone.api.utils.IPlayerContext; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Collections; import java.util.List; diff --git a/src/api/java/baritone/api/utils/command/IBaritoneChatControl.java b/src/api/java/baritone/api/command/IBaritoneChatControl.java similarity index 98% rename from src/api/java/baritone/api/utils/command/IBaritoneChatControl.java rename to src/api/java/baritone/api/command/IBaritoneChatControl.java index 63b6a4458..5009f3f02 100644 --- a/src/api/java/baritone/api/utils/command/IBaritoneChatControl.java +++ b/src/api/java/baritone/api/command/IBaritoneChatControl.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command; +package baritone.api.command; import baritone.api.Settings; diff --git a/src/api/java/baritone/api/utils/command/ICommandSystem.java b/src/api/java/baritone/api/command/ICommandSystem.java similarity index 89% rename from src/api/java/baritone/api/utils/command/ICommandSystem.java rename to src/api/java/baritone/api/command/ICommandSystem.java index 22055b572..98e8ed9c6 100644 --- a/src/api/java/baritone/api/utils/command/ICommandSystem.java +++ b/src/api/java/baritone/api/command/ICommandSystem.java @@ -15,9 +15,9 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command; +package baritone.api.command; -import baritone.api.utils.command.argparser.IArgParserManager; +import baritone.api.command.argparser.IArgParserManager; /** * @author Brady diff --git a/src/api/java/baritone/api/utils/command/argparser/IArgParser.java b/src/api/java/baritone/api/command/argparser/IArgParser.java similarity index 95% rename from src/api/java/baritone/api/utils/command/argparser/IArgParser.java rename to src/api/java/baritone/api/command/argparser/IArgParser.java index cf87258bc..868ad6963 100644 --- a/src/api/java/baritone/api/utils/command/argparser/IArgParser.java +++ b/src/api/java/baritone/api/command/argparser/IArgParser.java @@ -15,9 +15,9 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.argparser; +package baritone.api.command.argparser; -import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.command.argument.ICommandArgument; public interface IArgParser { diff --git a/src/api/java/baritone/api/utils/command/argparser/IArgParserManager.java b/src/api/java/baritone/api/command/argparser/IArgParserManager.java similarity index 90% rename from src/api/java/baritone/api/utils/command/argparser/IArgParserManager.java rename to src/api/java/baritone/api/command/argparser/IArgParserManager.java index e714d30e1..fe819150a 100644 --- a/src/api/java/baritone/api/utils/command/argparser/IArgParserManager.java +++ b/src/api/java/baritone/api/command/argparser/IArgParserManager.java @@ -15,11 +15,11 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.argparser; +package baritone.api.command.argparser; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.registry.Registry; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.registry.Registry; /** * @author Brady diff --git a/src/api/java/baritone/api/utils/command/argument/ICommandArgument.java b/src/api/java/baritone/api/command/argument/ICommandArgument.java similarity index 93% rename from src/api/java/baritone/api/utils/command/argument/ICommandArgument.java rename to src/api/java/baritone/api/command/argument/ICommandArgument.java index 7cbe2540d..ab912d00c 100644 --- a/src/api/java/baritone/api/utils/command/argument/ICommandArgument.java +++ b/src/api/java/baritone/api/command/argument/ICommandArgument.java @@ -15,11 +15,11 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.argument; +package baritone.api.command.argument; -import baritone.api.utils.command.argparser.IArgParser; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.argparser.IArgParser; +import baritone.api.command.exception.CommandInvalidTypeException; import net.minecraft.util.EnumFacing; /** diff --git a/src/api/java/baritone/api/utils/command/datatypes/BlockById.java b/src/api/java/baritone/api/command/datatypes/BlockById.java similarity index 90% rename from src/api/java/baritone/api/utils/command/datatypes/BlockById.java rename to src/api/java/baritone/api/command/datatypes/BlockById.java index ae659adc9..98858d137 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/BlockById.java +++ b/src/api/java/baritone/api/command/datatypes/BlockById.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.exception.CommandException; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.util.ResourceLocation; diff --git a/src/api/java/baritone/api/utils/command/datatypes/EntityClassById.java b/src/api/java/baritone/api/command/datatypes/EntityClassById.java similarity index 90% rename from src/api/java/baritone/api/utils/command/datatypes/EntityClassById.java rename to src/api/java/baritone/api/command/datatypes/EntityClassById.java index 3597141f1..40d6ad108 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/EntityClassById.java +++ b/src/api/java/baritone/api/command/datatypes/EntityClassById.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.exception.CommandException; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.util.ResourceLocation; diff --git a/src/api/java/baritone/api/utils/command/datatypes/ForBlockOptionalMeta.java b/src/api/java/baritone/api/command/datatypes/ForBlockOptionalMeta.java similarity index 91% rename from src/api/java/baritone/api/utils/command/datatypes/ForBlockOptionalMeta.java rename to src/api/java/baritone/api/command/datatypes/ForBlockOptionalMeta.java index f36826c6c..29dc5f0b7 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/ForBlockOptionalMeta.java +++ b/src/api/java/baritone/api/command/datatypes/ForBlockOptionalMeta.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; import baritone.api.utils.BlockOptionalMeta; -import baritone.api.utils.command.exception.CommandException; +import baritone.api.command.exception.CommandException; import java.util.stream.Stream; diff --git a/src/api/java/baritone/api/utils/command/datatypes/ForEnumFacing.java b/src/api/java/baritone/api/command/datatypes/ForEnumFacing.java similarity index 88% rename from src/api/java/baritone/api/utils/command/datatypes/ForEnumFacing.java rename to src/api/java/baritone/api/command/datatypes/ForEnumFacing.java index ed6dce31b..23f8617c1 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/ForEnumFacing.java +++ b/src/api/java/baritone/api/command/datatypes/ForEnumFacing.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.exception.CommandException; import net.minecraft.util.EnumFacing; import java.util.Locale; diff --git a/src/api/java/baritone/api/utils/command/datatypes/ForWaypoints.java b/src/api/java/baritone/api/command/datatypes/ForWaypoints.java similarity index 94% rename from src/api/java/baritone/api/utils/command/datatypes/ForWaypoints.java rename to src/api/java/baritone/api/command/datatypes/ForWaypoints.java index e60ff0c6a..db5068392 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/ForWaypoints.java +++ b/src/api/java/baritone/api/command/datatypes/ForWaypoints.java @@ -15,13 +15,13 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; import baritone.api.IBaritone; import baritone.api.cache.IWaypoint; import baritone.api.cache.IWaypointCollection; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.exception.CommandException; import java.util.Comparator; import java.util.stream.Stream; diff --git a/src/api/java/baritone/api/utils/command/datatypes/IDatatype.java b/src/api/java/baritone/api/command/datatypes/IDatatype.java similarity index 91% rename from src/api/java/baritone/api/utils/command/datatypes/IDatatype.java rename to src/api/java/baritone/api/command/datatypes/IDatatype.java index 36a37fecd..385154bc4 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/IDatatype.java +++ b/src/api/java/baritone/api/command/datatypes/IDatatype.java @@ -15,11 +15,11 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.argparser.IArgParser; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.argparser.IArgParser; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; import java.util.stream.Stream; diff --git a/src/api/java/baritone/api/utils/command/datatypes/IDatatypeContext.java b/src/api/java/baritone/api/command/datatypes/IDatatypeContext.java similarity index 92% rename from src/api/java/baritone/api/utils/command/datatypes/IDatatypeContext.java rename to src/api/java/baritone/api/command/datatypes/IDatatypeContext.java index 33f3ad232..4b8269c3c 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/IDatatypeContext.java +++ b/src/api/java/baritone/api/command/datatypes/IDatatypeContext.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; import baritone.api.IBaritone; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.arguments.IArgConsumer; /** * Provides an {@link IDatatype} with contextual information so diff --git a/src/api/java/baritone/api/utils/command/datatypes/IDatatypeFor.java b/src/api/java/baritone/api/command/datatypes/IDatatypeFor.java similarity index 94% rename from src/api/java/baritone/api/utils/command/datatypes/IDatatypeFor.java rename to src/api/java/baritone/api/command/datatypes/IDatatypeFor.java index 4f0f42006..2f0a9c140 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/IDatatypeFor.java +++ b/src/api/java/baritone/api/command/datatypes/IDatatypeFor.java @@ -15,9 +15,9 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.exception.CommandException; +import baritone.api.command.exception.CommandException; import java.util.function.Supplier; diff --git a/src/api/java/baritone/api/utils/command/datatypes/IDatatypePost.java b/src/api/java/baritone/api/command/datatypes/IDatatypePost.java similarity index 93% rename from src/api/java/baritone/api/utils/command/datatypes/IDatatypePost.java rename to src/api/java/baritone/api/command/datatypes/IDatatypePost.java index 2e4cc47af..aa5b261da 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/IDatatypePost.java +++ b/src/api/java/baritone/api/command/datatypes/IDatatypePost.java @@ -15,9 +15,9 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.exception.CommandException; +import baritone.api.command.exception.CommandException; import java.util.function.Function; diff --git a/src/api/java/baritone/api/utils/command/datatypes/IDatatypePostFunction.java b/src/api/java/baritone/api/command/datatypes/IDatatypePostFunction.java similarity index 88% rename from src/api/java/baritone/api/utils/command/datatypes/IDatatypePostFunction.java rename to src/api/java/baritone/api/command/datatypes/IDatatypePostFunction.java index a3de089e0..fe79d6a6d 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/IDatatypePostFunction.java +++ b/src/api/java/baritone/api/command/datatypes/IDatatypePostFunction.java @@ -15,9 +15,9 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.exception.CommandException; +import baritone.api.command.exception.CommandException; /** * @author Brady diff --git a/src/api/java/baritone/api/utils/command/datatypes/NearbyPlayer.java b/src/api/java/baritone/api/command/datatypes/NearbyPlayer.java similarity index 91% rename from src/api/java/baritone/api/utils/command/datatypes/NearbyPlayer.java rename to src/api/java/baritone/api/command/datatypes/NearbyPlayer.java index 78450e1ac..aa32fc765 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/NearbyPlayer.java +++ b/src/api/java/baritone/api/command/datatypes/NearbyPlayer.java @@ -15,11 +15,11 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; import baritone.api.IBaritone; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.exception.CommandException; import net.minecraft.entity.player.EntityPlayer; import java.util.List; diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeBlockPos.java b/src/api/java/baritone/api/command/datatypes/RelativeBlockPos.java similarity index 92% rename from src/api/java/baritone/api/utils/command/datatypes/RelativeBlockPos.java rename to src/api/java/baritone/api/command/datatypes/RelativeBlockPos.java index 4a8762204..513ef41f3 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeBlockPos.java +++ b/src/api/java/baritone/api/command/datatypes/RelativeBlockPos.java @@ -15,11 +15,11 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; +import baritone.api.command.helpers.arguments.IArgConsumer; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; import java.util.stream.Stream; diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java b/src/api/java/baritone/api/command/datatypes/RelativeCoordinate.java similarity index 92% rename from src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java rename to src/api/java/baritone/api/command/datatypes/RelativeCoordinate.java index c8ae3519e..dc4d56304 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeCoordinate.java +++ b/src/api/java/baritone/api/command/datatypes/RelativeCoordinate.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeFile.java b/src/api/java/baritone/api/command/datatypes/RelativeFile.java similarity index 95% rename from src/api/java/baritone/api/utils/command/datatypes/RelativeFile.java rename to src/api/java/baritone/api/command/datatypes/RelativeFile.java index 0ad4b88b0..f886a1c65 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeFile.java +++ b/src/api/java/baritone/api/command/datatypes/RelativeFile.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; import java.io.File; import java.io.IOException; diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoal.java b/src/api/java/baritone/api/command/datatypes/RelativeGoal.java similarity index 94% rename from src/api/java/baritone/api/utils/command/datatypes/RelativeGoal.java rename to src/api/java/baritone/api/command/datatypes/RelativeGoal.java index 0c98073f5..73bc6e0d3 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoal.java +++ b/src/api/java/baritone/api/command/datatypes/RelativeGoal.java @@ -15,15 +15,15 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; +import baritone.api.command.helpers.arguments.IArgConsumer; import baritone.api.pathing.goals.Goal; import baritone.api.pathing.goals.GoalBlock; import baritone.api.pathing.goals.GoalXZ; import baritone.api.pathing.goals.GoalYLevel; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; import net.minecraft.util.math.MathHelper; import java.util.ArrayList; diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalBlock.java b/src/api/java/baritone/api/command/datatypes/RelativeGoalBlock.java similarity index 91% rename from src/api/java/baritone/api/utils/command/datatypes/RelativeGoalBlock.java rename to src/api/java/baritone/api/command/datatypes/RelativeGoalBlock.java index b3c0e2846..19621b952 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalBlock.java +++ b/src/api/java/baritone/api/command/datatypes/RelativeGoalBlock.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; +import baritone.api.command.helpers.arguments.IArgConsumer; import baritone.api.pathing.goals.GoalBlock; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; import net.minecraft.util.math.MathHelper; import java.util.stream.Stream; diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalXZ.java b/src/api/java/baritone/api/command/datatypes/RelativeGoalXZ.java similarity index 91% rename from src/api/java/baritone/api/utils/command/datatypes/RelativeGoalXZ.java rename to src/api/java/baritone/api/command/datatypes/RelativeGoalXZ.java index 22d50ebfa..83d52de86 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalXZ.java +++ b/src/api/java/baritone/api/command/datatypes/RelativeGoalXZ.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; +import baritone.api.command.helpers.arguments.IArgConsumer; import baritone.api.pathing.goals.GoalXZ; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; import net.minecraft.util.math.MathHelper; import java.util.stream.Stream; diff --git a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalYLevel.java b/src/api/java/baritone/api/command/datatypes/RelativeGoalYLevel.java similarity index 90% rename from src/api/java/baritone/api/utils/command/datatypes/RelativeGoalYLevel.java rename to src/api/java/baritone/api/command/datatypes/RelativeGoalYLevel.java index 7a443b27d..4dd195a4d 100644 --- a/src/api/java/baritone/api/utils/command/datatypes/RelativeGoalYLevel.java +++ b/src/api/java/baritone/api/command/datatypes/RelativeGoalYLevel.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.datatypes; +package baritone.api.command.datatypes; +import baritone.api.command.helpers.arguments.IArgConsumer; import baritone.api.pathing.goals.GoalYLevel; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; import net.minecraft.util.math.MathHelper; import java.util.stream.Stream; diff --git a/src/api/java/baritone/api/utils/command/exception/CommandErrorMessageException.java b/src/api/java/baritone/api/command/exception/CommandErrorMessageException.java similarity index 94% rename from src/api/java/baritone/api/utils/command/exception/CommandErrorMessageException.java rename to src/api/java/baritone/api/command/exception/CommandErrorMessageException.java index 002d328e1..4a21bede7 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandErrorMessageException.java +++ b/src/api/java/baritone/api/command/exception/CommandErrorMessageException.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; public abstract class CommandErrorMessageException extends CommandException { diff --git a/src/api/java/baritone/api/utils/command/exception/CommandException.java b/src/api/java/baritone/api/command/exception/CommandException.java similarity index 94% rename from src/api/java/baritone/api/utils/command/exception/CommandException.java rename to src/api/java/baritone/api/command/exception/CommandException.java index 9fdc3f735..b8962c159 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandException.java +++ b/src/api/java/baritone/api/command/exception/CommandException.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; public abstract class CommandException extends Exception implements ICommandException { diff --git a/src/api/java/baritone/api/utils/command/exception/CommandInvalidArgumentException.java b/src/api/java/baritone/api/command/exception/CommandInvalidArgumentException.java similarity index 91% rename from src/api/java/baritone/api/utils/command/exception/CommandInvalidArgumentException.java rename to src/api/java/baritone/api/command/exception/CommandInvalidArgumentException.java index bc9236e45..1902d7355 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandInvalidArgumentException.java +++ b/src/api/java/baritone/api/command/exception/CommandInvalidArgumentException.java @@ -15,9 +15,9 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; -import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.command.argument.ICommandArgument; public abstract class CommandInvalidArgumentException extends CommandErrorMessageException { diff --git a/src/api/java/baritone/api/utils/command/exception/CommandInvalidStateException.java b/src/api/java/baritone/api/command/exception/CommandInvalidStateException.java similarity index 94% rename from src/api/java/baritone/api/utils/command/exception/CommandInvalidStateException.java rename to src/api/java/baritone/api/command/exception/CommandInvalidStateException.java index 4e00c1f7f..0fa22fcbb 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandInvalidStateException.java +++ b/src/api/java/baritone/api/command/exception/CommandInvalidStateException.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; public class CommandInvalidStateException extends CommandErrorMessageException { diff --git a/src/api/java/baritone/api/utils/command/exception/CommandInvalidTypeException.java b/src/api/java/baritone/api/command/exception/CommandInvalidTypeException.java similarity index 93% rename from src/api/java/baritone/api/utils/command/exception/CommandInvalidTypeException.java rename to src/api/java/baritone/api/command/exception/CommandInvalidTypeException.java index 8dffe1d02..516fd308f 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandInvalidTypeException.java +++ b/src/api/java/baritone/api/command/exception/CommandInvalidTypeException.java @@ -15,9 +15,9 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; -import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.command.argument.ICommandArgument; public class CommandInvalidTypeException extends CommandInvalidArgumentException { diff --git a/src/api/java/baritone/api/utils/command/exception/CommandNoParserForTypeException.java b/src/api/java/baritone/api/command/exception/CommandNoParserForTypeException.java similarity index 95% rename from src/api/java/baritone/api/utils/command/exception/CommandNoParserForTypeException.java rename to src/api/java/baritone/api/command/exception/CommandNoParserForTypeException.java index f4f2d8181..4bf7a1ac7 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandNoParserForTypeException.java +++ b/src/api/java/baritone/api/command/exception/CommandNoParserForTypeException.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; public class CommandNoParserForTypeException extends CommandUnhandledException { diff --git a/src/api/java/baritone/api/utils/command/exception/CommandNotEnoughArgumentsException.java b/src/api/java/baritone/api/command/exception/CommandNotEnoughArgumentsException.java similarity index 95% rename from src/api/java/baritone/api/utils/command/exception/CommandNotEnoughArgumentsException.java rename to src/api/java/baritone/api/command/exception/CommandNotEnoughArgumentsException.java index 655652d6c..e2e05cfbf 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandNotEnoughArgumentsException.java +++ b/src/api/java/baritone/api/command/exception/CommandNotEnoughArgumentsException.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; public class CommandNotEnoughArgumentsException extends CommandErrorMessageException { diff --git a/src/api/java/baritone/api/utils/command/exception/CommandNotFoundException.java b/src/api/java/baritone/api/command/exception/CommandNotFoundException.java similarity index 88% rename from src/api/java/baritone/api/utils/command/exception/CommandNotFoundException.java rename to src/api/java/baritone/api/command/exception/CommandNotFoundException.java index bca8d543d..123661c83 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandNotFoundException.java +++ b/src/api/java/baritone/api/command/exception/CommandNotFoundException.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.command.Command; +import baritone.api.command.argument.ICommandArgument; import java.util.List; diff --git a/src/api/java/baritone/api/utils/command/exception/CommandTooManyArgumentsException.java b/src/api/java/baritone/api/command/exception/CommandTooManyArgumentsException.java similarity index 95% rename from src/api/java/baritone/api/utils/command/exception/CommandTooManyArgumentsException.java rename to src/api/java/baritone/api/command/exception/CommandTooManyArgumentsException.java index 24fc799fe..9aec48ea9 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandTooManyArgumentsException.java +++ b/src/api/java/baritone/api/command/exception/CommandTooManyArgumentsException.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; public class CommandTooManyArgumentsException extends CommandErrorMessageException { diff --git a/src/api/java/baritone/api/utils/command/exception/CommandUnhandledException.java b/src/api/java/baritone/api/command/exception/CommandUnhandledException.java similarity index 90% rename from src/api/java/baritone/api/utils/command/exception/CommandUnhandledException.java rename to src/api/java/baritone/api/command/exception/CommandUnhandledException.java index 55b359cc6..394dd65e9 100644 --- a/src/api/java/baritone/api/utils/command/exception/CommandUnhandledException.java +++ b/src/api/java/baritone/api/command/exception/CommandUnhandledException.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.command.Command; +import baritone.api.command.argument.ICommandArgument; import net.minecraft.util.text.TextFormatting; import java.util.List; diff --git a/src/api/java/baritone/api/utils/command/exception/ICommandException.java b/src/api/java/baritone/api/command/exception/ICommandException.java similarity index 91% rename from src/api/java/baritone/api/utils/command/exception/ICommandException.java rename to src/api/java/baritone/api/command/exception/ICommandException.java index 229c08c04..3c96cb520 100644 --- a/src/api/java/baritone/api/utils/command/exception/ICommandException.java +++ b/src/api/java/baritone/api/command/exception/ICommandException.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.exception; +package baritone.api.command.exception; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.command.Command; +import baritone.api.command.argument.ICommandArgument; import net.minecraft.util.text.TextFormatting; import java.util.List; diff --git a/src/api/java/baritone/api/utils/command/helpers/arguments/IArgConsumer.java b/src/api/java/baritone/api/command/helpers/arguments/IArgConsumer.java similarity index 97% rename from src/api/java/baritone/api/utils/command/helpers/arguments/IArgConsumer.java rename to src/api/java/baritone/api/command/helpers/arguments/IArgConsumer.java index 1e50a5304..c185c1f7f 100644 --- a/src/api/java/baritone/api/utils/command/helpers/arguments/IArgConsumer.java +++ b/src/api/java/baritone/api/command/helpers/arguments/IArgConsumer.java @@ -15,19 +15,19 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.helpers.arguments; +package baritone.api.command.helpers.arguments; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandTooManyArgumentsException; import baritone.api.utils.Helper; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.argparser.IArgParser; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.datatypes.IDatatype; -import baritone.api.utils.command.datatypes.IDatatypeFor; -import baritone.api.utils.command.datatypes.IDatatypePost; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.exception.CommandNotEnoughArgumentsException; -import baritone.api.utils.command.exception.CommandTooManyArgumentsException; +import baritone.api.command.argparser.IArgParser; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.datatypes.IDatatype; +import baritone.api.command.datatypes.IDatatypeFor; +import baritone.api.command.datatypes.IDatatypePost; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.exception.CommandNotEnoughArgumentsException; import net.minecraft.util.EnumFacing; import java.util.Deque; diff --git a/src/api/java/baritone/api/utils/command/helpers/pagination/Paginator.java b/src/api/java/baritone/api/command/helpers/pagination/Paginator.java similarity index 96% rename from src/api/java/baritone/api/utils/command/helpers/pagination/Paginator.java rename to src/api/java/baritone/api/command/helpers/pagination/Paginator.java index cf5d5d7c7..e5bf9d55f 100644 --- a/src/api/java/baritone/api/utils/command/helpers/pagination/Paginator.java +++ b/src/api/java/baritone/api/command/helpers/pagination/Paginator.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.helpers.pagination; +package baritone.api.command.helpers.pagination; import baritone.api.utils.Helper; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.helpers.arguments.IArgConsumer; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextFormatting; diff --git a/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java b/src/api/java/baritone/api/command/helpers/tabcomplete/TabCompleteHelper.java similarity index 98% rename from src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java rename to src/api/java/baritone/api/command/helpers/tabcomplete/TabCompleteHelper.java index dd14e2bc8..57192f0c2 100644 --- a/src/api/java/baritone/api/utils/command/helpers/tabcomplete/TabCompleteHelper.java +++ b/src/api/java/baritone/api/command/helpers/tabcomplete/TabCompleteHelper.java @@ -15,14 +15,14 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.helpers.tabcomplete; +package baritone.api.command.helpers.tabcomplete; import baritone.api.BaritoneAPI; import baritone.api.Settings; import baritone.api.event.events.TabCompleteEvent; import baritone.api.utils.SettingsUtil; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.manager.ICommandManager; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.manager.ICommandManager; import net.minecraft.util.ResourceLocation; import java.util.Comparator; diff --git a/src/api/java/baritone/api/utils/command/manager/ICommandManager.java b/src/api/java/baritone/api/command/manager/ICommandManager.java similarity index 87% rename from src/api/java/baritone/api/utils/command/manager/ICommandManager.java rename to src/api/java/baritone/api/command/manager/ICommandManager.java index d3fac415b..f74a3c268 100644 --- a/src/api/java/baritone/api/utils/command/manager/ICommandManager.java +++ b/src/api/java/baritone/api/command/manager/ICommandManager.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.manager; +package baritone.api.command.manager; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.registry.Registry; +import baritone.api.command.Command; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.registry.Registry; import net.minecraft.util.Tuple; import java.util.List; diff --git a/src/api/java/baritone/api/utils/command/registry/Registry.java b/src/api/java/baritone/api/command/registry/Registry.java similarity index 99% rename from src/api/java/baritone/api/utils/command/registry/Registry.java rename to src/api/java/baritone/api/command/registry/Registry.java index bac50dcfa..067791690 100644 --- a/src/api/java/baritone/api/utils/command/registry/Registry.java +++ b/src/api/java/baritone/api/command/registry/Registry.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.api.utils.command.registry; +package baritone.api.command.registry; import java.util.*; import java.util.function.Consumer; diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index cfd658b1f..360a17fd5 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -29,7 +29,7 @@ import baritone.event.GameEventHandler; import baritone.process.*; import baritone.selection.SelectionManager; import baritone.utils.*; -import baritone.utils.command.manager.CommandManager; +import baritone.command.manager.CommandManager; import baritone.utils.player.PrimaryPlayerContext; import net.minecraft.client.Minecraft; diff --git a/src/main/java/baritone/BaritoneProvider.java b/src/main/java/baritone/BaritoneProvider.java index 3f6f82835..cb24dfe21 100644 --- a/src/main/java/baritone/BaritoneProvider.java +++ b/src/main/java/baritone/BaritoneProvider.java @@ -20,10 +20,10 @@ package baritone; import baritone.api.IBaritone; import baritone.api.IBaritoneProvider; import baritone.api.cache.IWorldScanner; -import baritone.api.utils.command.ICommandSystem; -import baritone.utils.command.BaritoneChatControl; +import baritone.api.command.ICommandSystem; +import baritone.command.BaritoneChatControl; import baritone.cache.WorldScanner; -import baritone.utils.command.CommandSystem; +import baritone.command.CommandSystem; import java.util.Collections; import java.util.List; diff --git a/src/main/java/baritone/utils/command/BaritoneChatControl.java b/src/main/java/baritone/command/BaritoneChatControl.java similarity index 92% rename from src/main/java/baritone/utils/command/BaritoneChatControl.java rename to src/main/java/baritone/command/BaritoneChatControl.java index 70e2370ec..2b81f2840 100644 --- a/src/main/java/baritone/utils/command/BaritoneChatControl.java +++ b/src/main/java/baritone/command/BaritoneChatControl.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.utils.command; +package baritone.command; import baritone.api.BaritoneAPI; import baritone.api.IBaritone; @@ -26,14 +26,14 @@ import baritone.api.event.events.TabCompleteEvent; import baritone.api.event.listener.AbstractGameEventListener; import baritone.api.utils.Helper; import baritone.api.utils.SettingsUtil; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.exception.CommandNotEnoughArgumentsException; -import baritone.api.utils.command.exception.CommandNotFoundException; -import baritone.utils.command.helpers.arguments.ArgConsumer; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; -import baritone.api.utils.command.manager.ICommandManager; -import baritone.utils.command.argument.CommandArguments; -import baritone.utils.command.manager.CommandManager; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.exception.CommandNotEnoughArgumentsException; +import baritone.api.command.exception.CommandNotFoundException; +import baritone.command.helpers.arguments.ArgConsumer; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.manager.ICommandManager; +import baritone.command.argument.CommandArguments; +import baritone.command.manager.CommandManager; import net.minecraft.util.Tuple; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; @@ -47,7 +47,7 @@ import java.util.List; import java.util.Locale; import java.util.stream.Stream; -import static baritone.api.utils.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; +import static baritone.api.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; public class BaritoneChatControl implements Helper, AbstractGameEventListener { diff --git a/src/main/java/baritone/utils/command/CommandSystem.java b/src/main/java/baritone/command/CommandSystem.java similarity index 82% rename from src/main/java/baritone/utils/command/CommandSystem.java rename to src/main/java/baritone/command/CommandSystem.java index 56d977a24..49d3685c1 100644 --- a/src/main/java/baritone/utils/command/CommandSystem.java +++ b/src/main/java/baritone/command/CommandSystem.java @@ -15,11 +15,11 @@ * along with Baritone. If not, see . */ -package baritone.utils.command; +package baritone.command; -import baritone.api.utils.command.ICommandSystem; -import baritone.utils.command.argparser.ArgParserManager; -import baritone.api.utils.command.argparser.IArgParserManager; +import baritone.api.command.ICommandSystem; +import baritone.command.argparser.ArgParserManager; +import baritone.api.command.argparser.IArgParserManager; /** * @author Brady diff --git a/src/main/java/baritone/utils/command/argparser/ArgParserManager.java b/src/main/java/baritone/command/argparser/ArgParserManager.java similarity index 87% rename from src/main/java/baritone/utils/command/argparser/ArgParserManager.java rename to src/main/java/baritone/command/argparser/ArgParserManager.java index 75c16cd79..a6acdcbcf 100644 --- a/src/main/java/baritone/utils/command/argparser/ArgParserManager.java +++ b/src/main/java/baritone/command/argparser/ArgParserManager.java @@ -15,14 +15,14 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.argparser; +package baritone.command.argparser; -import baritone.api.utils.command.argparser.IArgParser; -import baritone.api.utils.command.argparser.IArgParserManager; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.exception.CommandNoParserForTypeException; -import baritone.api.utils.command.registry.Registry; +import baritone.api.command.argparser.IArgParser; +import baritone.api.command.argparser.IArgParserManager; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.exception.CommandNoParserForTypeException; +import baritone.api.command.registry.Registry; public enum ArgParserManager implements IArgParserManager { INSTANCE; diff --git a/src/main/java/baritone/utils/command/argparser/DefaultArgParsers.java b/src/main/java/baritone/command/argparser/DefaultArgParsers.java similarity index 96% rename from src/main/java/baritone/utils/command/argparser/DefaultArgParsers.java rename to src/main/java/baritone/command/argparser/DefaultArgParsers.java index 41c95af73..77a14bf92 100644 --- a/src/main/java/baritone/utils/command/argparser/DefaultArgParsers.java +++ b/src/main/java/baritone/command/argparser/DefaultArgParsers.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.argparser; +package baritone.command.argparser; -import baritone.api.utils.command.argparser.IArgParser; -import baritone.api.utils.command.argument.ICommandArgument; +import baritone.api.command.argparser.IArgParser; +import baritone.api.command.argument.ICommandArgument; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/argument/CommandArgument.java b/src/main/java/baritone/command/argument/CommandArgument.java similarity index 91% rename from src/main/java/baritone/utils/command/argument/CommandArgument.java rename to src/main/java/baritone/command/argument/CommandArgument.java index d1b7a1571..3ce6cda82 100644 --- a/src/main/java/baritone/utils/command/argument/CommandArgument.java +++ b/src/main/java/baritone/command/argument/CommandArgument.java @@ -15,11 +15,11 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.argument; +package baritone.command.argument; -import baritone.utils.command.argparser.ArgParserManager; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.exception.CommandInvalidTypeException; +import baritone.command.argparser.ArgParserManager; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.exception.CommandInvalidTypeException; import java.util.stream.Stream; diff --git a/src/main/java/baritone/utils/command/argument/CommandArguments.java b/src/main/java/baritone/command/argument/CommandArguments.java similarity index 93% rename from src/main/java/baritone/utils/command/argument/CommandArguments.java rename to src/main/java/baritone/command/argument/CommandArguments.java index 22f895596..8d26acb48 100644 --- a/src/main/java/baritone/utils/command/argument/CommandArguments.java +++ b/src/main/java/baritone/command/argument/CommandArguments.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.argument; +package baritone.command.argument; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.exception.CommandInvalidArgumentException; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.exception.CommandInvalidArgumentException; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/AxisCommand.java b/src/main/java/baritone/command/defaults/AxisCommand.java similarity index 89% rename from src/main/java/baritone/utils/command/defaults/AxisCommand.java rename to src/main/java/baritone/command/defaults/AxisCommand.java index e454cfc71..09d00ae79 100644 --- a/src/main/java/baritone/utils/command/defaults/AxisCommand.java +++ b/src/main/java/baritone/command/defaults/AxisCommand.java @@ -15,14 +15,14 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.goals.Goal; import baritone.api.pathing.goals.GoalAxis; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java b/src/main/java/baritone/command/defaults/BlacklistCommand.java similarity index 87% rename from src/main/java/baritone/utils/command/defaults/BlacklistCommand.java rename to src/main/java/baritone/command/defaults/BlacklistCommand.java index accda72bd..5069f4348 100644 --- a/src/main/java/baritone/utils/command/defaults/BlacklistCommand.java +++ b/src/main/java/baritone/command/defaults/BlacklistCommand.java @@ -15,14 +15,14 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.process.IGetToBlockProcess; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/BuildCommand.java b/src/main/java/baritone/command/defaults/BuildCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/BuildCommand.java rename to src/main/java/baritone/command/defaults/BuildCommand.java index b852d0bea..b2edbb245 100644 --- a/src/main/java/baritone/utils/command/defaults/BuildCommand.java +++ b/src/main/java/baritone/command/defaults/BuildCommand.java @@ -15,16 +15,16 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.RelativeBlockPos; -import baritone.api.utils.command.datatypes.RelativeFile; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.datatypes.RelativeBlockPos; +import baritone.api.command.datatypes.RelativeFile; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; import net.minecraft.client.Minecraft; import java.io.File; diff --git a/src/main/java/baritone/utils/command/defaults/CancelCommand.java b/src/main/java/baritone/command/defaults/CancelCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/CancelCommand.java rename to src/main/java/baritone/command/defaults/CancelCommand.java index f37835375..aff839ae8 100644 --- a/src/main/java/baritone/utils/command/defaults/CancelCommand.java +++ b/src/main/java/baritone/command/defaults/CancelCommand.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/ChestsCommand.java b/src/main/java/baritone/command/defaults/ChestsCommand.java similarity index 90% rename from src/main/java/baritone/utils/command/defaults/ChestsCommand.java rename to src/main/java/baritone/command/defaults/ChestsCommand.java index 130d5909f..c3755b5a2 100644 --- a/src/main/java/baritone/utils/command/defaults/ChestsCommand.java +++ b/src/main/java/baritone/command/defaults/ChestsCommand.java @@ -15,15 +15,15 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.cache.IRememberedInventory; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; diff --git a/src/main/java/baritone/utils/command/defaults/ClickCommand.java b/src/main/java/baritone/command/defaults/ClickCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/ClickCommand.java rename to src/main/java/baritone/command/defaults/ClickCommand.java index ba8e917c3..95b04f52c 100644 --- a/src/main/java/baritone/utils/command/defaults/ClickCommand.java +++ b/src/main/java/baritone/command/defaults/ClickCommand.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/ComeCommand.java b/src/main/java/baritone/command/defaults/ComeCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/ComeCommand.java rename to src/main/java/baritone/command/defaults/ComeCommand.java index cc4f4071b..9b336a252 100644 --- a/src/main/java/baritone/utils/command/defaults/ComeCommand.java +++ b/src/main/java/baritone/command/defaults/ComeCommand.java @@ -15,14 +15,14 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.goals.GoalBlock; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/baritone/utils/command/defaults/CommandAlias.java b/src/main/java/baritone/command/defaults/CommandAlias.java similarity index 92% rename from src/main/java/baritone/utils/command/defaults/CommandAlias.java rename to src/main/java/baritone/command/defaults/CommandAlias.java index 69d4e0bea..08b1ca05d 100644 --- a/src/main/java/baritone/utils/command/defaults/CommandAlias.java +++ b/src/main/java/baritone/command/defaults/CommandAlias.java @@ -15,11 +15,11 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Collections; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/DefaultCommands.java b/src/main/java/baritone/command/defaults/DefaultCommands.java similarity index 97% rename from src/main/java/baritone/utils/command/defaults/DefaultCommands.java rename to src/main/java/baritone/command/defaults/DefaultCommands.java index 3f8e39087..f1e098a2b 100644 --- a/src/main/java/baritone/utils/command/defaults/DefaultCommands.java +++ b/src/main/java/baritone/command/defaults/DefaultCommands.java @@ -15,10 +15,10 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; +import baritone.api.command.Command; import java.util.*; diff --git a/src/main/java/baritone/utils/command/defaults/ExploreCommand.java b/src/main/java/baritone/command/defaults/ExploreCommand.java similarity index 89% rename from src/main/java/baritone/utils/command/defaults/ExploreCommand.java rename to src/main/java/baritone/command/defaults/ExploreCommand.java index 15a8e2412..a2054cc78 100644 --- a/src/main/java/baritone/utils/command/defaults/ExploreCommand.java +++ b/src/main/java/baritone/command/defaults/ExploreCommand.java @@ -15,14 +15,14 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.goals.GoalXZ; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.RelativeGoalXZ; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.datatypes.RelativeGoalXZ; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java b/src/main/java/baritone/command/defaults/ExploreFilterCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java rename to src/main/java/baritone/command/defaults/ExploreFilterCommand.java index 6f60a55de..a1c5074a3 100644 --- a/src/main/java/baritone/utils/command/defaults/ExploreFilterCommand.java +++ b/src/main/java/baritone/command/defaults/ExploreFilterCommand.java @@ -15,15 +15,15 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.RelativeFile; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.datatypes.RelativeFile; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.helpers.arguments.IArgConsumer; import com.google.gson.JsonSyntaxException; import java.io.File; diff --git a/src/main/java/baritone/utils/command/defaults/FarmCommand.java b/src/main/java/baritone/command/defaults/FarmCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/FarmCommand.java rename to src/main/java/baritone/command/defaults/FarmCommand.java index 0ece390d4..9151852c1 100644 --- a/src/main/java/baritone/utils/command/defaults/FarmCommand.java +++ b/src/main/java/baritone/command/defaults/FarmCommand.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/FindCommand.java b/src/main/java/baritone/command/defaults/FindCommand.java similarity index 89% rename from src/main/java/baritone/utils/command/defaults/FindCommand.java rename to src/main/java/baritone/command/defaults/FindCommand.java index 62a49e029..22a8fd87a 100644 --- a/src/main/java/baritone/utils/command/defaults/FindCommand.java +++ b/src/main/java/baritone/command/defaults/FindCommand.java @@ -15,14 +15,14 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.BlockById; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.datatypes.BlockById; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import net.minecraft.block.Block; import java.util.ArrayList; diff --git a/src/main/java/baritone/utils/command/defaults/FollowCommand.java b/src/main/java/baritone/command/defaults/FollowCommand.java similarity index 91% rename from src/main/java/baritone/utils/command/defaults/FollowCommand.java rename to src/main/java/baritone/command/defaults/FollowCommand.java index b1cb5a803..e9c80ab91 100644 --- a/src/main/java/baritone/utils/command/defaults/FollowCommand.java +++ b/src/main/java/baritone/command/defaults/FollowCommand.java @@ -15,16 +15,16 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.EntityClassById; -import baritone.api.utils.command.datatypes.IDatatypeFor; -import baritone.api.utils.command.datatypes.NearbyPlayer; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.Command; +import baritone.api.command.datatypes.EntityClassById; +import baritone.api.command.datatypes.IDatatypeFor; +import baritone.api.command.datatypes.NearbyPlayer; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLiving; diff --git a/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java b/src/main/java/baritone/command/defaults/ForceCancelCommand.java similarity index 89% rename from src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java rename to src/main/java/baritone/command/defaults/ForceCancelCommand.java index 7a020b148..f92134822 100644 --- a/src/main/java/baritone/utils/command/defaults/ForceCancelCommand.java +++ b/src/main/java/baritone/command/defaults/ForceCancelCommand.java @@ -15,13 +15,13 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.behavior.IPathingBehavior; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/GcCommand.java b/src/main/java/baritone/command/defaults/GcCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/GcCommand.java rename to src/main/java/baritone/command/defaults/GcCommand.java index 20b2e334c..c64703e91 100644 --- a/src/main/java/baritone/utils/command/defaults/GcCommand.java +++ b/src/main/java/baritone/command/defaults/GcCommand.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/GoalCommand.java b/src/main/java/baritone/command/defaults/GoalCommand.java similarity index 89% rename from src/main/java/baritone/utils/command/defaults/GoalCommand.java rename to src/main/java/baritone/command/defaults/GoalCommand.java index f2692fb25..46b506959 100644 --- a/src/main/java/baritone/utils/command/defaults/GoalCommand.java +++ b/src/main/java/baritone/command/defaults/GoalCommand.java @@ -15,18 +15,18 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.goals.Goal; import baritone.api.process.ICustomGoalProcess; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.RelativeCoordinate; -import baritone.api.utils.command.datatypes.RelativeGoal; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.Command; +import baritone.api.command.datatypes.RelativeCoordinate; +import baritone.api.command.datatypes.RelativeGoal; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/HelpCommand.java b/src/main/java/baritone/command/defaults/HelpCommand.java similarity index 91% rename from src/main/java/baritone/utils/command/defaults/HelpCommand.java rename to src/main/java/baritone/command/defaults/HelpCommand.java index 039506c1c..fe3c48082 100644 --- a/src/main/java/baritone/utils/command/defaults/HelpCommand.java +++ b/src/main/java/baritone/command/defaults/HelpCommand.java @@ -15,15 +15,15 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandNotFoundException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.helpers.pagination.Paginator; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandNotFoundException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.pagination.Paginator; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextFormatting; @@ -35,7 +35,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -import static baritone.api.utils.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; +import static baritone.api.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; public class HelpCommand extends Command { diff --git a/src/main/java/baritone/utils/command/defaults/InvertCommand.java b/src/main/java/baritone/command/defaults/InvertCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/InvertCommand.java rename to src/main/java/baritone/command/defaults/InvertCommand.java index 9b5d0a16d..ba79a4a94 100644 --- a/src/main/java/baritone/utils/command/defaults/InvertCommand.java +++ b/src/main/java/baritone/command/defaults/InvertCommand.java @@ -15,16 +15,16 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.goals.Goal; import baritone.api.pathing.goals.GoalInverted; import baritone.api.process.ICustomGoalProcess; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/MineCommand.java b/src/main/java/baritone/command/defaults/MineCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/MineCommand.java rename to src/main/java/baritone/command/defaults/MineCommand.java index 2a91c6e63..d2846e0ae 100644 --- a/src/main/java/baritone/utils/command/defaults/MineCommand.java +++ b/src/main/java/baritone/command/defaults/MineCommand.java @@ -15,15 +15,15 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.BlockOptionalMeta; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.BlockById; -import baritone.api.utils.command.datatypes.ForBlockOptionalMeta; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.datatypes.BlockById; +import baritone.api.command.datatypes.ForBlockOptionalMeta; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import baritone.cache.WorldScanner; import java.util.ArrayList; diff --git a/src/main/java/baritone/utils/command/defaults/PathCommand.java b/src/main/java/baritone/command/defaults/PathCommand.java similarity index 85% rename from src/main/java/baritone/utils/command/defaults/PathCommand.java rename to src/main/java/baritone/command/defaults/PathCommand.java index 257556b06..ce1599e3d 100644 --- a/src/main/java/baritone/utils/command/defaults/PathCommand.java +++ b/src/main/java/baritone/command/defaults/PathCommand.java @@ -15,18 +15,18 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.goals.Goal; import baritone.api.process.ICustomGoalProcess; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.RelativeCoordinate; -import baritone.api.utils.command.datatypes.RelativeGoal; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.Command; +import baritone.api.command.datatypes.RelativeCoordinate; +import baritone.api.command.datatypes.RelativeGoal; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; import baritone.cache.WorldScanner; import java.util.Arrays; diff --git a/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java b/src/main/java/baritone/command/defaults/PauseResumeCommands.java similarity index 95% rename from src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java rename to src/main/java/baritone/command/defaults/PauseResumeCommands.java index 08a0ae66b..af3d07179 100644 --- a/src/main/java/baritone/utils/command/defaults/PauseResumeCommands.java +++ b/src/main/java/baritone/command/defaults/PauseResumeCommands.java @@ -15,16 +15,16 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.process.IBaritoneProcess; import baritone.api.process.PathingCommand; import baritone.api.process.PathingCommandType; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/ProcCommand.java b/src/main/java/baritone/command/defaults/ProcCommand.java similarity index 90% rename from src/main/java/baritone/utils/command/defaults/ProcCommand.java rename to src/main/java/baritone/command/defaults/ProcCommand.java index 233c18a33..794a44802 100644 --- a/src/main/java/baritone/utils/command/defaults/ProcCommand.java +++ b/src/main/java/baritone/command/defaults/ProcCommand.java @@ -15,16 +15,16 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.calc.IPathingControlManager; import baritone.api.process.IBaritoneProcess; import baritone.api.process.PathingCommand; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java b/src/main/java/baritone/command/defaults/ReloadAllCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java rename to src/main/java/baritone/command/defaults/ReloadAllCommand.java index 6128094ce..9f4ddd83d 100644 --- a/src/main/java/baritone/utils/command/defaults/ReloadAllCommand.java +++ b/src/main/java/baritone/command/defaults/ReloadAllCommand.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/RenderCommand.java b/src/main/java/baritone/command/defaults/RenderCommand.java similarity index 90% rename from src/main/java/baritone/utils/command/defaults/RenderCommand.java rename to src/main/java/baritone/command/defaults/RenderCommand.java index 15473afa0..ea51edc8f 100644 --- a/src/main/java/baritone/utils/command/defaults/RenderCommand.java +++ b/src/main/java/baritone/command/defaults/RenderCommand.java @@ -15,13 +15,13 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/RepackCommand.java b/src/main/java/baritone/command/defaults/RepackCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/RepackCommand.java rename to src/main/java/baritone/command/defaults/RepackCommand.java index dcbe4b39c..d42bd95ae 100644 --- a/src/main/java/baritone/utils/command/defaults/RepackCommand.java +++ b/src/main/java/baritone/command/defaults/RepackCommand.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import baritone.cache.WorldScanner; import java.util.Arrays; diff --git a/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java b/src/main/java/baritone/command/defaults/SaveAllCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/SaveAllCommand.java rename to src/main/java/baritone/command/defaults/SaveAllCommand.java index 9c507f697..7df2e320c 100644 --- a/src/main/java/baritone/utils/command/defaults/SaveAllCommand.java +++ b/src/main/java/baritone/command/defaults/SaveAllCommand.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java b/src/main/java/baritone/command/defaults/SchematicaCommand.java similarity index 88% rename from src/main/java/baritone/utils/command/defaults/SchematicaCommand.java rename to src/main/java/baritone/command/defaults/SchematicaCommand.java index c531a48bb..5f659d1fd 100644 --- a/src/main/java/baritone/utils/command/defaults/SchematicaCommand.java +++ b/src/main/java/baritone/command/defaults/SchematicaCommand.java @@ -15,12 +15,12 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/SelCommand.java b/src/main/java/baritone/command/defaults/SelCommand.java similarity index 95% rename from src/main/java/baritone/utils/command/defaults/SelCommand.java rename to src/main/java/baritone/command/defaults/SelCommand.java index b6c38ec0a..342d0a314 100644 --- a/src/main/java/baritone/utils/command/defaults/SelCommand.java +++ b/src/main/java/baritone/command/defaults/SelCommand.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.Baritone; import baritone.api.IBaritone; @@ -28,15 +28,15 @@ import baritone.api.utils.BetterBlockPos; import baritone.api.utils.BlockOptionalMeta; import baritone.api.utils.BlockOptionalMetaLookup; import baritone.api.utils.ISchematic; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.ForBlockOptionalMeta; -import baritone.api.utils.command.datatypes.ForEnumFacing; -import baritone.api.utils.command.datatypes.RelativeBlockPos; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.Command; +import baritone.api.command.datatypes.ForBlockOptionalMeta; +import baritone.api.command.datatypes.ForEnumFacing; +import baritone.api.command.datatypes.RelativeBlockPos; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; import baritone.utils.IRenderer; import net.minecraft.init.Blocks; import net.minecraft.util.EnumFacing; diff --git a/src/main/java/baritone/utils/command/defaults/SetCommand.java b/src/main/java/baritone/command/defaults/SetCommand.java similarity index 96% rename from src/main/java/baritone/utils/command/defaults/SetCommand.java rename to src/main/java/baritone/command/defaults/SetCommand.java index f6aed80a5..280f56eac 100644 --- a/src/main/java/baritone/utils/command/defaults/SetCommand.java +++ b/src/main/java/baritone/command/defaults/SetCommand.java @@ -15,18 +15,18 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.Baritone; import baritone.api.IBaritone; import baritone.api.Settings; import baritone.api.utils.SettingsUtil; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.helpers.pagination.Paginator; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.pagination.Paginator; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextFormatting; @@ -41,7 +41,7 @@ import java.util.stream.Stream; import static baritone.api.utils.SettingsUtil.settingTypeToString; import static baritone.api.utils.SettingsUtil.settingValueToString; -import static baritone.api.utils.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; +import static baritone.api.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; public class SetCommand extends Command { diff --git a/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java b/src/main/java/baritone/command/defaults/ThisWayCommand.java similarity index 90% rename from src/main/java/baritone/utils/command/defaults/ThisWayCommand.java rename to src/main/java/baritone/command/defaults/ThisWayCommand.java index 4c2f4003d..9ff42f42e 100644 --- a/src/main/java/baritone/utils/command/defaults/ThisWayCommand.java +++ b/src/main/java/baritone/command/defaults/ThisWayCommand.java @@ -15,13 +15,13 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.goals.GoalXZ; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/TunnelCommand.java b/src/main/java/baritone/command/defaults/TunnelCommand.java similarity index 90% rename from src/main/java/baritone/utils/command/defaults/TunnelCommand.java rename to src/main/java/baritone/command/defaults/TunnelCommand.java index 1b9066f98..e7830c05d 100644 --- a/src/main/java/baritone/utils/command/defaults/TunnelCommand.java +++ b/src/main/java/baritone/command/defaults/TunnelCommand.java @@ -15,14 +15,14 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.pathing.goals.Goal; import baritone.api.pathing.goals.GoalStrictDirection; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/VersionCommand.java b/src/main/java/baritone/command/defaults/VersionCommand.java similarity index 87% rename from src/main/java/baritone/utils/command/defaults/VersionCommand.java rename to src/main/java/baritone/command/defaults/VersionCommand.java index 4c9aa8505..6e063b0f2 100644 --- a/src/main/java/baritone/utils/command/defaults/VersionCommand.java +++ b/src/main/java/baritone/command/defaults/VersionCommand.java @@ -15,13 +15,13 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; +import baritone.api.command.Command; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.helpers.arguments.IArgConsumer; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java b/src/main/java/baritone/command/defaults/WaypointsCommand.java similarity index 95% rename from src/main/java/baritone/utils/command/defaults/WaypointsCommand.java rename to src/main/java/baritone/command/defaults/WaypointsCommand.java index 7cf418631..c61f6557e 100644 --- a/src/main/java/baritone/utils/command/defaults/WaypointsCommand.java +++ b/src/main/java/baritone/command/defaults/WaypointsCommand.java @@ -15,7 +15,7 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.defaults; +package baritone.command.defaults; import baritone.api.IBaritone; import baritone.api.cache.IWaypoint; @@ -23,15 +23,15 @@ import baritone.api.cache.Waypoint; import baritone.api.pathing.goals.Goal; import baritone.api.pathing.goals.GoalBlock; import baritone.api.utils.BetterBlockPos; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.datatypes.ForWaypoints; -import baritone.api.utils.command.datatypes.RelativeBlockPos; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidStateException; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.helpers.pagination.Paginator; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.Command; +import baritone.api.command.datatypes.ForWaypoints; +import baritone.api.command.datatypes.RelativeBlockPos; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidStateException; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.helpers.pagination.Paginator; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextFormatting; @@ -43,7 +43,7 @@ import java.util.function.BiFunction; import java.util.function.Function; import java.util.stream.Stream; -import static baritone.api.utils.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; +import static baritone.api.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; public class WaypointsCommand extends Command { diff --git a/src/main/java/baritone/utils/command/helpers/arguments/ArgConsumer.java b/src/main/java/baritone/command/helpers/arguments/ArgConsumer.java similarity index 94% rename from src/main/java/baritone/utils/command/helpers/arguments/ArgConsumer.java rename to src/main/java/baritone/command/helpers/arguments/ArgConsumer.java index 06aaa6eb7..c6a4fb0c7 100644 --- a/src/main/java/baritone/utils/command/helpers/arguments/ArgConsumer.java +++ b/src/main/java/baritone/command/helpers/arguments/ArgConsumer.java @@ -15,21 +15,21 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.helpers.arguments; +package baritone.command.helpers.arguments; import baritone.api.IBaritone; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.datatypes.IDatatype; -import baritone.api.utils.command.datatypes.IDatatypeContext; -import baritone.api.utils.command.datatypes.IDatatypeFor; -import baritone.api.utils.command.datatypes.IDatatypePost; -import baritone.api.utils.command.exception.CommandException; -import baritone.api.utils.command.exception.CommandInvalidTypeException; -import baritone.api.utils.command.exception.CommandNotEnoughArgumentsException; -import baritone.api.utils.command.exception.CommandTooManyArgumentsException; -import baritone.api.utils.command.helpers.arguments.IArgConsumer; -import baritone.api.utils.command.manager.ICommandManager; -import baritone.utils.command.argument.CommandArguments; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.datatypes.IDatatype; +import baritone.api.command.datatypes.IDatatypeContext; +import baritone.api.command.datatypes.IDatatypeFor; +import baritone.api.command.datatypes.IDatatypePost; +import baritone.api.command.exception.CommandException; +import baritone.api.command.exception.CommandInvalidTypeException; +import baritone.api.command.exception.CommandNotEnoughArgumentsException; +import baritone.api.command.exception.CommandTooManyArgumentsException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.command.manager.ICommandManager; +import baritone.command.argument.CommandArguments; import java.util.ArrayList; import java.util.Deque; diff --git a/src/main/java/baritone/utils/command/manager/CommandManager.java b/src/main/java/baritone/command/manager/CommandManager.java similarity index 88% rename from src/main/java/baritone/utils/command/manager/CommandManager.java rename to src/main/java/baritone/command/manager/CommandManager.java index 2e37a7f74..20f293b1c 100644 --- a/src/main/java/baritone/utils/command/manager/CommandManager.java +++ b/src/main/java/baritone/command/manager/CommandManager.java @@ -15,20 +15,20 @@ * along with Baritone. If not, see . */ -package baritone.utils.command.manager; +package baritone.command.manager; import baritone.Baritone; import baritone.api.IBaritone; -import baritone.api.utils.command.Command; -import baritone.api.utils.command.argument.ICommandArgument; -import baritone.api.utils.command.exception.CommandUnhandledException; -import baritone.api.utils.command.exception.ICommandException; -import baritone.utils.command.helpers.arguments.ArgConsumer; -import baritone.api.utils.command.helpers.tabcomplete.TabCompleteHelper; -import baritone.api.utils.command.manager.ICommandManager; -import baritone.api.utils.command.registry.Registry; -import baritone.utils.command.argument.CommandArguments; -import baritone.utils.command.defaults.DefaultCommands; +import baritone.api.command.Command; +import baritone.api.command.argument.ICommandArgument; +import baritone.api.command.exception.CommandUnhandledException; +import baritone.api.command.exception.ICommandException; +import baritone.command.helpers.arguments.ArgConsumer; +import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.command.manager.ICommandManager; +import baritone.api.command.registry.Registry; +import baritone.command.argument.CommandArguments; +import baritone.command.defaults.DefaultCommands; import net.minecraft.util.Tuple; import java.util.List; diff --git a/src/main/java/baritone/utils/GuiClick.java b/src/main/java/baritone/utils/GuiClick.java index fc97605f0..4f89100dc 100644 --- a/src/main/java/baritone/utils/GuiClick.java +++ b/src/main/java/baritone/utils/GuiClick.java @@ -44,7 +44,7 @@ import java.nio.IntBuffer; import java.util.Collections; import static org.lwjgl.opengl.GL11.*; -import static baritone.api.utils.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; +import static baritone.api.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; public class GuiClick extends GuiScreen { From 5f0d3a4018f9f2a551e695545b3a13fcc0c00fa5 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 6 Oct 2019 13:24:27 -0700 Subject: [PATCH 10/13] resume builder too --- src/main/java/baritone/command/defaults/PauseResumeCommands.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/baritone/command/defaults/PauseResumeCommands.java b/src/main/java/baritone/command/defaults/PauseResumeCommands.java index af3d07179..11e678820 100644 --- a/src/main/java/baritone/command/defaults/PauseResumeCommands.java +++ b/src/main/java/baritone/command/defaults/PauseResumeCommands.java @@ -114,6 +114,7 @@ public class PauseResumeCommands { @Override public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); + baritone.getBuilderProcess().resume(); if (!paused[0]) { throw new CommandInvalidStateException("Not paused"); } From 22d5cb80686ec67a0c738122072de0299f594d0f Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 6 Oct 2019 13:26:29 -0700 Subject: [PATCH 11/13] loiter around ores to anticipate a possible drop --- src/api/java/baritone/api/Settings.java | 10 ++- .../baritone/process/GetToBlockProcess.java | 7 +- .../java/baritone/process/MineProcess.java | 64 +++++++++++++------ 3 files changed, 54 insertions(+), 27 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 8d54cbdeb..776d8e61e 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -30,8 +30,8 @@ import java.awt.*; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; -import java.util.List; import java.util.*; +import java.util.List; import java.util.function.Consumer; /** @@ -798,6 +798,14 @@ public final class Settings { */ public final Setting mineScanDroppedItems = new Setting<>(true); + /** + * While mining, wait this number of milliseconds after mining an ore to see if it will drop an item + * instead of immediately going onto the next one + *

+ * Thanks Louca + */ + public final Setting mineDropLoiterDurationMSThanksLouca = new Setting<>(250L); + /** * Trim incorrect positions too far away, helps performance but hurts reliability in very large schematics */ diff --git a/src/main/java/baritone/process/GetToBlockProcess.java b/src/main/java/baritone/process/GetToBlockProcess.java index 5c1d77837..d6b405c1e 100644 --- a/src/main/java/baritone/process/GetToBlockProcess.java +++ b/src/main/java/baritone/process/GetToBlockProcess.java @@ -33,10 +33,7 @@ import net.minecraft.init.Blocks; import net.minecraft.inventory.ContainerPlayer; import net.minecraft.util.math.BlockPos; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; public final class GetToBlockProcess extends BaritoneProcessHelper implements IGetToBlockProcess { @@ -175,7 +172,7 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG } private synchronized void rescan(List known, CalculationContext context) { - List positions = MineProcess.searchWorld(context, new BlockOptionalMetaLookup(gettingTo), 64, known, blacklist); + List positions = MineProcess.searchWorld(context, new BlockOptionalMetaLookup(gettingTo), 64, known, blacklist, Collections.emptyList()); positions.removeIf(blacklist::contains); knownLocations = positions; } diff --git a/src/main/java/baritone/process/MineProcess.java b/src/main/java/baritone/process/MineProcess.java index 4043e6270..a76121b8d 100644 --- a/src/main/java/baritone/process/MineProcess.java +++ b/src/main/java/baritone/process/MineProcess.java @@ -39,7 +39,6 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import java.util.*; import java.util.stream.Collectors; @@ -58,6 +57,7 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro private BlockOptionalMetaLookup filter; private List knownOreLocations; private List blacklist; // inaccessible + private Map anticipatedDrops; private BlockPos branchPoint; private GoalRunAway branchPointRunaway; private int desiredQuantity; @@ -101,6 +101,7 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro cancel(); return null; } + updateLoucaSystem(); int mineGoalUpdateInterval = Baritone.settings().mineGoalUpdateInterval.value; List curr = new ArrayList<>(knownOreLocations); if (mineGoalUpdateInterval != 0 && tickCount++ % mineGoalUpdateInterval == 0) { // big brain @@ -141,6 +142,23 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro return command; } + private void updateLoucaSystem() { + Map copy = new HashMap<>(anticipatedDrops); + ctx.getSelectedBlock().ifPresent(pos -> { + if (knownOreLocations.contains(pos)) { + copy.put(pos, System.currentTimeMillis() + Baritone.settings().mineDropLoiterDurationMSThanksLouca.value); + } + }); + // elaborate dance to avoid concurrentmodificationexcepption since rescan thread reads this + // don't want to slow everything down with a gross lock do we now + for (BlockPos pos : anticipatedDrops.keySet()) { + if (copy.get(pos) < System.currentTimeMillis()) { + copy.remove(pos); + } + } + anticipatedDrops = copy; + } + @Override public void onLostControl() { mine(0, (BlockOptionalMetaLookup) null); @@ -155,9 +173,10 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro boolean legit = Baritone.settings().legitMine.value; List locs = knownOreLocations; if (!locs.isEmpty()) { - List locs2 = prune(new CalculationContext(baritone), new ArrayList<>(locs), filter, ORE_LOCATIONS_COUNT, blacklist); + CalculationContext context = new CalculationContext(baritone); + List locs2 = prune(context, new ArrayList<>(locs), filter, ORE_LOCATIONS_COUNT, blacklist, droppedItemsScan()); // can't reassign locs, gotta make a new var locs2, because we use it in a lambda right here, and variables you use in a lambda must be effectively final - Goal goal = new GoalComposite(locs2.stream().map(loc -> coalesce(loc, locs2)).toArray(Goal[]::new)); + Goal goal = new GoalComposite(locs2.stream().map(loc -> coalesce(loc, locs2, context)).toArray(Goal[]::new)); knownOreLocations = locs2; return new PathingCommand(goal, legit ? PathingCommandType.FORCE_REVALIDATE_GOAL_AND_PATH : PathingCommandType.REVALIDATE_GOAL_AND_PATH); } @@ -197,8 +216,9 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro if (Baritone.settings().legitMine.value) { return; } - List locs = searchWorld(context, filter, ORE_LOCATIONS_COUNT, already, blacklist); - locs.addAll(droppedItemsScan(filter, ctx.world())); + List dropped = droppedItemsScan(); + List locs = searchWorld(context, filter, ORE_LOCATIONS_COUNT, already, blacklist, dropped); + locs.addAll(dropped); if (locs.isEmpty()) { logDirect("No locations for " + filter + " known, cancelling"); cancel(); @@ -207,19 +227,19 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro knownOreLocations = locs; } - private boolean internalMiningGoal(BlockPos pos, IPlayerContext ctx, List locs) { + private boolean internalMiningGoal(BlockPos pos, CalculationContext context, List locs) { // Here, BlockStateInterface is used because the position may be in a cached chunk (the targeted block is one that is kept track of) if (locs.contains(pos)) { return true; } - IBlockState state = BlockStateInterface.get(ctx, pos); + IBlockState state = context.bsi.get0(pos); if (Baritone.settings().internalMiningAirException.value && state.getBlock() instanceof BlockAir) { return true; } - return filter.has(state); + return filter.has(state) && plausibleToBreak(context, pos); } - private Goal coalesce(BlockPos loc, List locs) { + private Goal coalesce(BlockPos loc, List locs, CalculationContext context) { boolean assumeVerticalShaftMine = !(baritone.bsi.get0(loc.up()).getBlock() instanceof BlockFalling); if (!Baritone.settings().forceInternalMining.value) { if (assumeVerticalShaftMine) { @@ -230,9 +250,9 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro return new GoalTwoBlocks(loc); } } - boolean upwardGoal = internalMiningGoal(loc.up(), ctx, locs); - boolean downwardGoal = internalMiningGoal(loc.down(), ctx, locs); - boolean doubleDownwardGoal = internalMiningGoal(loc.down(2), ctx, locs); + boolean upwardGoal = internalMiningGoal(loc.up(), context, locs); + boolean downwardGoal = internalMiningGoal(loc.down(), context, locs); + boolean doubleDownwardGoal = internalMiningGoal(loc.down(2), context, locs); if (upwardGoal == downwardGoal) { // symmetric if (doubleDownwardGoal && assumeVerticalShaftMine) { // we have a checkerboard like pattern @@ -281,12 +301,12 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro } } - public static List droppedItemsScan(BlockOptionalMetaLookup filter, World world) { + public List droppedItemsScan() { if (!Baritone.settings().mineScanDroppedItems.value) { return Collections.emptyList(); } List ret = new ArrayList<>(); - for (Entity entity : world.loadedEntityList) { + for (Entity entity : ctx.world().loadedEntityList) { if (entity instanceof EntityItem) { EntityItem ei = (EntityItem) entity; if (filter.has(ei.getItem())) { @@ -294,10 +314,11 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro } } } + ret.addAll(anticipatedDrops.keySet()); return ret; } - public static List searchWorld(CalculationContext ctx, BlockOptionalMetaLookup filter, int max, List alreadyKnown, List blacklist) { + public static List searchWorld(CalculationContext ctx, BlockOptionalMetaLookup filter, int max, List alreadyKnown, List blacklist, List dropped) { List locs = new ArrayList<>(); List untracked = new ArrayList<>(); for (BlockOptionalMeta bom : filter.blocks()) { @@ -318,7 +339,7 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro } } - locs = prune(ctx, locs, filter, max, blacklist); + locs = prune(ctx, locs, filter, max, blacklist, dropped); if (!untracked.isEmpty() || (Baritone.settings().extendCacheOnThreshold.value && locs.size() < max)) { locs.addAll(WorldScanner.INSTANCE.scanChunkRadius( @@ -332,11 +353,12 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro locs.addAll(alreadyKnown); - return prune(ctx, locs, filter, max, blacklist); + return prune(ctx, locs, filter, max, blacklist, dropped); } private void addNearby() { - knownOreLocations.addAll(droppedItemsScan(filter, ctx.world())); + List dropped = droppedItemsScan(); + knownOreLocations.addAll(dropped); BlockPos playerFeet = ctx.playerFeet(); BlockStateInterface bsi = new BlockStateInterface(ctx); int searchDist = 10; @@ -355,11 +377,10 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro } } } - knownOreLocations = prune(new CalculationContext(baritone), knownOreLocations, filter, ORE_LOCATIONS_COUNT, blacklist); + knownOreLocations = prune(new CalculationContext(baritone), knownOreLocations, filter, ORE_LOCATIONS_COUNT, blacklist, dropped); } - private static List prune(CalculationContext ctx, List locs2, BlockOptionalMetaLookup filter, int max, List blacklist) { - List dropped = droppedItemsScan(filter, ctx.world); + private static List prune(CalculationContext ctx, List locs2, BlockOptionalMetaLookup filter, int max, List blacklist, List dropped) { dropped.removeIf(drop -> { for (BlockPos pos : locs2) { if (pos.distanceSq(drop) <= 9 && filter.has(ctx.get(pos.getX(), pos.getY(), pos.getZ())) && MineProcess.plausibleToBreak(ctx, pos)) { // TODO maybe drop also has to be supported? no lava below? @@ -416,6 +437,7 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro this.blacklist = new ArrayList<>(); this.branchPoint = null; this.branchPointRunaway = null; + this.anticipatedDrops = new HashMap<>(); if (filter != null) { rescan(new ArrayList<>(), new CalculationContext(baritone)); } From d19039e3e585db968c018a2d369c8cbc60520fc2 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 6 Oct 2019 13:44:37 -0700 Subject: [PATCH 12/13] goto is back --- .../api/process/IGetToBlockProcess.java | 7 +- .../command/defaults/DefaultCommands.java | 1 + .../command/defaults/GotoCommand.java | 82 +++++++++++++++++++ .../command/defaults/PathCommand.java | 39 ++------- .../baritone/process/GetToBlockProcess.java | 11 +-- 5 files changed, 100 insertions(+), 40 deletions(-) create mode 100644 src/main/java/baritone/command/defaults/GotoCommand.java diff --git a/src/api/java/baritone/api/process/IGetToBlockProcess.java b/src/api/java/baritone/api/process/IGetToBlockProcess.java index a5a35577e..f58efbd35 100644 --- a/src/api/java/baritone/api/process/IGetToBlockProcess.java +++ b/src/api/java/baritone/api/process/IGetToBlockProcess.java @@ -17,6 +17,7 @@ package baritone.api.process; +import baritone.api.utils.BlockOptionalMeta; import net.minecraft.block.Block; /** @@ -24,7 +25,11 @@ import net.minecraft.block.Block; */ public interface IGetToBlockProcess extends IBaritoneProcess { - void getToBlock(Block block); + void getToBlock(BlockOptionalMeta block); + + default void getToBlock(Block block) { + getToBlock(new BlockOptionalMeta(block)); + } boolean blacklistClosest(); } diff --git a/src/main/java/baritone/command/defaults/DefaultCommands.java b/src/main/java/baritone/command/defaults/DefaultCommands.java index f1e098a2b..dd1a3004e 100644 --- a/src/main/java/baritone/command/defaults/DefaultCommands.java +++ b/src/main/java/baritone/command/defaults/DefaultCommands.java @@ -34,6 +34,7 @@ public final class DefaultCommands { new CommandAlias(baritone, Arrays.asList("modified", "mod", "baritone", "modifiedsettings"), "List modified settings", "set modified"), new CommandAlias(baritone, "reset", "Reset all settings or just one", "set reset"), new GoalCommand(baritone), + new GotoCommand(baritone), new PathCommand(baritone), new ProcCommand(baritone), new VersionCommand(baritone), diff --git a/src/main/java/baritone/command/defaults/GotoCommand.java b/src/main/java/baritone/command/defaults/GotoCommand.java new file mode 100644 index 000000000..4103bd1e9 --- /dev/null +++ b/src/main/java/baritone/command/defaults/GotoCommand.java @@ -0,0 +1,82 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.command.defaults; + +import baritone.api.IBaritone; +import baritone.api.command.Command; +import baritone.api.command.datatypes.BlockById; +import baritone.api.command.datatypes.ForBlockOptionalMeta; +import baritone.api.command.datatypes.RelativeCoordinate; +import baritone.api.command.datatypes.RelativeGoal; +import baritone.api.command.exception.CommandException; +import baritone.api.command.helpers.arguments.IArgConsumer; +import baritone.api.pathing.goals.Goal; +import baritone.api.utils.BetterBlockPos; +import baritone.api.utils.BlockOptionalMeta; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + +public class GotoCommand extends Command { + + protected GotoCommand(IBaritone baritone) { + super(baritone, "goto"); + } + + @Override + public void execute(String label, IArgConsumer args) throws CommandException { + if (args.peekDatatypeOrNull(RelativeCoordinate.INSTANCE) != null) { // if we have a numeric first argument... + BetterBlockPos origin = baritone.getPlayerContext().playerFeet(); + Goal goal = args.getDatatypePostOrNull(RelativeGoal.INSTANCE, origin); + logDirect(String.format("Going to: %s", goal.toString())); + baritone.getCustomGoalProcess().setGoalAndPath(goal); + return; + } + + BlockOptionalMeta destination = args.getDatatypeFor(ForBlockOptionalMeta.INSTANCE); + baritone.getGetToBlockProcess().getToBlock(destination); + } + + @Override + public Stream tabComplete(String label, IArgConsumer args) throws CommandException { + // since it's either a goal or a block, I don't think we can tab complete properly? + // so just tab complete for the block variant + return args.tabCompleteDatatype(BlockById.INSTANCE); + } + + @Override + public String getShortDesc() { + return "Go to a coordinate or block"; + } + + @Override + public List getLongDesc() { + return Arrays.asList( + "The got command tells Baritone to head towards a given goal or block.", + "", + "Wherever a coordinate is expected, you can use ~ just like in regular Minecraft commands. Or, you can just use regular numbers.", + "", + "Usage:", + "> goto - Go to a block, wherever it is in the world", + "> goto - Go to a Y level", + "> goto - Go to an X,Z position", + "> goto - Go to an X,Y,Z position" + ); + } +} diff --git a/src/main/java/baritone/command/defaults/PathCommand.java b/src/main/java/baritone/command/defaults/PathCommand.java index ce1599e3d..fff61a70a 100644 --- a/src/main/java/baritone/command/defaults/PathCommand.java +++ b/src/main/java/baritone/command/defaults/PathCommand.java @@ -18,15 +18,10 @@ package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.pathing.goals.Goal; -import baritone.api.process.ICustomGoalProcess; import baritone.api.command.Command; -import baritone.api.command.datatypes.RelativeCoordinate; -import baritone.api.command.datatypes.RelativeGoal; import baritone.api.command.exception.CommandException; -import baritone.api.command.exception.CommandInvalidStateException; import baritone.api.command.helpers.arguments.IArgConsumer; -import baritone.api.command.helpers.tabcomplete.TabCompleteHelper; +import baritone.api.process.ICustomGoalProcess; import baritone.cache.WorldScanner; import java.util.Arrays; @@ -36,47 +31,26 @@ import java.util.stream.Stream; public class PathCommand extends Command { public PathCommand(IBaritone baritone) { - super(baritone, "path", "goto"); + super(baritone, "path"); } @Override public void execute(String label, IArgConsumer args) throws CommandException { ICustomGoalProcess customGoalProcess = baritone.getCustomGoalProcess(); - Goal goal; - if (args.hasAny()) { - args.requireMax(3); - goal = args.getDatatypePost(RelativeGoal.INSTANCE, ctx.playerFeet()); - } else if ((goal = customGoalProcess.getGoal()) == null) { - throw new CommandInvalidStateException("No goal"); - } args.requireMax(0); WorldScanner.INSTANCE.repack(ctx); - customGoalProcess.setGoalAndPath(goal); + customGoalProcess.path(); logDirect("Now pathing"); } @Override public Stream tabComplete(String label, IArgConsumer args) throws CommandException { - if (args.hasAny() && !args.has(4)) { - while (args.has(2)) { - if (args.peekDatatypeOrNull(RelativeCoordinate.INSTANCE) == null) { - break; - } - args.get(); - if (!args.has(2)) { - return new TabCompleteHelper() - .append("~") - .filterPrefix(args.getString()) - .stream(); - } - } - } return Stream.empty(); } @Override public String getShortDesc() { - return "Start heading towards a goal"; + return "Start heading towards the goal"; } @Override @@ -85,10 +59,7 @@ public class PathCommand extends Command { "The path command tells Baritone to head towards the current goal.", "", "Usage:", - "> path - Start the pathing.", - "> path ", - "> path ", - "> path - Define the goal here" + "> path - Start the pathing." ); } } diff --git a/src/main/java/baritone/process/GetToBlockProcess.java b/src/main/java/baritone/process/GetToBlockProcess.java index d6b405c1e..00ec26091 100644 --- a/src/main/java/baritone/process/GetToBlockProcess.java +++ b/src/main/java/baritone/process/GetToBlockProcess.java @@ -22,6 +22,7 @@ import baritone.api.pathing.goals.*; import baritone.api.process.IGetToBlockProcess; import baritone.api.process.PathingCommand; import baritone.api.process.PathingCommandType; +import baritone.api.utils.BlockOptionalMeta; import baritone.api.utils.BlockOptionalMetaLookup; import baritone.api.utils.Rotation; import baritone.api.utils.RotationUtils; @@ -37,7 +38,7 @@ import java.util.*; public final class GetToBlockProcess extends BaritoneProcessHelper implements IGetToBlockProcess { - private Block gettingTo; + private BlockOptionalMeta gettingTo; private List knownLocations; private List blacklist; // locations we failed to calc to private BlockPos start; @@ -50,7 +51,7 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG } @Override - public void getToBlock(Block block) { + public void getToBlock(BlockOptionalMeta block) { onLostControl(); gettingTo = block; start = ctx.playerFeet(); @@ -106,7 +107,7 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG } if (goal.isInGoal(ctx.playerFeet()) && goal.isInGoal(baritone.getPathingBehavior().pathStart()) && isSafeToCancel) { // we're there - if (rightClickOnArrival(gettingTo)) { + if (rightClickOnArrival(gettingTo.getBlock())) { if (rightClick()) { onLostControl(); return new PathingCommand(null, PathingCommandType.CANCEL_AND_SET_GOAL); @@ -178,10 +179,10 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG } private Goal createGoal(BlockPos pos) { - if (walkIntoInsteadOfAdjacent(gettingTo)) { + if (walkIntoInsteadOfAdjacent(gettingTo.getBlock())) { return new GoalTwoBlocks(pos); } - if (blockOnTopMustBeRemoved(gettingTo) && baritone.bsi.get0(pos.up()).isBlockNormalCube()) { + if (blockOnTopMustBeRemoved(gettingTo.getBlock()) && baritone.bsi.get0(pos.up()).isBlockNormalCube()) { return new GoalBlock(pos.up()); } return new GoalGetToBlock(pos); From d1c2a0491c1ee00ae29eb67c829a59a7098b58b3 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 6 Oct 2019 13:49:24 -0700 Subject: [PATCH 13/13] only one goto target --- src/main/java/baritone/command/defaults/GotoCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/command/defaults/GotoCommand.java b/src/main/java/baritone/command/defaults/GotoCommand.java index 4103bd1e9..9659fff87 100644 --- a/src/main/java/baritone/command/defaults/GotoCommand.java +++ b/src/main/java/baritone/command/defaults/GotoCommand.java @@ -48,7 +48,7 @@ public class GotoCommand extends Command { baritone.getCustomGoalProcess().setGoalAndPath(goal); return; } - + args.requireMax(1); BlockOptionalMeta destination = args.getDatatypeFor(ForBlockOptionalMeta.INSTANCE); baritone.getGetToBlockProcess().getToBlock(destination); }