Fix BasicCommand suggestion arg count

Resolves: #11211
Backport-of: #11241
This commit is contained in:
Pieter Svenson 2024-09-16 12:02:12 -07:00 committed by GitHub
parent 6e71f41536
commit e61b73f740
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -686,10 +686,10 @@ index 0000000000000000000000000000000000000000..1b1642f306771f029e6214a2e2ebebb6
+} +}
diff --git a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java diff --git a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..27509813a90980be1dfc7bde27d0eba60adfc820 index 0000000000000000000000000000000000000000..c0d2268c6f79bad107a490f8fa1c746a6a96b573
--- /dev/null --- /dev/null
+++ b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java +++ b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
@@ -0,0 +1,193 @@ @@ -0,0 +1,199 @@
+package io.papermc.paper.command.brigadier; +package io.papermc.paper.command.brigadier;
+ +
+import com.google.common.base.Preconditions; +import com.google.common.base.Preconditions;
@ -710,6 +710,7 @@ index 0000000000000000000000000000000000000000..27509813a90980be1dfc7bde27d0eba6
+import java.util.Locale; +import java.util.Locale;
+import java.util.Set; +import java.util.Set;
+import net.minecraft.commands.CommandBuildContext; +import net.minecraft.commands.CommandBuildContext;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.nullness.qual.MonotonicNonNull; +import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
+import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.NonNull;
@ -863,7 +864,12 @@ index 0000000000000000000000000000000000000000..27509813a90980be1dfc7bde27d0eba6
+ .then( + .then(
+ Commands.argument("args", StringArgumentType.greedyString()) + Commands.argument("args", StringArgumentType.greedyString())
+ .suggests((context, suggestionsBuilder) -> { + .suggests((context, suggestionsBuilder) -> {
+ final String[] args = StringUtils.split(suggestionsBuilder.getRemaining()); + String[] args = StringUtils.split(suggestionsBuilder.getRemaining());
+ if (suggestionsBuilder.getRemaining().endsWith(" ")) {
+ // if there is trailing whitespace, we should add an empty argument to signify
+ // that there may be more, but no characters have been typed yet
+ args = ArrayUtils.add(args, "");
+ }
+ final SuggestionsBuilder offsetSuggestionsBuilder = suggestionsBuilder.createOffset(suggestionsBuilder.getInput().lastIndexOf(' ') + 1);; + final SuggestionsBuilder offsetSuggestionsBuilder = suggestionsBuilder.createOffset(suggestionsBuilder.getInput().lastIndexOf(' ') + 1);;
+ +
+ final Collection<String> suggestions = basicCommand.suggest(context.getSource(), args); + final Collection<String> suggestions = basicCommand.suggest(context.getSource(), args);