BAZEL + some code
This commit is contained in:
parent
dd25337ed6
commit
4db84feb43
44 changed files with 627 additions and 389 deletions
|
|
@ -6,9 +6,12 @@ java_library(
|
|||
srcs = glob(["src/main/**/*.java"]),
|
||||
deps = [
|
||||
"//kencommandapi-core:core",
|
||||
artifact("org.jetbrains:annotations"),
|
||||
artifact("org.projectlombok:lombok"),
|
||||
artifact("org.jetbrains:annotations"),
|
||||
artifact("io.papermc.paper:paper-api:[26.2.build,)"),
|
||||
],
|
||||
exports = [
|
||||
"//kencommandapi-core:core",
|
||||
],
|
||||
plugins = [ "//third_party:lombok_plugin" ],
|
||||
)
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package de.kentoj.kencommandapi;
|
||||
|
||||
import de.kentoj.kencommandapi.api.CommandHandler;
|
||||
import de.kentoj.kencommandapi.api.literal.RootLiteral;
|
||||
import de.kentoj.kencommandapi.api.literal.Literal;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
|
@ -11,12 +11,12 @@ import java.util.stream.Stream;
|
|||
|
||||
public class BukkitKenCommand extends Command {
|
||||
|
||||
private final RootLiteral<CommandSender> rootNode;
|
||||
private final Literal<CommandSender> rootNode;
|
||||
private final CommandHandler<CommandSender> commandHandler;
|
||||
|
||||
protected BukkitKenCommand(
|
||||
CommandHandler<CommandSender> commandHandler,
|
||||
RootLiteral<CommandSender> rootLiteral
|
||||
Literal<CommandSender> rootLiteral
|
||||
) {
|
||||
super(rootLiteral.getNames()[0]);
|
||||
this.commandHandler = commandHandler;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package de.kentoj.kencommandapi;
|
||||
|
||||
import de.kentoj.kencommandapi.api.CommandHandler;
|
||||
import de.kentoj.kencommandapi.api.literal.RootLiteral;
|
||||
import de.kentoj.kencommandapi.api.literal.Literal;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.SimpleCommandMap;
|
||||
|
|
@ -16,7 +16,7 @@ import java.util.List;
|
|||
public class CommandAPI {
|
||||
|
||||
private final CommandHandler<CommandSender> commandHandler;
|
||||
private final List<RootLiteral<CommandSender>> registeredNodes = new ArrayList<>();
|
||||
private final List<Literal<CommandSender>> registeredNodes = new ArrayList<>();
|
||||
private final SimpleCommandMap commandMap;
|
||||
|
||||
public CommandAPI(Plugin plugin) {
|
||||
|
|
@ -32,7 +32,7 @@ public class CommandAPI {
|
|||
}
|
||||
}
|
||||
|
||||
@Nullable RootLiteral<CommandSender> getRegistered(String name) {
|
||||
@Nullable Literal<CommandSender> getRegistered(String name) {
|
||||
for (var node : registeredNodes) {
|
||||
for (String nodeName : node.getNames()) {
|
||||
if (nodeName.equals(name)) return node;
|
||||
|
|
@ -41,7 +41,7 @@ public class CommandAPI {
|
|||
return null;
|
||||
}
|
||||
|
||||
public void register(RootLiteral<CommandSender> rootNode) {
|
||||
public void register(Literal<CommandSender> rootNode) {
|
||||
registeredNodes.add(rootNode);
|
||||
commandMap.register(rootNode.getNames()[0], new BukkitKenCommand(commandHandler, rootNode));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@ public class TabCompleteListener implements Listener {
|
|||
if (l >= 0)
|
||||
label = label.substring(l+1);
|
||||
}
|
||||
var rootNode = commandAPI.getRegistered(label);
|
||||
if (rootNode == null) return;
|
||||
var literal = commandAPI.getRegistered(label);
|
||||
if (literal == null) return;
|
||||
ev.setHandled(true);
|
||||
ev.setCompletions(commandHandler.getSuggestions(rootNode, ev.getSender(), Arrays.copyOfRange(args, 1, args.length), ev.getBuffer().endsWith(" ")));
|
||||
ev.setCompletions(commandHandler.getSuggestions(literal, ev.getSender(), Arrays.copyOfRange(args, 1, args.length), ev.getBuffer().endsWith(" ")));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ import org.bukkit.entity.Player;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
public class PlayerSuggestionProvider implements SuggestionProvider<CommandSender> {
|
||||
public class PlayerSuggestionProvider<T> implements SuggestionProvider<T> {
|
||||
@Override
|
||||
public List<String> suggest(CommandSender __) {
|
||||
public List<String> suggest(T __) {
|
||||
return Bukkit.getOnlinePlayers().stream()
|
||||
.map(Player::getName)
|
||||
.toList();
|
||||
|
|
|
|||
|
|
@ -12,15 +12,12 @@ import org.bukkit.command.CommandSender;
|
|||
|
||||
import java.util.UUID;
|
||||
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class OfflinePlayerArgumentType implements ArgumentType<CommandSender, OfflinePlayer> {
|
||||
|
||||
@Getter(lazy = true)
|
||||
private static final OfflinePlayerArgumentType instance = new OfflinePlayerArgumentType();
|
||||
@NoArgsConstructor
|
||||
public class OfflinePlayerArgumentType<T> implements ArgumentType<T, OfflinePlayer> {
|
||||
|
||||
// TODO make work with player names on offline players
|
||||
@Override
|
||||
public OfflinePlayer parseInput(String string) {
|
||||
public OfflinePlayer parseInputUnchecked(String string) {
|
||||
OfflinePlayer player = Bukkit.getPlayerExact(string);
|
||||
if (player == null) {
|
||||
try {
|
||||
|
|
@ -34,7 +31,7 @@ public class OfflinePlayerArgumentType implements ArgumentType<CommandSender, Of
|
|||
}
|
||||
|
||||
@Override
|
||||
public SuggestionProvider<CommandSender> defaultSuggestionProvider() {
|
||||
return new PlayerSuggestionProvider();
|
||||
public SuggestionProvider<T> getDefaultSuggestionProvider() {
|
||||
return new PlayerSuggestionProvider<>();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,28 +3,22 @@ package de.kentoj.kencommandapi.type;
|
|||
import de.kentoj.kencommandapi.api.argument.ArgumentType;
|
||||
import de.kentoj.kencommandapi.api.suggestion.SuggestionProvider;
|
||||
import de.kentoj.kencommandapi.suggestionprovider.PlayerSuggestionProvider;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class PlayerArgumentType implements ArgumentType<CommandSender, Player> {
|
||||
|
||||
@Getter(lazy = true)
|
||||
private static final PlayerArgumentType instance = new PlayerArgumentType();
|
||||
@NoArgsConstructor
|
||||
public class PlayerArgumentType<T> implements ArgumentType<T, Player> {
|
||||
|
||||
@Override
|
||||
public Player parseInput(String string) {
|
||||
public Player parseInputUnchecked(String string) {
|
||||
var player = Bukkit.getPlayer(string);
|
||||
if (player == null) throw new IllegalArgumentException("player not online");
|
||||
return player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SuggestionProvider<CommandSender> defaultSuggestionProvider() {
|
||||
return new PlayerSuggestionProvider();
|
||||
public SuggestionProvider<T> getDefaultSuggestionProvider() {
|
||||
return new PlayerSuggestionProvider<>();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue