Tutorials/Quasi-connectivity

Quasi-connectivity is a property of dispensers, droppers, and pistons that allows them to be activated by anything that would activate the space above them, no matter what is actually in that space. While quasi-connectivity can be difficult to work around sometimes and might seem like a bug, it is officially "works as intended" and does make some builds much easier (for example, piston walls).

"Quasi-connectivity" means the block's activation is quasi-connected to the space above itself ("quasi-" means "seemingly" or "apparently"). Quasi-connectivity can be abbreviated as QC. Other terms used for this property include "connectivity", "piston connectivity" (as the property originated with pistons), "indirect power" (but that term is also sometimes used for activating mechanism components with an adjacent powered block), and "BUD-powered" (although quasi-connectivity and block update detectors are not synonymous).

Rather than repeating "dispensers, droppers, and pistons", this tutorial will discuss only pistons, but everything discussed here applies to dispensers and droppers as well.

Activation by normal methods
Before discussing activation by quasi-connectivity, let's discuss more general methods of activation.

Mechanism components (pistons, doors, redstone lamps, etc.) can be activated, which causes the mechanism component to do something (push a block, open the door, turn on, etc.).

All mechanism components are activated by:


 * an adjacent active power component, including above or below
 * Exceptions: a redstone torch will not activate a mechanism component it is attached to, and a piston is not activated by a power component directly in front of it


 * an adjacent powered opaque block (either strongly-powered or weakly-powered), including above or below
 * a powered redstone comparator or redstone repeater facing the mechanism component
 * powered redstone dust configured to point at the mechanism component (or on top of it, for mechanism components which can support redstone dust, but not beneath it), or adjacent "directionless" redstone dust; a mechanism component is not activated by adjacent powered redstone dust which is not configured to point at it.

Activation by quasi-connectivity
In addition to the normal methods of activation described above, pistons can also be activated if one of the methods above would activate a mechanism component in the block above the piston, even if there is no mechanism component there (even if the block above the component is air or a transparent block).

Another way to look at it is that pistons have an activation "shape" similar to doors. Anything that activates the top of a door also activates the bottom of the door, and anything that activates the space above a piston also activates the piston.

This method of activation is known as "quasi-connectivity" and is often simplified to saying that the components can be powered by blocks diagonally above or two blocks above, but other methods of such activation exist (described below).

Some methods of activation by quasi-connectivity ("QC activation", for short) will update the piston immediately ("immediate QC activation"), while others will put the piston into a state where it should be activated but doesn't know it yet so it will wait to activate until it is updated ("update QC activation").

Immediate QC activation
Immediate QC activation is the activation of a piston by quasi-connectivity which occurs immediately and doesn't require the piston to be separately updated. This only works with redstone components which can update other redstone components two blocks away from them.


 * Two block by taxicab distance


 * The following redstone components can activate mechanism components one block away, but will update all redstone components up to two blocks away (by taxicab distance):


 * This means that when these redstone components activate the space above a piston (one block away), they will also simultaneously update the piston as well (two blocks away). Redstone comparators and repeaters can only activate mechanism components adjacent to themselves horizontally, but redstone dust and torches can also activate mechanism components below themselves as well (redstone torches can also activate above, but that doesn't help for QC activation).


 * Neighbors of component and of attachment block


 * The following redstone components can activate mechanism components one block away, and will update redstone components adjacent to the block they are attached to (including above and below) as well as redstone components adjacent to themselves:
 * (attaches in any direction)
 * (attaches only downwards)
 * (attaches in any direction)
 * (attaches only downwards)
 * (doesn't actually attach, but updates as if attached to block beneath)
 * (attaches only sideways)
 * (attaches only downwards)


 * This means that when these redstone components are attached to a block beneath them, they can activate the space above a piston (one block away), and will also simultaneously update the piston as well (two blocks away). A trapped chest updates redstone components adjacent to the space beneath it, but doesn't need to be attached to any block (for example, like a pressure plate) — the other examples below use an upside-down slab instead of a block because a powered block would activate the pistons directly. A tripwire hook cannot be attached to a block beneath itself so cannot be used for immediate QC activation.

Other redstone components cannot update redstone components more than one block away so cannot be used for immediate QC activation, only for update QC activation.

Update QC activation
Update QC activation is the act of putting a piston into a state where it should activate by quasi-connectivity, but it hasn't received a redstone update so doesn't know it should activate — it will then wait to activate until it receives an update.


 * Powered block


 * A powered block can activate the space above a piston, from the side or from above, without updating the piston, producing an update QC activation:


 * A block of redstone acts like a powered block but can't be turned off, so the only way it can activate or deactivate pistons by quasi-connectivity is if it's moved into or out of a position where it would activate the space above the piston, either from the side or from above.


 * Neighbors of component and of attachment block


 * The following redstone components can activate mechanism components one block away, and will update redstone components adjacent to the block they are attached to (including above and below) as well as redstone components adjacent to themselves:
 * (attaches in any direction)
 * (attaches only downwards)
 * (attaches in any direction)
 * (attaches only downwards)
 * (doesn't actually attach, but updates as if attached to block beneath)
 * (attaches only sideways)
 * (attaches only downwards)


 * Of these redstone components, only buttons, levers, and tripwire hooks can attach sideways so can be used to produce an update QC activation. The others can be attached to a block beneath them, but then it's the block creating the update QC activation (described above).


 * Immediate neighbors


 * The following redstone components update only their immediate neighbors when they change their state, including above and below:
 * (can also activate tripwire hooks in valid tripwire circuit)
 * and Sticky Piston (from both the piston base and the piston head when extended)
 * (can also activate tripwire hooks in valid tripwire circuit)
 * and Sticky Piston (from both the piston base and the piston head when extended)


 * Of these redstone components, only a daylight sensor can activate the space above a piston and thus can be used to produce an update QC activation.

The redstone components which cannot be used to put a piston into a QC activation may still be useful for updating them. For example, tripwire will update adjacent blocks when an entity moves into or out of its space, tripwire hooks will randomly update their neighbors (and the neighbors of their attachment blocks) when they receive a block tick, and activator rails and powered rails are useful in that they will update adjacent blocks when activated or deactivated (thus updates can be controlled with redstone without directly powering neighbors).

Benefits of quasi-connectivity
Although somewhat difficult to understand, quasi-connectivity does offer many benefits.

More activation options
Because a piston can be activated in its own space or the space above it, there are simply more options when figuring out how to activate it.

Remote activation
Because a piston can be activated by anything that would activate the space above it, pistons can be activated from two spaces away while most redstone components can only be activated from one space away.

Block update detectors
Update QC activation can be used to create a block update detector: a redstone circuit which is triggered by a block update rather than a redstone power input.

A piston activated by quasi-connectivity is sometimes described as "BUD-powered". However, quasi-connectivity and block update detectors (BUDs) are neither synonymous nor even subsets of each other. There are methods of QC activation that do not produce block update detectors (for example, any immediate QC activation method) and there are block update detectors that do not depend on quasi-connectivity (for example, stuck-piston BUDs).

Torch keys
A torch key is a circuit which can react to the placement of a redstone torch in a particular location, even when the circuit is hidden beneath the ground. They are used to create a hidden method of activating another mechanism (for example, a piston door).

There are two primary methods of designing a torch key. The first is to place a block update detector under the ground so that the placement of a redstone torch will update the BUD -- however, BUDs can also be updated remotely by other redstone components, increasing the chances of discovery. The second method is to use immediate QC activation by placing the torch so that it simply activates a piston by quasi-connectivity.

Floating button
Similar to torch keys, but with an obvious input, a floating button is a button which doesn't appear to be connected to anything but can still be used. The strategy is to put a button far enough away that it can activate a piston by update QC activation and then repeatedly update the piston (without activating it) so that it responds quickly to the button turning on and off.

For example, the schematic on the left shows one way to build a floating button. The clock circuit on the left repeatedly powers and unpowers the powered rail next to the piston. When the powered rail changes state it will update the piston without activating it. If the piston is updated while the button has been pushed, it will extend because the button would activate a mechanism in the space above the piston. Similarly, if the piston is updated after the button pops back out, the piston will retract again.

A quieter floating button (right schematic) can be created by using a dropper instead of a piston and using it to push an item into a hopper which pushes it right back (unlike the dropper, the hopper isn't affected by redstone components two blocks above it), but briefly activates a comparator output. This version updates the dropper with a hopper clock, which is a little slower and thus slightly less responsive, but smaller than a torch-repeater clock.

Drawbacks of quasi-connectivity
Quasi-connectivity can make it difficult to do things above pistons compactly without also activating them. For example, you can't run redstone dust over a block on a piston because the dust will affect the piston even if the block is a top slab.

Work-arounds
There are a number of strategies for getting a signal over a piston without affecting the piston:


 * Go up a block and use redstone dust on a top slab:


 * Fastest transmission, but takes up the most vertical space.


 * "Insulate" the space below with a repeater or comparator


 * Adds minimum 1 tick delay to transmission, takes up two spaces above piston.


 * Move a cauldron to power a comparator


 * Adds 2.5 ticks delay to signal rising edge (1.5 ticks for piston extension, 1 tick for comparator) and 1 tick delay to signal falling edge, takes up only one space above piston. The difference in rising and falling edge delay will shorten pulses by 1.5 ticks. If the piston moving the cauldron gets a pulse shorter than 1.5 ticks, it will "drop" the cauldron in the extended position, turning on the output until the next time the input turns on and off again.