修复: 领地权限拦截船/矿车等实体放置和破坏
This commit is contained in:
@@ -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
|
@EventHandler
|
||||||
public void onBlockBreak(BlockBreakEvent e) {
|
public void onBlockBreak(BlockBreakEvent e) {
|
||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
@@ -9619,6 +9638,24 @@ public class AreaProtection implements Listener {
|
|||||||
p.sendMessage("§c§l[区域防护] §f禁止破坏展示框");
|
p.sendMessage("§c§l[区域防护] §f禁止破坏展示框");
|
||||||
return;
|
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) {
|
private AreaConfig findFrameArea(Entity frame) {
|
||||||
Location loc = frame.getLocation();
|
Location loc = frame.getLocation();
|
||||||
|
|||||||
Reference in New Issue
Block a user