Redstone Comparator

A redstone comparator is a block used in redstone circuits to maintain, compare, or subtract signal strength, or to measure certain block states (primarily the fullness of containers).

Obtaining
To remove a redstone comparator, it. A redstone comparator can be broken instantly with anything, and drops itself as an item.

A redstone comparator will also be removed and drop itself as an item:
 * if its attachment block is moved, removed, or destroyed.
 * if water flows into its space.
 * if a piston tries to push it or moves a block into its space.

If lava flows into a redstone comparator's space, the redstone comparator will be destroyed without dropping itself as an item.

Usage
A redstone comparator can be placed on the top of any opaque block with a solid full-height top surface (including upside-down slabs and upside-down stairs). In Bedrock Edition, a comparator can also be placed on walls and fences. For more information about placement on transparent blocks, see Opacity/Placement. To place a redstone comparator, use the control.

The redstone comparator has a front and a back — the arrow on the top of the comparator points to the front. When placed, the comparator will face away from the player. The comparator has two miniature redstone torches at the back and one at the front. The back torches turn on when the comparator's output is greater than zero (the arrow on top also turns red). The front torch has two states which can be toggled with the control:
 * Down and unpowered (indicating the comparator is in "comparison mode")
 * Up and powered (indicating the comparator is in "subtraction mode")

The redstone comparator can take a signal strength input from its rear as well as from both sides. Side inputs are only accepted from redstone dust, redstone repeaters, and other comparators. The redstone comparator's front is its output.

It takes 1 redstone tick (2 game ticks, or 0.1 seconds barring lag) for signals to move through a redstone comparator, either from the rear or from the sides. This applies to changing signal strengths as well as simply to turning on and off. Redstone comparators usually will not respond to 1-tick fluctuations of power or signal strength — for example, a 1-clock input will be treated as always off from the side, and always on from the rear.

The redstone comparator has four functions: maintain signal strength, compare signal strength, subtract signal strength, and measure certain block states (primarily the fullness of containers).

Maintain signal strength
A redstone comparator with no powered side inputs will output the same signal strength as its rear input.

Compare signal strength
A redstone comparator in comparison mode (front torch down and unpowered) will compare its rear input to its two side inputs. If either side input is greater than the rear input, the comparator output turns off. If neither side input is greater than the rear input, the comparator outputs the same signal strength as its rear input.

Subtract signal strength
A redstone comparator in subtraction mode (front torch up and powered) will subtract the signal strength of the highest side input from the signal strength of the rear input.

in summary : Output = Rear - Max(Left,Right)

For example, if Signal of the left is 6, the right is 7 and the rear is 4 then the result should be : 4 - Max(6,7) = 4-7 = 0

If the signal of the rear is 9, the right is 2 and the left is 5 then the result should be : 9 - Max(2,5) = 9-5 = 4

Measure block state
A redstone comparator will treat certain blocks behind it as power sources and output a signal strength proportional to the block's state. The comparator may be separated from the measured block by a solid block. However, in Java Edition, if the solid block is powered to signal strength 15 the comparator will output 15 no matter the fullness of the container.

Containers
A redstone comparator used to measure the state of a container outputs a signal strength in proportion to how full the container is (0 for empty, 15 for full, etc.).

Containers which can be measured by a comparator include:
 * on top of a detector rail
 * on top of a detector rail
 * Large chest
 * Large trapped chest
 * (any color)
 * on top of a detector rail
 * on top of a detector rail
 * Large chest
 * Large trapped chest
 * (any color)
 * on top of a detector rail
 * Large chest
 * Large trapped chest
 * (any color)
 * (any color)

Generally speaking, the comparator output signal strength represents the average fullness of the slots, based on how many of that item form a full stack (64, 16, or 1 for non-stackable items).

The Minimum Items for Container Signal Strength table (right) shows the minimum number of 64-stackable items required to produce the different signal strengths from each type of container. Numbers followed by an "s" or "i" indicate the number of full 64-stack equivalents ("s"), and additional items less than a stack ("i") required. For items which stack in 16s (snowballs, signs, ender pearls, etc.), divide the "i" number by 4 and round up. Each non-stackable item counts as one full-stack.

For example, to produce a signal strength of 10 from a hopper requires the equivalent of 3 full stacks plus 14 more items, which is 206 items total, assuming they all stack in 64.

When a comparator measures a large chest or large trapped chest, it measures the entire large chest (54 slots), not just the half directly behind the comparator. A chest or trapped chest which cannot be opened (either because it has an opaque block or ocelot above it) will always produce an output of 0 no matter how many items are in the container — shulker boxes can always be measured, even if they cannot open.


 * Calculating signal strength from items


 * When a container is empty, the output is off.


 * When it is not empty, the output signal strength is calculated as follows:






 * Example: 300 blocks in a dispenser (which has 9 slots), where each block stacks to a maximum of 64, produces output with a signal strength of 8:

1 + ((300 items / 64 items per slot) / 9 slots) * 14 = 8.292, floored is 8


 * Note that a non-stackable item is counted as a full slot (1 item in a slot, with a max stack size of 1: 1 / 1 = 1.0), and items which stack up to 16 (such as ender pearls and snowballs and eggs) are similarly considered a full slot at 16.


 * Calculating items from signal strength


 * It can be useful in redstone circuits to use containers with comparators to create signals of a specific strength. The number of items required in a container to produce a signal of desired strength is calculated as follows:




 * Example: To use a furnace (which has 3 slots) to create a strength 9 signal, players need 110 items:

max(9, (3*64/14)*(9-1)) = 109.714, rounded up is 110

Miscellaneous
Some non-container blocks can also be measured by a redstone comparator:




 * A cake outputs a signal strength relative to the amount of cake remaining. Each slice is worth 2 signal strength, with 7 total slices, for an output of 14 for a full cake.




 * A cauldron outputs different signal strengths depending on how much water is inside. From completely empty to completely full, the output values are 0, 1, 2, and 3.




 * A composter outputs different signal strengths depending on the level inside. From completely empty to completely full, the output values are 0, 1, 2, 3, 4, 5, 6, 7 and 8.




 * A command block stores the "success count" of the last command executed, which represents the number of times the most recently used command of this command block succeeded. A "success" is defined by the command's success conditions: if a red error message is returned in the chat, the command was not successful.


 * Most commands can only succeed once per execution, but certain commands (such as those which accept players as arguments) can succeed multiple times, and the comparator will output the number of times it succeeded (maximum 15).


 * A command block continues to store the success count of the last command executed until it executes its command again, thus the comparator will continue to output the same signal strength even after the command block is no longer being activated (it doesn't turn off when the signal to the command block turns off).




 * An end portal frame outputs a full signal of 15 if it contains an eye of ender and zero otherwise.




 * A comparator can measure the state of an item frame's contents. An item frame comparator will output 0 if the item frame is empty, or 1 to 8 for any item depending on its rotation: 1 at initial placement, plus 1 for each 45° of rotation for a maximum of 8.


 * The comparator must be placed behind the block the item frame is attached to, facing away from the item frame. The block must be a full block, and the item frame cannot be submerged in water.




 * A jukebox outputs a signal strength which indicates which music disc is currently playing. For which music disc produce which signal strengths, see the Minimum Items for Container Signal Strength table above.




 * A lectern outputs a signal strength which depending on what page the player is currently on. (e.g. a book with 15 pages will power 1 redstone level per page, or one with 5 pages will emit 3 signal strength per page.)


 * and


 * A hive outputs a signal strength equal to the amount of honey in the hive.

Data values
A redstone comparator is defined by its ID, block data, and block entity. A redstone comparator also has a block state which is expected to replace the functionality of block data in a future version.

Block data
In Bedrock Edition, redstone comparators use the following data values:

Block entity
A redstone comparator has a block entity associated with it that holds additional data about the block.

Trivia

 * Comparators have no bottom texture, which means they will appear see-through when viewed from below.