1
mirror of https://github.com/CarmJos/UserPrefix.git synced 2024-09-19 20:15:47 +00:00

chore(expansion): 适配新版EasyPlugin提供的解析器

This commit is contained in:
Carm Jos 2023-02-19 04:19:51 +08:00
parent 6fb9daa3d3
commit 8ce82ec7fd
3 changed files with 65 additions and 81 deletions

22
pom.xml
View File

@ -13,8 +13,8 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<easyplugin.version>1.4.18</easyplugin.version>
<mineconfig.version>2.3.0</mineconfig.version>
<deps.easyplugin.version>1.5.0</deps.easyplugin.version>
<deps.mineconfig.version>2.3.0</deps.mineconfig.version>
</properties>
<groupId>cc.carm.plugin</groupId>
@ -108,7 +108,7 @@
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-main</artifactId>
<version>${easyplugin.version}</version>
<version>${deps.easyplugin.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
@ -116,7 +116,7 @@
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-command</artifactId>
<version>${easyplugin.version}</version>
<version>${deps.easyplugin.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
@ -124,7 +124,7 @@
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-gui</artifactId>
<version>${easyplugin.version}</version>
<version>${deps.easyplugin.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
@ -132,7 +132,15 @@
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-githubchecker</artifactId>
<version>${easyplugin.version}</version>
<version>${deps.easyplugin.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-placeholderapi</artifactId>
<version>${deps.easyplugin.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
@ -140,7 +148,7 @@
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>mineconfiguration-bukkit</artifactId>
<version>${mineconfig.version}</version>
<version>${deps.mineconfig.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>

View File

@ -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");

View File

@ -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<String> SUPPORTED_PLACEHOLDERS = Arrays.asList(
"%UserPrefix_prefix%", "%UserPrefix_amount%", "%UserPrefix_weight%",
"%UserPrefix_identifier%", "%UserPrefix_name%",
"%UserPrefix_has_<Identifier>%"
public UserPrefixExpansion(@NotNull JavaPlugin plugin, @NotNull String rootIdentifier) {
super(plugin, rootIdentifier);
handle("version", (player, args) -> getVersion());
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)
);
protected final @NotNull Main plugin;
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 UserPrefixExpansion(@NotNull Main plugin) {
this.plugin = plugin;
}
public PlaceholderHandler handlePrefix(Function<PrefixConfig, Object> handler) {
return handlePlayer((player, args) -> handler.apply(UserPrefixAPI.getUserManager().getPrefix(player)));
}
public PlaceholderHandler handlePlayer(BiFunction<Player, String[], Object> handler) {
return (player, args) -> {
if (player == null || !player.isOnline()) return "Loading...";
return handler.apply((Player) player, args);
};
}
public PlaceholderHandler handlePlayer(Function<Player, Object> handler) {
return handlePlayer((player, args) -> handler.apply(player));
}
@Override
public @NotNull List<String> getPlaceholders() {
return SUPPORTED_PLACEHOLDERS;
}
@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) {
public String onErrorParams(@Nullable OfflinePlayer player) {
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: {
@Override
public String onException(@Nullable OfflinePlayer player, @NotNull SubExpansion<?> expansion,
@NotNull Exception exception) {
exception.printStackTrace();
return "参数错误";
}
}
}
}