diff --git a/content/design.typ b/content/design.typ index de603724..95a3845c 100644 --- a/content/design.typ +++ b/content/design.typ @@ -1,8 +1,129 @@ +#import "/lib.typ": diorama + = Design Tips == Synchronization === Daylight Detector + +#[#show raw.where(lang: "mc-diorama"): it => diorama( + autoplay: true, + loop: true, + radius: 5, + theta: 115, + phi: 20, + it.text, + ) + + ```mc-diorama + p 0 0 0 smooth_stone_slab type=top + p 0 1 0 daylight_detector inverted=true + p 0 2 0 piston facing=north extended=false + p 0 0 -1 smooth_stone_slab type=top + p 0 1 -1 observer facing=south powered=false + t 0 + p 0 2 0 extended=true + p 0 2 -0.5 piston_head facing=north short=true type=normal + t 1 + p 0 2 -0.5 air + p 0 2 -1 piston_head facing=north short=false type=normal + t 2 + p 0 1 -1 powered=true + t 4 + p 0 1 -1 powered=false + + t 20 + p 0 2 -1 air + p 0 2 -0.5 piston_head facing=north short=true type=normal + + t 21 + p 0 2 -0.5 air + p 0 2 0 extended=false + + t 22 + p 0 1 -1 powered=true + t 24 + p 0 1 -1 powered=false + + t 40 + p 0 0 0 + + ``` + + ```mc-diorama + p 1 -1 -1 smooth_stone_slab type=top + p 0 -1 -1 smooth_stone_slab type=top + p 1 -1 0 smooth_stone_slab type=top + p 0 -1 0 smooth_stone_slab type=top + p 1 -1 1 smooth_stone_slab type=top + p 0 -1 1 smooth_stone_slab type=top + p 1 -1 2 smooth_stone_slab type=top + p 0 -1 2 smooth_stone_slab type=top + + p 1 0 0 daylight_detector inverted=true + p 0 0 0 daylight_detector inverted=true + p 0 0 1 comparator facing=north mode=subtract powered=false + p 1 0 1 redstone_wire north=side west=side power=12 + p 0 0 2 black_concrete + p 0 1 2 redstone_wire north=side south=side east=side west=side power=0 + p 0 1 1 sticky_piston facing=north extended=false + p 0 1 0 light_gray_terracotta + p 0 0 -1 observer facing=south powered=false + + t 2 + p 0 0 1 powered=true + p 0 1 2 power=1 + + t 3 + p 0 1 1 extended=true + p 0 1 0 air + p 0 1 -.5 light_gray_terracotta + p 0 1 .5 piston_head type=sticky short=true facing=north + + t 4 + p 0 0 -1 powered=true + p 0 1 -.5 air + p 0 1 .5 air + p 0 1 -1 light_gray_terracotta + p 0 1 0 piston_head type=sticky short=false facing=north + + t 6 + p 0 0 -1 powered=false + + t 22 + p 0 0 1 powered=false + p 0 1 2 power=0 + + t 23 + p 0 1 -1 air + p 0 1 0 air + p 0 1 -.5 light_gray_terracotta + p 0 1 .5 piston_head type=sticky short=true facing=north + + t 24 + p 0 1 -.5 air + p 0 1 .5 air + p 0 1 0 light_gray_terracotta + p 0 1 1 extended=false + p 0 0 -1 powered=true + + t 26 + p 0 0 -1 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) +} +", +) diff --git a/content/index.typ b/content/index.typ index 5da4f856..eeb777df 100644 --- a/content/index.typ +++ b/content/index.typ @@ -1,7 +1,19 @@ -#import "/lib.typ": callout, diorama, warn, world +#import "/lib.typ": callout, diorama, warn #title() +#diorama( + orbit: false, +" +p 0 0 0 dropper facing=up +p 0 1 0 dropper facing=up +p 0 2 0 dropper facing=east +p 1 0 0 hopper facing=west +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+. #warn[ diff --git a/content/interference-fixes.typ b/content/interference-fixes.typ index 3afe6906..459788d6 100644 --- a/content/interference-fixes.typ +++ b/content/interference-fixes.typ @@ -1,4 +1,4 @@ -#import "/lib.typ": diorama, example, todo, world +#import "/lib.typ": diorama, example, todo = Preventing Interference @@ -10,23 +10,12 @@ 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 @@ -61,11 +50,19 @@ 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. + +#todo[fix tileset naming. the tileset is the *structure*. the particular sequence is just one instance of that tileset] + +A *tile sequence* is a chain of redstone components which all update in the tile tick phase. +The fundamental principle here is to use tile-tick priority (TTP) to set a global order. +#link("https://youtu.be/sLftwVwqPQE")[See Charlie's great video on TTP for details]. + +A *tile set* is a system of constructing tile sequences which enforce a particular global ordering. + +Components which 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. === The Tile Tick Priority Queue @@ -214,4 +211,119 @@ cmp rep rep cmp cmp rep rep == Block Event Delay +#[#show raw.where(lang: "mc-diorama"): it => diorama( + autoplay: true, + loop: true, + radius: 5, + theta: 160, + it.text, + ) + ```mc-diorama + 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 -1 piston facing=down 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 -1 -1 piston facing=up extended=false + + p -1 0 0 observer facing=west 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 4 0 -2 observer facing=south powered=false + + 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 1 -1 -1 extended=true + p 2 -1 -1 extended=true + p 3 -1 -1 extended=true + p 4 -1 -1 extended=true + + 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 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 + ``` +] + == Single-Priority Loops diff --git a/lib.typ b/lib.typ index f3d400b8..027c13c5 100644 --- a/lib.typ +++ b/lib.typ @@ -59,6 +59,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") diff --git a/mise.toml b/mise.toml index a23869a0..1032d16d 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,6 @@ [tools] node = "latest" +"npm:vite" = "8.1.3" tinymist = "0.15.0" typst = "0.15.0" @@ -7,15 +8,17 @@ typst = "0.15.0" run = [ "rm .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"] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 9a8684c6..00000000 --- a/package-lock.json +++ /dev/null @@ -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 - } - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index b36e2122..00000000 --- a/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "mc-diorama", - "version": "0.0.0", - "devDependencies": { - "vite": "^8.1.3" - } -} diff --git a/src/blockstate.js b/src/blockstate.js index 2e83b8a4..7cb091e6 100644 --- a/src/blockstate.js +++ b/src/blockstate.js @@ -29,7 +29,7 @@ function evaluateWhen(properties, condition) { const prop = properties[key]; if (typeof val === 'string' && val.includes('|')) { if (!val.split('|').includes(prop)) return false; - } else if (prop !== val) { + } else if (prop !== val.toString()) { return false; } } diff --git a/src/engine.js b/src/engine.js index 5449fef7..527b1507 100644 --- a/src/engine.js +++ b/src/engine.js @@ -267,6 +267,9 @@ export class Engine { const newMeshes = []; for (const pool of framePools.get(frame).values()) { const blockModel = this.cache.getSync(pool.partDef.model, 'models'); + if (pool.partDef.model === "block/redstone_power_level_08") { + // console.log(blockModel); + } const geometry = blockModel.buildGeometry(this.atlas.uvmap, pool.partDef); const matrixArray = new Float32Array(pool.matrices); diff --git a/src/style.css b/src/style.css index 89420943..ac2d7c3b 100644 --- a/src/style.css +++ b/src/style.css @@ -30,7 +30,7 @@ body { } .todo { - color: red; + color: red } @media (prefers-color-scheme: dark) { @@ -45,6 +45,10 @@ body { .note { color: cyan; } + + .todo { + color: #FF4444; + } } pre code { @@ -54,11 +58,12 @@ pre code { .callout, details { background: blue; - margin: 1em -1em; - padding: 0.5em 1em; + margin: 1em -1ch; + padding: 0.5em 1ch; background: rgb(from currentColor r g b / 5%); - border: solid currentColor; - border-width: 1px 0; + border: solid rgb(from currentColor r g b / 30%); + border-width: 1px; + border-style: outset; .callout { margin-inline: 0; diff --git a/src/world.js b/src/world.js index ab4cd55a..a30fc82c 100644 --- a/src/world.js +++ b/src/world.js @@ -37,7 +37,6 @@ export class World { }; const lines = script.split(/\n|
/).map(l => l.trim()).filter(l => l && !l.startsWith('#')); - console.log(lines) let currentBatch = [];