diff --git a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java index 9822031ad..d6a8fcf0a 100644 --- a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java @@ -67,24 +67,15 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockPistonExtend(BlockPistonExtendEvent event) { BlockFace direction = event.getDirection(); - Block futureEmptyBlock = event.getBlock().getRelative(direction); // Block that would be air after piston is finished + Block movedBlock = event.getBlock(); + movedBlock = movedBlock.getRelative(direction, 2); - if (futureEmptyBlock.getType() == Material.AIR) { - return; - } - - List blocks = event.getBlocks(); - - for (Block b : blocks) { + for (Block b : event.getBlocks()) { if (BlockUtils.shouldBeWatched(b.getState()) && mcMMO.getPlaceStore().isTrue(b)) { - Block nextBlock = b.getRelative(direction); - mcMMO.getPlaceStore().setTrue(nextBlock); - //b.getRelative(direction).setMetadata(mcMMO.blockMetadataKey, mcMMO.metadataValue); + movedBlock = b.getRelative(direction); + mcMMO.getPlaceStore().setTrue(movedBlock); } } - - // Needed because blocks sometimes don't move when two pistons push towards each other - //new PistonTrackerTask(blocks, direction, futureEmptyBlock).runTaskLater(plugin, 2); } /** @@ -94,36 +85,15 @@ public class BlockListener implements Listener { */ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockPistonRetract(BlockPistonRetractEvent event) { - // event.isSticky() always returns false - // if (!event.isSticky()){ - // return; - // } - - // Sticky piston return PISTON_MOVING_PIECE and normal piston PISTON_BASE - if (event.getBlock().getType() != Material.PISTON_MOVING_PIECE) { - return; - } - // Get opposite direction so we get correct block - BlockFace direction = event.getDirection().getOppositeFace(); + BlockFace direction = event.getDirection(); Block movedBlock = event.getBlock().getRelative(direction); mcMMO.getPlaceStore().setTrue(movedBlock); - // If we're pulling a slime block, it might have something attached to it! - if (movedBlock.getRelative(direction).getState().getType() == Material.SLIME_BLOCK) { - for (Block block : event.getBlocks()) { - movedBlock = block.getRelative(direction); - mcMMO.getPlaceStore().setTrue(movedBlock); -// // Treat the slime blocks as if it is the sticky piston itself, because pulling -// // a slime block with a sticky piston is effectively the same as moving a sticky piston. - // new StickyPistonTrackerTask(direction, event.getBlock(), block).runTaskLater(plugin, 2); - } - - return; + for (Block block : event.getBlocks()) { + movedBlock = block.getRelative(direction); + mcMMO.getPlaceStore().setTrue(movedBlock); } - - // Needed only because under some circumstances Minecraft doesn't move the block - //new StickyPistonTrackerTask(direction, event.getBlock(), movedBlock).runTaskLater(plugin, 2); } /**