From 1bb376f7f6bea09b8638ffacb23c5cb929e6f31a Mon Sep 17 00:00:00 2001 From: DeathRealms Date: Sun, 9 Jan 2022 21:03:20 -0500 Subject: [PATCH] Move duplicated code to new method --- .../ACFBrigadierManager.java | 67 ++++++++----------- 1 file changed, 29 insertions(+), 38 deletions(-) diff --git a/brigadier/src/main/java/co.aikar.commands/ACFBrigadierManager.java b/brigadier/src/main/java/co.aikar.commands/ACFBrigadierManager.java index 40ca5a27..5aab23c6 100644 --- a/brigadier/src/main/java/co.aikar.commands/ACFBrigadierManager.java +++ b/brigadier/src/main/java/co.aikar.commands/ACFBrigadierManager.java @@ -92,25 +92,7 @@ public class ACFBrigadierManager { if (rootCommand.getDefaultRegisteredCommand() != null) { CommandNode paramNode = root; CommandParameter[] parameters = rootCommand.getDefaultRegisteredCommand().parameters; - for (int i = 0; i < parameters.length; i++) { - CommandParameter param = parameters[i]; - CommandParameter nextParam = param.getNextParam(); - if (param.isCommandIssuer() || (param.canExecuteWithoutInput() && nextParam != null && !nextParam.canExecuteWithoutInput())) { - continue; - } - RequiredArgumentBuilder builder = RequiredArgumentBuilder - .argument(param.getName(), getArgumentTypeByClazz(param)) - .suggests(suggestionProvider) - .requires(sender -> permCheckerRoot.test(rootCommand, sender)); - - if (nextParam != null && nextParam.canExecuteWithoutInput()) { - builder.executes(executor); - } - - CommandNode subSubCommand = builder.build(); - paramNode.addChild(subSubCommand); - paramNode = subSubCommand; - } + registerParameters(parameters, rootCommand, paramNode, suggestionProvider, executor, permCheckerRoot); } for (Map.Entry subCommand : rootCommand.getSubCommands().entries()) { @@ -157,25 +139,7 @@ public class ACFBrigadierManager { CommandNode paramNode = subCommandNode; CommandParameter[] parameters = subCommand.getValue().parameters; - for (int i = 0; i < parameters.length; i++) { - CommandParameter param = parameters[i]; - CommandParameter nextParam = param.getNextParam(); - if (param.isCommandIssuer() || (param.canExecuteWithoutInput() && nextParam != null && !nextParam.canExecuteWithoutInput())) { - continue; - } - RequiredArgumentBuilder builder = RequiredArgumentBuilder - .argument(param.getName(), getArgumentTypeByClazz(param)) - .suggests(suggestionProvider) - .requires(sender -> permCheckerSub.test(subCommand.getValue(), sender)); - - if (nextParam != null && nextParam.canExecuteWithoutInput()) { - builder.executes(executor); - } - - CommandNode subSubCommand = builder.build(); - paramNode.addChild(subSubCommand); - paramNode = subSubCommand; - } + registerParameters(parameters, subCommand.getValue(), paramNode, suggestionProvider, executor, permCheckerSub); if (!isForwardingCommand) { currentParent.addChild(subCommandNode); @@ -185,4 +149,31 @@ public class ACFBrigadierManager { return root; } + void registerParameters(CommandParameter[] parameters, + C command, + CommandNode node, + SuggestionProvider suggestionProvider, + Command executor, + BiPredicate permChecker) { + for (int i = 0; i < parameters.length; i++) { + CommandParameter param = parameters[i]; + CommandParameter nextParam = param.getNextParam(); + if (param.isCommandIssuer() || (param.canExecuteWithoutInput() && nextParam != null && !nextParam.canExecuteWithoutInput())) { + continue; + } + RequiredArgumentBuilder builder = RequiredArgumentBuilder + .argument(param.getName(), getArgumentTypeByClazz(param)) + .suggests(suggestionProvider) + .requires(sender -> permChecker.test(command, sender)); + + if (nextParam != null && nextParam.canExecuteWithoutInput()) { + builder.executes(executor); + } + + CommandNode subSubCommand = builder.build(); + node.addChild(subSubCommand); + node = subSubCommand; + } + } + }