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
|
|
@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Use Command instead of TabCompleteEvent on Bukkit
|
||||||
|
|
||||||
## [1.4.0] - 2021-01-16
|
## [1.4.0] - 2021-01-16
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
||||||
|
|
@ -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
|
@Override
|
||||||
public boolean execute(
|
public boolean execute(
|
||||||
final @NonNull CommandSender commandSender,
|
final @NonNull CommandSender commandSender,
|
||||||
|
|
|
||||||
|
|
@ -42,37 +42,6 @@ final class CloudBukkitListener<C> implements Listener {
|
||||||
this.bukkitCommandManager = bukkitCommandManager;
|
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)
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
void onPlayerLogin(final @NonNull PlayerLoginEvent event) {
|
void onPlayerLogin(final @NonNull PlayerLoginEvent event) {
|
||||||
/* If the server is brigadier-capable, any registration after players
|
/* If the server is brigadier-capable, any registration after players
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue