🐛 Fix async completions (#38)
Co-authored-by: Alexander Söderberg <sauilitired@gmail.com>
This commit is contained in:
parent
aa572e3533
commit
882154a6a8
7 changed files with 160 additions and 54 deletions
|
|
@ -33,9 +33,7 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
class AsyncCommandSuggestionsListener<C> implements Listener {
|
||||
|
||||
private static final long CACHE_EXPIRATION_TIME = 30L;
|
||||
final class AsyncCommandSuggestionsListener<C> implements Listener {
|
||||
|
||||
private final PaperCommandManager<C> paperCommandManager;
|
||||
|
||||
|
|
@ -44,25 +42,30 @@ class AsyncCommandSuggestionsListener<C> implements Listener {
|
|||
}
|
||||
|
||||
@EventHandler
|
||||
void onTabCompletion(final @NonNull AsyncTabCompleteEvent event) throws Exception {
|
||||
void onTabCompletion(final @NonNull AsyncTabCompleteEvent event) {
|
||||
if (event.getBuffer().isEmpty() || !event.getBuffer().startsWith("/")) {
|
||||
return;
|
||||
}
|
||||
final String[] arguments = event.getBuffer().substring(1).split(" ");
|
||||
if (this.paperCommandManager.getCommandTree().getNamedNode(arguments[0]) == null) {
|
||||
return;
|
||||
}
|
||||
@SuppressWarnings("unchecked") final BukkitPluginRegistrationHandler<C> bukkitPluginRegistrationHandler =
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
final BukkitPluginRegistrationHandler<C> bukkitPluginRegistrationHandler =
|
||||
(BukkitPluginRegistrationHandler<C>) this.paperCommandManager.getCommandRegistrationHandler();
|
||||
if (!bukkitPluginRegistrationHandler.isRecognized(arguments[0])) {
|
||||
|
||||
/* Turn '/plugin:command arg1 arg2 ...' into 'plugin:command' */
|
||||
final String commandLabel = event.getBuffer().substring(1).split(" ")[0];
|
||||
if (!bukkitPluginRegistrationHandler.isRecognized(commandLabel)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final CommandSender sender = event.getSender();
|
||||
final C cloudSender = this.paperCommandManager.getCommandSenderMapper().apply(sender);
|
||||
final String inputBuffer = this.paperCommandManager.stripNamespace(event.getBuffer());
|
||||
|
||||
final List<String> suggestions = new ArrayList<>(this.paperCommandManager.suggest(
|
||||
cloudSender,
|
||||
event.getBuffer().substring(1)
|
||||
inputBuffer
|
||||
));
|
||||
|
||||
event.setCompletions(suggestions);
|
||||
event.setHandled(true);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue