reworked parsing
This commit is contained in:
parent
8897579a12
commit
ac6a95232e
22 changed files with 360 additions and 441 deletions
|
|
@ -1,7 +1,7 @@
|
|||
package de.kentoj.kencommandapi;
|
||||
|
||||
import de.kentoj.kencommandapi.api.CommandHandler;
|
||||
import de.kentoj.kencommandapi.api.node.RootCommandNode;
|
||||
import de.kentoj.kencommandapi.api.literal.RootLiteral;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
|
@ -10,18 +10,18 @@ import java.util.Arrays;
|
|||
|
||||
public class BukkitKenCommand extends Command {
|
||||
|
||||
private final RootCommandNode<CommandSender> rootNode;
|
||||
private final RootLiteral<CommandSender> rootNode;
|
||||
private final CommandHandler<CommandSender> commandHandler;
|
||||
|
||||
protected BukkitKenCommand(
|
||||
CommandHandler<CommandSender> commandHandler,
|
||||
RootCommandNode<CommandSender> rootNode
|
||||
RootLiteral<CommandSender> rootLiteral
|
||||
) {
|
||||
super(rootNode.getNames()[0]);
|
||||
super(rootLiteral.getNames()[0]);
|
||||
this.commandHandler = commandHandler;
|
||||
this.rootNode = rootNode;
|
||||
this.setAliases(Arrays.asList(rootNode.getNames()));
|
||||
this.setPermission(rootNode.getPermission());
|
||||
this.rootNode = rootLiteral;
|
||||
this.setAliases(Arrays.asList(rootLiteral.getNames()));
|
||||
this.setPermission(rootLiteral.getPermission());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
package de.kentoj.kencommandapi;
|
||||
|
||||
import de.kentoj.kencommandapi.api.CommandHandler;
|
||||
import de.kentoj.kencommandapi.api.node.RootCommandNode;
|
||||
import de.kentoj.kencommandapi.api.parser.CommandParser;
|
||||
import de.kentoj.kencommandapi.api.literal.RootLiteral;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.SimpleCommandMap;
|
||||
|
|
@ -17,12 +16,11 @@ import java.util.List;
|
|||
public class CommandAPI {
|
||||
|
||||
private final CommandHandler<CommandSender> commandHandler;
|
||||
private final List<RootCommandNode<CommandSender>> registeredNodes = new ArrayList<>();
|
||||
private final List<RootLiteral<CommandSender>> registeredNodes = new ArrayList<>();
|
||||
private final SimpleCommandMap commandMap;
|
||||
|
||||
public CommandAPI(Plugin plugin) {
|
||||
this.commandHandler = new CommandHandler<>(new CommandParser<>(Permissible::hasPermission),
|
||||
CommandSender::sendMessage, Permissible::hasPermission);
|
||||
this.commandHandler = new CommandHandler<>(CommandSender::sendMessage, Permissible::hasPermission);
|
||||
Bukkit.getPluginManager().registerEvents(new TabCompleteListener(this, commandHandler), plugin);
|
||||
|
||||
try {
|
||||
|
|
@ -34,7 +32,7 @@ public class CommandAPI {
|
|||
}
|
||||
}
|
||||
|
||||
@Nullable RootCommandNode<CommandSender> getRegistered(String name) {
|
||||
@Nullable RootLiteral<CommandSender> getRegistered(String name) {
|
||||
for (var node : registeredNodes) {
|
||||
for (String nodeName : node.getNames()) {
|
||||
if (nodeName.equals(name)) return node;
|
||||
|
|
@ -43,7 +41,7 @@ public class CommandAPI {
|
|||
return null;
|
||||
}
|
||||
|
||||
public void register(RootCommandNode<CommandSender> rootNode) {
|
||||
public void register(RootLiteral<CommandSender> rootNode) {
|
||||
registeredNodes.add(rootNode);
|
||||
commandMap.register(rootNode.getNames()[0], new BukkitKenCommand(commandHandler, rootNode));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import org.bukkit.command.CommandSender;
|
|||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class TabCompleteListener implements Listener {
|
||||
|
||||
|
|
@ -17,11 +19,11 @@ public class TabCompleteListener implements Listener {
|
|||
public void onAsyncTabComplete(AsyncTabCompleteEvent ev) {
|
||||
if (!ev.isCommand()) return;
|
||||
|
||||
var args = ev.getBuffer().split(" ");
|
||||
var args = ev.getBuffer().substring(1).split(" ");
|
||||
var label = args[0];
|
||||
var rootNode = commandAPI.getRegistered(label);
|
||||
if (rootNode == null) return;
|
||||
ev.setHandled(true);
|
||||
ev.setCompletions(commandHandler.getSuggestions(rootNode, ev.getSender(), args));
|
||||
ev.setCompletions(commandHandler.getSuggestions(rootNode, ev.getSender(), Arrays.copyOfRange(args, 1, args.length)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue