diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/flags/CommandFlag.java b/cloud-core/src/main/java/cloud/commandframework/arguments/flags/CommandFlag.java index bb7ba44d..32d49ad7 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/flags/CommandFlag.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/flags/CommandFlag.java @@ -30,7 +30,9 @@ import org.checkerframework.checker.nullness.qual.Nullable; import java.util.Arrays; import java.util.Collection; +import java.util.HashSet; import java.util.Objects; +import java.util.Set; /** * A flag is an optional command argument that may have an associated parser, @@ -160,7 +162,19 @@ public final class CommandFlag { * @return New builder instance */ public Builder withAliases(final @NonNull String... aliases) { - return new Builder<>(this.name, aliases, this.description, this.commandArgument); + final Set filteredAliases = new HashSet<>(); + for (final String alias : aliases) { + if (alias.isEmpty()) { + continue; + } + filteredAliases.add(alias); + } + return new Builder<>( + this.name, + filteredAliases.toArray(new String[0]), + this.description, + this.commandArgument + ); } /** diff --git a/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java b/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java index 900b06ef..cf8b84b6 100644 --- a/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java +++ b/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java @@ -456,6 +456,13 @@ public final class CloudBrigadierManager { 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 { tooltip = '[' + tooltip + ']'; } } - builder.suggest(suggestion, new LiteralMessage(tooltip)); + suggestionsBuilder = suggestionsBuilder.suggest(suggestion, new LiteralMessage(tooltip)); } - return builder.buildFuture(); + + return suggestionsBuilder.buildFuture(); } } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCaptionKeys.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCaptionKeys.java index 6e0758d8..6b3d61ed 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCaptionKeys.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCaptionKeys.java @@ -34,6 +34,7 @@ import java.util.LinkedList; * {@link Caption} instances for messages in cloud-bukkit */ public final class BukkitCaptionKeys { + private static final Collection RECOGNIZED_CAPTIONS = new LinkedList<>(); /**