diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/command/ArgumentNode.java b/leaves-server/src/main/java/org/leavesmc/leaves/command/ArgumentNode.java index d9b802d2..c0e73f8c 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/command/ArgumentNode.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/command/ArgumentNode.java @@ -27,11 +27,15 @@ public abstract class ArgumentNode extends CommandNode { return Suggestions.empty(); } + protected boolean overrideSuggestions() { + return isMethodOverridden("getSuggestions", ArgumentNode.class); + } + @Override protected ArgumentBuilder compileBase() { RequiredArgumentBuilder argumentBuilder = Commands.argument(name, argumentType); - if (isMethodOverridden("getSuggestions", ArgumentNode.class)) { + if (overrideSuggestions()) { argumentBuilder.suggests( (context, builder) -> getSuggestions(new CommandContext(context), builder) ); diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/command/CommandNode.java b/leaves-server/src/main/java/org/leavesmc/leaves/command/CommandNode.java index 28e1470b..033dcc97 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/command/CommandNode.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/command/CommandNode.java @@ -50,7 +50,7 @@ public abstract class CommandNode { builder = builder.then(child.compile()); } - if (isMethodOverridden("execute", CommandNode.class)) { + if (canExecute()) { builder = builder.executes(mojangCtx -> { CommandContext ctx = new CommandContext(mojangCtx); return execute(ctx) ? 1 : 0; @@ -60,6 +60,10 @@ public abstract class CommandNode { return builder; } + protected boolean canExecute() { + return isMethodOverridden("execute", CommandNode.class); + } + protected boolean isMethodOverridden(String methodName, @NotNull Class baseClass) { for (Method method : getClass().getDeclaredMethods()) { if (method.getName().equals(methodName)) { diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/command/CustomArgumentNode.java b/leaves-server/src/main/java/org/leavesmc/leaves/command/CustomArgumentNode.java index 6d302270..647ecc58 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/command/CustomArgumentNode.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/command/CustomArgumentNode.java @@ -32,7 +32,7 @@ public class CustomArgumentNode extends ArgumentNode { protected ArgumentBuilder compileBase() { RequiredArgumentBuilder argumentBuilder = (RequiredArgumentBuilder) super.compileBase(); - if (!isMethodOverridden("getSuggestions", ArgumentNode.class)) { + if (overrideSuggestions()) { CustomArgumentType customArgumentType = (CustomArgumentType) TYPES.get(getClass()); argumentBuilder.suggests( (context, builder) -> customArgumentType.getSuggestions(new CommandContext(context), builder)