diff --git a/pom.xml b/pom.xml
index 909a30e..4b9ba62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,8 +13,8 @@
UTF-8
UTF-8
- 1.4.18
- 2.3.0
+ 1.5.0
+ 2.3.0
cc.carm.plugin
@@ -108,7 +108,7 @@
cc.carm.lib
easyplugin-main
- ${easyplugin.version}
+ ${deps.easyplugin.version}
compile
true
@@ -116,7 +116,7 @@
cc.carm.lib
easyplugin-command
- ${easyplugin.version}
+ ${deps.easyplugin.version}
compile
true
@@ -124,7 +124,7 @@
cc.carm.lib
easyplugin-gui
- ${easyplugin.version}
+ ${deps.easyplugin.version}
compile
true
@@ -132,7 +132,15 @@
cc.carm.lib
easyplugin-githubchecker
- ${easyplugin.version}
+ ${deps.easyplugin.version}
+ compile
+ true
+
+
+
+ cc.carm.lib
+ easyplugin-placeholderapi
+ ${deps.easyplugin.version}
compile
true
@@ -140,7 +148,7 @@
cc.carm.lib
mineconfiguration-bukkit
- ${mineconfig.version}
+ ${deps.mineconfig.version}
compile
true
diff --git a/src/main/java/cc/carm/plugin/userprefix/Main.java b/src/main/java/cc/carm/plugin/userprefix/Main.java
index 3bb8656..ac76ba6 100644
--- a/src/main/java/cc/carm/plugin/userprefix/Main.java
+++ b/src/main/java/cc/carm/plugin/userprefix/Main.java
@@ -66,7 +66,7 @@ public class Main extends EasyPlugin {
if (MessageUtils.hasPlaceholderAPI()) {
log("注册变量...");
- new UserPrefixExpansion(getInstance()).register();
+ new UserPrefixExpansion(this, getName()).register();
} else {
log("未安装 PlaceholderAPI ,跳过变量注册...");
log("若您想使用变量进行前缀的显示,请安装PlaceholderAPI!");
diff --git a/src/main/java/cc/carm/plugin/userprefix/hooker/UserPrefixExpansion.java b/src/main/java/cc/carm/plugin/userprefix/hooker/UserPrefixExpansion.java
index 6302ef8..6d80f33 100644
--- a/src/main/java/cc/carm/plugin/userprefix/hooker/UserPrefixExpansion.java
+++ b/src/main/java/cc/carm/plugin/userprefix/hooker/UserPrefixExpansion.java
@@ -1,93 +1,69 @@
package cc.carm.plugin.userprefix.hooker;
-import cc.carm.plugin.userprefix.Main;
+import cc.carm.lib.easyplugin.papi.EasyPlaceholder;
+import cc.carm.lib.easyplugin.papi.expansion.SubExpansion;
+import cc.carm.lib.easyplugin.papi.handler.PlaceholderHandler;
import cc.carm.plugin.userprefix.UserPrefixAPI;
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
-import me.clip.placeholderapi.expansion.PlaceholderExpansion;
+import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
+import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
-import java.util.Arrays;
-import java.util.List;
+import java.util.Collections;
+import java.util.function.BiFunction;
+import java.util.function.Function;
-public class UserPrefixExpansion extends PlaceholderExpansion {
+public class UserPrefixExpansion extends EasyPlaceholder {
- protected static final @NotNull List SUPPORTED_PLACEHOLDERS = Arrays.asList(
- "%UserPrefix_prefix%", "%UserPrefix_amount%", "%UserPrefix_weight%",
- "%UserPrefix_identifier%", "%UserPrefix_name%",
- "%UserPrefix_has_%"
- );
+ public UserPrefixExpansion(@NotNull JavaPlugin plugin, @NotNull String rootIdentifier) {
+ super(plugin, rootIdentifier);
- protected final @NotNull Main plugin;
+ handle("version", (player, args) -> getVersion());
- public UserPrefixExpansion(@NotNull Main plugin) {
- this.plugin = plugin;
+ handle("identifier", handlePrefix(PrefixConfig::getIdentifier), "id");
+ handle("prefix", handlePrefix(PrefixConfig::getContent));
+ handle("name", handlePrefix(PrefixConfig::getName));
+ handle("weight", handlePrefix(PrefixConfig::getWeight));
+ handle("amount", handlePlayer(
+ (player) -> UserPrefixAPI.getUserManager().getUsablePrefixes(player).size() + 1)
+ );
+
+ handle("has", handlePlayer((player, args) -> {
+ if (args.length < 1) return "参数不足";
+ PrefixConfig prefix = UserPrefixAPI.getPrefixManager().getPrefix(args[0]);
+ if (prefix == null) return "该前缀不存在";
+ return prefix.checkPermission(player);
+ }), Collections.singletonList("<前缀ID>"));
+
+ }
+
+ public PlaceholderHandler handlePrefix(Function handler) {
+ return handlePlayer((player, args) -> handler.apply(UserPrefixAPI.getUserManager().getPrefix(player)));
+ }
+
+ public PlaceholderHandler handlePlayer(BiFunction handler) {
+ return (player, args) -> {
+ if (player == null || !player.isOnline()) return "Loading...";
+ return handler.apply((Player) player, args);
+ };
+ }
+
+ public PlaceholderHandler handlePlayer(Function handler) {
+ return handlePlayer((player, args) -> handler.apply(player));
}
@Override
- public @NotNull List getPlaceholders() {
- return SUPPORTED_PLACEHOLDERS;
+ public String onErrorParams(@Nullable OfflinePlayer player) {
+ return "参数不足";
}
@Override
- public boolean persist() {
- return true;
- }
-
- @Override
- public @NotNull String getAuthor() {
- return plugin.getDescription().getAuthors().toString();
- }
-
- @Override
- public @NotNull String getIdentifier() {
- return "UserPrefix";
- }
-
- @Override
- public @NotNull String getVersion() {
- return plugin.getDescription().getVersion();
- }
-
- @Override
- public String onPlaceholderRequest(Player player, @NotNull String identifier) {
- if (player == null) return "加载中...";
- String[] args = identifier.split("_");
-
-
- if (args.length < 1) {
- return "参数不足";
- }
-
- switch (args[0].toLowerCase()) {
- case "identifier": {
- return UserPrefixAPI.getUserManager().getPrefix(player).getIdentifier();
- }
- case "prefix": {
- return UserPrefixAPI.getUserManager().getPrefix(player).getContent();
- }
- case "amount": {
- return String.valueOf(UserPrefixAPI.getUserManager().getUsablePrefixes(player).size() + 1);
- }
- case "name": {
- return UserPrefixAPI.getUserManager().getPrefix(player).getName();
- }
- case "weight": {
- return Integer.toString(UserPrefixAPI.getUserManager().getPrefix(player).getWeight());
- }
- case "has": {
- if (args.length < 2) return "参数不足";
- PrefixConfig prefix = UserPrefixAPI.getPrefixManager().getPrefix(args[1]);
- if (prefix == null) return "该前缀不存在";
- return Boolean.toString(prefix.checkPermission(player));
- }
- case "version": {
- return getVersion();
- }
- default: {
- return "参数错误";
- }
- }
+ public String onException(@Nullable OfflinePlayer player, @NotNull SubExpansion> expansion,
+ @NotNull Exception exception) {
+ exception.printStackTrace();
+ return "参数错误";
}
}