Piston

Pistons are blocks capable of pushing or pulling adjacent blocks, depending on the direction they face. The original version of this feature was a mod posted on the Minecraft Forums by Hippoplatimus. Pistons were added in version 1.7, along with Sticky Pistons. Pistons are slightly altered from the original version, such that Pistons will not launch the player and other entities in the air. Pistons cannot move blocks like obsidian and bedrock to avoid abuse, and any blocks with tile entities, as moving blocks are stored as tile entities on the piston.

Piston functions include:
 * Pushing (and pulling if sticky) at least 1 block, and at most 12. Pulling will always only pull 1 block, while pushing will push between 1 and 12 blocks
 * Moving the player and other mobs
 * The ability to toggle fluid flows like a flood gate
 * Redstone triggered, so that en masse automated block is possible (e.g. piston walls and retractable bridges)
 * Pistons do not launch blocks, entities or mobs, but gravity-affected block do fall to the piston if the piston contracts under it
 * Pistons can be moved by other pistons, but only when the piston is not extended.

Bugs

 * When gravity-affected blocks are pushed over a hole in the ground and quickly pulled back again (or pushed away with another piston), a duplicate block appears in the hole.
 * Pushing a rose with a Piston causes the game to crash with a "Saving Chunks..." screen, and may also corrupt your world.