Files
wireless-docs/content/block-event-delay.typ
2026-07-29 10:11:59 -04:00

417 lines
12 KiB
Typst

#import "/lib.typ": diorama, example, note, todo
#show raw.where(lang: "mc-diorama"): it => diorama(autoplay: true, loop: true, theta: 160, phi: 20, it.text)
= Block Event Delay
Block Event Delay is not a complete substitute for tilesets, but it can significantly reduce the
required length of tilesets and compact repetetive systems. It is based on a behavior of piston push
lists which repeats a given global order for multiple components. A smaller tileset can set a
'template' ordering for a few components, then BED can trivially 'repeat' that order for a
subsequent set of components.
#show raw.where(lang: "mc-diorama"): it => diorama(
autoplay: true,
loop: true,
radius: 5,
theta: 160,
it.text,
)
```mc-diorama
p -1 0 0 observer facing=west powered=false
p 0 0 -1 piston facing=down extended=false
p 0 0 0 light_gray_terracotta
p 0 1 0 redstone_wire east=side west=side power=0
p 1 -1 -1 piston facing=up extended=false
p 1 0 -2 observer facing=south powered=false
p 1 0 0 light_gray_terracotta
p 1 1 0 redstone_wire east=side west=side power=0
p 2 -1 -1 piston facing=up extended=false
p 2 0 -2 observer facing=south powered=false
p 2 0 0 light_gray_terracotta
p 2 1 0 redstone_wire east=side west=side power=0
p 3 -1 -1 piston facing=up extended=false
p 3 0 -2 observer facing=south powered=false
p 3 0 0 light_gray_terracotta
p 3 1 0 redstone_wire east=side west=side power=0
p 4 -1 -1 piston facing=up extended=false
p 4 0 -2 observer facing=south powered=false
p 4 0 0 light_gray_terracotta
p 4 1 0 redstone_wire east=side west=side power=0
t 0
p -1 0 0 powered=true
p 0 1 0 power=15
p 1 1 0 power=14
p 2 1 0 power=13
p 3 1 0 power=12
p 4 1 0 power=11
t 1
p 0 0 -1 extended=true
p 0 -0.5 -1 piston_head facing=down short=true type=normal
p 1 -1 -1 extended=true
p 1 -0.5 -1 piston_head facing=up short=true type=normal
p 2 -1 -1 extended=true
p 2 -0.5 -1 piston_head facing=up short=true type=normal
p 3 -1 -1 extended=true
p 3 -0.5 -1 piston_head facing=up short=true type=normal
p 4 -1 -1 extended=true
p 4 -0.5 -1 piston_head facing=up short=true type=normal
t 2
p -1 0 0 powered=false
p 0 1 0 power=0
p 1 1 0 power=0
p 2 1 0 power=0
p 3 1 0 power=0
p 4 1 0 power=0
p 0 -1 -1 piston_head facing=down short=false type=normal
p 1 0 -1 piston_head facing=up short=false type=normal
p 2 0 -1 piston_head facing=up short=false type=normal
p 3 0 -1 piston_head facing=up short=false type=normal
p 4 0 -1 piston_head facing=up short=false type=normal
p 0 -0.5 -1 air
p 1 -0.5 -1 air
p 2 -0.5 -1 air
p 3 -0.5 -1 air
p 4 -0.5 -1 air
p 1 0 -2 powered=true
p 2 0 -2 powered=true
p 3 0 -2 powered=true
p 4 0 -2 powered=true
t 3
p 0 -1 -1 air
p 1 0 -1 air
p 2 0 -1 air
p 3 0 -1 air
p 4 0 -1 air
p 0 -0.5 -1 piston_head facing=down short=true type=normal
p 1 -0.5 -1 piston_head facing=up short=true type=normal
p 2 -0.5 -1 piston_head facing=up short=true type=normal
p 3 -0.5 -1 piston_head facing=up short=true type=normal
p 4 -0.5 -1 piston_head facing=up short=true type=normal
t 4
p 0 -0.5 -1 air
p 1 -0.5 -1 air
p 2 -0.5 -1 air
p 3 -0.5 -1 air
p 4 -0.5 -1 air
p 0 0 -1 extended=false
p 1 -1 -1 extended=false
p 2 -1 -1 extended=false
p 3 -1 -1 extended=false
p 4 -1 -1 extended=false
p 1 0 -2 powered=false
p 2 0 -2 powered=false
p 3 0 -2 powered=false
p 4 0 -2 powered=false
t 20
p 0 0 0
```
#show raw.where(lang: "mc-diorama"): it => diorama(
autoplay: true,
loop: true,
radius: 5,
theta: 180,
phi: 0,
it.text,
)
```
prefix | BED -->
00 | A D G J ...
01 | B E H K ...
10 | C F I L ...
```
#show raw.where(lang: "mc-diorama"): it => diorama(
autoplay: true,
loop: true,
radius: 9,
phi: 30,
theta: 110,
speed: 0.4,
it.text,
)
```mc-diorama
p 0 0 -2 observer facing=south powered=false
p 1 0 -2 observer facing=south powered=false
p 2 0 -2 observer facing=south powered=false
p 3 0 -2 observer facing=south powered=false
p 0 -1 -1 piston facing=up extended=false
p 1 -1 -1 piston facing=up extended=false
p 2 -1 -1 piston facing=up extended=false
p 3 -1 -1 piston facing=up extended=false
p 4 0 -1 piston facing=down extended=false
p -3 -1 0 smooth_stone_slab type=top
p -2 -1 0 smooth_stone_slab type=top
p -1 -1 0 smooth_stone_slab type=top
p -3 0 0 repeater facing=west powered=false locked=false delay=1
p -2 0 0 comparator facing=west powered=false mode=compare
p -1 0 0 observer facing=west powered=false
p 0 0 0 light_gray_terracotta
p 1 0 0 light_gray_terracotta
p 2 0 0 light_gray_terracotta
p 3 0 0 light_gray_terracotta
p 4 0 0 light_gray_terracotta
p 0 1 0 redstone_wire east=side west=side power=0
p 1 1 0 redstone_wire east=side west=side power=0
p 2 1 0 redstone_wire east=side west=side power=0
p 3 1 0 redstone_wire east=side west=side power=0
p 4 1 0 redstone_wire east=side west=side power=0
p 0 0 2 observer facing=south powered=false
p 1 0 2 observer facing=south powered=false
p 2 0 2 observer facing=south powered=false
p 3 0 2 observer facing=south powered=false
p 0 -1 3 piston facing=up extended=false
p 1 -1 3 piston facing=up extended=false
p 2 -1 3 piston facing=up extended=false
p 3 -1 3 piston facing=up extended=false
p 4 0 3 piston facing=down extended=false
p -3 -1 4 smooth_stone_slab type=top
p -2 -1 4 smooth_stone_slab type=top
p -1 -1 4 smooth_stone_slab type=top
p -3 0 4 comparator facing=west powered=false mode=compare
p -2 0 4 repeater facing=west powered=false locked=false delay=1
p -1 0 4 observer facing=west powered=false
p 0 0 4 cyan_terracotta
p 1 0 4 cyan_terracotta
p 2 0 4 cyan_terracotta
p 3 0 4 cyan_terracotta
p 4 0 4 cyan_terracotta
p 0 1 4 redstone_wire east=side west=side power=0
p 1 1 4 redstone_wire east=side west=side power=0
p 2 1 4 redstone_wire east=side west=side power=0
p 3 1 4 redstone_wire east=side west=side power=0
p 4 1 4 redstone_wire east=side west=side power=0
p 0 0 6 observer facing=south powered=false
p 1 0 6 observer facing=south powered=false
p 2 0 6 observer facing=south powered=false
p 3 0 6 observer facing=south powered=false
p 0 -1 7 piston facing=up extended=false
p 1 -1 7 piston facing=up extended=false
p 2 -1 7 piston facing=up extended=false
p 3 -1 7 piston facing=up extended=false
p 4 0 7 piston facing=down extended=false
p 5 -1 8 smooth_stone_slab type=top
p 6 -1 8 smooth_stone_slab type=top
p 7 -1 8 smooth_stone_slab type=top
p 0 0 8 white_terracotta
p 1 0 8 white_terracotta
p 2 0 8 white_terracotta
p 3 0 8 white_terracotta
p 4 0 8 white_terracotta
p 5 0 8 observer facing=east powered=false
p 6 0 8 repeater facing=east powered=false locked=false delay=1
p 7 0 8 repeater facing=east powered=false locked=false delay=1
p 0 1 8 redstone_wire east=side west=side power=0
p 1 1 8 redstone_wire east=side west=side power=0
p 2 1 8 redstone_wire east=side west=side power=0
p 3 1 8 redstone_wire east=side west=side power=0
p 4 1 8 redstone_wire east=side west=side power=0
t 1
p -3 0 0 powered=true
p -3 0 4 powered=true
p 7 0 8 powered=true
t 3
p -2 0 0 powered=true
p -2 0 4 powered=true
p 6 0 8 powered=true
t 6
p -3 0 0 powered=false
p -3 0 4 powered=false
p 7 0 8 powered=false
t 8
p 5 0 8 powered=true
p 0 1 8 power=15
p 1 1 8 power=14
p 2 1 8 power=13
p 3 1 8 power=12
p 4 1 8 power=11
t 9
p -1 0 4 powered=true
p 0 1 4 power=15
p 1 1 4 power=14
p 2 1 4 power=13
p 3 1 4 power=12
p 4 1 4 power=11
t 10
p -1 0 0 powered=true
p 0 1 0 power=11
p 1 1 0 power=12
p 2 1 0 power=13
p 3 1 0 power=14
p 4 1 0 power=15
t 11
p 4 0 7 extended=true
p 4 -1 7 piston_head type=normal facing=down short=false
t 12
p 4 0 3 extended=true
p 4 -1 3 piston_head type=normal facing=down short=false
t 13
p 4 0 -1 extended=true
p 4 -1 -1 piston_head type=normal facing=down short=false
t 14
p 3 -1 7 extended=true
p 3 0 7 piston_head type=normal facing=up short=false
t 15
p 3 -1 3 extended=true
p 3 0 3 piston_head type=normal facing=up short=false
t 16
p 3 -1 -1 extended=true
p 3 0 -1 piston_head type=normal facing=up short=false
t 17
p 2 -1 7 extended=true
p 2 0 7 piston_head type=normal facing=up short=false
t 18
p 2 -1 3 extended=true
p 2 0 3 piston_head type=normal facing=up short=false
t 19
p 2 -1 -1 extended=true
p 2 0 -1 piston_head type=normal facing=up short=false
t 20
p 1 -1 7 extended=true
p 1 0 7 piston_head type=normal facing=up short=false
t 21
p 1 -1 3 extended=true
p 1 0 3 piston_head type=normal facing=up short=false
t 22
p 1 -1 -1 extended=true
p 1 0 -1 piston_head type=normal facing=up short=false
t 23
p 0 -1 7 extended=true
p 0 0 7 piston_head type=normal facing=up short=false
t 24
p 0 -1 3 extended=true
p 0 0 3 piston_head type=normal facing=up short=false
t 25
p 0 -1 -1 extended=true
p 0 0 -1 piston_head type=normal facing=up short=false
t 26
p -2 0 0 powered=false
p -2 0 4 powered=false
p 6 0 8 powered=false
t 28
p 5 0 8 powered=false
p 0 1 8 power=0
p 1 1 8 power=0
p 2 1 8 power=0
p 3 1 8 power=0
p 4 1 8 power=0
t 29
p -1 0 4 powered=false
p 0 1 4 power=0
p 1 1 4 power=0
p 2 1 4 power=0
p 3 1 4 power=0
p 4 1 4 power=0
t 30
p -1 0 0 powered=false
p 0 1 0 power=0
p 1 1 0 power=0
p 2 1 0 power=0
p 3 1 0 power=0
p 4 1 0 power=0
t 31
p 3 0 6 powered=true
t 32
p 3 0 2 powered=true
t 33
p 3 0 -2 powered=true
t 34
p 2 0 6 powered=true
t 35
p 2 0 2 powered=true
t 36
p 2 0 -2 powered=true
t 37
p 1 0 6 powered=true
t 38
p 1 0 2 powered=true
t 39
p 1 0 -2 powered=true
t 40
p 0 0 6 powered=true
t 41
p 0 0 2 powered=true
t 42
p 0 0 -2 powered=true
t 43
p 4 0 7 extended=false
p 4 -1 7 air
t 44
p 4 0 3 extended=false
p 4 -1 3 air
t 45
p 4 0 -1 extended=false
p 4 -1 -1 air
t 46
p 3 -1 7 extended=false
p 3 0 7 air
t 47
p 3 -1 3 extended=false
p 3 0 3 air
t 48
p 3 -1 -1 extended=false
p 3 0 -1 air
t 49
p 2 -1 7 extended=false
p 2 0 7 air
t 50
p 2 -1 3 extended=false
p 2 0 3 air
t 51
p 2 -1 -1 extended=false
p 2 0 -1 air
t 52
p 1 -1 7 extended=false
p 1 0 7 air
t 53
p 1 -1 3 extended=false
p 1 0 3 air
t 54
p 1 -1 -1 extended=false
p 1 0 -1 air
t 55
p 0 -1 7 extended=false
p 0 0 7 air
t 56
p 0 -1 3 extended=false
p 0 0 3 air
t 57
p 0 -1 -1 extended=false
p 0 0 -1 air
t 58
p 3 0 6 powered=false
t 59
p 3 0 2 powered=false
t 60
p 3 0 -2 powered=false
t 61
p 2 0 6 powered=false
t 62
p 2 0 2 powered=false
t 63
p 2 0 -2 powered=false
t 64
p 1 0 6 powered=false
t 65
p 1 0 2 powered=false
t 66
p 1 0 -2 powered=false
t 67
p 0 0 6 powered=false
t 68
p 0 0 2 powered=false
t 69
p 0 0 -2 powered=false
t 72
p 0 0 0
```
#note()[This isn't *exactly* correct because the pistons take 2gt to extend and retract, but it correctly explains the update order of the observers]
== Single-Priority Loops