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 recognized as a feature that "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 discusses 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 review 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.). Most Minecrafters would just say they are "powered", but it can be useful to distinguish powered and activated.
All mechanism components are activated by:
* an adjacent active power component, including above or below
:Exceptions: a redstone torch does not activate a mechanism component it is attached to, and a piston is not activated by a power component directly in front of it
:Examples: Redstone torches don't power blocks that aren't above them, but can activate mechanism components in any space next to them. Levers and buttons don't power blocks they aren't attached to, but can activate mechanism components in any space next to them.
* 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 that can support redstone dust, but not beneath it), or adjacent "directionless" redstone dust; a mechanism component is not activated by adjacent powered redstone dust that 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 space 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"/"hitbox" 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" (QC) and is often simplified to saying that pistons can be powered by blocks diagonally above or two blocks above, but other methods of such activation exist (described below).
Where quasi-connectivity gets complicated is that it can cause states where a piston should be activated by QC … but doesn't know it. When redstone components change their state, they update other redstone component around them of the change so that they can update their state in response (for example, when a lever turns on, it updates nearby components that they should now be powered or activated). However, redstone components only update other blocks a maximum of two spaces away, but quasi-connectivity can create situations where a piston should be activated from a redstone component three spaces away. For example, a redstone component powering a block next to the space above a piston—the redstone component can activate the piston by QC but is three spaces away so does not provide an update to the piston.
Because of this update problem, some methods of activation by quasi-connectivity ("QC activation", for short) update the piston immediately ("immediate QC activation"), while others put the piston into a state where it should be activated but doesn't know it yet, so it waits to activate until it is updated ("update QC activation").
=== Immediate QC activation ===
Immediate QC activation is the activation of a piston by quasi-connectivity that occurs immediately and doesn't require the piston to be separately updated. This only works with redstone components that can update other redstone components two blocks away from them.
;Two blocks by taxicab distance
: The following redstone components can activate mechanism components one block away, but 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 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 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 downward)
:* (attaches in any direction)
:* (attaches only downward)
:* (doesn't actually attach, but updates as if attached to block beneath)
:* (attaches only sideways)
:* (attaches only downward)
: 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 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 then waits to activate until it receives an update.
Pistons can be updated in a number of ways:
* placing or destroying a block next to a piston
* moving a block next to a piston
* changing the state of some blocks next to a piston (for example, changing the delay on a repeater)
* changing some states of some redstone components within two spaces of a piston:
** changing the state of a redstone torch within two spaces of a piston
** changing the power level (but not the orientation) of redstone dust within two spaces of a piston
** changing the power level (but not the delay) of a repeater facing a space next to a piston
** changing the power level or changing the operating mode of a comparator facing a space next to a piston
;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 is 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 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 downward)
:* (attaches in any direction)
:* (attaches only downward)
:* (doesn't actually attach, but updates as if attached to block beneath)
:* (attaches only sideways)
:* (attaches only downward)
: 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)
:* 
:* 
: 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 that cannot be used to put a piston into a QC activation may still be useful for updating them. For example, a tripwire updates adjacent blocks when an entity moves into or out of its space, and activator rails and powered rails are useful in that they 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 that 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 that 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 updates 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 that 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 updates the piston without activating it. If the piston is updated while the button has been pushed, it extends 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 retracts 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, the player can't run redstone dust over a block on a piston because the dust affects the piston even if the block is a top slab.
=== Workarounds ===
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 ticks delay to signal rising edge (1 tick 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 shortens pulses by 1 tick. If the piston moving the cauldron gets a pulse shorter than 1.5 ticks, it drops the cauldron in the extended position, turning on the output until the next time the input turns on and off again.
Category:Redstone
ru:Квазисоединимость
zh:教程/半连接性