Crafting Reference
Every recipe registered in `crafting.rs`, with the **exact patterns from the source code**. The engine supports **shaped recipes** (fixed patterns with
Crafting Reference
Every recipe registered in crafting.rs, with the exact patterns from the
source code. The engine supports shaped recipes (fixed patterns with
offset matching) and shapeless recipes (multiset matching).
Legend: P = Planks Β· S = Stick Β· L = log (any early-game wood) Β·
ST = Stone Β· I = Iron Ingot Β· F = Flint
Surfaces
| Surface | Grid | Notes |
|---|---|---|
| Player crafting | 2Γ2 | Always available via E |
| NVCrafter | 3Γ3 | World-placed station; state persists in saves |
Shapeless recipes
| Output | Count | Input |
|---|---|---|
| Planks | Γ4 | 1 log (any EARLY_GAME_LOGS wood) |
| Flint Pickaxe | Γ1 | Flint + Stick |
Shaped recipes
Wood processing
Sticks Γ4 β grid 1Γ2
[P]
[P]NVCrafter Γ1 β grid 3Γ3 (planks ring, log center)
[P][P][P]
[P][L][P]
[P][P][P]Wooden tools (Γ1 each)
Wooden Pickaxe β 3Γ3
[P][P][P]
[ ][S][ ]
[ ][S][ ]Wooden Axe β 2Γ3
[P][P]
[P][S]
[ ][S]Wooden Shovel β 1Γ3
[P]
[S]
[S]Wooden Hoe β 2Γ3
[P][P]
[ ][S]
[ ][S]Torches Γ4 β grid 1Γ2 (stick over log)
[S]
[L]Storage & furniture
Chest Γ1 β 3Γ3 (planks ring, empty center)
[P][P][P]
[P][ ][P]
[P][P][P]Door Γ3 β 2Γ3 (6 planks)
[P][P]
[P][P]
[P][P]Trapdoor Γ2 β 3Γ2 (6 planks)
[P][P][P]
[P][P][P]Ladder Γ3 β 3Γ3 (stick/plank columns)
[S][P][S]
[S][P][S]
[S][P][S]Fence Γ3 β 3Γ2
[S][P][S]
[S][P][S]Fence Gate Γ1 β 3Γ2
[P][S][P]
[P][S][P]Workbench Upgrade Γ1 β 3Γ3 (log cross, planks corners)
[P][L][P]
[L][L][L]
[P][L][P]Pickaxe progression
Stone Pickaxe Γ1 β 3Γ3
[ST][ST][ST]
[ ][S][ ]
[ ][S][ ]Iron Pickaxe Γ1 β 3Γ3
[I][I][I]
[ ][S][ ]
[ ][S][ ]The Diamond and Netherite pickaxes exist as block types; their upgrade recipes are the next tier of the same head shape.
Matching logic
- Shaped:
shaped_recipe_matches(grid, recipe)β pattern matched with offset support against the grid. - Shapeless:
shapeless_recipe_matches(grid, recipe)β multiset matching (order does not matter). RecipeRegistry::match_grid()returns the first matching shaped recipe, then falls back to shapeless.- Output is an
ItemStack(stack_of(block, count)).
NVCrafter state
NVCrafterState is stored per block in the world (world/mod.rs) and is
persisted in saves. When a GUI closes, inputs return to the player inventory
(or drop into the world if there is no room). Breaking an NVCrafter flushes
its contents into world drops.
JSON recipes
assets.rs also loads and validates recipes from JSON, with utilities for
shaped/shapeless recipe parsing alongside block-model loading.