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

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

		if (data instanceof PistonBaseMaterial) {
			direction = ((PistonBaseMaterial) data).getFacing();
			Block block = event.getBlock().getRelative(direction);

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

				return;
			}
		}

		// if no direction was found, no point in going on
		if (direction == null) {
			return;
		}

		for (int i = 0; i < event.getLength() + 2; i++) {
			Block block = piston.getRelative(direction, i);

			// We don't want that!
			if (block.getType() == Material.AIR) {
				break;
			}

			if (plugin.isProtected(block)) {
				event.setCancelled(true);
				plugin.debug("Blocking piston extend at " + block.getWorld().getName() + " " + block.getX() + " " + block.getY() + " " + block.getZ());
				break;
			}
		}

	}