{"_id":"@dexer_matters/pi-blockbench","_rev":"5-f3465e684115b2a3f2298d4e90609834","name":"@dexer_matters/pi-blockbench","dist-tags":{"latest":"0.4.4"},"versions":{"0.4.0":{"name":"@dexer_matters/pi-blockbench","version":"0.4.0","keywords":["pi-package","pi","blockbench","minecraft","minecraft-bedrock","agent-skill"],"license":"MIT","_id":"@dexer_matters/pi-blockbench@0.4.0","maintainers":[{"name":"dexer_matters","email":"dexermatters@gmail.com"}],"homepage":"https://github.com/DexerMatters/pi-blockbench#readme","bugs":{"url":"https://github.com/DexerMatters/pi-blockbench/issues"},"pi":{"skills":["./skills"]},"dist":{"shasum":"f7cce5c7f19f37401f1e0f1eefd22ea17f99facd","tarball":"https://registry.npmjs.org/@dexer_matters/pi-blockbench/-/pi-blockbench-0.4.0.tgz","fileCount":11,"integrity":"sha512-tLC39X0pwm9/RL4kpggy6iGeiQNUdfstkvyza9spteLHWGRajg4ExvP+VIyM1VuRhTxmcNit1ACFwXSW6RYW5A==","signatures":[{"sig":"MEUCIQDKA06hzjxfaetCURaxyAhgCCvuayhOqo4TvjgvI8GZVgIgZWjb716zmUqjLIJcBXXBA4bfDYn8ZKW9V0JF4KxrDS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148830},"type":"module","gitHead":"9b0240a9509836bd67ca0eec10e1411fcc8661f3","scripts":{"test":"bun test"},"_npmUser":{"name":"dexer_matters","email":"dexermatters@gmail.com"},"repository":{"url":"git+https://github.com/DexerMatters/pi-blockbench.git","type":"git"},"_npmVersion":"12.0.2","description":"Pi skill package for procedural Minecraft Blockbench model, texture, and animation authoring.","directories":{},"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-blockbench_0.4.0_1786282908856_0.4242330902671201","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dexer_matters/pi-blockbench","version":"0.4.1","keywords":["pi-package","pi","blockbench","minecraft","minecraft-bedrock","agent-skill"],"license":"MIT","_id":"@dexer_matters/pi-blockbench@0.4.1","maintainers":[{"name":"dexer_matters","email":"dexermatters@gmail.com"}],"homepage":"https://github.com/DexerMatters/pi-blockbench#readme","bugs":{"url":"https://github.com/DexerMatters/pi-blockbench/issues"},"pi":{"skills":["./skills"]},"dist":{"shasum":"3f9d4427d9b971f78d89f9021979cc105149b38d","tarball":"https://registry.npmjs.org/@dexer_matters/pi-blockbench/-/pi-blockbench-0.4.1.tgz","fileCount":11,"integrity":"sha512-TZ/NYBZhMmXChEm/lAdVNC/sogyXNd5JuigAEzB7pAiHF+6wUAJ6FvMxMA7P9Lf9UkUhlp+MtzUWb17HzCjWdw==","signatures":[{"sig":"MEUCIExjcG859V9T7eRIS4YE2IdcTpf91uB7hy+u+TduUXziAiEAyEMZ+T8pyEUj1tldg3JlDupPgtj5F6WDv0xvZxVUjOE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175277},"type":"module","gitHead":"d2a0429359ea932105038ad1899a6c0c26c994a8","scripts":{"test":"bun test"},"_npmUser":{"name":"dexer_matters","email":"dexermatters@gmail.com"},"repository":{"url":"git+https://github.com/DexerMatters/pi-blockbench.git","type":"git"},"_npmVersion":"12.0.2","description":"Pi skill package for procedural Minecraft Blockbench model, texture, and animation authoring.","directories":{},"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-blockbench_0.4.1_1786295565901_0.17869817866833637","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@dexer_matters/pi-blockbench","version":"0.4.2","keywords":["pi-package","pi","blockbench","minecraft","minecraft-bedrock","agent-skill"],"license":"MIT","_id":"@dexer_matters/pi-blockbench@0.4.2","maintainers":[{"name":"dexer_matters","email":"dexermatters@gmail.com"}],"homepage":"https://github.com/DexerMatters/pi-blockbench#readme","bugs":{"url":"https://github.com/DexerMatters/pi-blockbench/issues"},"pi":{"skills":["./skills"]},"dist":{"shasum":"38ae9980267cd25a65b1a691601b2d6c0f954f6e","tarball":"https://registry.npmjs.org/@dexer_matters/pi-blockbench/-/pi-blockbench-0.4.2.tgz","fileCount":11,"integrity":"sha512-L89dJPlaekTxyN26kjdD85ZXkSqhzALvdebEBCB9ffF6LMtNQ5n4MHvHcNN/9nBVSaSaFv7ufpsNOPW43Ufamg==","signatures":[{"sig":"MEQCIGweqsO/BMAOrxEHwAFLtINr188rC0LobPENXLTbI39PAiB3bEt4hLKpELbAXEY9GWDtOaY8w0kQ+Wdy3Q+zT/7Obg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182470},"type":"module","gitHead":"c9b5ef79d94a65422c6fefb5e8cc031bfd553748","scripts":{"test":"bun test"},"_npmUser":{"name":"dexer_matters","email":"dexermatters@gmail.com"},"repository":{"url":"git+https://github.com/DexerMatters/pi-blockbench.git","type":"git"},"_npmVersion":"12.0.2","description":"Pi skill package for procedural Minecraft Blockbench model, texture, and animation authoring.","directories":{},"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-blockbench_0.4.2_1786327333204_0.4428813757266199","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@dexer_matters/pi-blockbench","version":"0.4.3","keywords":["pi-package","pi","blockbench","minecraft","minecraft-bedrock","agent-skill"],"license":"MIT","_id":"@dexer_matters/pi-blockbench@0.4.3","maintainers":[{"name":"dexer_matters","email":"dexermatters@gmail.com"}],"homepage":"https://github.com/DexerMatters/pi-blockbench#readme","bugs":{"url":"https://github.com/DexerMatters/pi-blockbench/issues"},"pi":{"image":"https://raw.githubusercontent.com/DexerMatters/pi-blockbench/master/preview/3-headed_shark.png","skills":["./skills"]},"dist":{"shasum":"d3dca5401888083298e5e70a41b2c71cdbe63940","tarball":"https://registry.npmjs.org/@dexer_matters/pi-blockbench/-/pi-blockbench-0.4.3.tgz","fileCount":12,"integrity":"sha512-E+t9g7mgGmeRcHlsubg+WRO285AJ2ZREFZy7vHPcmRXDMJouPx8Xi5fiLLXhN7At5gambZQKiTg9hGVWWeK2FQ==","signatures":[{"sig":"MEYCIQDU6t4TBLNVv8Q+2HpyrNrzEeshBTwc2b6p+E+VaXs71wIhAKRQv7n12n7z1W8vz6awhJqSNFI4thFEFOV3BgEDKxWE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305284},"type":"module","gitHead":"5655afc19655b3a840964592676bf440e850b817","scripts":{"test":"bun test"},"_npmUser":{"name":"dexer_matters","email":"dexermatters@gmail.com"},"repository":{"url":"git+https://github.com/DexerMatters/pi-blockbench.git","type":"git"},"_npmVersion":"12.0.2","description":"Pi skill package for procedural Minecraft Blockbench model, texture, and animation authoring.","directories":{},"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-blockbench_0.4.3_1786328397015_0.31912589379378953","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@dexer_matters/pi-blockbench","version":"0.4.4","description":"Pi skill package for procedural Minecraft Blockbench model, texture, and animation authoring.","license":"MIT","keywords":["pi-package","pi","blockbench","minecraft","minecraft-bedrock","agent-skill"],"repository":{"type":"git","url":"git+https://github.com/DexerMatters/pi-blockbench.git"},"bugs":{"url":"https://github.com/DexerMatters/pi-blockbench/issues"},"homepage":"https://github.com/DexerMatters/pi-blockbench#readme","type":"module","scripts":{"test":"bun test"},"pi":{"skills":["./skills"],"image":"https://raw.githubusercontent.com/DexerMatters/pi-blockbench/master/preview/3-headed_shark.png"},"gitHead":"3964ef43b53ac5968a9ffc792b2356f1709e0c27","_id":"@dexer_matters/pi-blockbench@0.4.4","_nodeVersion":"26.7.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-LM9d3wDZ4hvrqs6fvDWr/MSvEHrW/gK/yQvRg0Qn5/X6kPq8cjpY3oaxBddIEYvWvPMgqJS2asnow4INQlZViA==","shasum":"faab080286c3b3b67339ccb169b65d55d5aad501","tarball":"https://registry.npmjs.org/@dexer_matters/pi-blockbench/-/pi-blockbench-0.4.4.tgz","fileCount":12,"unpackedSize":318899,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDqGuJCdvm+OPI0pZjAHPAuHHcwbLtrZ12KSlWQMzMTYAIgU2u2l2eUCJpUjXltvy8n66snasTDgzb1vpIcI0T7wXg="}]},"_npmUser":{"name":"dexer_matters","email":"dexermatters@gmail.com"},"directories":{},"maintainers":[{"name":"dexer_matters","email":"dexermatters@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-blockbench_0.4.4_1786411000235_0.696603586130274"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-09T13:41:48.626Z","modified":"2026-08-11T01:16:40.558Z","0.4.0":"2026-08-09T13:41:49.007Z","0.4.1":"2026-08-09T17:12:46.038Z","0.4.2":"2026-08-10T02:02:13.364Z","0.4.3":"2026-08-10T02:19:57.154Z","0.4.4":"2026-08-11T01:16:40.424Z"},"bugs":{"url":"https://github.com/DexerMatters/pi-blockbench/issues"},"license":"MIT","homepage":"https://github.com/DexerMatters/pi-blockbench#readme","keywords":["pi-package","pi","blockbench","minecraft","minecraft-bedrock","agent-skill"],"repository":{"type":"git","url":"git+https://github.com/DexerMatters/pi-blockbench.git"},"description":"Pi skill package for procedural Minecraft Blockbench model, texture, and animation authoring.","maintainers":[{"name":"dexer_matters","email":"dexermatters@gmail.com"}],"readme":"# Pi Blockbench Skills\n\n<figure align=\"center\">\n  <img src=\"./preview/3-headed_shark.png\" alt=\"A 3-headed shark model\" width=\"600\">\n  <figcaption>3-headed shark model generated by Deepseek V4 Flash </figcaption>\n</figure>\n\nCreate realistic, vivid, and repeatable Minecraft Blockbench models with Pi.\n- [Source code](https://github.com/DexerMatters/pi-blockbench)\n- [Report issues](https://github.com/DexerMatters/pi-blockbench/issues)\n\n## Install\n\n### Requirements\n\n- [Pi](https://pi.dev/)\n- [Blockbench Desktop](https://www.blockbench.net/downloads/)\n- The official [Blockbench MCP plugin](https://jasonjgardner.github.io/blockbench-mcp-plugin/)\n- The Pi MCP client extension\n\nBun is only needed to work on this repository and run its tests. End users do not need Bun to install this Pi package.\n\n### Install the Pi package\n\n```sh\npi install npm:@dexer_matters/pi-blockbench\npi install npm:pi-mcp-extension\n```\n\nPi packages are ordinary npm packages. This package declares its `skills/` directory through the `pi` manifest and includes the `pi-package` keyword for Pi package discovery.\n\n### Install the Blockbench plugin\n\nIn Blockbench, open **File → Plugins → Load Plugin from URL** and install:\n\n```text\nhttps://jasonjgardner.github.io/blockbench-mcp-plugin/mcp.js\n```\n\nThe plugin URL is upstream mutable code. Verify its source and version under your organization’s plugin policy before loading it; this package does not provide an integrity pin.\n\n### Connect Pi to Blockbench\n\nConfigure Pi in `.pi/mcp.json` for one project or `~/.pi/agent/mcp.json` for all projects:\n\n```json\n{\n  \"mcpServers\": {\n    \"blockbench\": {\n      \"transport\": \"streamable-http\",\n      \"url\": \"http://127.0.0.1:3000/bb-mcp\",\n      \"lifecycle\": \"eager\",\n      \"requestTimeoutMs\": 120000\n    }\n  }\n}\n```\n\nStart Pi and run `/mcp` to check the connection. Keep the MCP server bound to `127.0.0.1`; its `risky_eval` tool can execute JavaScript in Blockbench.\n\n## Why use this package?\n\nCompared to the MCP plugin alone, we provide a structured authoring method that makes modelling more deliberate and much faster to iterate:\n\n- **Less modelling time.** Pi creates a complete procedural model in a small number of script runs instead of repeatedly placing and correcting individual cubes. Later geometry changes edit `model.js` and rerun the dependent texture phase.\n- **Less texture time.** A canonical atlas, alpha-preserving paint pass, palette helpers, and deterministic texture detail handle the repetitive work. You spend time choosing materials, lighting, and visual direction instead of hand-painting every pixel.\n- **Glow-mask readiness.** Any glow, emissive, or emitting-light request creates an atlas-aligned `<model_name>_glowmask` texture with transparent non-emissive pixels and RGBA brightness/color control; the separate asset is ready for an emissive material or resource-pack pipeline.\n\n- **Less animation time.** Animation is opt-in, generated in `animation.js`, and built from reusable sampled motion helpers. Position and rotation tracks are additive; scale tracks use positive multiplicative factors around `[1, 1, 1]`. Loop endpoints, tick-grid timing, animated scaling, and animated overlaps are checked before the result is accepted.\n- **Better results from smaller models.** The saved scripts and shared runtime carry scale conversion, geometry rules, texture conventions, and validation. A cheaper model has less state to rediscover on every revision and can make bounded changes to an existing source file.\n- **Elegant Minecraft geometry.** Cubes earn their cost through mass, depth, occlusion, or articulation. Thin silhouettes use plates, openings use transparent mask pixels, and painted details stay in textures. The model does not become noisy just to look complex.\n- **Minecraft-native aesthetics.** The workflow favors readable silhouettes, purposeful stepped masses, coherent material regions, directional light, clustered voxel detail, and restrained contrast. It keeps the grid visible instead of imitating smooth-rendered meshes with unnecessary geometry.\n- **Repeatable iteration.** The saved scripts are the source of truth. Geometry, appearance, and explicitly requested motion can be revised independently without losing the design logic.\n\nThe goal is not maximum object count. It is the clearest result with the fewest meaningful parts: volume where the eye needs volume, texture where the eye needs material, and animation only where motion improves the design.\n\n## First model\n\nAsk Pi for a model and state whether animation is wanted. For example:\n\n```text\nCreate a medium-sized Minecraft lantern with a solid metal frame,\nglass panels, a warm procedural texture, and no animation.\n```\n\nThe skill will:\n\n1. Confirm the MCP connection and select or create a compatible project.\n2. Derive a lowercase `snake_case` `model_name` from the request; if none is supplied, creatively make one out of the prompt.\n3. Save `model.js` and `texture.js` under `blockbench-scripts/<model_name>/`.\n4. Add `animation.js` only when you explicitly request motion.\n5. Execute the scripts in order through Blockbench.\n6. Read back the generated elements and textures and capture a preview.\n7. Save `<model_name>.bbmodel`, `<model_name>.png`, optional `<model_name>_glowmask.png`, and—only for an explicitly animated model—`<model_name>.animation.json`.\n\nStatic models are the default; animation is created only when explicitly requested.\n\nThe saved scripts are the source of truth. A geometry change reruns `model.js` and then `texture.js`; an appearance change normally reruns only `texture.js`; an explicitly requested motion change reruns `animation.js`.\n\n## What the skill enforces\n\n- One Minecraft block equals 16 Blockbench units.\n- Cuboid spans, masks, UVs, and texture pixels stay on the integral voxel grid.\n- Thin silhouettes and perforated surfaces use real zero-thickness plates with transparent mask holes.\n- Paint-only details stay in textures instead of becoming unnecessary geometry.\n- Rotated attachments carry explicit placement and angle reasoning.\n- Static models do not receive invented animations.\n- Model, texture, and animation scripts validate their own overlaps, alpha behavior, loop closure, and positive interpolated scale values before reporting success.\n- Generated names are succinct lowercase `snake_case`: groups `group_<group_id>`, cubes `cube_<cube_id>`, animations `<model_name>_animation_<animation_id>`, diffuse texture `<model_name>`, and optional glowmask `<model_name>_glowmask`; no generated name uses the `bbpi:` prefix.\n- Semantic anatomy groups use exact local names `head`, `body`, and `tail` when present; omit absent anatomy rather than creating placeholder groups.\n- Local IDs match `^[a-z0-9]+(?:_[a-z0-9]+)*$` without reserved object keys, group parents are acyclic, and reruns remain lifecycle-scoped through the model's diffuse texture.\n- Every animation track targets an existing group, and duplicate `(bone, channel)` tracks are rejected before keyframes mutate the project.\n\nRead the complete authoring contract in [`skills/blockbench-script/SKILL.md`](skills/blockbench-script/SKILL.md).\n\n## When something fails\n\n- **No MCP connection:** install the Blockbench plugin above, check `.pi/mcp.json` or `~/.pi/agent/mcp.json`, then run `/mcp`.\n- **`risky_eval` unavailable:** the official plugin is missing or has not been reloaded; do not silently fall back to per-cube construction.\n- **Script error after mutation:** caught build, animation, and texture-finalization failures close their runtime edit but do not roll back partial state; inspect the live project with read-only MCP tools before retrying or using `undo`.\n- **Unexpected model output:** edit the saved script rather than issuing a large series of corrective cube calls.\n\n\n","readmeFilename":"README.md"}