From 0f75b89a2eb852afa1ea0fcd195d6a9f83487f4c Mon Sep 17 00:00:00 2001 From: chickeneer Date: Mon, 1 Aug 2022 02:01:05 -0500 Subject: [PATCH] Fix brigadier command registration with no required arguments This fixes issues with optional arguments and Default subcommands --- .../java/co.aikar.commands/ACFBrigadierManager.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/brigadier/src/main/java/co.aikar.commands/ACFBrigadierManager.java b/brigadier/src/main/java/co.aikar.commands/ACFBrigadierManager.java index f81e9004..9742462a 100644 --- a/brigadier/src/main/java/co.aikar.commands/ACFBrigadierManager.java +++ b/brigadier/src/main/java/co.aikar.commands/ACFBrigadierManager.java @@ -86,10 +86,16 @@ public class ACFBrigadierManager { LiteralArgumentBuilder rootBuilder = LiteralArgumentBuilder.literal(root.getLiteral()) .requires(sender -> permCheckerRoot.test(rootCommand, sender)); + RegisteredCommand defaultCommand = rootCommand.getDefaultRegisteredCommand(); + if (defaultCommand != null) { + if (defaultCommand.requiredResolvers == 0) { + rootBuilder.executes(executor); + } + } + root = rootBuilder.build(); boolean isForwardingCommand = rootCommand.getDefCommand() instanceof ForwardingCommand; - RegisteredCommand defaultCommand = rootCommand.getDefaultRegisteredCommand(); if (defaultCommand != null) { registerParameters(defaultCommand, root, suggestionProvider, executor, permCheckerSub); } @@ -126,8 +132,8 @@ public class ACFBrigadierManager { LiteralArgumentBuilder argumentBuilder = LiteralArgumentBuilder.literal(commandName) .requires(subPermChecker); - // if we have no params, this command is actually executable - if (subCommand.getValue().consumeInputResolvers == 0) { + // if we have no required params, this command is actually executable + if (subCommand.getValue().requiredResolvers == 0) { argumentBuilder.executes(executor); } subCommandNode = argumentBuilder.build();