diff --git a/src/vg/civcraft/mc/citadel/listener/BlockListener.java b/src/vg/civcraft/mc/citadel/listener/BlockListener.java index 888cd885..30c0eab5 100644 --- a/src/vg/civcraft/mc/citadel/listener/BlockListener.java +++ b/src/vg/civcraft/mc/citadel/listener/BlockListener.java @@ -43,6 +43,7 @@ import org.bukkit.material.MaterialData; import org.bukkit.material.Openable; import org.bukkit.material.PistonBaseMaterial; +import org.bukkit.material.PressureSensor; import vg.civcraft.mc.citadel.Citadel; import vg.civcraft.mc.citadel.CitadelConfigManager; @@ -575,6 +576,27 @@ public void interact(PlayerInteractEvent pie) { } } + @EventHandler + public void onPlayerInteractEvent(PlayerInteractEvent event) { + Block block = event.getClickedBlock(); + if ((event.getAction() == Action.PHYSICAL) && (block instanceof PressureSensor)) { + Player player = event.getPlayer(); + for (BlockFace face : planar_sides) { + Block bf = block.getRelative(face); + if ((bf.getState().getData() instanceof Openable)) { + Reinforcement reinforcement = rm.getReinforcement(Utility.getRealBlock(bf)); + if ((reinforcement instanceof PlayerReinforcement)) { + PlayerReinforcement playerReinforcement = (PlayerReinforcement) reinforcement; + if (!playerReinforcement.isAccessible(player, PermissionType.DOORS)) { + event.setCancelled(true); + break; + } + } + } + } + } + } + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void chunkLoadEvent(ChunkLoadEvent event) { Chunk chunk = event.getChunk();