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 198710578..fafd51d27 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java @@ -890,6 +890,13 @@ public class BlockEventListener implements Listener { return; } } + if (block.getType() == Material.MOVING_PISTON + && event.getBlocks().isEmpty() + && location.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ()).isPlotArea()) { + // Headless sticky pistons can delete the block in front of them + // when retracting. Prevent this. + event.setCancelled(true); + } return; } Plot plot = area.getOwnedPlot(location); @@ -913,6 +920,13 @@ public class BlockEventListener implements Listener { return; } } + if (block.getType() == Material.MOVING_PISTON + && event.getBlocks().isEmpty() + && !plot.equals(area.getOwnedPlot(location.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ())))) { + // Headless sticky pistons can delete the block in front of them + // when retracting. Prevent this. + event.setCancelled(true); + } } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)