diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java index 4a9e1c9f07..5f11ddf0c5 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java @@ -70,6 +70,7 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; +import org.bukkit.block.PistonMoveReaction; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.type.Dispenser; import org.bukkit.block.data.type.Farmland; @@ -915,7 +916,7 @@ public void onBlockPistonExtend(BlockPistonExtendEvent event) { Location bloc = BukkitUtil.adapt(block1.getLocation()); if (bloc.isPlotArea() || bloc .add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ()) - .isPlotArea()) { + .isPlotArea() && block1.getPistonMoveReaction() != PistonMoveReaction.BREAK) { event.setCancelled(true); return; } @@ -935,11 +936,11 @@ public void onBlockPistonExtend(BlockPistonExtendEvent event) { for (Block block1 : event.getBlocks()) { Location bloc = BukkitUtil.adapt(block1.getLocation()); Location newLoc = bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ()); - if (!area.contains(bloc.getX(), bloc.getZ()) || !area.contains(newLoc)) { + if (!area.contains(bloc.getX(), bloc.getZ()) || !area.contains(newLoc) && block1.getPistonMoveReaction() != PistonMoveReaction.BREAK) { event.setCancelled(true); return; } - if (!plot.equals(area.getOwnedPlot(bloc)) || !plot.equals(area.getOwnedPlot(newLoc))) { + if (!plot.equals(area.getOwnedPlot(bloc)) || !plot.equals(area.getOwnedPlot(newLoc)) && block1.getPistonMoveReaction() != PistonMoveReaction.BREAK) { event.setCancelled(true); return; }