Inspiration

Minecraft Bedrock creators work across block states, .mcstructure files, geometry JSON, render controllers, Molang, animations, behavior packs, particles, and textures. Those formats are powerful, but difficult to inspect together. A build can look correct as a flat plan while failing when direction, transparency, or custom geometry is considered.

Bedrock Blueprint turns that fragmented toolchain into one browser workspace: author in precise 2D slices, inspect the same data in 3D, and load a resource pack directly for a closer-to-runtime preview.

What it does

Bedrock Blueprint is a local-first editor for builders and resource-pack creators. Users can draw, fill, shape, select, duplicate, move, and navigate X/Y/Z slices; preserve block IDs and state; save/open projects; convert .mcstructure; and export a bill of materials.

Its shared scene layer projects non-cube and stateful blocks into 2D and renders the same models in an interactive Three.js view. The 3D preview supports block picking, hidden-face culling, and controlled translucent ordering.

Users can also import Bedrock .mcpack, .zip, or folders at runtime. The importer assembles geometry, friendly texture names, alpha masks, render-controller variants, material semantics, Molang queries, behavior properties and events, deterministic timers, nested animation controllers, bone poses, particles, locator tracking, and spatial audio. Pack data stays in the browser.

How we built it

The app is a TypeScript monorepo with a framework-independent core, a React/Vite editor, Canvas 2D projection, Three.js 3D rendering, fflate archive import, and a deterministic 20 TPS preview runtime. Official Bedrock texture metadata feeds a generated resolver index, while explicit policies handle states, aliases, projections, and fallbacks.

The central architectural decision was to share model and texture resolution between 2D and 3D. That keeps block-state behavior consistent and lets the same imported resource-pack model drive both views.

How Codex and GPT-5.6 were used

GPT-5.6-powered Codex was the pair engineer across the Build Week work. It first recovered and normalized the repository and established a reproducible baseline. We then used it to inspect official metadata, classify missing-texture families, implement focused resolvers and geometry projections, and add regression tests before moving to the next family.

Codex helped make and execute several consequential decisions: preserve Education Edition IDs while applying display-only glass aliases; use one shared scene for 2D and 3D; make behavior replay deterministic; and treat resource-pack support as a staged runtime rather than a collection of one-off model exceptions.

The same loop extended the importer through render controllers, Molang, behavior events, timers, animation state machines, nested controllers, keyframe sampling, particles, locator following, and spatial audio. The result is backed by 313 unit tests in 40 files and 16 Playwright workflow/visual tests, plus type checks and production builds.

Challenges we ran into

Bedrock rendering is stateful and layered. A texture name can be friendly indirection rather than a file, geometry can be selected by Molang, material semantics affect alpha behavior, and controller state may be driven by behavior-pack events. Keeping those pieces deterministic and consistent in both a 2D projection and 3D scene was the hardest part.

Browser persistence was another challenge because the native File System Access API and download/upload fallback need equivalent behavior. Translucent block ordering, picking, and hidden-face culling also required integration-level verification rather than isolated unit tests.

Accomplishments that we're proud of

A working editor rather than a format-only proof of concept. Shared 2D/3D rendering for full cubes, multipart blocks, special planes, Bedrock geometry, poly_mesh, and alpha-masked texture_meshes. Runtime pack import without server upload. Deterministic behavior and animation previews with particles and spatial audio. Broad automated coverage, including complete persistence workflows and visual regression.

What we learned

The most reliable way to support a large content format is to build observable, deterministic layers. Official metadata improves breadth, explicit state policies protect correctness, a shared scene prevents renderer drift, and snapshotable clocks make complex animation behavior testable.

What's next

Next we will complete the remaining particle event graph, collision/kill-plane, and flipbook UV semantics; broaden pack compatibility against more production packs; and add guided sample projects and simpler sharing for non-technical builders.

Built With

Share this project:

Updates