From 33afe26b46bbb12cfb751dd4f3350ee664b23661 Mon Sep 17 00:00:00 2001 From: youpaishidifu Date: Fri, 26 Jun 2026 22:55:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=98=BE=E7=A4=BA=E5=92=8C=E9=A2=86=E5=9C=B0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=90=8C=E6=AD=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Sdf1_login/AreaCLIManager.java | 6 +++++- src/main/java/Sdf1_login/AreaGUIManager.java | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/Sdf1_login/AreaCLIManager.java b/src/main/java/Sdf1_login/AreaCLIManager.java index 81664a2..0e3aea6 100644 --- a/src/main/java/Sdf1_login/AreaCLIManager.java +++ b/src/main/java/Sdf1_login/AreaCLIManager.java @@ -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("")); diff --git a/src/main/java/Sdf1_login/AreaGUIManager.java b/src/main/java/Sdf1_login/AreaGUIManager.java index a9e9eaa..be8c8d0 100644 --- a/src/main/java/Sdf1_login/AreaGUIManager.java +++ b/src/main/java/Sdf1_login/AreaGUIManager.java @@ -416,6 +416,7 @@ public class AreaGUIManager implements Listener { // 获取per-player权限 Map 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];