This commit is contained in:
kento2 2026-07-05 00:36:48 +02:00
parent 9aa138058c
commit b234cd9df7
17 changed files with 51 additions and 56 deletions

View file

@ -23,7 +23,7 @@ public class CommandAPI {
public CommandAPI(Plugin plugin) {
this.commandHandler = new CommandHandler<>(new CommandParser<>(Permissible::hasPermission),
CommandSender::sendMessage, Permissible::hasPermission);
Bukkit.getPluginManager().registerEvents(new AsyncTabCompleter(this, commandHandler), plugin);
Bukkit.getPluginManager().registerEvents(new TabCompleteListener(this, commandHandler), plugin);
try {
Field field = Bukkit.getPluginManager().getClass().getDeclaredField("commandMap");

View file

@ -8,18 +8,20 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@RequiredArgsConstructor
public class AsyncTabCompleter implements Listener {
public class TabCompleteListener implements Listener {
private final CommandAPI commandAPI;
private final CommandHandler<CommandSender> commandHandler;
@EventHandler(ignoreCancelled = true)
public void onAsyncTabComplete(AsyncTabCompleteEvent ev) {
if (!ev.isCommand()) return;
var args = ev.getBuffer().split(" ");
var label = args[0];
var rootNode = commandAPI.getRegistered(label);
if (rootNode == null) return;
commandHandler.getSuggestions(rootNode, ev.getSender(), args)
.thenAccept(ev::setCompletions);
ev.setHandled(true);
ev.setCompletions(commandHandler.getSuggestions(rootNode, ev.getSender(), args));
}
}

View file

@ -6,14 +6,12 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class PlayerSuggestionProvider implements SuggestionProvider<CommandSender> {
@Override
public CompletableFuture<List<String>> suggest(CommandSender __) {
var list = Bukkit.getOnlinePlayers().stream()
public List<String> suggest(CommandSender __) {
return Bukkit.getOnlinePlayers().stream()
.map(Player::getName)
.toList();
return CompletableFuture.completedFuture(list);
}
}