领地拾取/丢弃权限重构: denyPickup/denyDrop → allowPickup/allowDrop(正向命名),修复访客权限检查
This commit is contained in:
@@ -530,8 +530,8 @@ public class AreaCLIManager {
|
||||
case "potion": oldState = land.denyPotion; land.denyPotion = !land.denyPotion; break;
|
||||
case "fire": oldState = land.denyFire; land.denyFire = !land.denyFire; break;
|
||||
case "fire_spread": oldState = land.denyFireSpread; land.denyFireSpread = !land.denyFireSpread; break;
|
||||
case "pickup": oldState = land.denyPickup; land.denyPickup = !land.denyPickup; break;
|
||||
case "drop": oldState = land.denyDrop; land.denyDrop = !land.denyDrop; break;
|
||||
case "pickup": oldState = land.allowPickup; land.allowPickup = !land.allowPickup; break;
|
||||
case "drop": oldState = land.allowDrop; land.allowDrop = !land.allowDrop; break;
|
||||
case "explosion": oldState = land.denyExplosion; land.denyExplosion = !land.denyExplosion; break;
|
||||
case "fall_damage": oldState = land.denyFallDamage; land.denyFallDamage = !land.denyFallDamage; break;
|
||||
case "hunger": oldState = land.denyHunger; land.denyHunger = !land.denyHunger; break;
|
||||
@@ -555,7 +555,6 @@ public class AreaCLIManager {
|
||||
|
||||
String permName = getPermNameByKey(permKey);
|
||||
boolean newState = !oldState;
|
||||
// ★ newState是deny值:true=禁止,false=允许
|
||||
p.sendMessage("§a已切换 §e" + permName + " §7→ " + (newState ? "§a已启用" : "§c已关闭"));
|
||||
}
|
||||
|
||||
@@ -586,8 +585,8 @@ public class AreaCLIManager {
|
||||
case "potion": return "denyPotion";
|
||||
case "fire": return "denyFire";
|
||||
case "fire_spread": return "denyFireSpread";
|
||||
case "pickup": return "denyPickup";
|
||||
case "drop": return "denyDrop";
|
||||
case "pickup": return "allowPickup";
|
||||
case "drop": return "allowDrop";
|
||||
case "explosion": return "denyExplosion";
|
||||
case "fall_damage": return "denyFallDamage";
|
||||
case "hunger": return "denyHunger";
|
||||
@@ -642,8 +641,8 @@ public class AreaCLIManager {
|
||||
perms.add(new PermItem("potion", "药水效果", !land.denyPotion));
|
||||
perms.add(new PermItem("fire", land.denyFire ? "禁止点燃" : "启用点燃", !land.denyFire));
|
||||
perms.add(new PermItem("fire_spread", "火焰蔓延", !land.denyFireSpread));
|
||||
perms.add(new PermItem("pickup", "禁止拾取", !land.denyPickup));
|
||||
perms.add(new PermItem("drop", "丢弃物品", !land.denyDrop));
|
||||
perms.add(new PermItem("pickup", "允许拾取", land.allowPickup));
|
||||
perms.add(new PermItem("drop", "允许丢弃", land.allowDrop));
|
||||
perms.add(new PermItem("explosion", "爆炸", !land.denyExplosion));
|
||||
perms.add(new PermItem("fall_damage", "摔落伤害", !land.denyFallDamage));
|
||||
perms.add(new PermItem("hunger", "饥饿", !land.denyHunger));
|
||||
@@ -679,8 +678,8 @@ public class AreaCLIManager {
|
||||
case "potion": return "药水效果";
|
||||
case "fire": return "点燃";
|
||||
case "fire_spread": return "火焰蔓延";
|
||||
case "pickup": return "禁止拾取";
|
||||
case "drop": return "丢弃物品";
|
||||
case "pickup": return "允许拾取";
|
||||
case "drop": return "允许丢弃";
|
||||
case "explosion": return "爆炸";
|
||||
case "fall_damage": return "摔落伤害";
|
||||
case "hunger": return "饥饿";
|
||||
@@ -1033,7 +1032,7 @@ public class AreaCLIManager {
|
||||
areaProtect.setPlayerPerm(landId, targetPlayer, denyField, newVal);
|
||||
|
||||
String permName = getPermNameByKey(permKey);
|
||||
p.sendMessage("§a已设置 §e" + targetPlayer + " §a的 §e" + permName + " §7→ " + (!newVal ? "§a允许" : "§c禁止"));
|
||||
p.sendMessage("§a已设置 §e" + targetPlayer + " §a的 §e" + permName + " §7→ " + (newVal ? "§a允许" : "§c禁止"));
|
||||
|
||||
// 刷新页面
|
||||
showPlayerPerm(p, landName, targetPlayer, page);
|
||||
@@ -1088,8 +1087,8 @@ public class AreaCLIManager {
|
||||
{"potion", "药水效果", "denyPotion"},
|
||||
{"fire", "点燃", "denyFire"},
|
||||
{"fire_spread", "火焰蔓延", "denyFireSpread"},
|
||||
{"pickup", "禁止拾取", "denyPickup"},
|
||||
{"drop", "丢弃物品", "denyDrop"},
|
||||
{"pickup", "允许拾取", "allowPickup"},
|
||||
{"drop", "允许丢弃", "allowDrop"},
|
||||
{"explosion", "爆炸", "denyExplosion"},
|
||||
{"fall_damage", "摔落伤害", "denyFallDamage"},
|
||||
{"hunger", "饥饿", "denyHunger"},
|
||||
@@ -1166,8 +1165,8 @@ public class AreaCLIManager {
|
||||
case "denyPotion": return land.denyPotion;
|
||||
case "denyFire": return land.denyFire;
|
||||
case "denyFireSpread": return land.denyFireSpread;
|
||||
case "denyPickup": return land.denyPickup;
|
||||
case "denyDrop": return land.denyDrop;
|
||||
case "denyPickup": return land.allowPickup;
|
||||
case "denyDrop": return land.allowDrop;
|
||||
case "denyExplosion": return land.denyExplosion;
|
||||
case "denyFallDamage": return land.denyFallDamage;
|
||||
case "denyHunger": return land.denyHunger;
|
||||
|
||||
@@ -468,7 +468,7 @@ public class AreaGUIManager implements Listener {
|
||||
{"容器管理", "denyContainer"}, {"玩家对战", "denyPVP"}, {"骑乘坐具", "denyMount"}, {"投掷末影珍珠", "denyEnderPearl"},
|
||||
{"投掷物", "denyThrownProjectiles"}, {"禁止袭击", "denyRaid"}, {"弓箭射击", "denyBow"},
|
||||
{"药水效果", "denyPotion"}, {"点燃", "denyFire"}, {"火焰蔓延", "denyFireSpread"},
|
||||
{"禁止拾取", "denyPickup"}, {"丢弃物品", "denyDrop"}, {"爆炸", "denyExplosion"},
|
||||
{"允许拾取", "allowPickup"}, {"允许丢弃", "allowDrop"}, {"爆炸", "denyExplosion"},
|
||||
{"摔落伤害", "denyFallDamage"}, {"饥饿", "denyHunger"}, {"所有伤害", "denyAllDamage"},
|
||||
{"所有效果", "denyAllEffects"}, {"禁止展示框", "denyItemFrame"}, {"红石电路", "denyRedstoneInteraction"},
|
||||
{"禁止门禁", "denyDoorInteraction"}, {"音频", "denyNoteblockJukebox"}, {"拴绳使用", "denyLead"},
|
||||
@@ -503,8 +503,14 @@ public class AreaGUIManager implements Listener {
|
||||
name = landDefault ? "禁止攻击生物" : "允许攻击生物";
|
||||
}
|
||||
|
||||
// enabled = true 表示"允许操作"(即deny=false)
|
||||
boolean allowed = !effective;
|
||||
// ★ 对于 allowPickup/allowDrop,enabled=true 表示"允许操作"(即 allow=true)
|
||||
// 其他权限,enabled = true 表示"允许操作"(即 deny=false)
|
||||
boolean allowed;
|
||||
if (field.equals("allowPickup") || field.equals("allowDrop")) {
|
||||
allowed = effective;
|
||||
} else {
|
||||
allowed = !effective;
|
||||
}
|
||||
Material mat = allowed ? Material.LIME_DYE : Material.GRAY_DYE;
|
||||
String status = allowed ? "§a✔ 允许" : "§c✘ 禁止";
|
||||
String overrideTag = isOverridden ? " §e★自定义" : " §7[默认]";
|
||||
@@ -555,8 +561,8 @@ public class AreaGUIManager implements Listener {
|
||||
case "denyPotion": return land.denyPotion;
|
||||
case "denyFire": return land.denyFire;
|
||||
case "denyFireSpread": return land.denyFireSpread;
|
||||
case "denyPickup": return land.denyPickup;
|
||||
case "denyDrop": return land.denyDrop;
|
||||
case "allowPickup": return land.allowPickup;
|
||||
case "allowDrop": return land.allowDrop;
|
||||
case "denyExplosion": return land.denyExplosion;
|
||||
case "denyFallDamage": return land.denyFallDamage;
|
||||
case "denyHunger": return land.denyHunger;
|
||||
@@ -637,8 +643,8 @@ public class AreaGUIManager implements Listener {
|
||||
perms.add(new PermEntry("药水效果", !land.denyPotion));
|
||||
perms.add(new PermEntry(land.denyFire ? "禁止点燃" : "启用点燃", !land.denyFire));
|
||||
perms.add(new PermEntry("火焰蔓延", !land.denyFireSpread));
|
||||
perms.add(new PermEntry("禁止拾取", !land.denyPickup));
|
||||
perms.add(new PermEntry("丢弃物品", !land.denyDrop));
|
||||
perms.add(new PermEntry("允许拾取", land.allowPickup));
|
||||
perms.add(new PermEntry("允许丢弃", land.allowDrop));
|
||||
perms.add(new PermEntry("爆炸", !land.denyExplosion));
|
||||
perms.add(new PermEntry("摔落伤害", !land.denyFallDamage));
|
||||
perms.add(new PermEntry("饥饿", !land.denyHunger));
|
||||
@@ -693,8 +699,8 @@ public class AreaGUIManager implements Listener {
|
||||
case "禁止点燃": land.denyFire = !land.denyFire; break;
|
||||
case "启用点燃": land.denyFire = !land.denyFire; break;
|
||||
case "火焰蔓延": land.denyFireSpread = !land.denyFireSpread; break;
|
||||
case "禁止拾取": land.denyPickup = !land.denyPickup; break;
|
||||
case "丢弃物品": land.denyDrop = !land.denyDrop; break;
|
||||
case "允许拾取": land.allowPickup = !land.allowPickup; break;
|
||||
case "允许丢弃": land.allowDrop = !land.allowDrop; break;
|
||||
case "爆炸": land.denyExplosion = !land.denyExplosion; break;
|
||||
case "摔落伤害": land.denyFallDamage = !land.denyFallDamage; break;
|
||||
case "饥饿": land.denyHunger = !land.denyHunger; break;
|
||||
@@ -1075,7 +1081,7 @@ public class AreaGUIManager implements Listener {
|
||||
{"容器管理", "denyContainer"}, {"玩家对战", "denyPVP"}, {"骑乘坐具", "denyMount"}, {"投掷末影珍珠", "denyEnderPearl"},
|
||||
{"投掷物", "denyThrownProjectiles"}, {"禁止袭击", "denyRaid"}, {"弓箭射击", "denyBow"},
|
||||
{"药水效果", "denyPotion"}, {"点燃", "denyFire"}, {"火焰蔓延", "denyFireSpread"},
|
||||
{"禁止拾取", "denyPickup"}, {"丢弃物品", "denyDrop"}, {"爆炸", "denyExplosion"},
|
||||
{"允许拾取", "allowPickup"}, {"允许丢弃", "allowDrop"}, {"爆炸", "denyExplosion"},
|
||||
{"摔落伤害", "denyFallDamage"}, {"饥饿", "denyHunger"}, {"所有伤害", "denyAllDamage"},
|
||||
{"所有效果", "denyAllEffects"}, {"禁止展示框", "denyItemFrame"}, {"红石电路", "denyRedstoneInteraction"},
|
||||
{"禁止门禁", "denyDoorInteraction"}, {"音频", "denyNoteblockJukebox"}, {"拴绳使用", "denyLead"},
|
||||
|
||||
@@ -977,7 +977,7 @@ public class AreaProtection implements Listener {
|
||||
ac.denyFallDamage = rs.getInt("deny_fall_damage") == 1;
|
||||
ac.denyHunger = rs.getInt("deny_hunger") == 1;
|
||||
ac.denyAllDamage = rs.getInt("deny_all_damage") == 1;
|
||||
ac.denyDrop = rs.getInt("deny_drop") == 1;
|
||||
ac.allowDrop = rs.getInt("deny_drop") == 1;
|
||||
ac.denyMount = rs.getInt("deny_mount") == 1;
|
||||
ac.denyEnderPearl = rs.getInt("deny_ender_pearl") == 1;
|
||||
ac.denyBow = rs.getInt("deny_bow") == 1;
|
||||
@@ -988,7 +988,7 @@ public class AreaProtection implements Listener {
|
||||
ac.denyAllEffects = rs.getInt("deny_all_effects") == 1;
|
||||
ac.denyItemFrame = rs.getInt("deny_item_frame") == 1;
|
||||
try { ac.denyMove = rs.getInt("deny_move") == 1; } catch (Exception ignored) {}
|
||||
try { ac.denyPickup = rs.getInt("deny_pickup") == 1; } catch (Exception ignored) {}
|
||||
try { ac.allowPickup = rs.getInt("deny_pickup") == 1; } catch (Exception ignored) {}
|
||||
try { ac.denyFire = rs.getInt("deny_fire") == 1; } catch (Exception ignored) {}
|
||||
try { ac.denyThrownProjectiles = rs.getInt("deny_thrown_projectiles") == 1; } catch (Exception ignored) {}
|
||||
try { ac.denyGlowing = rs.getInt("deny_glowing") == 1; } catch (Exception ignored) {}
|
||||
@@ -1315,7 +1315,7 @@ public class AreaProtection implements Listener {
|
||||
insertStmt.setInt(19, ac.denyFallDamage ? 1 : 0);
|
||||
insertStmt.setInt(20, ac.denyHunger ? 1 : 0);
|
||||
insertStmt.setInt(21, ac.denyAllDamage ? 1 : 0);
|
||||
insertStmt.setInt(22, ac.denyDrop ? 1 : 0);
|
||||
insertStmt.setInt(22, ac.allowDrop ? 1 : 0);
|
||||
insertStmt.setInt(23, ac.denyMount ? 1 : 0);
|
||||
insertStmt.setInt(24, ac.denyEnderPearl ? 1 : 0);
|
||||
insertStmt.setInt(25, ac.denyBow ? 1 : 0);
|
||||
@@ -1326,7 +1326,7 @@ public class AreaProtection implements Listener {
|
||||
insertStmt.setInt(30, ac.denyAllEffects ? 1 : 0);
|
||||
insertStmt.setInt(31, ac.denyItemFrame ? 1 : 0);
|
||||
insertStmt.setInt(32, ac.denyMove ? 1 : 0);
|
||||
insertStmt.setInt(33, ac.denyPickup ? 1 : 0);
|
||||
insertStmt.setInt(33, ac.allowPickup ? 1 : 0);
|
||||
insertStmt.setInt(34, ac.denyFire ? 1 : 0);
|
||||
insertStmt.setInt(35, ac.peaceMode ? 1 : 0);
|
||||
insertStmt.setInt(36, ac.peaceModeDuration / 1000); // 存秒
|
||||
@@ -1653,8 +1653,8 @@ public class AreaProtection implements Listener {
|
||||
ac.denyHunger = true;
|
||||
} else if (line.equals("禁止一切伤害")) {
|
||||
ac.denyAllDamage = true;
|
||||
} else if (line.equals("禁止丢弃物品")) {
|
||||
ac.denyDrop = true;
|
||||
} else if (line.equals("允许丢弃物品")) {
|
||||
ac.allowDrop = true;
|
||||
} else if (line.equals("禁止末影珍珠")) {
|
||||
ac.denyEnderPearl = true;
|
||||
} else if (line.equals("禁止使用弓箭")) {
|
||||
@@ -2501,7 +2501,7 @@ public class AreaProtection implements Listener {
|
||||
case "denyFallDamage": return ac.denyFallDamage;
|
||||
case "denyHunger": return ac.denyHunger;
|
||||
case "denyAllDamage": return ac.denyAllDamage;
|
||||
case "denyDrop": return ac.denyDrop;
|
||||
case "denyDrop": return ac.allowDrop;
|
||||
case "denyMount": return ac.denyMount;
|
||||
case "denyEnderPearl": return ac.denyEnderPearl;
|
||||
case "denyBow": return ac.denyBow;
|
||||
@@ -2511,7 +2511,7 @@ public class AreaProtection implements Listener {
|
||||
case "denyFireSpread": return ac.denyFireSpread;
|
||||
case "denyAllEffects": return ac.denyAllEffects;
|
||||
case "denyItemFrame": return ac.denyItemFrame;
|
||||
case "denyPickup": return ac.denyPickup;
|
||||
case "denyPickup": return ac.allowPickup;
|
||||
case "denyFire": return ac.denyFire;
|
||||
case "denyThrownProjectiles": return ac.denyThrownProjectiles;
|
||||
case "denyGlowing": return ac.denyGlowing;
|
||||
@@ -4326,13 +4326,18 @@ public class AreaProtection implements Listener {
|
||||
p.getLocation().getBlockX(),
|
||||
p.getLocation().getBlockY(),
|
||||
p.getLocation().getBlockZ());
|
||||
if (ac != null && getEffectiveDeny(p, ac, "denyDrop")) {
|
||||
if (ac != null && ac.allowDrop) {
|
||||
// allowDrop=true 表示允许丢弃,不阻止
|
||||
return;
|
||||
}
|
||||
// allowDrop=false 或 no land → 默认不允许丢弃
|
||||
if (ac != null) {
|
||||
e.setCancelled(true);
|
||||
p.sendMessage("§c§l[区域防护] §f禁止丢弃物品");
|
||||
}
|
||||
}
|
||||
|
||||
// ★ 拾取限制:denyPickup=true时禁止拾取地上物品(节流5~10秒随机提示)
|
||||
// ★ 拾取限制:allowPickup=true时允许拾取,false时禁止拾取
|
||||
@EventHandler
|
||||
public void onPlayerPickup(PlayerPickupItemEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
@@ -4341,7 +4346,12 @@ public class AreaProtection implements Listener {
|
||||
p.getLocation().getBlockX(),
|
||||
p.getLocation().getBlockY(),
|
||||
p.getLocation().getBlockZ());
|
||||
if (ac != null && getEffectiveDeny(p, ac, "denyPickup")) {
|
||||
if (ac != null && ac.allowPickup) {
|
||||
// allowPickup=true 表示允许拾取,不阻止
|
||||
return;
|
||||
}
|
||||
// allowPickup=false 或 no land → 默认禁止拾取
|
||||
if (ac != null) {
|
||||
e.setCancelled(true);
|
||||
// 节流:5~10秒随机间隔
|
||||
long now = System.currentTimeMillis();
|
||||
@@ -7796,7 +7806,7 @@ public class AreaProtection implements Listener {
|
||||
stmt.setInt(19, ac.denyFallDamage ? 1 : 0);
|
||||
stmt.setInt(20, ac.denyHunger ? 1 : 0);
|
||||
stmt.setInt(21, ac.denyAllDamage ? 1 : 0);
|
||||
stmt.setInt(22, ac.denyDrop ? 1 : 0);
|
||||
stmt.setInt(22, ac.allowDrop ? 1 : 0);
|
||||
stmt.setInt(23, ac.denyMount ? 1 : 0);
|
||||
stmt.setInt(24, ac.denyEnderPearl ? 1 : 0);
|
||||
stmt.setInt(25, ac.denyBow ? 1 : 0);
|
||||
@@ -7807,7 +7817,7 @@ public class AreaProtection implements Listener {
|
||||
stmt.setInt(30, ac.denyAllEffects ? 1 : 0);
|
||||
stmt.setInt(31, ac.denyItemFrame ? 1 : 0);
|
||||
stmt.setInt(32, ac.denyMove ? 1 : 0);
|
||||
stmt.setInt(33, ac.denyPickup ? 1 : 0);
|
||||
stmt.setInt(33, ac.allowPickup ? 1 : 0);
|
||||
stmt.setInt(34, ac.denyFire ? 1 : 0);
|
||||
stmt.setInt(35, ac.peaceMode ? 1 : 0);
|
||||
stmt.setInt(36, ac.peaceModeDuration / 1000);
|
||||
@@ -9784,13 +9794,13 @@ public class AreaProtection implements Listener {
|
||||
public boolean denyHunger = false;
|
||||
public boolean denyAllDamage = false;
|
||||
public boolean denyMount = false;
|
||||
public boolean denyDrop = false;
|
||||
public boolean allowDrop = false;
|
||||
public boolean denyEnderPearl = false;
|
||||
public boolean denyBow = false;
|
||||
public boolean denyPotion = false;
|
||||
public boolean denyExplosion = false;
|
||||
public boolean denyMove = false;
|
||||
public boolean denyPickup = false;
|
||||
public boolean allowPickup = false;
|
||||
public boolean denyFire = false;
|
||||
// ★ 新增投掷物权限(三叉戟、雪球、风蛋、箭)
|
||||
public boolean denyThrownProjectiles = false;
|
||||
@@ -9922,7 +9932,7 @@ public class AreaProtection implements Listener {
|
||||
if (denyFallDamage) c++;
|
||||
if (denyHunger) c++;
|
||||
if (denyAllDamage) c++;
|
||||
if (denyDrop) c++;
|
||||
if (allowDrop) c++;
|
||||
if (denyMount) c++;
|
||||
if (denyEnderPearl) c++;
|
||||
if (denyBow) c++;
|
||||
|
||||
@@ -516,7 +516,7 @@ public class TeleportManager implements Listener {
|
||||
// 记录请求创建时间
|
||||
teleportRequestTimes.put(sender + ":" + target.getName(), now);
|
||||
|
||||
// 通知发送者(Java版带撤回按钮,基岩版纯文本)
|
||||
// 通知发送者(Java版带撤回按钮,基岩版纯文本)——非自动接受时才打印
|
||||
if (isBedrockPlayer(player)) {
|
||||
player.sendMessage("§a[传送] 已向 §f" + targetName + " §a发送传送请求");
|
||||
// 显示请求剩余有效时间
|
||||
@@ -534,13 +534,10 @@ public class TeleportManager implements Listener {
|
||||
.hoverEvent(HoverEvent.showText(Component.text("点击撤回传送请求")))));
|
||||
}
|
||||
|
||||
// ★ 自动接受检查(先判断,避免打印多余通知)
|
||||
if (checkAutoAccept(target.getName(), sender, "tpa")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 通知接收者(可点击消息)——非自动接受时才打印
|
||||
sendClickableRequestNotice(target, sender);
|
||||
if (!checkAutoAccept(target.getName(), sender, "tpa")) {
|
||||
sendClickableRequestNotice(target, sender);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user