Upon a general block update
Diode updating behaviour
Repeaters and Comparators inherit code from the redstone diode class. This section will explain the behaviour of redstone diodes.
When a diode gets updated it will check whether the block below it has a solid top surface. This is the case for all solid blocks, redstone blocks and all kinds of upside-down slabs. If the block below has no solid top surface the diode will get destroyed, drop as an item, and update all blocks directly around it. If the block below has a solid top surface the diode will check whether the redstone power of the block the diode is facing away from is greater than 0 and the diode is in a unpowered state, or whether the power of the block the diode is facing away from is 0 and the diode is in a powered state. If either should be the case the diode will do something depending on whether it´s a repeater or comparator.
Repeater specific updating behaviour
Repeaters will additionally check, whether a strong power source is pointing into them from the side (and as far as I can tell only repeaters and comparators can be a sidewards facing strong power source), and the repeater will do nothing if that should be the case (this behaviour is known as repeater locking). After doing all the checks, a new tile tick will be created inside the position of the repeater. The priority of the tile tick is -1 under normal circumstances, -3 if the repeater is directly facing into another diode, and -2 if the repeater is in a powered state when the tile tick gets created. The delay of the tile tick is 2 multiplied by the setting (called field_176410_b in the code) of the repeater. The id of the tile tick will have the same id as the repeater block.
If the player who right-clicked the repeater is capable of editing the world, the setting (called field_176410_b in the code) of the repeater will be cycled once. The setting of the repeater can be any number from 1 to 4. If the setting is cycled once the setting will be increased by 1, and go back to the beginning if the setting would exceed the maximum. Additionally all the normal stuff that happens upon rightclicking, like updating the block and resynchronization of the block happens.
When being updated by a tile tick
If a strong power source is pointing into the repeater from the side, the repeater will do nothing (this behaviour is known as repeater locking). If that´s not the case the following things will happen, depending on the state of the repeater.
Repeater is in a powered state
If the power of the block the repeater is facing away from is 0 and the powered repeater is in a powered state, he will change his state to an unpowered state. If the power of the block the repeater is facing away from is greater than 0 and the repeater is in a powered state nothing will happen.
Repeater is in an unpowered state
If the repeater is in a unpowered state, he will change his state to a powered state. If the power of the block the repeater is facing away from is 0 another tile tick will be scheduled. The priority of the tile tick will always be -1, the delay will be 2 multiplied by the setting (called field_176410_b in the code) of the repeater, and the id will be the one of the repeater block.
Repeater locking and lock-o-stables/pulse extenders
A repeater lock occurs if a strong power source (basically any power source which can turn on redstone through a block) is pointing into the side of a repeater. If the strong power source is a repeater, the locked repeater will additionally render a little bedrock box, however comparators can also lock repeaters without this visual effect. In this state the repeater will be unable to create tile ticks, and will also ignore updates from tile ticks, so the repeater will never change state while locked. Basically, if the repeater is unpowered and locked, it won´t turn on upon recieving redstone power and if it is already powered and then locked, it will remain in the powered state even if doesn´t recieve power anymore. These repeater locks can be used for a small silent falling edge monostable circuit,(hence the name lock-o-stable) or they can be used to extend a redstone signal/pulse length.
Since repeaters facing into other diodes have a -3 tile tick priority, the repeater on the right will always lock the repeater before the repeater on the left turns on, and will also always unlock the repeater before the repeater on the left turns off. This might not work if a pulse of a length of 2 gticks or shorter is applied, since the tile tick priorities of both repeaters might become -1 for turning off in this situation, allowing the repeater on the left to turn off before the repeater on the right unlocked the repeater. Repeater locks have adjustable pulse lengths because of the adjustable delays on repeaters. Having the 2 repeaters locking and powering the repeater on the same delay will deliver a 1 tick pulse on the falling edge. The repeater that powers the locked repeater can have 1 more tick of delay than the locking repeater, and it will still delive a 1 tick pulse. If it has 2 ticks more delay, it will deliver a 2 tick pulse. If it has 3 ticks more delay, it will deliver a 3 tick pulse. For a longer pulse length, you would need more repeaters to power the locked repeater.
Similar mono-stables can be made using a mixture of comparators and repeaters. For this, see Redstone Comparators
Current known unexpected behaviours.
- When a powered chain of 1 tick repeaters which is X blocks long is pulsed off for 1 tick, the last repeater in the chain will never turn off. This is because the last repeater will have a -2 tile tick priority for turning off, while all other repeaters have a -3 priority for both turning on and off. So the penulitmate repeater will turn on again, before the last repeater turns off, meaning the last repeater will stay on.
- In certain location/orientations, lock-o-stables will not give a pulse as they are supposed to. This can also happen when the block directly above the repeaters is not an air block.
- Certain redstone contraptions will not work with/without a repeater input. This is however more a property of the contraption, than a behaviour of repeaters.