From 8ce82ec7fde1d177552cf3f189e7fe152eebac57 Mon Sep 17 00:00:00 2001 From: carm Date: Sun, 19 Feb 2023 04:19:51 +0800 Subject: [PATCH] =?UTF-8?q?chore(expansion):=20=E9=80=82=E9=85=8D=E6=96=B0?= =?UTF-8?q?=E7=89=88EasyPlugin=E6=8F=90=E4=BE=9B=E7=9A=84=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 22 +++- .../java/cc/carm/plugin/userprefix/Main.java | 2 +- .../hooker/UserPrefixExpansion.java | 122 +++++++----------- 3 files changed, 65 insertions(+), 81 deletions(-) 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 "参数错误"; } }