修复管理员权限显示和领地配置同步问题

This commit is contained in:
2026-06-26 22:55:23 +08:00
parent 30e7f68c85
commit 33afe26b46
2 changed files with 20 additions and 2 deletions
+5 -1
View File
@@ -364,11 +364,15 @@ public class AreaCLIManager {
for (int i = start; i < end; i++) {
String member = memberList.get(i);
boolean isMemberOwner = member.equalsIgnoreCase(land.owner);
boolean isMemberAdmin = areaProtect.isLandAdmin(land.name, member);
Component line = Component.empty();
line = line.append(Component.text("§f" + member));
if (isMemberOwner) {
line = line.append(Component.text(" §c[所有者]"));
}
if (isMemberAdmin) {
line = line.append(Component.text(" §6[管理员]"));
}
line = line.append(Component.text(" "));
line = line.append(Component.text("§a[编辑权限]")
.hoverEvent(HoverEvent.showText(
@@ -807,7 +811,7 @@ public class AreaCLIManager {
// ★ 管理员权限自动隐藏:管理员自动获得所有权限(发光效果除外)
org.bukkit.entity.Player targetBukkit = Bukkit.getPlayerExact(targetPlayer);
boolean isTargetAdmin = targetBukkit != null && areaProtect.isAreaAdmin(targetBukkit);
boolean isTargetAdmin = areaProtect.isLandAdmin(land.name, targetPlayer);
if (isTargetAdmin) {
p.sendMessage(header(targetPlayer + " 的独立权限"));
p.sendMessage(Component.text(""));
+15 -1
View File
@@ -416,6 +416,7 @@ public class AreaGUIManager implements Listener {
// 获取per-player权限
Map<String, Boolean> playerPerms = areaProtect.getPlayerPermMap(landId, targetPlayer);
int slot = 0;
// ★ 管理员状态检测(领地级管理员,非全局tag)
boolean isAdmin = areaProtect.isLandAdmin(landName, targetPlayer);
@@ -425,6 +426,20 @@ public class AreaGUIManager implements Listener {
inv.setItem(22, createItem(Material.GOLD_BLOCK, "§6§l管理员权限",
"§7该玩家是此领地管理员,自动获得所有权限",
"§7点击切换管理员身份"));
// 管理员只保留发光效果权限控制
boolean glowingDefault = !land.denyGlowing;
boolean glowingOverride = playerPerms.containsKey("denyGlowing") ? playerPerms.get("denyGlowing") : glowingDefault;
boolean glowingAllowed = !glowingOverride;
Material glowingMat = glowingAllowed ? Material.LIME_DYE : Material.GRAY_DYE;
String glowingStatus = glowingAllowed ? "§a✔ 允许" : "§c✘ 禁止";
String glowingOverrideTag = playerPerms.containsKey("denyGlowing") ? " §e★自定义" : " §7[默认]";
inv.setItem(0, createItem(glowingMat,
"§e§l玩家发光" + glowingOverrideTag,
glowingStatus,
"",
"§e点击切换"));
// 跳过权限列表循环
slot = 45;
}
// 权限列表
@@ -442,7 +457,6 @@ public class AreaGUIManager implements Listener {
{"玩家发光", "denyGlowing"}, {"和平模式", "peaceMode"}
};
int slot = 0;
for (String[] def : permDefs) {
if (slot >= 45) break;
String name = def[0];