From c4d25b79cf0492ffcc1813204e7b40ac4a2e270e Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Mon, 24 Jun 2024 17:53:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86papi=E5=BD=A9?= =?UTF-8?q?=E8=89=B2=E5=AD=97=E7=A7=B0=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../lunadeer/miniplayertitle/Expansion.java | 4 ++- .../miniplayertitle/dtos/TitleDTO.java | 28 ++++++++++++++++++- .../lunadeer/miniplayertitle/tuis/Menu.java | 11 ++++++-- 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index a6e181d..bd502c6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer MiniPlayerTitle - 4.1.0 + 4.2.1 jar MiniPlayerTitle diff --git a/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java b/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java index 9247907..c29e626 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java @@ -6,6 +6,7 @@ import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO; import cn.lunadeer.miniplayertitle.dtos.TitleDTO; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; @@ -43,7 +44,8 @@ public class Expansion extends PlaceholderExpansion { return ""; } TitleDTO t = title.getTitle(); - return MiniPlayerTitle.config.getPrefix() + t.getTitlePlainText() + MiniPlayerTitle.config.getSuffix(); + return ChatColor.translateAlternateColorCodes('&', + MiniPlayerTitle.config.getPrefix() + t.getTitleColoredBukkit() + MiniPlayerTitle.config.getSuffix()); } return null; // diff --git a/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java b/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java index 33aefd5..fce7726 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java @@ -1,15 +1,19 @@ package cn.lunadeer.miniplayertitle.dtos; +import cn.lunadeer.minecraftpluginutils.XLogger; import cn.lunadeer.miniplayertitle.Color; import cn.lunadeer.miniplayertitle.MiniPlayerTitle; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.HoverEvent; +import org.bukkit.ChatColor; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class TitleDTO { private int id; @@ -80,7 +84,6 @@ public class TitleDTO { if (part.isEmpty()) { continue; } - // match hex regx ^[0-9a-fA-F]{6}$ Color color = new Color("#ffffff"); String content; if (part.length() > 6 && part.substring(0, 6).matches("^[0-9a-fA-F]{6}$")) { @@ -100,6 +103,29 @@ public class TitleDTO { return title_component.build().hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text(this.description))); } + /** + * 获取称号的颜色化字符串 + * 需要使用 translateAlternateColorCodes 方法对返回字符串进行处理 + * &#FFFFFF -> &x&f&f&f&f&f + * + * @return String + */ + public String getTitleColoredBukkit() { + String title = this.title.replaceAll("&#", "#"); + Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}"); + Matcher matcher = pattern.matcher(title); + while (matcher.find()) { + String hexCode = matcher.group(); + StringBuilder builder = new StringBuilder("&x"); + for (char c : hexCode.substring(1).toCharArray()) { + builder.append('&').append(c); + } + title = title.replace(hexCode, builder.toString()); + } + XLogger.debug("TitleDTO.getTitleColoredBukkit: %s", title); + return title; + } + public String getTitlePlainText() { String[] parts = this.title.split("&#"); StringBuilder res = new StringBuilder(); diff --git a/src/main/java/cn/lunadeer/miniplayertitle/tuis/Menu.java b/src/main/java/cn/lunadeer/miniplayertitle/tuis/Menu.java index 2af73c9..20ae1ae 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/tuis/Menu.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/tuis/Menu.java @@ -1,6 +1,7 @@ package cn.lunadeer.miniplayertitle.tuis; import cn.lunadeer.minecraftpluginutils.Notification; +import cn.lunadeer.minecraftpluginutils.VaultConnect; import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Line; @@ -24,8 +25,14 @@ public class Menu { Notification.error(player, "获取玩家信息时出现错误"); return; } - Line balance = Line.create() - .append("称号币余额: ").append(playerInfo.getCoin().toString()); + Line balance; + if (!MiniPlayerTitle.config.isExternalEco()) { + balance = Line.create() + .append("称号币余额: ").append(playerInfo.getCoin().toString()); + } else { + balance = Line.create() + .append("余额: ").append(playerInfo.getCoin().toString()).append(VaultConnect.instance.currencyNamePlural()); + } Line backpack = Line.create() .append(Button.create("称号背包").setExecuteCommand("/mplt my_titles").build()).append("查看你拥有的称号"); Line shop = Line.create()