From 639b4b37b2eb9022caca76dcba1ce78e55cc935f Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 12 Apr 2024 22:07:50 +0100 Subject: [PATCH] Implement basic command flag suggestion filter (#1304) Signed-off-by: Pugzy --- .../java/tc/oc/pgm/command/util/CommandGraph.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/command/util/CommandGraph.java b/core/src/main/java/tc/oc/pgm/command/util/CommandGraph.java index 7f70ae4bc0..cd9fb2a421 100644 --- a/core/src/main/java/tc/oc/pgm/command/util/CommandGraph.java +++ b/core/src/main/java/tc/oc/pgm/command/util/CommandGraph.java @@ -22,12 +22,14 @@ import cloud.commandframework.exceptions.NoPermissionException; import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.execution.CommandExecutionCoordinator; +import cloud.commandframework.execution.FilteringCommandSuggestionProcessor; import cloud.commandframework.extra.confirmation.CommandConfirmationManager; import cloud.commandframework.meta.CommandMeta; import cloud.commandframework.minecraft.extras.MinecraftHelp; import cloud.commandframework.paper.PaperCommandManager; import io.leangen.geantyref.TypeToken; import java.lang.reflect.Type; +import java.util.Locale; import java.util.function.Function; import java.util.function.Supplier; import net.kyori.adventure.text.Component; @@ -85,9 +87,14 @@ protected PaperCommandManager createCommandManager() throws Excep context -> context.getCommandContext().store(CommandKeys.INPUT_QUEUE, context.getInputQueue())); - // By default, suggestions run by a filtered processor. - // By default, it prevents suggestions like "s" -> "Something" or "someh" -> "Something" - manager.commandSuggestionProcessor((cpc, strings) -> strings); + // Basic suggestion filtering processor which avoids suggesting flags when not applicable + manager.commandSuggestionProcessor( + new FilteringCommandSuggestionProcessor<>( + FilteringCommandSuggestionProcessor.Filter.Simple.contextFree( + (s, i) -> + i.isEmpty() + || !s.startsWith("-") + || s.toLowerCase(Locale.ROOT).startsWith(i.toLowerCase(Locale.ROOT))))); return manager; }