417 lines
12 KiB
Typst
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
|