From ffd11a0b9cd2e4479fe8704a6ad1c9e61f05e0c4 Mon Sep 17 00:00:00 2001 From: youpaishidifu Date: Fri, 26 Jun 2026 23:19:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E9=A2=86=E5=9C=B0?= =?UTF-8?q?=E4=B8=BB=E5=8F=AF=E6=93=8D=E4=BD=9C=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E6=9D=83=E9=99=90(GUI/CLI)=E3=80=81=E5=86=9C=E4=BD=9C=E7=89=A9?= =?UTF-8?q?=E7=A7=8D=E6=A4=8D=E6=9D=83=E9=99=90=E8=A1=A5=E5=85=85=E6=96=B0?= =?UTF-8?q?=E4=BD=9C=E7=89=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Sdf1_login/AreaCLIManager.java | 4 ++-- src/main/java/Sdf1_login/AreaGUIManager.java | 7 +++++-- src/main/java/Sdf1_login/AreaProtection.java | 10 ++++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/Sdf1_login/AreaCLIManager.java b/src/main/java/Sdf1_login/AreaCLIManager.java index 0e3aea6..1001b8b 100644 --- a/src/main/java/Sdf1_login/AreaCLIManager.java +++ b/src/main/java/Sdf1_login/AreaCLIManager.java @@ -809,10 +809,10 @@ public class AreaCLIManager { // 获取该成员的per-player权限 Map playerPerms = areaProtect.getPlayerPermMap(landId, targetPlayer); - // ★ 管理员权限自动隐藏:管理员自动获得所有权限(发光效果除外) + // ★ 管理员权限自动隐藏:非领地主操作管理员时,简化显示(管理员自动获得所有权限) org.bukkit.entity.Player targetBukkit = Bukkit.getPlayerExact(targetPlayer); boolean isTargetAdmin = areaProtect.isLandAdmin(land.name, targetPlayer); - if (isTargetAdmin) { + if (isTargetAdmin && !isOwner) { p.sendMessage(header(targetPlayer + " 的独立权限")); p.sendMessage(Component.text("")); p.sendMessage(Component.text("§6§l该玩家是管理员,自动获得所有权限")); diff --git a/src/main/java/Sdf1_login/AreaGUIManager.java b/src/main/java/Sdf1_login/AreaGUIManager.java index be8c8d0..d6b5a37 100644 --- a/src/main/java/Sdf1_login/AreaGUIManager.java +++ b/src/main/java/Sdf1_login/AreaGUIManager.java @@ -418,11 +418,14 @@ public class AreaGUIManager implements Listener { Map playerPerms = areaProtect.getPlayerPermMap(landId, targetPlayer); int slot = 0; + // ★ 权限检查:只有所有者或管理员能编辑成员权限 + boolean isOwner = p.getName().equalsIgnoreCase(land.owner); + // ★ 管理员状态检测(领地级管理员,非全局tag) boolean isAdmin = areaProtect.isLandAdmin(landName, targetPlayer); - // ★ 管理员提示:管理员自动获得所有权限 - if (isAdmin) { + // ★ 管理员提示:非领地主操作管理员时简化显示 + if (isAdmin && !isOwner) { inv.setItem(22, createItem(Material.GOLD_BLOCK, "§6§l管理员权限", "§7该玩家是此领地管理员,自动获得所有权限", "§7点击切换管理员身份")); diff --git a/src/main/java/Sdf1_login/AreaProtection.java b/src/main/java/Sdf1_login/AreaProtection.java index cbfdb75..b50eec0 100644 --- a/src/main/java/Sdf1_login/AreaProtection.java +++ b/src/main/java/Sdf1_login/AreaProtection.java @@ -4704,7 +4704,9 @@ public class AreaProtection implements Listener { || name.contains("SUGAR_CANE") || name.contains("NETHER_WART") || name.contains("KELP") || name.contains("SEA_PICKLE") || name.contains("CHORUS") || name.contains("TWISTING_VINES") - || name.contains("WEEPING_VINES") || mat == Material.MELON_STEM + || name.contains("WEEPING_VINES") || name.contains("PITCHER") + || name.contains("TORCHFLOWER") + || mat == Material.MELON_STEM || mat == Material.ATTACHED_MELON_STEM || mat == Material.PUMPKIN_STEM || mat == Material.ATTACHED_PUMPKIN_STEM; @@ -4734,15 +4736,15 @@ public class AreaProtection implements Listener { private boolean isCropSeed(Material mat) { String name = mat.name(); return name.contains("SEEDS") || name.contains("SAPLING") + || name.contains("STEM") || name.contains("PICKLE") || mat == Material.BAMBOO || mat == Material.SUGAR_CANE || mat == Material.CACTUS || mat == Material.COCOA_BEANS || mat == Material.NETHER_WART || mat == Material.KELP || mat == Material.TWISTING_VINES || mat == Material.WEEPING_VINES || mat == Material.CHORUS_FLOWER || mat == Material.SWEET_BERRY_BUSH - || mat == Material.MELON_STEM || mat == Material.ATTACHED_MELON_STEM - || mat == Material.PUMPKIN_STEM || mat == Material.ATTACHED_PUMPKIN_STEM || mat == Material.CARROT || mat == Material.POTATO - || mat == Material.BEETROOT_SEEDS || mat == Material.WHEAT_SEEDS; + || mat == Material.BEETROOT_SEEDS || mat == Material.WHEAT_SEEDS + || mat == Material.PITCHER_POD || mat == Material.TORCHFLOWER_SEEDS; } // ★ 检查是否为动物食物(包括玩家食物+动物专用食物)