@EventHandler(priority = EventPriority.NORMAL)
	public void onBlockPistonRetract(BlockPistonRetractEvent event) {
		if (event.isCancelled())
			return;

		Block piston = event.getBlock();
		BlockState state = piston.getState();
		MaterialData data = state.getData();
		BlockFace direction = null;

		// Check the block it pushed directly
		if (data instanceof PistonBaseMaterial) {
			direction = ((PistonBaseMaterial) data).getFacing();
		}

		if (direction == null) {
			return;
		}

		// the block that the piston moved
		Block moved = piston.getRelative(direction, 2);

		if (plugin.isProtected(moved)) {
			plugin.debug("Blocking piston retract at " + event.getBlock().getWorld().getName() + " " + event.getBlock().getX() + " " + event.getBlock().getY()
				+ " " + event.getBlock().getZ());
			event.setCancelled(true);
		}

	}