From 69ac9cac26d1d8080fe4b743cf524db32bb815ed Mon Sep 17 00:00:00 2001 From: MC_XiaoHei Date: Sun, 24 Aug 2025 15:53:50 +0800 Subject: [PATCH] refactor: refactor --- .../main/java/org/leavesmc/leaves/command/ArgumentNode.java | 6 +++++- .../main/java/org/leavesmc/leaves/command/CommandNode.java | 6 +++++- .../org/leavesmc/leaves/command/CustomArgumentNode.java | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) 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)