Tutorials/Block update detector

The Block Update Detector, or "BUD switch", is a redstone mechanism that exploits bugs and quirks in the game in order to detect changes in nearby blocks. There are many different designs, but they are all based on the same general idea: a redstone circuit is put in a state that should be unstable, but is stable due to some block within not being notified of changes in the circuit that would otherwise affect it. This lazy block then functions as the "sensor". When an adjacent block changes state in some way, it sends a notification to the sensor block and "wakes it up". The circuit then performs some other action and goes back into the sleeping state.

What it detects
The BUD switch detects the following events when they happen next to the sensor block:


 * Placement of blocks
 * Destruction of blocks
 * Re-flowing of water or lava
 * Freezing or melting of ice
 * Gravel or sand landing from a fall
 * Movement of blocks by pistons, and the movement of pistons themselves
 * Endermen picking up and putting down blocks
 * Sheep eating grass
 * Growth of plants other than trees, including:
 * Wheat
 * Mushrooms
 * Sugar Cane
 * Flowers
 * Tall Grass
 * Cactus
 * Pumpkins, Melons, and their stems
 * Nether wart
 * Leaf growth and decay
 * Growth and death of grass
 * Dirt becoming tilled soil, soil becoming moist, soil reverting to dirt (but this can be more easily detected with a repeater)
 * Fire igniting or burning out
 * Redstone ore starting to glow, or stopping
 * Changes in redstone state or power level, and activation of redstone devices
 * Setting the delay on a repeater
 * Getting in or out of a bed
 * A furnace starting to smelt, or finishing
 * Opening or closing a door, trapdoor, or Fence Gate
 * Inserting or removing Music Discs from a jukebox
 * Placing an Eye of Ender in an Ender Portal block
 * Rails changing orientation
 * TNT igniting and becoming an entity
 * Silverfish entering a block
 * Placing or retrieving water from a cauldron via glass bottle.
 * Placement of a glass bottle in a brewing stand
 * Cake being eaten

Water Based
This BUD switch takes advantage of the fact that water flows toward the nearest hole, but it doesn't notice new holes until it is updated for some other reason. The water source block acts as the sensor. Though charming, this design is outdated and is more complicated than newer designs.





Piston Based
Many BUD switch designs exploit a bug in the way pistons are powered. A piston can receive power through the space directly above it, as if it were two blocks high. In this case, the power source is either above and to the side of the piston, or two blocks above it. However, when powered in this way, the piston does not immediately notice changes in the state of the power source. When some other block update happens next to the piston, it will "wake up" and react to the change. By forming a loop, where the state of the piston controls the state of its power source, it becomes the sensor of a simple BUD switch:



In this design, the piston will only extend in response to an adjacent block update, but after extending it will immediately retract because the arm of the piston notices the repeater next to it turning off. This is how a piston BUD resets itself: by having the power run next to the extended piston arm, with a delay.

This design can be extended with multiple sensor blocks. All of the pistons in this design are sensors.



Stuck-Piston Based
The following designs work because pistons can't be pushed by other pistons while extended. And when a piston retracts, it doesn't notify any other pistons that were trying to push it. The piston with the block attached to it is sticky and acts as the sensor. This design has the advantage of a low profile, and also that the quirk it exploits is less "buggy" and less likely to be fixed in the future.





The latter design above can also be extended to an array in a variety of ways, including a one-wide design.





The stuck-piston principle can also be used to hide a BUD completely underground, as shown by this video: Underground BUD Switch

Detector Rail Based
It is possible to create a BUD switch by using detector rails and mine carts. Here's an example.

Stickless Piston Based
It is also possible to build a BUD switch without using sticky pistons, and instead using a second piston to reset the block to its original position.



Redstone Dust Based
Quirks with redstone power propagation can be exploited to make BUD switches. One advantage of these designs is that they are silent.

This simple design takes advantage of the strange properties of redstone dust placed on top of glowstone or upside-down slabs. The piece of dust on top of those blocks acts as the sensor. It does not work in all orientations.



The following less compact design exploits an older bug involving redstone power level decay. The lever is on. The long redstone wire can be routed in various ways, but its length must be exactly the same as in this example. The sensor is the piece of redstone dust on top of the diamond block. That piece of dust does not need to be raised above the rest, but doing so exposes more of its sides to detect block updates.



Variations
Other devices can be built using the same underlying principle as the BUD switch.

T-BUD
By eliminating the reset mechanism of a BUD switch, it becomes a T-BUD or Toggle-BUD. This device has two stable states, which it switches between when it detects a block update next to the piston. This is equivalent to a normal BUD connected to a T Flip-Flop, but much simpler to build. It is useful for tracking the state of blocks like furnaces, grass/dirt, and beds. However, it has useful capabilities for placing some blocks two blocks away. When placing a piece of redstone dust two blocks away, the t-bud activates when it is destroyed only. When placing a repeater two blocks away, the t-bud activates only on the placement.



History
The earliest known BUD switch is in this Minecraft Forums topic: 

The term "BUD switch" was later coined by Etho in this video: 

教程/方块更新感应器