From 2bdb577c89def38ab0c2d338eb1d159c9d02ef53 Mon Sep 17 00:00:00 2001 From: youpaishidifu Date: Fri, 10 Jul 2026 11:23:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20=E9=A2=86=E5=9C=B0?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=8B=A6=E6=88=AA=E8=88=B9/=E7=9F=BF?= =?UTF-8?q?=E8=BD=A6=E7=AD=89=E5=AE=9E=E4=BD=93=E6=94=BE=E7=BD=AE=E5=92=8C?= =?UTF-8?q?=E7=A0=B4=E5=9D=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Sdf1_login/AreaProtection.java | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/main/java/Sdf1_login/AreaProtection.java b/src/main/java/Sdf1_login/AreaProtection.java index d6c6185..7bb3775 100644 --- a/src/main/java/Sdf1_login/AreaProtection.java +++ b/src/main/java/Sdf1_login/AreaProtection.java @@ -4280,6 +4280,25 @@ public class AreaProtection implements Listener { } } + @EventHandler + public void onEntityPlace(org.bukkit.event.entity.EntityPlaceEvent e) { + if (!(e.getPlayer() instanceof Player)) return; + Player p = e.getPlayer(); + Location loc = e.getEntity().getLocation(); + AreaConfig ac = getArea( + p.getWorld().getName(), + loc.getBlockX(), + loc.getBlockY(), + loc.getBlockZ()); + if (ac == null) return; + + // 船、矿车等实体放置也受 denyBlockPlace 控制 + if (getEffectiveDeny(p, ac, "denyBlockPlace")) { + e.setCancelled(true); + p.sendMessage("§c§l[区域防护] §f禁止放置实体"); + } + } + @EventHandler public void onBlockBreak(BlockBreakEvent e) { Player p = e.getPlayer(); @@ -9619,6 +9638,24 @@ public class AreaProtection implements Listener { p.sendMessage("§c§l[区域防护] §f禁止破坏展示框"); return; } + + // 船、矿车等Vehicle破坏拦截 + if (entity instanceof org.bukkit.entity.Vehicle) { + if (!(e.getDamager() instanceof Player)) return; + Player p = (Player) e.getDamager(); + Location loc = entity.getLocation(); + AreaConfig ac = getArea( + p.getWorld().getName(), + loc.getBlockX(), + loc.getBlockY(), + loc.getBlockZ()); + if (ac == null) return; + if (getEffectiveDeny(p, ac, "denyBlockBreak")) { + e.setCancelled(true); + p.sendMessage("§c§l[区域防护] §f禁止破坏实体"); + } + return; + } } private AreaConfig findFrameArea(Entity frame) { Location loc = frame.getLocation();