修复占位符括号+tag管理员CLI权限视图

1. 变量替换正则新增{}花括号支持,支持领地名和领地两种写法
2. CLI showPlayerPerm:tag管理员(isAdmin)查看管理员成员时看到完整权限编辑视图,不再简化;可切换管理员身份
This commit is contained in:
2026-07-12 20:58:21 +08:00
parent ad935cbe09
commit 57788016a4
2 changed files with 8 additions and 6 deletions
+4 -4
View File
@@ -827,17 +827,17 @@ public class AreaCLIManager {
// 获取该成员的per-player权限
Map<String, Boolean> playerPerms = areaProtect.getPlayerPermMap(landId, targetPlayer);
// ★ 管理员简化面板:管理员自动获得所有权限,只显示身份切换+发光开关
// ★ 管理员简化面板:仅非领地主且非tag管理员时简化显示
boolean isTargetAdmin = areaProtect.isLandAdmin(land.name, targetPlayer);
if (isTargetAdmin) {
if (isTargetAdmin && !isOwner && !isAdmin) {
p.sendMessage(header(targetPlayer + " 的独立权限"));
p.sendMessage(Component.text(""));
p.sendMessage(Component.text("§6§l该玩家是管理员,自动获得所有权限"));
p.sendMessage(Component.text("§7管理员不受任何权限限制(发光效果除外)"));
p.sendMessage(Component.text(""));
// ★ 领地主:可切换管理员身份
if (isOwner && !targetPlayer.equalsIgnoreCase(land.owner)) {
// ★ 领地主或tag管理员:可切换管理员身份
if ((isOwner || isAdmin) && !targetPlayer.equalsIgnoreCase(land.owner)) {
Component adminLine = Component.empty();
adminLine = adminLine.append(Component.text("§6✔ §f身份: §6管理员"));
adminLine = adminLine.append(Component.text(" "));
+4 -2
View File
@@ -791,16 +791,18 @@ public class AreaProtection implements Listener {
String msg = raw;
// ★ 变量替换:支持多种括号格式(DOTALL确保跨行匹配)
// 支持 () [] {} 【】 <> 《》 六种括号
if (playerName != null) {
java.util.regex.Pattern varPattern = java.util.regex.Pattern.compile(
"[((\\[【<《]玩家[))\\]】>》]",
"[((\\[【<《{]玩家[))\\]】>》}]",
java.util.regex.Pattern.DOTALL);
msg = varPattern.matcher(msg).replaceAll(
java.util.regex.Matcher.quoteReplacement(playerName));
}
if (landName != null) {
// 同时支持"领地"和"领地名"两种写法
java.util.regex.Pattern varPattern = java.util.regex.Pattern.compile(
"[((\\[【<《]领地[))\\]】>》]",
"[((\\[【<《{]领地名?[))\\]】>》}]",
java.util.regex.Pattern.DOTALL);
msg = varPattern.matcher(msg).replaceAll(
java.util.regex.Matcher.quoteReplacement(landName));