Use Command instead of TabCompleteEvent on Bukkit
This commit is contained in:
parent
2cc72e2ff9
commit
58f49033ce
3 changed files with 19 additions and 31 deletions
|
|
@ -76,6 +76,22 @@ final class BukkitCommand<C> extends org.bukkit.command.Command implements Plugi
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> tabComplete(
|
||||
final @NonNull CommandSender sender,
|
||||
final @NonNull String alias,
|
||||
final @NonNull String @NonNull [] args
|
||||
) throws IllegalArgumentException {
|
||||
final StringBuilder builder = new StringBuilder(this.command.getName());
|
||||
for (final String string : args) {
|
||||
builder.append(" ").append(string);
|
||||
}
|
||||
return this.manager.suggest(
|
||||
this.manager.getCommandSenderMapper().apply(sender),
|
||||
builder.toString()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(
|
||||
final @NonNull CommandSender commandSender,
|
||||
|
|
|
|||
|
|
@ -42,37 +42,6 @@ final class CloudBukkitListener<C> implements Listener {
|
|||
this.bukkitCommandManager = bukkitCommandManager;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void onTabCompletion(final @NonNull TabCompleteEvent event) {
|
||||
if (event.getBuffer().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
final BukkitPluginRegistrationHandler<C> bukkitPluginRegistrationHandler =
|
||||
(BukkitPluginRegistrationHandler<C>) this.bukkitCommandManager.getCommandRegistrationHandler();
|
||||
|
||||
/* Turn '(/)plugin:command arg1 arg2 ...' into 'plugin:command' */
|
||||
final String commandLabel = (event.getBuffer().startsWith("/")
|
||||
? event.getBuffer().substring(1)
|
||||
: event.getBuffer())
|
||||
.split(" ")[0];
|
||||
if (!bukkitPluginRegistrationHandler.isRecognized(commandLabel)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final CommandSender sender = event.getSender();
|
||||
final C cloudSender = this.bukkitCommandManager.getCommandSenderMapper().apply(sender);
|
||||
final String inputBuffer = this.bukkitCommandManager.stripNamespace(event.getBuffer());
|
||||
|
||||
final List<String> suggestions = new ArrayList<>(this.bukkitCommandManager.suggest(
|
||||
cloudSender,
|
||||
inputBuffer
|
||||
));
|
||||
|
||||
event.setCompletions(suggestions);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
void onPlayerLogin(final @NonNull PlayerLoginEvent event) {
|
||||
/* If the server is brigadier-capable, any registration after players
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue