🐛 Fix brigadier suggestion building

An offset will be added pointing to the last occurrence of a blank space. This fixes incorrect tab completions for greedy strings
This commit is contained in:
Alexander Söderberg 2020-10-13 19:53:01 +02:00
parent 5f466fcbc0
commit 06a34651bf
No known key found for this signature in database
GPG key ID: FACEA5B0F4C1BF80
3 changed files with 26 additions and 3 deletions

View file

@ -456,6 +456,13 @@ public final class CloudBrigadierManager<C, S> {
command
);
SuggestionsBuilder suggestionsBuilder = builder;
final int lastIndexOfSpaceInRemainingString = builder.getRemaining().lastIndexOf(' ');
if (lastIndexOfSpaceInRemainingString != -1) {
suggestionsBuilder = builder.createOffset(builder.getStart() + lastIndexOfSpaceInRemainingString + 1);
}
for (final String suggestion : suggestions) {
String tooltip = argument.getName();
if (!(argument instanceof StaticArgument)) {
@ -465,9 +472,10 @@ public final class CloudBrigadierManager<C, S> {
tooltip = '[' + tooltip + ']';
}
}
builder.suggest(suggestion, new LiteralMessage(tooltip));
suggestionsBuilder = suggestionsBuilder.suggest(suggestion, new LiteralMessage(tooltip));
}
return builder.buildFuture();
return suggestionsBuilder.buildFuture();
}
}