.
This commit is contained in:
parent
9aa138058c
commit
b234cd9df7
17 changed files with 51 additions and 56 deletions
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue