24 Commits

Author SHA1 Message Date
David Allemang
db71c69522 fixup! button component 2026-08-02 08:23:49 -07:00
David Allemang
e0b0120cf6 cute nav buttons 2026-07-31 03:45:48 -07:00
David Allemang
75a3d25bc8 button component 2026-07-30 21:11:00 -07:00
David Allemang
1eb0de2f94 hide todos 2026-07-29 12:38:23 -04:00
David Allemang
bb71b7e872 big revamp tilesets intro 2026-07-29 12:28:56 -04:00
David Allemang
0aa52320a3 split tilesets, bed 2026-07-29 10:11:59 -04:00
David Allemang
af8119f120 run BED in same order as table 2026-07-28 10:50:16 -04:00
David Allemang
1b754178c5 make pistons instantly extend for BED order demo 2026-07-28 10:17:01 -04:00
David Allemang
6517fbc4a4 remove rpo files 2026-07-27 17:43:34 -04:00
David Allemang
8a0bfcd740 wip extensive BED demo 2026-07-27 17:42:23 -04:00
David Allemang
ac44e5f15e some details about BED 2026-07-27 11:20:26 -04:00
David Allemang
67d729eeba fix clean mise run build 2026-07-13 13:22:31 -04:00
6d339e1396 update content 2026-07-12 19:46:46 -04:00
d901fc45d8 update base, hide todos 2026-07-12 16:25:43 -04:00
aa428b111c fix callout width 2026-07-10 18:38:42 -04:00
ca9901eb29 fix callout width 2026-07-10 18:38:11 -04:00
4a44951d1f update dioramas with new resource pack 2026-07-09 22:45:09 -04:00
7f842d74c8 add redstone tweaks resource pack and fix blockstate variant order 2026-07-09 22:44:56 -04:00
223b733bdc revert to vanilla assets 2026-07-09 21:14:29 -04:00
826e8967a2 multipart resolver type coercion 2026-07-09 21:13:18 -04:00
David Allemang
046fb89214 wip more dioramas 2026-07-09 17:33:04 -04:00
David Allemang
c126a42599 remove mise watchexec 2026-07-09 12:45:18 -04:00
David Allemang
35e3312d17 fix touch actions 2026-07-09 12:44:34 -04:00
02911e0357 bundle export 2026-07-08 23:19:14 -04:00
4074 changed files with 44406 additions and 5361 deletions

View File

@@ -0,0 +1,416 @@
#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

View File

@@ -1,8 +1,135 @@
#import "/lib.typ": diorama
= Design Tips
== Synchronization
=== Daylight Detector
#[#show raw.where(lang: "mc-diorama"): it => diorama(
autoplay: true,
loop: true,
radius: 5,
theta: 25,
phi: 25,
it.text,
)
```mc-diorama
p 0 0 0 smooth_stone_slab type=top
p 0 1 0 daylight_detector inverted=true power=1
p 0 2 0 piston facing=east extended=false
p 1 0 0 smooth_stone_slab type=top
p 1 1 0 observer facing=west powered=false
t 0
p 0 2 0 extended=true
p 0.5 2 0 piston_head facing=east short=true type=normal
t 1
p 0.5 2 0 air
p 1 2 0 piston_head facing=east short=false type=normal
t 2
p 1 1 0 powered=true
t 4
p 1 1 0 powered=false
t 20
p 1 2 0 air
p 0.5 2 0 piston_head facing=east short=true type=normal
p 0 1 0 power=0
t 21
p 0.5 2 0 air
p 0 2 0 extended=false
t 22
p 1 1 0 powered=true
t 24
p 1 1 0 powered=false
t 40
p 0 0 0
```
```mc-diorama
p 1 -1 1 smooth_stone_slab type=top
p 1 -1 0 smooth_stone_slab type=top
p 0 -1 1 smooth_stone_slab type=top
p 0 -1 0 smooth_stone_slab type=top
p -1 -1 1 smooth_stone_slab type=top
p -1 -1 0 smooth_stone_slab type=top
p -2 -1 1 smooth_stone_slab type=top
p -2 -1 0 smooth_stone_slab type=top
p 0 0 1 daylight_detector inverted=true power=12
p 0 0 0 daylight_detector inverted=true power=12
p -1 0 0 comparator facing=east mode=subtract powered=false
p -1 0 1 redstone_wire east=side north=side power=12
p -2 0 0 light_gray_terracotta
p -2 1 0 redstone_wire north=side south=side east=side west=side power=0
p -1 1 0 sticky_piston facing=east extended=false
p 0 1 0 light_gray_terracotta
p 1 0 0 observer facing=west powered=false
t 0
p 0 0 0 power=13
t 2
p -1 0 0 powered=true
p -2 1 0 power=1
t 3
p -1 1 0 extended=true
p 0 1 0 air
p .5 1 0 light_gray_terracotta
p -.5 1 0 piston_head type=sticky short=true facing=east
t 4
p 1 0 0 powered=true
p .5 1 0 air
p -.5 1 0 air
p 1 1 0 light_gray_terracotta
p 0 1 0 piston_head type=sticky short=false facing=east
t 6
p 1 0 0 powered=false
t 20
p 0 0 0 power=12
t 22
p -1 0 0 powered=false
p -2 1 0 power=0
t 23
p 1 1 0 air
p 0 1 0 air
p .5 1 0 light_gray_terracotta
p -.5 1 0 piston_head type=sticky short=true facing=east
t 24
p .5 1 0 air
p -.5 1 0 air
p 0 1 0 light_gray_terracotta
p -1 1 0 extended=false
p 1 0 0 powered=true
t 26
p 1 0 0 powered=false
t 40
p 0 0 0
```]
=== Geyser
=== Synchronization Protocols
== Settling time
== Horizontal vs Vertical Arrangement
#html.div(id: "atlas-container", style: "position: fixed; left: 0; top: 0; border 1px solid white;")
#html.script(
"
document.onreadystatechange = () => {
document.getElementById('atlas-container')?.appendChild(window.mcEngine.atlas.canvas)
}
",
)

View File

@@ -1,9 +1,23 @@
#import "/lib.typ": callout, diorama, warn, world
#import "/lib.typ": callout, diorama, warn
#title()
#diorama(
orbit: false,
"
p 0 0 0 dropper facing=up triggered=false
p 0 1 0 dropper facing=up triggered=false
p 0 2 0 dropper facing=east triggered=false
p 1 0 0 hopper facing=west enabled=true
p 1 1 0 oak_trapdoor facing=north open=false half=top
p 1 2 0 oak_trapdoor facing=north open=true half=top
",
)
Everything I know about Entity ID Wireless Redstone (EID Wireless) for Minecraft Java Edition 1.14+.
A written supplement to #link("https://youtu.be/81OV1BltMQ8")[iPlayGames's Wireless Masterclass].
#warn[
In versions 1.14 - 26.1, only multiplayer servers are supported.

View File

@@ -1,217 +0,0 @@
#import "/lib.typ": diorama, example, todo, world
= Preventing Interference <timing>
The protocols as described are very sensitive to the exact timing that the EID counter is
incremented. The fundamental cause for all types of interference is that we spawn a reference and
measurement item with too much delay, and some unexpected entity (or entities) spawn in-between. To
mitigate interference, then, we need that window to be *as short as possible* while still allowing
us to spawn transmission entities in that window.
== Tilesets
The fundamental principle here is to use tile-tick priority (TTP) to set a global order. See
Charlie's great video on TTP for details. #todo[link video]
#todo[fix tileset naming. the tileset is the *structure*. the particular sequence is just one instance of that tileset]
A *tileset* is a sequence of redstone components which all update in the tile tick phase. Components
later in the sequence have greater significance. To make the significance match our left-to-right
reading convention, we diagram them so the signal flows right-to-left. For example:
#diorama(
theta: 160,
phi: 20,
autoplay: true,
loop: true,
world(
"
p 0 -1 0 smooth_stone_slab type=top
p 1 -1 0 smooth_stone_slab type=top
p 2 -1 0 smooth_stone_slab type=top
p 3 -1 0 smooth_stone_slab type=top
p 4 -1 0 smooth_stone_slab type=top
p 0 0 0 repeater facing=west powered=false locked=false delay=1
p 1 0 0 observer facing=west powered=false
p 2 0 0 repeater facing=west powered=false locked=false delay=2
p 3 0 0 comparator facing=west powered=false mode=compare
p 4 0 0 repeater facing=west powered=false locked=false delay=1
t 2
p 0 0 0 powered=true
t 4
p 0 0 0 powered=false
p 1 0 0 powered=true
t 6
p 1 0 0 powered=false
t 8
p 2 0 0 powered=true
t 10
p 3 0 0 powered=true
t 12
p 2 0 0 powered=false
p 4 0 0 powered=true
t 14
p 3 0 0 powered=false
t 16
p 4 0 0 powered=false
t 20
p 0 0 0
",
),
)
This section will cover how to read and construct tilesets that enforce a *global* ordering for use
in wireless redstone.
=== The Tile Tick Priority Queue
The game schedules tile updates through a priority queue; different components have different
priority, so each stage of the tileset iteratively refines the global order. Across the full
tileset, we can enforce an arbitrary global ordering.
#todo[the priority table][
call out here that basic comparators and all other components, so from here on out we're just
going to use comparators for simplicity.
]
Components with different priority always update in priority order, but components with equal
priority update in scheduled order.
#todo[rephrase or remove][
The core principal is that repeaters have higher priority than other components. For example, if a
repeater and comparator are scheduled to activate in the same tick, the repeater always (with one
exception, if the comparator faces into a diode and the repeater does not) activates before the
comparator does. By choosing a regular building pattern, we can avoid this exception entirely.
// Among repeaters, they activate in the order in which they were scheduled. And among
// comparators, they activate in the order in which they are scheduled. But every repeater
// activates before any comparator (aside from that one exception). This gives us a *stable sort*
// which we can use to globally define update order with arbitrary precision.
]
#example[
#todo[this explanation is so janky]
Say these three tilesets are started in the same gametick, `t=0`.
```
<------
1 rep cmp ab
2 cmp rep cd
3 2rep e
<------
```
Once `b`, `d`, and `e` are scheduled, the priority queue looks like this:
```
t=2 [d] [b]
t=4 [e]
```
Now at `t=2`, we process the queue in order.
- `d` activates and schedules `c`.
- `b` activates and schedules `a`.
```
t=4 [e a] [c]
```
Now at `t=4`, the end of the tileset, the lanes will always update in order `3 1 2`
]
So the full picture involves arbitrary components and priorities. As long as all the tilesets have
the same total delay and end at the same time, we can determine a global ordering. However the
general picture is hard to reason about, we basically have to simulate the priority queue to make
predictions. If we restrict the design of the tilesets a bit, there are two simplifications we could
take to make things easier to reason about.
=== Permutation Tilesets
#todo[describe the mixed delay permutation tilesets and the alphabetization procedure]
=== Binary
The simplest tilesets are made entirely of comparators and 2gt repeaters (alternatively: observers
and 2gt repeaters). Repeaters activate before comparators, so if we think of it like sorting words
alphabetically, we can identify repeaters with "A" and comparators with "B".
So, suppose we have a "binary tileset" that is 2gt long. There are two options, A and B. If we
alphabetize these, we see the A (repeater) always executes before the B (comparator). With such a
short tileset, that seems trivial; things get more interesting as we add more elements.
```
<--
cmp (B)
rep (A)
```
Now let's use 2 components for a 4gt tileset. There are now four options, AA, AB, BA, BB. We can
alphabetize these and see the order.
```
<------
cmp cmp (BB)
cmp rep (BA)
rep cmp (AB)
rep rep (AA)
```
To break this down: the bottom two (AA, AB) end in repeaters, so they must come first. Among those,
(AA) comes first. Among the top two (BA, BB), (BA) comes first. It's standard alphabetizing. Just as
the order of the alphabet creates an ordering over all words, the ordering of the comparator and
repeater creates an ordering of all tilesets.
The 6gt tileset. There are now eight options.
```
<---------
...
```
As the tilesets get larger, it's less useful to lay out the entire tileset and more useful to find
the next and previous lanes.
For example, take this 7-diode tileset.
```
cmp rep rep cmp rep cmp cmp
<--------------------------
B A A B A B B
```
We can easily find the next lane by thinking of this not as a *word* but as a *number*. We have two
options, and one is greater than the other.
```
cmp rep rep cmp rep cmp cmp
<--------------------------
B A A B A B B
1 0 0 1 0 1 1
```
We can think of this tileset as a 7-bit binary number, in this case the value 75. We can find the
next lane by simply incrementing by one.
```
1 0 0 1 0 1 1 (75)
+ 1
1 0 0 1 1 0 0 (76)
<--------------------------
cmp rep rep cmp cmp rep rep
```
=== Lexicographic
=== Jamming
== Block Event Delay
== Single-Priority Loops

View File

@@ -8,14 +8,13 @@ generally unexpected entity spawns that mess up the ID.
== Other Entities
Recall that *any* entity spawning will increment the ID counter, and the full list of entities is
surprising. An exhaustive list is available at #link(
"https://minecraft.wiki/w/Entity#Types_of_entities",
)[The Minecraft Wiki].
surprising. An exhaustive list is available at
#link("https://minecraft.wiki/w/Entity#Types_of_entities")[The Minecraft Wiki].
In general, the solution is to spawn our item entities at nearly the same time, so there is no
chance for other entities to spawn in-between. For example, by spawning all items with droppers in
the same game tick, all the items are created in the same tick phase, so player inputs and world
events cannot affect it. See @timing for details.
events cannot affect it. See @tilesets for details.
== Singleplayer (before 26.2) <singleplayer>
@@ -24,29 +23,32 @@ game world ("server thread") contains the item entities we care about for the pu
Wireless, as these are the entities we can detect with redstone. However, the renderer ("client
thread") *also* tracks some entities.
In versions before 26.2, there was a bug that caused the client thread and server thread to use the
*same* global ID counter. Therefore every entity might increment the counter twice: once when it
spawns in the server, and once when the client begins to track it. Because this depends on the
position and orientation of the player, and also on the unpredictable scheduling of the two
execution threads, it is impossible to truly compensate for these effects.
In versions before 26.2, there was a bug
(#link("https://report.bugs.mojang.com/servicedesk/customer/portal/2/MC-238384")[MC-238384])
that caused the client thread and server thread to use the *same* global ID counter. Therefore every
entity might increment the counter twice: once when it spawns in the server, and once when the
client begins to track it. Because this depends on the position and orientation of the player, and
also on the unpredictable scheduling of the two execution threads, it is impossible to truly
compensate for these effects.
The solution is to either use a dedicated minecraft server, so that the client and servers run in
separate processes, or install a mod which patches the game to use a separate counter for the
separate processes, or install a mod that patches the game to use a separate counter for the
client.
#todo[Singleplayer patch links][Grab links for these mods and figure out exactly which versions
they're good for.]
There are also several mods that fix this functionality in some versions before 26.2
- https://github.com/MESLewis/local-server-entity-id-fix
- https://github.com/Mikarific/EIDTracker
#todo[Singleplayer patch links][figure out exact version compatibility list.]
== Paper Servers <paper>
#todo[Paper compatibility list][Figure out which versions of Paper broke the thing.]
Most recent versions of Paper server are compatible with EID Wireless. However, Paper 1.16-1.17
included a *different* stationary entity optimization from Spigot
(#link("https://github.com/PaperMC/Paper/issues/6277")[Paper \#6277]) that corrupts this.
Most recent versions of Paper server are compatible with EID Wireless. However, there are old
versions of Spigot which include a *different* stationary item optimization which corrupts this. A
few versions of Paper erroneously included this old optimization (on top of the mod 4 optimization)
which breaks EID Wireless.
#todo[Broken Paper/Spigot code][Show the patch with the busted optimization.]
#todo[Paper compatibility list][figure out exact version compatibility list.]
== Unloaded Chunks

408
content/tilesets.typ Normal file
View File

@@ -0,0 +1,408 @@
#import "/lib.typ": diorama, example, note, todo
= Tilesets <tilesets>
The protocols as described are very sensitive to the exact timing that the EID counter is
incremented. The fundamental cause for all types of interference is that there is a chance for
unexpected entities to spawn in-between the measurement items, which increments the counter and
corrupts the data. The solution, then, is to make that window *as short as possible* so the chance
for interference is minimized.
The fundamental principle is to use the game scheduled tick priority queue to do this. A *tile
sequence* is a chain of redstone components that all update in the scheduled tick phase. A *tile
set* is a system of constructing tile sequences that enforces a particular global ordering.
#show raw.where(lang: "mc-diorama"): it => diorama(autoplay: true, loop: true, theta: 160, phi: 20, it.text)
```mc-diorama
p 0 -1 0 smooth_stone_slab type=top
p 1 -1 0 smooth_stone_slab type=top
p 2 -1 0 smooth_stone_slab type=top
p 3 -1 0 smooth_stone_slab type=top
p 4 -1 0 smooth_stone_slab type=top
p 0 0 0 repeater facing=west powered=false locked=false delay=1
p 1 0 0 observer facing=west powered=false
p 2 0 0 repeater facing=west powered=false locked=false delay=2
p 3 0 0 comparator facing=west powered=false mode=compare
p 4 0 0 repeater facing=west powered=false locked=false delay=1
t 2
p 0 0 0 powered=true
t 4
p 0 0 0 powered=false
p 1 0 0 powered=true
t 6
p 1 0 0 powered=false
t 8
p 2 0 0 powered=true
t 10
p 3 0 0 powered=true
t 12
p 2 0 0 powered=false
p 4 0 0 powered=true
t 14
p 3 0 0 powered=false
t 16
p 4 0 0 powered=false
t 20
p 0 0 0
```
== The Scheduled Tick Priority Queue
There are two aspects that affect a scheduled tick's placement in the queue: its _priority_ and its
_delay_. Scheduled ticks with higher (more negative) priority update first in a given game tick.
Scheduled ticks with equal priority update in the order they were scheduled.
See @block-priority for a list of priorities. The most important point is that repeaters have higher
priority than other components.
== Binary Tilesets
The simplest (and generally most useful) tilesets use only two priorities. This allows us to
identify each tile sequence with a binary value and easily read the update order and carve up the
the full tile set for different systems. Typically we use comparators (or observers) and 2gt
repeaters.
We identify the higher priority (repeater) with `0`, since it sorts/updates earlier, and identify
the lower priority (observer/comparator) with `1`. Then we can read off the elements of the tile
sequence to form a binary number.
Components that activate later in the sequence have a stronger effect on the order, so to match our
left-to-right reading convention, we diagram tile sequences so the signal flows right-to-left.
Consider this 4gt tileset.
#show raw.where(lang: "mc-diorama"): it => diorama(
autoplay: true,
loop: true,
theta: 90,
phi: 90,
speed: 0.33,
radius: 8,
orbit: false,
it.text,
)
```mc-diorama
p 0 -1 0 smooth_stone_slab type=top
p 1 -1 0 smooth_stone_slab type=top
p 2 -1 0 smooth_stone_slab type=top
p 3 -1 0 smooth_stone_slab type=top
p 4 -1 0 smooth_stone_slab type=top
p 5 -1 0 smooth_stone_slab type=top
p 6 -1 0 smooth_stone_slab type=top
p 7 -1 0 smooth_stone_slab type=top
p 0 0 0 redstone_wire east=side west=none south=side power=0
p 1 0 0 redstone_wire east=side west=side south=side power=0
p 2 0 0 redstone_wire east=side west=side south=side power=0
p 3 0 0 redstone_wire east=side west=side south=side power=0
p 4 0 0 redstone_wire east=side west=side south=side power=0
p 5 0 0 redstone_wire east=side west=side south=side power=0
p 6 0 0 redstone_wire east=side west=side south=side power=0
p 7 0 0 redstone_wire east=none west=side south=side power=0
p 0 0 1 repeater facing=north delay=1 powered=false locked=false
p 1 0 1 comparator facing=north mode=compare powered=false
p 2 0 1 repeater facing=north delay=1 powered=false locked=false
p 3 0 1 comparator facing=north mode=compare powered=false
p 4 0 1 repeater facing=north delay=1 powered=false locked=false
p 5 0 1 comparator facing=north mode=compare powered=false
p 6 0 1 repeater facing=north delay=1 powered=false locked=false
p 7 0 1 comparator facing=north mode=compare powered=false
p 0 0 2 repeater facing=north delay=1 powered=false locked=false
p 1 0 2 repeater facing=north delay=1 powered=false locked=false
p 2 0 2 comparator facing=north mode=compare powered=false
p 3 0 2 comparator facing=north mode=compare powered=false
p 4 0 2 repeater facing=north delay=1 powered=false locked=false
p 5 0 2 repeater facing=north delay=1 powered=false locked=false
p 6 0 2 comparator facing=north mode=compare powered=false
p 7 0 2 comparator facing=north mode=compare powered=false
p 0 0 3 repeater facing=north delay=1 powered=false locked=false
p 1 0 3 repeater facing=north delay=1 powered=false locked=false
p 2 0 3 repeater facing=north delay=1 powered=false locked=false
p 3 0 3 repeater facing=north delay=1 powered=false locked=false
p 4 0 3 comparator facing=north mode=compare powered=false
p 5 0 3 comparator facing=north mode=compare powered=false
p 6 0 3 comparator facing=north mode=compare powered=false
p 7 0 3 comparator facing=north mode=compare powered=false
t 0
p 0 0 0 power=15
p 1 0 0 power=15
p 2 0 0 power=15
p 3 0 0 power=15
p 4 0 0 power=15
p 5 0 0 power=15
p 6 0 0 power=15
p 7 0 0 power=15
t 1
p 0 0 1 powered=true
p 2 0 1 powered=true
p 4 0 1 powered=true
p 6 0 1 powered=true
t 2
p 1 0 1 powered=true
p 3 0 1 powered=true
p 5 0 1 powered=true
p 7 0 1 powered=true
t 3
p 0 0 0 power=0
p 1 0 0 power=0
p 2 0 0 power=0
p 3 0 0 power=0
p 4 0 0 power=0
p 5 0 0 power=0
p 6 0 0 power=0
p 7 0 0 power=0
t 4
p 0 0 2 powered=true
p 4 0 2 powered=true
t 5
p 1 0 2 powered=true
p 5 0 2 powered=true
t 6
p 2 0 2 powered=true
p 6 0 2 powered=true
t 7
p 3 0 2 powered=true
p 7 0 2 powered=true
t 8
p 0 0 1 powered=false
p 2 0 1 powered=false
p 4 0 1 powered=false
p 6 0 1 powered=false
t 9
p 0 0 3 powered=true
t 10
p 1 0 3 powered=true
t 11
p 2 0 3 powered=true
t 12
p 3 0 3 powered=true
t 13
p 1 0 1 powered=false
p 3 0 1 powered=false
p 5 0 1 powered=false
p 7 0 1 powered=false
t 14
p 4 0 3 powered=true
t 15
p 5 0 3 powered=true
t 16
p 6 0 3 powered=true
t 17
p 7 0 3 powered=true
t 18
p 0 0 2 powered=false
p 4 0 2 powered=false
t 19
p 1 0 2 powered=false
p 5 0 2 powered=false
t 20
p 2 0 2 powered=false
p 6 0 2 powered=false
t 21
p 3 0 2 powered=false
p 7 0 2 powered=false
t 22
p 0 0 3 powered=false
t 23
p 1 0 3 powered=false
t 24
p 2 0 3 powered=false
t 25
p 3 0 3 powered=false
t 26
p 4 0 3 powered=false
t 27
p 5 0 3 powered=false
t 28
p 6 0 3 powered=false
t 29
p 7 0 3 powered=false
t 30
p 0 0 0
```
We can express the same tileset numerically like so:
```
000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7
```
Using the same pattern, we can generate a tile sequence for an arbitrary value of arbitrary
bit-length. For example, the 8-bit tileset for `150` is:
10010110
#show raw.where(lang: "mc-diorama"): it => diorama(
theta: 90,
phi: 90,
speed: 0.33,
radius: 5,
orbit: false,
it.text,
)
```mc-diorama
p 0 -1 0 smooth_stone_slab type=top
p 0 -1 1 smooth_stone_slab type=top
p 0 -1 2 smooth_stone_slab type=top
p 0 -1 3 smooth_stone_slab type=top
p 0 -1 4 smooth_stone_slab type=top
p 0 -1 5 smooth_stone_slab type=top
p 0 -1 6 smooth_stone_slab type=top
p 0 -1 7 smooth_stone_slab type=top
p 0 0 0 repeater facing=north powered=false locked=false delay=1
p 0 0 1 comparator facing=north powered=false mode=compare
p 0 0 2 comparator facing=north powered=false mode=compare
p 0 0 3 repeater facing=north powered=false locked=false delay=1
p 0 0 4 comparator facing=north powered=false mode=compare
p 0 0 5 repeater facing=north powered=false locked=false delay=1
p 0 0 6 repeater facing=north powered=false locked=false delay=1
p 0 0 7 comparator facing=north powered=false mode=compare
```
To break this down: the bottom two (AA, AB) end in repeaters, so they must come first. Among those,
(AA) comes first. Among the top two (BA, BB), (BA) comes first. It's standard alphabetizing. Just as
the order of the alphabet creates an ordering over all words, the ordering of the comparator and
repeater creates an ordering of all tilesets.
The 6gt tileset. There are now eight options.
```
<---------
...
```
As the tilesets get larger, it's less useful to lay out the entire tileset and more useful to find
the next and previous lanes.
For example, take this 7-diode tileset.
```
cmp rep rep cmp rep cmp cmp
<--------------------------
B A A B A B B
```
We can easily find the next lane by thinking of this not as a *word* but as a *number*. We have two
options, and one is greater than the other.
```
cmp rep rep cmp rep cmp cmp
<--------------------------
B A A B A B B
1 0 0 1 0 1 1
```
We can think of this tileset as a 7-bit binary number, in this case the value 75. We can find the
next lane by simply incrementing by one.
```
1 0 0 1 0 1 1 (75)
+ 1
1 0 0 1 1 0 0 (76)
<--------------------------
cmp rep rep cmp cmp rep rep
```
// So the full picture involves arbitrary components and priorities. As long as all the tilesets
// have
// the same total delay and end at the same time, we can determine a global ordering. However the
// general picture is hard to reason about, we basically have to simulate the priority queue to make
// predictions. If we restrict the design of the tilesets a bit, there are two simplifications we could
take to make things easier to reason about.
== Permutation Tilesets
#todo[describe the mixed delay permutation tilesets and the alphabetization procedure]
== Lexicographic Tilesets
== Jamming
== Observer Bug <observer-bug>
== Tables
=== Block Tick Priorities <block-priority>
#table(
columns: 4,
table.cell(rowspan: 3)[Repeater],
[Facing diode (that is not facing it)],
[`EXTREMELY_HIGH`],
[-3],
[Powering off],
[`VERY_HIGH`],
[-2],
[Powering on],
[`HIGH`],
[-1],
table.cell(rowspan: 2)[Comparator],
[Facing diode (that is not facing it)],
[`HIGH`],
[-1],
[Otherwise],
[`NORMAL`],
[0],
table.cell(colspan: 2)[All other components],
[`NORMAL`],
[0],
)
=== Block Tick Delays <block-delay>
#table(
columns: 2,
[Repeater], [2gt, 4gt, 6gt, 8gt],
[Comparator], table.cell(rowspan: 4)[2gt],
[Redstone Torch],
[Falling Blocks],
[Observer (see @observer-bug)],
[Dispenser], table.cell(rowspan: 3)[4gt],
[Dropper],
[Redstone Lamp],
[Iron Pressure Plate], table.cell(rowspan: 4)[10gt],
[Gold Pressure Plate],
[Tripwire Hook],
[Tripwire],
[Stone Button], table.cell(rowspan: 3)[20gt],
[Stone Pressure Plate],
[Detector Rail],
[Wooden Button], table.cell(rowspan: 2)[30gt],
[Wooden Pressure Plate],
)
=== Fluid Tick Delays <fluid-delay>
#table(
columns: 2,
[Water], [5gt],
[Nether Lava], [10gt],
[Lava], [30gt],
)

22
lib.typ
View File

@@ -13,18 +13,21 @@
#let warn = callout.with(kind: "warn", label: "Warning")
#let note = callout.with(kind: "note", label: "Note")
#let todo(label, ..args) = callout(args.pos().join(), kind: "todo", label: "[TODO] " + label, outlined: true)
#let todo(label, ..args) = {
// callout(args.pos().join(), kind: "todo", label: "[TODO] " + label, outlined: true)
}
#let example(body) = todo("example", body)
#let solution(body) = todo("solution", body)
#let details(body, label: none) = {
html.details({
if label != none {
html.summary(label)
}
body
})
todo(label, body)
// html.details({
// if label != none {
// html.summary(label)
// }
// body
// })
}
#let camera() = {
@@ -40,6 +43,7 @@
theta: auto,
phi: auto,
radius: auto,
speed: auto,
orbit: auto,
pan: auto,
zoom: auto,
@@ -52,6 +56,7 @@
if theta != auto { attrs.insert("theta", str(theta)) }
if phi != auto { attrs.insert("phi", str(phi)) }
if radius != auto { attrs.insert("radius", str(radius)) }
if speed != auto { attrs.insert("speed", str(speed)) }
if orbit != auto { attrs.insert("orbit", if (orbit) { "" } else { "false" }) }
if pan != auto { attrs.insert("pan", if (pan) { "" } else { "false" }) }
if zoom != auto { attrs.insert("zoom", if (zoom) { "" } else { "false" }) }
@@ -59,6 +64,5 @@
if autoplay != auto { attrs.insert("autoplay", if (autoplay) { "" } else { "false" }) }
if loop != auto { attrs.insert("loop", if (loop) { "" } else { "false" }) }
if subticks != auto { attrs.insert("subticks", if (subticks) { "" } else { "false" }) }
html.elem("mc-diorama", body, attrs: attrs)
html.elem("mc-diorama", html.script(body, type: "text/mc-world"), attrs: attrs)
}
#let world(body) = html.script(body, type: "text/mc-world")

View File

@@ -1,7 +1,7 @@
#set heading(numbering: "1.1 -")
#set document(title: [The EID Wireless Masterclass])
#show: it => document("index.html", html.html(
#let doc(path, it) = document(path, html.html(
lang: "en",
{
html.head({
@@ -13,18 +13,41 @@
html.link(rel: "stylesheet", href: "/src/components.css")
html.script(type: "module", src: "/src/components.js")
})
html.body(it)
html.body(context {
let prev = query(selector(heading.where(level: 1)).before(here())).at(-1, default: none)
let next = query(selector(heading.where(level: 1)).after(here())).at(1, default: none)
html.main(it)
html.footer({
html.nav({
html.ul({
if prev != none {
html.li(
link(prev.location(), [Prev: #prev.body]),
class: "btn",
)
}
if next != none {
html.li(
link(next.location(), [Next: #next.body]),
class: "btn",
)
}
})
})
})
})
},
))
#{
include "content/index.typ"
include "content/core.typ"
include "content/data-protocols.typ"
include "content/interference-causes.typ"
include "content/interference-fixes.typ"
include "content/design.typ"
include "content/channels.typ"
include "content/bulk.typ"
include "content/network.typ"
doc("index.html", include "content/index.typ")
doc("core.html", include "content/core.typ")
// doc("data-protocols.html", include "content/data-protocols.typ")
doc("interference.html", include "content/interference.typ")
doc("tilesets.html", include "content/tilesets.typ")
doc("block-event-delay.html", include "content/block-event-delay.typ")
// doc("design-notfirstes.html", include "content/design.typ")
// doc("channel-selectors.html", include "content/channels.typ")
// doc("bulk-transmission.html", include "content/bulk.typ")
// doc("network-protocols.html", include "content/network.typ")
}

View File

@@ -1,23 +1,24 @@
[tools]
node = "latest"
"npm:vite" = "8.1.3"
tinymist = "0.15.0"
typst = "0.15.0"
watchexec = "latest"
[tasks.build]
run = [
"rm .typ-bundle/*",
"rm -f .typ-bundle/*",
"typst compile main.typ .typ-bundle --format bundle --features bundle,html",
"npx vite build",
"vite build",
]
sources = ["!dist", "!node_modules", "!.idea", "**/*.typ", "src/**/*"]
[tasks.dev-vite]
run = "npx vite dev"
run = "vite dev"
sources = ["!dist", "!node_modules", "!.idea", "**/*.typ", "src/**/*"]
[tasks.dev-typ]
run = "typst watch main.typ .typ-bundle --format bundle --features bundle,html --no-serve"
sources = ["!dist", "!node_modules", "!.idea", "**/*.typ", "src/**/*"]
[tasks.dev]
depends = ["dev-vite", "dev-typ"]
depends = ["dev-vite", "dev-typ"]

902
package-lock.json generated
View File

@@ -1,902 +0,0 @@
{
"name": "mc-diorama",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mc-diorama",
"version": "0.0.0",
"devDependencies": {
"vite": "^8.1.3"
}
},
"node_modules/@emnapi/core": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz",
"integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/wasi-threads": "1.2.2",
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/runtime": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz",
"integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/wasi-threads": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
"integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/@napi-rs/wasm-runtime": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz",
"integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@tybys/wasm-util": "^0.10.3"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
},
"peerDependencies": {
"@emnapi/core": "^1.7.1",
"@emnapi/runtime": "^1.7.1"
}
},
"node_modules/@oxc-project/types": {
"version": "0.139.0",
"resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz",
"integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/Boshen"
}
},
"node_modules/@rolldown/binding-android-arm64": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz",
"integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-darwin-arm64": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz",
"integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-darwin-x64": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz",
"integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-freebsd-x64": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz",
"integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz",
"integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-linux-arm64-gnu": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz",
"integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==",
"cpu": [
"arm64"
],
"dev": true,
"libc": [
"glibc"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-linux-arm64-musl": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz",
"integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==",
"cpu": [
"arm64"
],
"dev": true,
"libc": [
"musl"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-linux-ppc64-gnu": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz",
"integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==",
"cpu": [
"ppc64"
],
"dev": true,
"libc": [
"glibc"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-linux-s390x-gnu": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz",
"integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==",
"cpu": [
"s390x"
],
"dev": true,
"libc": [
"glibc"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-linux-x64-gnu": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz",
"integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==",
"cpu": [
"x64"
],
"dev": true,
"libc": [
"glibc"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-linux-x64-musl": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz",
"integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==",
"cpu": [
"x64"
],
"dev": true,
"libc": [
"musl"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-openharmony-arm64": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz",
"integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openharmony"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-wasm32-wasi": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz",
"integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==",
"cpu": [
"wasm32"
],
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/core": "1.11.1",
"@emnapi/runtime": "1.11.1",
"@napi-rs/wasm-runtime": "^1.1.6"
},
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-win32-arm64-msvc": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz",
"integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-win32-x64-msvc": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz",
"integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/pluginutils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz",
"integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==",
"dev": true,
"license": "MIT"
},
"node_modules/@tybys/wasm-util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
"integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=8"
}
},
"node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12.0.0"
},
"peerDependencies": {
"picomatch": "^3 || ^4"
},
"peerDependenciesMeta": {
"picomatch": {
"optional": true
}
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/lightningcss": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
"integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"detect-libc": "^2.0.3"
},
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
"lightningcss-android-arm64": "1.32.0",
"lightningcss-darwin-arm64": "1.32.0",
"lightningcss-darwin-x64": "1.32.0",
"lightningcss-freebsd-x64": "1.32.0",
"lightningcss-linux-arm-gnueabihf": "1.32.0",
"lightningcss-linux-arm64-gnu": "1.32.0",
"lightningcss-linux-arm64-musl": "1.32.0",
"lightningcss-linux-x64-gnu": "1.32.0",
"lightningcss-linux-x64-musl": "1.32.0",
"lightningcss-win32-arm64-msvc": "1.32.0",
"lightningcss-win32-x64-msvc": "1.32.0"
}
},
"node_modules/lightningcss-android-arm64": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
"integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MPL-2.0",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-darwin-arm64": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
"integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MPL-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-darwin-x64": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
"integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
"cpu": [
"x64"
],
"dev": true,
"license": "MPL-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-freebsd-x64": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
"integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
"cpu": [
"x64"
],
"dev": true,
"license": "MPL-2.0",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-linux-arm-gnueabihf": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
"integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
"cpu": [
"arm"
],
"dev": true,
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-linux-arm64-gnu": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
"integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
"cpu": [
"arm64"
],
"dev": true,
"libc": [
"glibc"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-linux-arm64-musl": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
"integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
"cpu": [
"arm64"
],
"dev": true,
"libc": [
"musl"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-linux-x64-gnu": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
"integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
"cpu": [
"x64"
],
"dev": true,
"libc": [
"glibc"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-linux-x64-musl": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
"integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
"cpu": [
"x64"
],
"dev": true,
"libc": [
"musl"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-win32-arm64-msvc": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
"integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MPL-2.0",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-win32-x64-msvc": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
"integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
"cpu": [
"x64"
],
"dev": true,
"license": "MPL-2.0",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/nanoid": {
"version": "3.3.15",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz",
"integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"dev": true,
"license": "ISC"
},
"node_modules/picomatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
"integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/postcss": {
"version": "8.5.16",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz",
"integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.12",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/rolldown": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz",
"integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@oxc-project/types": "=0.139.0",
"@rolldown/pluginutils": "^1.0.0"
},
"bin": {
"rolldown": "bin/cli.mjs"
},
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
"@rolldown/binding-android-arm64": "1.1.5",
"@rolldown/binding-darwin-arm64": "1.1.5",
"@rolldown/binding-darwin-x64": "1.1.5",
"@rolldown/binding-freebsd-x64": "1.1.5",
"@rolldown/binding-linux-arm-gnueabihf": "1.1.5",
"@rolldown/binding-linux-arm64-gnu": "1.1.5",
"@rolldown/binding-linux-arm64-musl": "1.1.5",
"@rolldown/binding-linux-ppc64-gnu": "1.1.5",
"@rolldown/binding-linux-s390x-gnu": "1.1.5",
"@rolldown/binding-linux-x64-gnu": "1.1.5",
"@rolldown/binding-linux-x64-musl": "1.1.5",
"@rolldown/binding-openharmony-arm64": "1.1.5",
"@rolldown/binding-wasm32-wasi": "1.1.5",
"@rolldown/binding-win32-arm64-msvc": "1.1.5",
"@rolldown/binding-win32-x64-msvc": "1.1.5"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/tinyglobby": {
"version": "0.2.17",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
"integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.5.0",
"picomatch": "^4.0.4"
},
"engines": {
"node": ">=12.0.0"
},
"funding": {
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"dev": true,
"license": "0BSD",
"optional": true
},
"node_modules/vite": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/vite/-/vite-8.1.3.tgz",
"integrity": "sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==",
"dev": true,
"license": "MIT",
"dependencies": {
"lightningcss": "^1.32.0",
"picomatch": "^4.0.4",
"postcss": "^8.5.16",
"rolldown": "~1.1.3",
"tinyglobby": "^0.2.17"
},
"bin": {
"vite": "bin/vite.js"
},
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
},
"optionalDependencies": {
"fsevents": "~2.3.3"
},
"peerDependencies": {
"@types/node": "^20.19.0 || >=22.12.0",
"@vitejs/devtools": "^0.3.0",
"esbuild": "^0.27.0 || ^0.28.0",
"jiti": ">=1.21.0",
"less": "^4.0.0",
"sass": "^1.70.0",
"sass-embedded": "^1.70.0",
"stylus": ">=0.54.8",
"sugarss": "^5.0.0",
"terser": "^5.16.0",
"tsx": "^4.8.1",
"yaml": "^2.4.2"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
"@vitejs/devtools": {
"optional": true
},
"esbuild": {
"optional": true
},
"jiti": {
"optional": true
},
"less": {
"optional": true
},
"sass": {
"optional": true
},
"sass-embedded": {
"optional": true
},
"stylus": {
"optional": true
},
"sugarss": {
"optional": true
},
"terser": {
"optional": true
},
"tsx": {
"optional": true
},
"yaml": {
"optional": true
}
}
}
}
}

View File

@@ -1,7 +0,0 @@
{
"name": "mc-diorama",
"version": "0.0.0",
"devDependencies": {
"vite": "^8.1.3"
}
}

View File

View File

@@ -0,0 +1,64 @@
{
"sources": [
{
"type": "minecraft:paletted_permutations",
"palette_key": "minecraft:trims/color_palettes/trim_palette",
"permutations": {
"amethyst": "minecraft:trims/color_palettes/amethyst",
"copper": "minecraft:trims/color_palettes/copper",
"copper_darker": "minecraft:trims/color_palettes/copper_darker",
"diamond": "minecraft:trims/color_palettes/diamond",
"diamond_darker": "minecraft:trims/color_palettes/diamond_darker",
"emerald": "minecraft:trims/color_palettes/emerald",
"gold": "minecraft:trims/color_palettes/gold",
"gold_darker": "minecraft:trims/color_palettes/gold_darker",
"iron": "minecraft:trims/color_palettes/iron",
"iron_darker": "minecraft:trims/color_palettes/iron_darker",
"lapis": "minecraft:trims/color_palettes/lapis",
"netherite": "minecraft:trims/color_palettes/netherite",
"netherite_darker": "minecraft:trims/color_palettes/netherite_darker",
"quartz": "minecraft:trims/color_palettes/quartz",
"redstone": "minecraft:trims/color_palettes/redstone",
"resin": "minecraft:trims/color_palettes/resin"
},
"textures": [
"minecraft:trims/entity/humanoid/sentry",
"minecraft:trims/entity/humanoid_leggings/sentry",
"minecraft:trims/entity/humanoid/dune",
"minecraft:trims/entity/humanoid_leggings/dune",
"minecraft:trims/entity/humanoid/coast",
"minecraft:trims/entity/humanoid_leggings/coast",
"minecraft:trims/entity/humanoid/wild",
"minecraft:trims/entity/humanoid_leggings/wild",
"minecraft:trims/entity/humanoid/ward",
"minecraft:trims/entity/humanoid_leggings/ward",
"minecraft:trims/entity/humanoid/eye",
"minecraft:trims/entity/humanoid_leggings/eye",
"minecraft:trims/entity/humanoid/vex",
"minecraft:trims/entity/humanoid_leggings/vex",
"minecraft:trims/entity/humanoid/tide",
"minecraft:trims/entity/humanoid_leggings/tide",
"minecraft:trims/entity/humanoid/snout",
"minecraft:trims/entity/humanoid_leggings/snout",
"minecraft:trims/entity/humanoid/rib",
"minecraft:trims/entity/humanoid_leggings/rib",
"minecraft:trims/entity/humanoid/spire",
"minecraft:trims/entity/humanoid_leggings/spire",
"minecraft:trims/entity/humanoid/wayfinder",
"minecraft:trims/entity/humanoid_leggings/wayfinder",
"minecraft:trims/entity/humanoid/shaper",
"minecraft:trims/entity/humanoid_leggings/shaper",
"minecraft:trims/entity/humanoid/silence",
"minecraft:trims/entity/humanoid_leggings/silence",
"minecraft:trims/entity/humanoid/raiser",
"minecraft:trims/entity/humanoid_leggings/raiser",
"minecraft:trims/entity/humanoid/host",
"minecraft:trims/entity/humanoid_leggings/host",
"minecraft:trims/entity/humanoid/flow",
"minecraft:trims/entity/humanoid_leggings/flow",
"minecraft:trims/entity/humanoid/bolt",
"minecraft:trims/entity/humanoid_leggings/bolt"
]
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/banner/",
"source": "entity/banner"
}
]
}

View File

@@ -0,0 +1,22 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "block/",
"source": "block"
},
{
"type": "minecraft:directory",
"prefix": "entity/conduit/",
"source": "entity/conduit"
},
{
"type": "minecraft:single",
"resource": "minecraft:entity/bell/bell_body"
},
{
"type": "minecraft:single",
"resource": "minecraft:entity/enchantment/enchanting_table_book"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "environment/celestial"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/chest/",
"source": "entity/chest"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/decorated_pot/",
"source": "entity/decorated_pot"
}
]
}

View File

@@ -0,0 +1,14 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "gui/sprites"
},
{
"type": "minecraft:directory",
"prefix": "mob_effect/",
"source": "mob_effect"
}
]
}

View File

@@ -0,0 +1,37 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "item/",
"source": "item"
},
{
"type": "minecraft:paletted_permutations",
"palette_key": "minecraft:trims/color_palettes/trim_palette",
"permutations": {
"amethyst": "minecraft:trims/color_palettes/amethyst",
"copper": "minecraft:trims/color_palettes/copper",
"copper_darker": "minecraft:trims/color_palettes/copper_darker",
"diamond": "minecraft:trims/color_palettes/diamond",
"diamond_darker": "minecraft:trims/color_palettes/diamond_darker",
"emerald": "minecraft:trims/color_palettes/emerald",
"gold": "minecraft:trims/color_palettes/gold",
"gold_darker": "minecraft:trims/color_palettes/gold_darker",
"iron": "minecraft:trims/color_palettes/iron",
"iron_darker": "minecraft:trims/color_palettes/iron_darker",
"lapis": "minecraft:trims/color_palettes/lapis",
"netherite": "minecraft:trims/color_palettes/netherite",
"netherite_darker": "minecraft:trims/color_palettes/netherite_darker",
"quartz": "minecraft:trims/color_palettes/quartz",
"redstone": "minecraft:trims/color_palettes/redstone",
"resin": "minecraft:trims/color_palettes/resin"
},
"textures": [
"minecraft:trims/items/helmet_trim",
"minecraft:trims/items/chestplate_trim",
"minecraft:trims/items/leggings_trim",
"minecraft:trims/items/boots_trim"
]
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "map/decorations"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "painting"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "particle"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/shield/",
"source": "entity/shield"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/shulker/",
"source": "entity/shulker"
}
]
}

View File

@@ -1,7 +1,28 @@
{
"variants": {
"": {
"model": "minecraft:block/acacia_leaves"
"persistent=false": {
"model": "minecraft:block/leaves/acacia/not_persistent"
},
"distance=1,persistent=true": {
"model": "minecraft:block/leaves/acacia/1"
},
"distance=2,persistent=true": {
"model": "minecraft:block/leaves/acacia/2"
},
"distance=3,persistent=true": {
"model": "minecraft:block/leaves/acacia/3"
},
"distance=4,persistent=true": {
"model": "minecraft:block/leaves/acacia/4"
},
"distance=5,persistent=true": {
"model": "minecraft:block/leaves/acacia/5"
},
"distance=6,persistent=true": {
"model": "minecraft:block/leaves/acacia/6"
},
"distance=7,persistent=true": {
"model": "minecraft:block/leaves/acacia/7"
}
}
}

View File

@@ -1,7 +1,28 @@
{
"variants": {
"": {
"model": "minecraft:block/azalea_leaves"
"persistent=false": {
"model": "minecraft:block/leaves/azalea/not_persistent"
},
"distance=1,persistent=true": {
"model": "minecraft:block/leaves/azalea/1"
},
"distance=2,persistent=true": {
"model": "minecraft:block/leaves/azalea/2"
},
"distance=3,persistent=true": {
"model": "minecraft:block/leaves/azalea/3"
},
"distance=4,persistent=true": {
"model": "minecraft:block/leaves/azalea/4"
},
"distance=5,persistent=true": {
"model": "minecraft:block/leaves/azalea/5"
},
"distance=6,persistent=true": {
"model": "minecraft:block/leaves/azalea/6"
},
"distance=7,persistent=true": {
"model": "minecraft:block/leaves/azalea/7"
}
}
}

View File

@@ -2,93 +2,93 @@
"variants": {
"facing=east,honey_level=0": {
"y": 90,
"model": "minecraft:block/bee_nest_empty"
"model": "minecraft:block/bee_nest/0"
},
"facing=east,honey_level=1": {
"y": 90,
"model": "minecraft:block/bee_nest_filled_1"
"model": "minecraft:block/bee_nest/1"
},
"facing=east,honey_level=2": {
"y": 90,
"model": "minecraft:block/bee_nest_filled_2"
"model": "minecraft:block/bee_nest/2"
},
"facing=east,honey_level=3": {
"y": 90,
"model": "minecraft:block/bee_nest_filled_3"
"model": "minecraft:block/bee_nest/3"
},
"facing=east,honey_level=4": {
"y": 90,
"model": "minecraft:block/bee_nest_filled_4"
"model": "minecraft:block/bee_nest/4"
},
"facing=east,honey_level=5": {
"y": 90,
"model": "minecraft:block/bee_nest_honey"
"model": "minecraft:block/bee_nest/5"
},
"facing=north,honey_level=0": {
"model": "minecraft:block/bee_nest_empty"
"model": "minecraft:block/bee_nest/0"
},
"facing=north,honey_level=1": {
"model": "minecraft:block/bee_nest_filled_1"
"model": "minecraft:block/bee_nest/1"
},
"facing=north,honey_level=2": {
"model": "minecraft:block/bee_nest_filled_2"
"model": "minecraft:block/bee_nest/2"
},
"facing=north,honey_level=3": {
"model": "minecraft:block/bee_nest_filled_3"
"model": "minecraft:block/bee_nest/3"
},
"facing=north,honey_level=4": {
"model": "minecraft:block/bee_nest_filled_4"
"model": "minecraft:block/bee_nest/4"
},
"facing=north,honey_level=5": {
"model": "minecraft:block/bee_nest_honey"
"model": "minecraft:block/bee_nest/5"
},
"facing=south,honey_level=0": {
"y": 180,
"model": "minecraft:block/bee_nest_empty"
"model": "minecraft:block/bee_nest/0"
},
"facing=south,honey_level=1": {
"y": 180,
"model": "minecraft:block/bee_nest_filled_1"
"model": "minecraft:block/bee_nest/1"
},
"facing=south,honey_level=2": {
"y": 180,
"model": "minecraft:block/bee_nest_filled_2"
"model": "minecraft:block/bee_nest/2"
},
"facing=south,honey_level=3": {
"y": 180,
"model": "minecraft:block/bee_nest_filled_3"
"model": "minecraft:block/bee_nest/3"
},
"facing=south,honey_level=4": {
"y": 180,
"model": "minecraft:block/bee_nest_filled_4"
"model": "minecraft:block/bee_nest/4"
},
"facing=south,honey_level=5": {
"y": 180,
"model": "minecraft:block/bee_nest_honey"
"model": "minecraft:block/bee_nest/5"
},
"facing=west,honey_level=0": {
"y": 270,
"model": "minecraft:block/bee_nest_empty"
"model": "minecraft:block/bee_nest/0"
},
"facing=west,honey_level=1": {
"y": 270,
"model": "minecraft:block/bee_nest_filled_1"
"model": "minecraft:block/bee_nest/1"
},
"facing=west,honey_level=2": {
"y": 270,
"model": "minecraft:block/bee_nest_filled_2"
"model": "minecraft:block/bee_nest/2"
},
"facing=west,honey_level=3": {
"y": 270,
"model": "minecraft:block/bee_nest_filled_3"
"model": "minecraft:block/bee_nest/3"
},
"facing=west,honey_level=4": {
"y": 270,
"model": "minecraft:block/bee_nest_filled_4"
"model": "minecraft:block/bee_nest/4"
},
"facing=west,honey_level=5": {
"y": 270,
"model": "minecraft:block/bee_nest_honey"
"model": "minecraft:block/bee_nest/5"
}
}
}

View File

@@ -2,93 +2,93 @@
"variants": {
"facing=east,honey_level=0": {
"y": 90,
"model": "minecraft:block/beehive_empty"
"model": "minecraft:block/beehive/0"
},
"facing=east,honey_level=1": {
"y": 90,
"model": "minecraft:block/beehive_filled_1"
"model": "minecraft:block/beehive/1"
},
"facing=east,honey_level=2": {
"y": 90,
"model": "minecraft:block/beehive_filled_2"
"model": "minecraft:block/beehive/2"
},
"facing=east,honey_level=3": {
"y": 90,
"model": "minecraft:block/beehive_filled_3"
"model": "minecraft:block/beehive/3"
},
"facing=east,honey_level=4": {
"y": 90,
"model": "minecraft:block/beehive_filled_4"
"model": "minecraft:block/beehive/4"
},
"facing=east,honey_level=5": {
"y": 90,
"model": "minecraft:block/beehive_honey"
"model": "minecraft:block/beehive/5"
},
"facing=north,honey_level=0": {
"model": "minecraft:block/beehive_empty"
"model": "minecraft:block/beehive/0"
},
"facing=north,honey_level=1": {
"model": "minecraft:block/beehive_filled_1"
"model": "minecraft:block/beehive/1"
},
"facing=north,honey_level=2": {
"model": "minecraft:block/beehive_filled_2"
"model": "minecraft:block/beehive/2"
},
"facing=north,honey_level=3": {
"model": "minecraft:block/beehive_filled_3"
"model": "minecraft:block/beehive/3"
},
"facing=north,honey_level=4": {
"model": "minecraft:block/beehive_filled_4"
"model": "minecraft:block/beehive/4"
},
"facing=north,honey_level=5": {
"model": "minecraft:block/beehive_honey"
"model": "minecraft:block/beehive/5"
},
"facing=south,honey_level=0": {
"y": 180,
"model": "minecraft:block/beehive_empty"
"model": "minecraft:block/beehive/0"
},
"facing=south,honey_level=1": {
"y": 180,
"model": "minecraft:block/beehive_filled_1"
"model": "minecraft:block/beehive/1"
},
"facing=south,honey_level=2": {
"y": 180,
"model": "minecraft:block/beehive_filled_2"
"model": "minecraft:block/beehive/2"
},
"facing=south,honey_level=3": {
"y": 180,
"model": "minecraft:block/beehive_filled_3"
"model": "minecraft:block/beehive/3"
},
"facing=south,honey_level=4": {
"y": 180,
"model": "minecraft:block/beehive_filled_4"
"model": "minecraft:block/beehive/4"
},
"facing=south,honey_level=5": {
"y": 180,
"model": "minecraft:block/beehive_honey"
"model": "minecraft:block/beehive/5"
},
"facing=west,honey_level=0": {
"y": 270,
"model": "minecraft:block/beehive_empty"
"model": "minecraft:block/beehive/0"
},
"facing=west,honey_level=1": {
"y": 270,
"model": "minecraft:block/beehive_filled_1"
"model": "minecraft:block/beehive/1"
},
"facing=west,honey_level=2": {
"y": 270,
"model": "minecraft:block/beehive_filled_2"
"model": "minecraft:block/beehive/2"
},
"facing=west,honey_level=3": {
"y": 270,
"model": "minecraft:block/beehive_filled_3"
"model": "minecraft:block/beehive/3"
},
"facing=west,honey_level=4": {
"y": 270,
"model": "minecraft:block/beehive_filled_4"
"model": "minecraft:block/beehive/4"
},
"facing=west,honey_level=5": {
"y": 270,
"model": "minecraft:block/beehive_honey"
"model": "minecraft:block/beehive/5"
}
}
}

View File

@@ -1,63 +1,123 @@
{
"variants": {
"attachment=ceiling,facing=east": {
"model": "minecraft:block/bell_ceiling",
"attachment=ceiling,facing=east,powered=false": {
"model": "minecraft:block/bell/ceiling",
"y": 90
},
"attachment=ceiling,facing=north": {
"model": "minecraft:block/bell_ceiling"
"attachment=ceiling,facing=north,powered=false": {
"model": "minecraft:block/bell/ceiling"
},
"attachment=ceiling,facing=south": {
"model": "minecraft:block/bell_ceiling",
"attachment=ceiling,facing=south,powered=false": {
"model": "minecraft:block/bell/ceiling",
"y": 180
},
"attachment=ceiling,facing=west": {
"model": "minecraft:block/bell_ceiling",
"attachment=ceiling,facing=west,powered=false": {
"model": "minecraft:block/bell/ceiling",
"y": 270
},
"attachment=double_wall,facing=east": {
"model": "minecraft:block/bell_between_walls"
"attachment=double_wall,facing=east,powered=false": {
"model": "minecraft:block/bell/between_walls"
},
"attachment=double_wall,facing=north": {
"model": "minecraft:block/bell_between_walls",
"attachment=double_wall,facing=north,powered=false": {
"model": "minecraft:block/bell/between_walls",
"y": 270
},
"attachment=double_wall,facing=south": {
"model": "minecraft:block/bell_between_walls",
"attachment=double_wall,facing=south,powered=false": {
"model": "minecraft:block/bell/between_walls",
"y": 90
},
"attachment=double_wall,facing=west": {
"model": "minecraft:block/bell_between_walls",
"attachment=double_wall,facing=west,powered=false": {
"model": "minecraft:block/bell/between_walls",
"y": 180
},
"attachment=floor,facing=east": {
"model": "minecraft:block/bell_floor",
"attachment=floor,facing=east,powered=false": {
"model": "minecraft:block/bell/floor",
"y": 90
},
"attachment=floor,facing=north": {
"model": "minecraft:block/bell_floor"
"attachment=floor,facing=north,powered=false": {
"model": "minecraft:block/bell/floor"
},
"attachment=floor,facing=south": {
"model": "minecraft:block/bell_floor",
"attachment=floor,facing=south,powered=false": {
"model": "minecraft:block/bell/floor",
"y": 180
},
"attachment=floor,facing=west": {
"model": "minecraft:block/bell_floor",
"attachment=floor,facing=west,powered=false": {
"model": "minecraft:block/bell/floor",
"y": 270
},
"attachment=single_wall,facing=east": {
"model": "minecraft:block/bell_wall"
"attachment=single_wall,facing=east,powered=false": {
"model": "minecraft:block/bell/wall"
},
"attachment=single_wall,facing=north": {
"model": "minecraft:block/bell_wall",
"attachment=single_wall,facing=north,powered=false": {
"model": "minecraft:block/bell/wall",
"y": 270
},
"attachment=single_wall,facing=south": {
"model": "minecraft:block/bell_wall",
"attachment=single_wall,facing=south,powered=false": {
"model": "minecraft:block/bell/wall",
"y": 90
},
"attachment=single_wall,facing=west": {
"model": "minecraft:block/bell_wall",
"attachment=single_wall,facing=west,powered=false": {
"model": "minecraft:block/bell/wall",
"y": 180
},
"attachment=ceiling,facing=east,powered=true": {
"model": "minecraft:block/bell/ceiling_powered",
"y": 90
},
"attachment=ceiling,facing=north,powered=true": {
"model": "minecraft:block/bell/ceiling_powered"
},
"attachment=ceiling,facing=south,powered=true": {
"model": "minecraft:block/bell/ceiling_powered",
"y": 180
},
"attachment=ceiling,facing=west,powered=true": {
"model": "minecraft:block/bell/ceiling_powered",
"y": 270
},
"attachment=double_wall,facing=east,powered=true": {
"model": "minecraft:block/bell/between_walls_powered"
},
"attachment=double_wall,facing=north,powered=true": {
"model": "minecraft:block/bell/between_walls_powered",
"y": 270
},
"attachment=double_wall,facing=south,powered=true": {
"model": "minecraft:block/bell/between_walls_powered",
"y": 90
},
"attachment=double_wall,facing=west,powered=true": {
"model": "minecraft:block/bell/between_walls_powered",
"y": 180
},
"attachment=floor,facing=east,powered=true": {
"model": "minecraft:block/bell/floor_powered",
"y": 90
},
"attachment=floor,facing=north,powered=true": {
"model": "minecraft:block/bell/floor_powered"
},
"attachment=floor,facing=south,powered=true": {
"model": "minecraft:block/bell/floor_powered",
"y": 180
},
"attachment=floor,facing=west,powered=true": {
"model": "minecraft:block/bell/floor_powered",
"y": 270
},
"attachment=single_wall,facing=east,powered=true": {
"model": "minecraft:block/bell/wall_powered"
},
"attachment=single_wall,facing=north,powered=true": {
"model": "minecraft:block/bell/wall_powered",
"y": 270
},
"attachment=single_wall,facing=south,powered=true": {
"model": "minecraft:block/bell/wall_powered",
"y": 90
},
"attachment=single_wall,facing=west,powered=true": {
"model": "minecraft:block/bell/wall_powered",
"y": 180
}
}

View File

@@ -1,7 +1,28 @@
{
"variants": {
"": {
"model": "minecraft:block/birch_leaves"
"persistent=false": {
"model": "minecraft:block/leaves/birch/not_persistent"
},
"distance=1,persistent=true": {
"model": "minecraft:block/leaves/birch/1"
},
"distance=2,persistent=true": {
"model": "minecraft:block/leaves/birch/2"
},
"distance=3,persistent=true": {
"model": "minecraft:block/leaves/birch/3"
},
"distance=4,persistent=true": {
"model": "minecraft:block/leaves/birch/4"
},
"distance=5,persistent=true": {
"model": "minecraft:block/leaves/birch/5"
},
"distance=6,persistent=true": {
"model": "minecraft:block/leaves/birch/6"
},
"distance=7,persistent=true": {
"model": "minecraft:block/leaves/birch/7"
}
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/black_concrete"
"model": "minecraft:block/concrete/black_concrete"
}
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/black_wool"
"model": "minecraft:block/wool/black_wool"
}
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/blue_concrete"
"model": "minecraft:block/concrete/blue_concrete"
}
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/blue_wool"
"model": "minecraft:block/wool/blue_wool"
}
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/brown_concrete"
"model": "minecraft:block/concrete/brown_concrete"
}
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/brown_wool"
"model": "minecraft:block/wool/brown_wool"
}
}
}

View File

@@ -1,25 +1,25 @@
{
"variants": {
"bites=0": {
"model": "minecraft:block/cake"
"model": "minecraft:block/cake/14"
},
"bites=1": {
"model": "minecraft:block/cake_slice1"
"model": "minecraft:block/cake/12"
},
"bites=2": {
"model": "minecraft:block/cake_slice2"
"model": "minecraft:block/cake/10"
},
"bites=3": {
"model": "minecraft:block/cake_slice3"
"model": "minecraft:block/cake/8"
},
"bites=4": {
"model": "minecraft:block/cake_slice4"
"model": "minecraft:block/cake/6"
},
"bites=5": {
"model": "minecraft:block/cake_slice5"
"model": "minecraft:block/cake/4"
},
"bites=6": {
"model": "minecraft:block/cake_slice6"
"model": "minecraft:block/cake/2"
}
}
}

View File

@@ -1,48 +1,276 @@
{
"variants": {
"facing=east,sculk_sensor_phase=active": {
"model": "minecraft:block/calibrated_sculk_sensor_active",
"facing=east,sculk_sensor_phase=active,power=0": {
"model": "minecraft:block/sculk_sensor/calibrated/0",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=1": {
"model": "minecraft:block/sculk_sensor/calibrated/1",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=2": {
"model": "minecraft:block/sculk_sensor/calibrated/2",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=3": {
"model": "minecraft:block/sculk_sensor/calibrated/3",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=4": {
"model": "minecraft:block/sculk_sensor/calibrated/4",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=5": {
"model": "minecraft:block/sculk_sensor/calibrated/5",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=6": {
"model": "minecraft:block/sculk_sensor/calibrated/6",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=7": {
"model": "minecraft:block/sculk_sensor/calibrated/7",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=8": {
"model": "minecraft:block/sculk_sensor/calibrated/8",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=9": {
"model": "minecraft:block/sculk_sensor/calibrated/9",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=10": {
"model": "minecraft:block/sculk_sensor/calibrated/10",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=11": {
"model": "minecraft:block/sculk_sensor/calibrated/11",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=12": {
"model": "minecraft:block/sculk_sensor/calibrated/12",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=13": {
"model": "minecraft:block/sculk_sensor/calibrated/13",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=14": {
"model": "minecraft:block/sculk_sensor/calibrated/14",
"y": 90
},
"facing=east,sculk_sensor_phase=active,power=15": {
"model": "minecraft:block/sculk_sensor/calibrated/15",
"y": 90
},
"facing=east,sculk_sensor_phase=cooldown": {
"model": "minecraft:block/calibrated_sculk_sensor_active",
"model": "minecraft:block/sculk_sensor/calibrated/cooldown",
"y": 90
},
"facing=east,sculk_sensor_phase=inactive": {
"model": "minecraft:block/calibrated_sculk_sensor_inactive",
"model": "minecraft:block/sculk_sensor/calibrated/0",
"y": 90
},
"facing=north,sculk_sensor_phase=active": {
"model": "minecraft:block/calibrated_sculk_sensor_active"
"facing=north,sculk_sensor_phase=active,power=0": {
"model": "minecraft:block/sculk_sensor/calibrated/0"
},
"facing=north,sculk_sensor_phase=active,power=1": {
"model": "minecraft:block/sculk_sensor/calibrated/1"
},
"facing=north,sculk_sensor_phase=active,power=2": {
"model": "minecraft:block/sculk_sensor/calibrated/2"
},
"facing=north,sculk_sensor_phase=active,power=3": {
"model": "minecraft:block/sculk_sensor/calibrated/3"
},
"facing=north,sculk_sensor_phase=active,power=4": {
"model": "minecraft:block/sculk_sensor/calibrated/4"
},
"facing=north,sculk_sensor_phase=active,power=5": {
"model": "minecraft:block/sculk_sensor/calibrated/5"
},
"facing=north,sculk_sensor_phase=active,power=6": {
"model": "minecraft:block/sculk_sensor/calibrated/6"
},
"facing=north,sculk_sensor_phase=active,power=7": {
"model": "minecraft:block/sculk_sensor/calibrated/7"
},
"facing=north,sculk_sensor_phase=active,power=8": {
"model": "minecraft:block/sculk_sensor/calibrated/8"
},
"facing=north,sculk_sensor_phase=active,power=9": {
"model": "minecraft:block/sculk_sensor/calibrated/9"
},
"facing=north,sculk_sensor_phase=active,power=10": {
"model": "minecraft:block/sculk_sensor/calibrated/10"
},
"facing=north,sculk_sensor_phase=active,power=11": {
"model": "minecraft:block/sculk_sensor/calibrated/11"
},
"facing=north,sculk_sensor_phase=active,power=12": {
"model": "minecraft:block/sculk_sensor/calibrated/12"
},
"facing=north,sculk_sensor_phase=active,power=13": {
"model": "minecraft:block/sculk_sensor/calibrated/13"
},
"facing=north,sculk_sensor_phase=active,power=14": {
"model": "minecraft:block/sculk_sensor/calibrated/14"
},
"facing=north,sculk_sensor_phase=active,power=15": {
"model": "minecraft:block/sculk_sensor/calibrated/15"
},
"facing=north,sculk_sensor_phase=cooldown": {
"model": "minecraft:block/calibrated_sculk_sensor_active"
"model": "minecraft:block/sculk_sensor/calibrated/cooldown"
},
"facing=north,sculk_sensor_phase=inactive": {
"model": "minecraft:block/calibrated_sculk_sensor_inactive"
"model": "minecraft:block/sculk_sensor/calibrated/0"
},
"facing=south,sculk_sensor_phase=active": {
"model": "minecraft:block/calibrated_sculk_sensor_active",
"facing=south,sculk_sensor_phase=active,power=0": {
"model": "minecraft:block/sculk_sensor/calibrated/0",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=1": {
"model": "minecraft:block/sculk_sensor/calibrated/1",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=2": {
"model": "minecraft:block/sculk_sensor/calibrated/2",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=3": {
"model": "minecraft:block/sculk_sensor/calibrated/3",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=4": {
"model": "minecraft:block/sculk_sensor/calibrated/4",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=5": {
"model": "minecraft:block/sculk_sensor/calibrated/5",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=6": {
"model": "minecraft:block/sculk_sensor/calibrated/6",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=7": {
"model": "minecraft:block/sculk_sensor/calibrated/7",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=8": {
"model": "minecraft:block/sculk_sensor/calibrated/8",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=9": {
"model": "minecraft:block/sculk_sensor/calibrated/9",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=10": {
"model": "minecraft:block/sculk_sensor/calibrated/10",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=11": {
"model": "minecraft:block/sculk_sensor/calibrated/11",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=12": {
"model": "minecraft:block/sculk_sensor/calibrated/12",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=13": {
"model": "minecraft:block/sculk_sensor/calibrated/13",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=14": {
"model": "minecraft:block/sculk_sensor/calibrated/14",
"y": 180
},
"facing=south,sculk_sensor_phase=active,power=15": {
"model": "minecraft:block/sculk_sensor/calibrated/15",
"y": 180
},
"facing=south,sculk_sensor_phase=cooldown": {
"model": "minecraft:block/calibrated_sculk_sensor_active",
"model": "minecraft:block/sculk_sensor/calibrated/cooldown",
"y": 180
},
"facing=south,sculk_sensor_phase=inactive": {
"model": "minecraft:block/calibrated_sculk_sensor_inactive",
"model": "minecraft:block/sculk_sensor/calibrated/0",
"y": 180
},
"facing=west,sculk_sensor_phase=active": {
"model": "minecraft:block/calibrated_sculk_sensor_active",
"facing=west,sculk_sensor_phase=active,power=0": {
"model": "minecraft:block/sculk_sensor/calibrated/0",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=1": {
"model": "minecraft:block/sculk_sensor/calibrated/1",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=2": {
"model": "minecraft:block/sculk_sensor/calibrated/2",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=3": {
"model": "minecraft:block/sculk_sensor/calibrated/3",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=4": {
"model": "minecraft:block/sculk_sensor/calibrated/4",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=5": {
"model": "minecraft:block/sculk_sensor/calibrated/5",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=6": {
"model": "minecraft:block/sculk_sensor/calibrated/6",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=7": {
"model": "minecraft:block/sculk_sensor/calibrated/7",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=8": {
"model": "minecraft:block/sculk_sensor/calibrated/8",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=9": {
"model": "minecraft:block/sculk_sensor/calibrated/9",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=10": {
"model": "minecraft:block/sculk_sensor/calibrated/10",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=11": {
"model": "minecraft:block/sculk_sensor/calibrated/11",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=12": {
"model": "minecraft:block/sculk_sensor/calibrated/12",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=13": {
"model": "minecraft:block/sculk_sensor/calibrated/13",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=14": {
"model": "minecraft:block/sculk_sensor/calibrated/14",
"y": 270
},
"facing=west,sculk_sensor_phase=active,power=15": {
"model": "minecraft:block/sculk_sensor/calibrated/15",
"y": 270
},
"facing=west,sculk_sensor_phase=cooldown": {
"model": "minecraft:block/calibrated_sculk_sensor_active",
"model": "minecraft:block/sculk_sensor/calibrated/cooldown",
"y": 270
},
"facing=west,sculk_sensor_phase=inactive": {
"model": "minecraft:block/calibrated_sculk_sensor_inactive",
"model": "minecraft:block/sculk_sensor/calibrated/0",
"y": 270
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/cauldron"
"model": "minecraft:block/cauldron/empty"
}
}
}

View File

@@ -1,7 +1,28 @@
{
"variants": {
"": {
"model": "minecraft:block/cherry_leaves"
"persistent=false": {
"model": "minecraft:block/leaves/cherry/not_persistent"
},
"distance=1,persistent=true": {
"model": "minecraft:block/leaves/cherry/1"
},
"distance=2,persistent=true": {
"model": "minecraft:block/leaves/cherry/2"
},
"distance=3,persistent=true": {
"model": "minecraft:block/leaves/cherry/3"
},
"distance=4,persistent=true": {
"model": "minecraft:block/leaves/cherry/4"
},
"distance=5,persistent=true": {
"model": "minecraft:block/leaves/cherry/5"
},
"distance=6,persistent=true": {
"model": "minecraft:block/leaves/cherry/6"
},
"distance=7,persistent=true": {
"model": "minecraft:block/leaves/cherry/7"
}
}
}

View File

@@ -1,64 +1,64 @@
{
"variants": {
"facing=east,mode=compare,powered=false": {
"model": "minecraft:block/comparator",
"y": 270
"y": 270,
"model": "minecraft:block/comparator/off"
},
"facing=east,mode=compare,powered=true": {
"model": "minecraft:block/comparator_on",
"y": 270
"y": 270,
"model": "minecraft:block/comparator/on"
},
"facing=east,mode=subtract,powered=false": {
"model": "minecraft:block/comparator_subtract",
"y": 270
"y": 270,
"model": "minecraft:block/comparator/off_subtract"
},
"facing=east,mode=subtract,powered=true": {
"model": "minecraft:block/comparator_on_subtract",
"y": 270
"y": 270,
"model": "minecraft:block/comparator/on_subtract"
},
"facing=north,mode=compare,powered=false": {
"model": "minecraft:block/comparator",
"y": 180
"y": 180,
"model": "minecraft:block/comparator/off"
},
"facing=north,mode=compare,powered=true": {
"model": "minecraft:block/comparator_on",
"y": 180
"y": 180,
"model": "minecraft:block/comparator/on"
},
"facing=north,mode=subtract,powered=false": {
"model": "minecraft:block/comparator_subtract",
"y": 180
"y": 180,
"model": "minecraft:block/comparator/off_subtract"
},
"facing=north,mode=subtract,powered=true": {
"model": "minecraft:block/comparator_on_subtract",
"y": 180
"y": 180,
"model": "minecraft:block/comparator/on_subtract"
},
"facing=south,mode=compare,powered=false": {
"model": "minecraft:block/comparator"
"model": "minecraft:block/comparator/off"
},
"facing=south,mode=compare,powered=true": {
"model": "minecraft:block/comparator_on"
"model": "minecraft:block/comparator/on"
},
"facing=south,mode=subtract,powered=false": {
"model": "minecraft:block/comparator_subtract"
"model": "minecraft:block/comparator/off_subtract"
},
"facing=south,mode=subtract,powered=true": {
"model": "minecraft:block/comparator_on_subtract"
"model": "minecraft:block/comparator/on_subtract"
},
"facing=west,mode=compare,powered=false": {
"model": "minecraft:block/comparator",
"y": 90
"y": 90,
"model": "minecraft:block/comparator/off"
},
"facing=west,mode=compare,powered=true": {
"model": "minecraft:block/comparator_on",
"y": 90
"y": 90,
"model": "minecraft:block/comparator/on"
},
"facing=west,mode=subtract,powered=false": {
"model": "minecraft:block/comparator_subtract",
"y": 90
"y": 90,
"model": "minecraft:block/comparator/off_subtract"
},
"facing=west,mode=subtract,powered=true": {
"model": "minecraft:block/comparator_on_subtract",
"y": 90
"y": 90,
"model": "minecraft:block/comparator/on_subtract"
}
}
}

View File

@@ -1,73 +1,31 @@
{
"multipart": [
{
"apply": {
"model": "minecraft:block/composter"
}
"variants": {
"level=0": {
"model": "minecraft:block/composter/0"
},
{
"apply": {
"model": "minecraft:block/composter_contents1"
},
"when": {
"level": "1"
}
"level=1": {
"model": "minecraft:block/composter/1"
},
{
"apply": {
"model": "minecraft:block/composter_contents2"
},
"when": {
"level": "2"
}
"level=2": {
"model": "minecraft:block/composter/2"
},
{
"apply": {
"model": "minecraft:block/composter_contents3"
},
"when": {
"level": "3"
}
"level=3": {
"model": "minecraft:block/composter/3"
},
{
"apply": {
"model": "minecraft:block/composter_contents4"
},
"when": {
"level": "4"
}
"level=4": {
"model": "minecraft:block/composter/4"
},
{
"apply": {
"model": "minecraft:block/composter_contents5"
},
"when": {
"level": "5"
}
"level=5": {
"model": "minecraft:block/composter/5"
},
{
"apply": {
"model": "minecraft:block/composter_contents6"
},
"when": {
"level": "6"
}
"level=6": {
"model": "minecraft:block/composter/6"
},
{
"apply": {
"model": "minecraft:block/composter_contents7"
},
"when": {
"level": "7"
}
"level=7": {
"model": "minecraft:block/composter/7"
},
{
"apply": {
"model": "minecraft:block/composter_contents_ready"
},
"when": {
"level": "8"
}
"level=8": {
"model": "minecraft:block/composter/8"
}
]
}
}

View File

@@ -1,215 +1,215 @@
{
"variants": {
"crafting=false,orientation=down_east,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"x": 90,
"y": 90
},
"crafting=false,orientation=down_east,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"x": 90,
"y": 90
},
"crafting=false,orientation=down_north,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"x": 90
},
"crafting=false,orientation=down_north,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"x": 90
},
"crafting=false,orientation=down_south,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"x": 90,
"y": 180
},
"crafting=false,orientation=down_south,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"x": 90,
"y": 180
},
"crafting=false,orientation=down_west,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"x": 90,
"y": 270
},
"crafting=false,orientation=down_west,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"x": 90,
"y": 270
},
"crafting=false,orientation=east_up,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"y": 90
},
"crafting=false,orientation=east_up,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"y": 90
},
"crafting=false,orientation=north_up,triggered=false": {
"model": "minecraft:block/crafter"
"model": "minecraft:block/crafter/regular"
},
"crafting=false,orientation=north_up,triggered=true": {
"model": "minecraft:block/crafter_triggered"
"model": "minecraft:block/crafter/triggered"
},
"crafting=false,orientation=south_up,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"y": 180
},
"crafting=false,orientation=south_up,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"y": 180
},
"crafting=false,orientation=up_east,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"x": 270,
"y": 270
},
"crafting=false,orientation=up_east,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"x": 270,
"y": 270
},
"crafting=false,orientation=up_north,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"x": 270,
"y": 180
},
"crafting=false,orientation=up_north,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"x": 270,
"y": 180
},
"crafting=false,orientation=up_south,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"x": 270
},
"crafting=false,orientation=up_south,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"x": 270
},
"crafting=false,orientation=up_west,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"x": 270,
"y": 90
},
"crafting=false,orientation=up_west,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"x": 270,
"y": 90
},
"crafting=false,orientation=west_up,triggered=false": {
"model": "minecraft:block/crafter",
"model": "minecraft:block/crafter/regular",
"y": 270
},
"crafting=false,orientation=west_up,triggered=true": {
"model": "minecraft:block/crafter_triggered",
"model": "minecraft:block/crafter/triggered",
"y": 270
},
"crafting=true,orientation=down_east,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"x": 90,
"y": 90
},
"crafting=true,orientation=down_east,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"x": 90,
"y": 90
},
"crafting=true,orientation=down_north,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"x": 90
},
"crafting=true,orientation=down_north,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"x": 90
},
"crafting=true,orientation=down_south,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"x": 90,
"y": 180
},
"crafting=true,orientation=down_south,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"x": 90,
"y": 180
},
"crafting=true,orientation=down_west,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"x": 90,
"y": 270
},
"crafting=true,orientation=down_west,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"x": 90,
"y": 270
},
"crafting=true,orientation=east_up,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"y": 90
},
"crafting=true,orientation=east_up,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"y": 90
},
"crafting=true,orientation=north_up,triggered=false": {
"model": "minecraft:block/crafter_crafting"
"model": "minecraft:block/crafter/crafting"
},
"crafting=true,orientation=north_up,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered"
"model": "minecraft:block/crafter/crafting_triggered"
},
"crafting=true,orientation=south_up,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"y": 180
},
"crafting=true,orientation=south_up,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"y": 180
},
"crafting=true,orientation=up_east,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"x": 270,
"y": 270
},
"crafting=true,orientation=up_east,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"x": 270,
"y": 270
},
"crafting=true,orientation=up_north,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"x": 270,
"y": 180
},
"crafting=true,orientation=up_north,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"x": 270,
"y": 180
},
"crafting=true,orientation=up_south,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"x": 270
},
"crafting=true,orientation=up_south,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"x": 270
},
"crafting=true,orientation=up_west,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"x": 270,
"y": 90
},
"crafting=true,orientation=up_west,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"x": 270,
"y": 90
},
"crafting=true,orientation=west_up,triggered=false": {
"model": "minecraft:block/crafter_crafting",
"model": "minecraft:block/crafter/crafting",
"y": 270
},
"crafting=true,orientation=west_up,triggered=true": {
"model": "minecraft:block/crafter_crafting_triggered",
"model": "minecraft:block/crafter/crafting_triggered",
"y": 270
}
}

View File

@@ -1,7 +1,13 @@
{
"variants": {
"type=bottom": { "model": "block/cut_copper_slab" },
"type=top": { "model": "block/cut_copper_slab_top" },
"type=double": { "model": "block/cut_copper_slab_double" }
"variants": {
"type=bottom": {
"model": "minecraft:block/cut_copper_slab"
},
"type=double": {
"model": "minecraft:block/cut_copper"
},
"type=top": {
"model": "minecraft:block/cut_copper_slab_top"
}
}
}
}

View File

@@ -1,7 +1,13 @@
{
"variants": {
"type=bottom": { "model": "block/cut_red_sandstone_slab" },
"type=top": { "model": "block/cut_red_sandstone_slab_top" },
"type=double": { "model": "block/cut_red_sandstone_slab_double" }
"variants": {
"type=bottom": {
"model": "minecraft:block/cut_red_sandstone_slab"
},
"type=double": {
"model": "minecraft:block/cut_red_sandstone"
},
"type=top": {
"model": "minecraft:block/cut_red_sandstone_slab_top"
}
}
}
}

View File

@@ -1,7 +1,13 @@
{
"variants": {
"type=bottom": { "model": "block/cut_sandstone_slab" },
"type=top": { "model": "block/cut_sandstone_slab_top" },
"type=double": { "model": "block/cut_sandstone_slab_double" }
"variants": {
"type=bottom": {
"model": "minecraft:block/cut_sandstone_slab"
},
"type=double": {
"model": "minecraft:block/cut_sandstone"
},
"type=top": {
"model": "minecraft:block/cut_sandstone_slab_top"
}
}
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/cyan_concrete"
"model": "minecraft:block/concrete/cyan_concrete"
}
}
}

View File

@@ -1,7 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/cyan_wool"
"model": "minecraft:block/wool/cyan_wool"
}
}
}

View File

@@ -1,7 +1,28 @@
{
"variants": {
"": {
"model": "minecraft:block/dark_oak_leaves"
"persistent=false": {
"model": "minecraft:block/leaves/dark_oak/not_persistent"
},
"distance=1,persistent=true": {
"model": "minecraft:block/leaves/dark_oak/1"
},
"distance=2,persistent=true": {
"model": "minecraft:block/leaves/dark_oak/2"
},
"distance=3,persistent=true": {
"model": "minecraft:block/leaves/dark_oak/3"
},
"distance=4,persistent=true": {
"model": "minecraft:block/leaves/dark_oak/4"
},
"distance=5,persistent=true": {
"model": "minecraft:block/leaves/dark_oak/5"
},
"distance=6,persistent=true": {
"model": "minecraft:block/leaves/dark_oak/6"
},
"distance=7,persistent=true": {
"model": "minecraft:block/leaves/dark_oak/7"
}
}
}

View File

@@ -1,10 +1,101 @@
{
"variants": {
"inverted=false": {
"model": "minecraft:block/daylight_detector"
"inverted=false,power=0": {
"model": "minecraft:block/daylight_detector/0"
},
"inverted=true": {
"model": "minecraft:block/daylight_detector_inverted"
"inverted=false,power=1": {
"model": "minecraft:block/daylight_detector/1"
},
"inverted=false,power=2": {
"model": "minecraft:block/daylight_detector/2"
},
"inverted=false,power=3": {
"model": "minecraft:block/daylight_detector/3"
},
"inverted=false,power=4": {
"model": "minecraft:block/daylight_detector/4"
},
"inverted=false,power=5": {
"model": "minecraft:block/daylight_detector/5"
},
"inverted=false,power=6": {
"model": "minecraft:block/daylight_detector/6"
},
"inverted=false,power=7": {
"model": "minecraft:block/daylight_detector/7"
},
"inverted=false,power=8": {
"model": "minecraft:block/daylight_detector/8"
},
"inverted=false,power=9": {
"model": "minecraft:block/daylight_detector/9"
},
"inverted=false,power=10": {
"model": "minecraft:block/daylight_detector/10"
},
"inverted=false,power=11": {
"model": "minecraft:block/daylight_detector/11"
},
"inverted=false,power=12": {
"model": "minecraft:block/daylight_detector/12"
},
"inverted=false,power=13": {
"model": "minecraft:block/daylight_detector/13"
},
"inverted=false,power=14": {
"model": "minecraft:block/daylight_detector/14"
},
"inverted=false,power=15": {
"model": "minecraft:block/daylight_detector/15"
},
"inverted=true,power=0": {
"model": "minecraft:block/daylight_detector/inverted/0"
},
"inverted=true,power=1": {
"model": "minecraft:block/daylight_detector/inverted/1"
},
"inverted=true,power=2": {
"model": "minecraft:block/daylight_detector/inverted/2"
},
"inverted=true,power=3": {
"model": "minecraft:block/daylight_detector/inverted/3"
},
"inverted=true,power=4": {
"model": "minecraft:block/daylight_detector/inverted/4"
},
"inverted=true,power=5": {
"model": "minecraft:block/daylight_detector/inverted/5"
},
"inverted=true,power=6": {
"model": "minecraft:block/daylight_detector/inverted/6"
},
"inverted=true,power=7": {
"model": "minecraft:block/daylight_detector/inverted/7"
},
"inverted=true,power=8": {
"model": "minecraft:block/daylight_detector/inverted/8"
},
"inverted=true,power=9": {
"model": "minecraft:block/daylight_detector/inverted/9"
},
"inverted=true,power=10": {
"model": "minecraft:block/daylight_detector/inverted/10"
},
"inverted=true,power=11": {
"model": "minecraft:block/daylight_detector/inverted/11"
},
"inverted=true,power=12": {
"model": "minecraft:block/daylight_detector/inverted/12"
},
"inverted=true,power=13": {
"model": "minecraft:block/daylight_detector/inverted/13"
},
"inverted=true,power=14": {
"model": "minecraft:block/daylight_detector/inverted/14"
},
"inverted=true,power=15": {
"model": "minecraft:block/daylight_detector/inverted/15"
}
}
}

View File

@@ -1,7 +1,10 @@
{
"variants": {
"": {
"model": "minecraft:block/deepslate_redstone_ore"
"lit=false": {
"model": "minecraft:block/redstone_ore/deepslate_off"
},
"lit=true": {
"model": "minecraft:block/redstone_ore/deepslate_on"
}
}
}

View File

@@ -1,46 +1,46 @@
{
"variants": {
"powered=false,shape=ascending_east": {
"model": "minecraft:block/detector_rail_raised_ne",
"model": "minecraft:block/detector_rail/raised_ne",
"y": 90
},
"powered=false,shape=ascending_north": {
"model": "minecraft:block/detector_rail_raised_ne"
"model": "minecraft:block/detector_rail/raised_ne"
},
"powered=false,shape=ascending_south": {
"model": "minecraft:block/detector_rail_raised_sw"
"model": "minecraft:block/detector_rail/raised_sw"
},
"powered=false,shape=ascending_west": {
"model": "minecraft:block/detector_rail_raised_sw",
"model": "minecraft:block/detector_rail/raised_sw",
"y": 90
},
"powered=false,shape=east_west": {
"model": "minecraft:block/detector_rail",
"model": "minecraft:block/detector_rail/off",
"y": 90
},
"powered=false,shape=north_south": {
"model": "minecraft:block/detector_rail"
"model": "minecraft:block/detector_rail/off"
},
"powered=true,shape=ascending_east": {
"model": "minecraft:block/detector_rail_on_raised_ne",
"model": "minecraft:block/detector_rail/on_raised_ne",
"y": 90
},
"powered=true,shape=ascending_north": {
"model": "minecraft:block/detector_rail_on_raised_ne"
"model": "minecraft:block/detector_rail/on_raised_ne"
},
"powered=true,shape=ascending_south": {
"model": "minecraft:block/detector_rail_on_raised_sw"
"model": "minecraft:block/detector_rail/on_raised_sw"
},
"powered=true,shape=ascending_west": {
"model": "minecraft:block/detector_rail_on_raised_sw",
"model": "minecraft:block/detector_rail/on_raised_sw",
"y": 90
},
"powered=true,shape=east_west": {
"model": "minecraft:block/detector_rail_on",
"model": "minecraft:block/detector_rail/on",
"y": 90
},
"powered=true,shape=north_south": {
"model": "minecraft:block/detector_rail_on"
"model": "minecraft:block/detector_rail/on"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/black_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/black_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/black_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/black_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/black_terracotta"
}
}
}

View File

@@ -0,0 +1,34 @@
{
"variants": {
"facing=east,lit=false": {
"model": "minecraft:block/blast_furnace/off",
"y": 90
},
"facing=east,lit=true": {
"model": "minecraft:block/blast_furnace/on",
"y": 90
},
"facing=north,lit=false": {
"model": "minecraft:block/blast_furnace/off"
},
"facing=north,lit=true": {
"model": "minecraft:block/blast_furnace/on"
},
"facing=south,lit=false": {
"model": "minecraft:block/blast_furnace/off",
"y": 180
},
"facing=south,lit=true": {
"model": "minecraft:block/blast_furnace/on",
"y": 180
},
"facing=west,lit=false": {
"model": "minecraft:block/blast_furnace/off",
"y": 270
},
"facing=west,lit=true": {
"model": "minecraft:block/blast_furnace/on",
"y": 270
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/blue_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/blue_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/blue_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/blue_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/blue_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/brown_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/brown_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/brown_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/brown_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/brown_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/cyan_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/cyan_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/cyan_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/cyan_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/cyan_terracotta"
}
}
}

View File

@@ -0,0 +1,34 @@
{
"variants": {
"facing=east,lit=false": {
"model": "minecraft:block/furnace/off",
"y": 90
},
"facing=east,lit=true": {
"model": "minecraft:block/furnace/on",
"y": 90
},
"facing=north,lit=false": {
"model": "minecraft:block/furnace/off"
},
"facing=north,lit=true": {
"model": "minecraft:block/furnace/on"
},
"facing=south,lit=false": {
"model": "minecraft:block/furnace/off",
"y": 180
},
"facing=south,lit=true": {
"model": "minecraft:block/furnace/on",
"y": 180
},
"facing=west,lit=false": {
"model": "minecraft:block/furnace/off",
"y": 270
},
"facing=west,lit=true": {
"model": "minecraft:block/furnace/on",
"y": 270
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/gray_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/gray_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/gray_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/gray_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/gray_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/green_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/green_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/green_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/green_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/green_terracotta"
}
}
}

View File

@@ -0,0 +1,10 @@
{
"variants": {
"open=false": {
"model": "minecraft:block/redstone_lamp"
},
"open=true": {
"model": "minecraft:block/redstone_lamp_on"
}
}
}

View File

@@ -0,0 +1,10 @@
{
"variants": {
"open=false": {
"model": "minecraft:block/redstone_lamp/off"
},
"open=true": {
"model": "minecraft:block/redstone_lamp/on"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/acacia/1"
},
"distance=2": {
"model": "minecraft:block/leaves/acacia/2"
},
"distance=3": {
"model": "minecraft:block/leaves/acacia/3"
},
"distance=4": {
"model": "minecraft:block/leaves/acacia/4"
},
"distance=5": {
"model": "minecraft:block/leaves/acacia/5"
},
"distance=6": {
"model": "minecraft:block/leaves/acacia/6"
},
"distance=7": {
"model": "minecraft:block/leaves/acacia/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/azalea/1"
},
"distance=2": {
"model": "minecraft:block/leaves/azalea/2"
},
"distance=3": {
"model": "minecraft:block/leaves/azalea/3"
},
"distance=4": {
"model": "minecraft:block/leaves/azalea/4"
},
"distance=5": {
"model": "minecraft:block/leaves/azalea/5"
},
"distance=6": {
"model": "minecraft:block/leaves/azalea/6"
},
"distance=7": {
"model": "minecraft:block/leaves/azalea/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/birch/1"
},
"distance=2": {
"model": "minecraft:block/leaves/birch/2"
},
"distance=3": {
"model": "minecraft:block/leaves/birch/3"
},
"distance=4": {
"model": "minecraft:block/leaves/birch/4"
},
"distance=5": {
"model": "minecraft:block/leaves/birch/5"
},
"distance=6": {
"model": "minecraft:block/leaves/birch/6"
},
"distance=7": {
"model": "minecraft:block/leaves/birch/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/cherry/1"
},
"distance=2": {
"model": "minecraft:block/leaves/cherry/2"
},
"distance=3": {
"model": "minecraft:block/leaves/cherry/3"
},
"distance=4": {
"model": "minecraft:block/leaves/cherry/4"
},
"distance=5": {
"model": "minecraft:block/leaves/cherry/5"
},
"distance=6": {
"model": "minecraft:block/leaves/cherry/6"
},
"distance=7": {
"model": "minecraft:block/leaves/cherry/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/dark_oak/1"
},
"distance=2": {
"model": "minecraft:block/leaves/dark_oak/2"
},
"distance=3": {
"model": "minecraft:block/leaves/dark_oak/3"
},
"distance=4": {
"model": "minecraft:block/leaves/dark_oak/4"
},
"distance=5": {
"model": "minecraft:block/leaves/dark_oak/5"
},
"distance=6": {
"model": "minecraft:block/leaves/dark_oak/6"
},
"distance=7": {
"model": "minecraft:block/leaves/dark_oak/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/flowering_azalea/1"
},
"distance=2": {
"model": "minecraft:block/leaves/flowering_azalea/2"
},
"distance=3": {
"model": "minecraft:block/leaves/flowering_azalea/3"
},
"distance=4": {
"model": "minecraft:block/leaves/flowering_azalea/4"
},
"distance=5": {
"model": "minecraft:block/leaves/flowering_azalea/5"
},
"distance=6": {
"model": "minecraft:block/leaves/flowering_azalea/6"
},
"distance=7": {
"model": "minecraft:block/leaves/flowering_azalea/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/jungle/1"
},
"distance=2": {
"model": "minecraft:block/leaves/jungle/2"
},
"distance=3": {
"model": "minecraft:block/leaves/jungle/3"
},
"distance=4": {
"model": "minecraft:block/leaves/jungle/4"
},
"distance=5": {
"model": "minecraft:block/leaves/jungle/5"
},
"distance=6": {
"model": "minecraft:block/leaves/jungle/6"
},
"distance=7": {
"model": "minecraft:block/leaves/jungle/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/mangrove/1"
},
"distance=2": {
"model": "minecraft:block/leaves/mangrove/2"
},
"distance=3": {
"model": "minecraft:block/leaves/mangrove/3"
},
"distance=4": {
"model": "minecraft:block/leaves/mangrove/4"
},
"distance=5": {
"model": "minecraft:block/leaves/mangrove/5"
},
"distance=6": {
"model": "minecraft:block/leaves/mangrove/6"
},
"distance=7": {
"model": "minecraft:block/leaves/mangrove/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/oak/1"
},
"distance=2": {
"model": "minecraft:block/leaves/oak/2"
},
"distance=3": {
"model": "minecraft:block/leaves/oak/3"
},
"distance=4": {
"model": "minecraft:block/leaves/oak/4"
},
"distance=5": {
"model": "minecraft:block/leaves/oak/5"
},
"distance=6": {
"model": "minecraft:block/leaves/oak/6"
},
"distance=7": {
"model": "minecraft:block/leaves/oak/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/pale_oak/1"
},
"distance=2": {
"model": "minecraft:block/leaves/pale_oak/2"
},
"distance=3": {
"model": "minecraft:block/leaves/pale_oak/3"
},
"distance=4": {
"model": "minecraft:block/leaves/pale_oak/4"
},
"distance=5": {
"model": "minecraft:block/leaves/pale_oak/5"
},
"distance=6": {
"model": "minecraft:block/leaves/pale_oak/6"
},
"distance=7": {
"model": "minecraft:block/leaves/pale_oak/7"
}
}
}

View File

@@ -0,0 +1,25 @@
{
"variants": {
"distance=1": {
"model": "minecraft:block/leaves/spruce/1"
},
"distance=2": {
"model": "minecraft:block/leaves/spruce/2"
},
"distance=3": {
"model": "minecraft:block/leaves/spruce/3"
},
"distance=4": {
"model": "minecraft:block/leaves/spruce/4"
},
"distance=5": {
"model": "minecraft:block/leaves/spruce/5"
},
"distance=6": {
"model": "minecraft:block/leaves/spruce/6"
},
"distance=7": {
"model": "minecraft:block/leaves/spruce/7"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/light_blue_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/light_blue_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/light_blue_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/light_blue_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/light_blue_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/light_gray_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/light_gray_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/light_gray_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/light_gray_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/light_gray_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/lime_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/lime_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/lime_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/lime_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/lime_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/magenta_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/magenta_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/magenta_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/magenta_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/magenta_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/orange_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/orange_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/orange_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/orange_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/orange_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/pink_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/pink_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/pink_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/pink_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/pink_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/purple_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/purple_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/purple_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/purple_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/purple_terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/red_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/red_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/red_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/red_concrete_powder",
"y": 270
}
]
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/red_terracotta"
}
}
}

View File

@@ -0,0 +1,10 @@
{
"variants": {
"lit=false": {
"model": "minecraft:block/redstone_lamp/off"
},
"lit=true": {
"model": "minecraft:block/redstone_lamp/on"
}
}
}

View File

@@ -0,0 +1,34 @@
{
"variants": {
"facing=east,lit=false": {
"model": "minecraft:block/smoker/off",
"y": 90
},
"facing=east,lit=true": {
"model": "minecraft:block/smoker/on",
"y": 90
},
"facing=north,lit=false": {
"model": "minecraft:block/smoker/off"
},
"facing=north,lit=true": {
"model": "minecraft:block/smoker/on"
},
"facing=south,lit=false": {
"model": "minecraft:block/smoker/off",
"y": 180
},
"facing=south,lit=true": {
"model": "minecraft:block/smoker/on",
"y": 180
},
"facing=west,lit=false": {
"model": "minecraft:block/smoker/off",
"y": 270
},
"facing=west,lit=true": {
"model": "minecraft:block/smoker/on",
"y": 270
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/terracotta/terracotta"
}
}
}

View File

@@ -0,0 +1,21 @@
{
"variants": {
"": [
{
"model": "minecraft:block/concrete_powder/white_concrete_powder"
},
{
"model": "minecraft:block/concrete_powder/white_concrete_powder",
"y": 90
},
{
"model": "minecraft:block/concrete_powder/white_concrete_powder",
"y": 180
},
{
"model": "minecraft:block/concrete_powder/white_concrete_powder",
"y": 270
}
]
}
}

Some files were not shown because too many files have changed in this diff Show More