1
mirror of https://github.com/CarmJos/EasyPlugin.git synced 2026-06-04 08:38:17 +08:00

feat(papi): 提供便捷的PlaceholderAPI变量实现类。

This commit is contained in:
2023-02-19 02:59:05 +08:00
parent 01250a65d1
commit 3019216801
11 changed files with 588 additions and 36 deletions
@@ -46,7 +46,8 @@ public abstract class CommandHandler implements TabExecutor, NamedExecutor {
public abstract Void noPermission(CommandSender sender);
public Void onException(CommandSender sender, SubCommand<?> cmd, Exception ex) {
sender.sendMessage("Error occurred when executing " + cmd.getName() + ": " + ex.getLocalizedMessage());
sender.sendMessage("Error occurred when executing " + cmd.getIdentifier() + ": " + ex.getLocalizedMessage());
ex.printStackTrace();
return null;
}
@@ -56,18 +57,18 @@ public abstract class CommandHandler implements TabExecutor, NamedExecutor {
}
@Override
public String getName() {
public @NotNull String getIdentifier() {
return this.cmd;
}
public void registerSubCommand(SubCommand<?> command) {
String name = command.getName().toLowerCase();
String name = command.getIdentifier().toLowerCase();
this.registeredCommands.put(name, command);
command.getAliases().forEach(alias -> this.aliasesMap.put(alias.toLowerCase(), name));
}
public void registerHandler(CommandHandler handler) {
String name = handler.getName().toLowerCase();
String name = handler.getIdentifier().toLowerCase();
this.registeredHandlers.put(name, handler);
handler.getAliases().forEach(alias -> this.aliasesMap.put(alias.toLowerCase(), name));
}
@@ -106,7 +107,6 @@ public abstract class CommandHandler implements TabExecutor, NamedExecutor {
sub.execute(this.plugin, sender, this.shortenArgs(args));
} catch (Exception ex) {
this.onException(sender, sub, ex);
ex.printStackTrace();
}
}
@@ -121,7 +121,7 @@ public abstract class CommandHandler implements TabExecutor, NamedExecutor {
if (args.length == 1) {
return getExecutors().stream()
.filter(e -> e.hasPermission(sender))
.map(NamedExecutor::getName)
.map(NamedExecutor::getIdentifier)
.filter(s -> StringUtil.startsWithIgnoreCase(s, input))
.collect(Collectors.toList());
} else {
@@ -145,7 +145,7 @@ public abstract class CommandHandler implements TabExecutor, NamedExecutor {
executors.addAll(this.registeredHandlers.values());
executors.addAll(this.registeredCommands.values());
List<NamedExecutor> sortedExecutors = new ArrayList<>(executors);
sortedExecutors.sort(Comparator.comparing(NamedExecutor::getName));
sortedExecutors.sort(Comparator.comparing(NamedExecutor::getIdentifier));
return sortedExecutors;
}
@@ -11,16 +11,16 @@ import java.util.function.Function;
public interface NamedExecutor {
String getName();
@NotNull String getIdentifier();
List<String> getAliases();
@NotNull List<String> getAliases();
default boolean hasPermission(CommandSender sender) {
default boolean hasPermission(@NotNull CommandSender sender) {
return true;
}
default Void sendMessage(@NotNull CommandSender sender, @NotNull String... messages) {
return sendMessage(sender, (Function<String, String>) null, messages);
return sendMessage(sender, Function.identity(), messages);
}
default Void sendMessage(@NotNull CommandSender sender,
@@ -14,12 +14,12 @@ public abstract class SubCommand<C extends CommandHandler> implements NamedExecu
private final @NotNull C parent;
private final String name;
private final String identifier;
private final List<String> aliases;
public SubCommand(@NotNull C parent, String name, String... aliases) {
public SubCommand(@NotNull C parent, String identifier, String... aliases) {
this.parent = parent;
this.name = name;
this.identifier = identifier;
this.aliases = Arrays.asList(aliases);
}
@@ -28,13 +28,13 @@ public abstract class SubCommand<C extends CommandHandler> implements NamedExecu
}
@Override
public String getName() {
return this.name;
public @NotNull String getIdentifier() {
return this.identifier;
}
@Override
@Unmodifiable
public List<String> getAliases() {
public @NotNull List<String> getAliases() {
return this.aliases;
}