Skip to content

Components

This page will document how individual redstone components operate.

MISSING

A lot of info and many edgecases are not yet documented here.

Redstone Dust

Redstone Dust propagates redstone signals via a floodfill algorithm. With each subsequent piece of dust, the power level lowers. This also ticks all surrounding blocks.

Redstone Torch

Redstone torches act as boolean not gates. They have a response delay of 2 gameticks.

Placement

All surrounding blocks are ticked when a Redstone Torch is placed or removed, but only when it's active. An inactive torch does not update surrounding blocks.

Metadata values

A torch uses its 4-bit values for its orientation.

Metadata valueAppearance
0-
1Attached to -X (Facing East)
2Attached to +X (Facing West)
3Attached to -Z (Facing South)
4Attached to +Z (Facing North)
5Attached to -Y (Facing Up)
6-15-

This, in turn, is used to determine where to check for a power source.

Burnout

Redstone Torches keep an internal list of update times. After 100 gameticks, an update entry will expire. If more than 8 updates occur within those 100 gameticks, the torch burns out.

It turns itself on again after the number of queued updates drops below 8 again.

Redstone Repeater

Redstone repeaters act as diodes. Additionally, they can be configured to delay a redstone signal by 2, 4, 6 or 8 gameticks.

Metadata values

A repeater uses its 4-bit values for 2 things, the lower 2-bits determine the orientation, while the upper 2-bits determine the delay of the repeater.

ValueDelay (ticks)Metadata value
0200xx
1401xx
2610xx
3811xx

Ticking

When the neighbor of a repeater updates, the following choice is made.

Is PoweredReceiving Power
-
Schedules block update in delay ticks
Schedules block update in delay ticks
-

When the repeater is then ticked, it first checks if it's receiving power from either Redstone dust or any other powered block. On its input side. From there it branches off into the following.

cpp
// Power off behavior
if (isPowered && !isReceivingPower) {
    SetBlock(BLOCK_REPEATER_OFF);
    return;
}
// Power on behavior
if (!isPowered) {
    SetBlock(BLOCK_REPEATER_ON);
    if (!isReceivingPower)
        ScheduleUpdate(BLOCK_REPEATER_ON, delay);
}

Piston

MISSING

TODO

Sticky Piston

MISSING

TODO