diff --git a/src/main/java/Sdf1_login/AreaCLIManager.java b/src/main/java/Sdf1_login/AreaCLIManager.java index a5e551f..04ce4b5 100644 --- a/src/main/java/Sdf1_login/AreaCLIManager.java +++ b/src/main/java/Sdf1_login/AreaCLIManager.java @@ -827,17 +827,17 @@ public class AreaCLIManager { // 获取该成员的per-player权限 Map 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(" ")); diff --git a/src/main/java/Sdf1_login/AreaProtection.java b/src/main/java/Sdf1_login/AreaProtection.java index 8e13743..f44c748 100644 --- a/src/main/java/Sdf1_login/AreaProtection.java +++ b/src/main/java/Sdf1_login/AreaProtection.java @@ -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));