You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Depends on #2 (ores) for things to smelt into ingots, and on #1 (crafting) UI/slot patterns. Build after both.
Context
There is currently no furnace block in src/game/gen/BlockIds.ts (ids 0-37, with 28/29 reserved for glowstone/flowing water), and no smelting/tick code anywhere in the codebase (grep for smelt/furnace returns only false positives).
Scope
src/game/gen/BlockIds.ts — append FURNACE (and FURNACE_LIT as a separate block id, or a block-state flag — see implementation note). Coordinated edit with Blocks.ts + Textures.ts per AGENTS.md.
src/engine/Textures.ts — furnace top/side/front textures; lit variant with glowing front.
iron ore → iron ingot, copper ore → copper ingot, gold ore → gold ingot
sand → glass, cobblestone → stone
raw food → cooked food (e.g. raw beef → cooked beef, already an item)
log → charcoal
Fuel burn timer — coal (longest), charcoal, wood/planks, sticks (shortest). Each fuel has a burn-ticks value; furnace advances one smelt per fuel-burn-duration. Lit furnace emits block-light glow (reuse the existing block-light channel from the lighting system) with a flicker.
Furnace tick system — a per-furnace state object (input/fuel/output + progress + burn time) ticked at the liquid-sim rate (20 Hz) or a dedicated slower cadence. State must persist with the chunk save format (per-seed localStorage saves).
Acceptance criteria
Player can craft/place a furnace block and open its UI by right-clicking.
Loading fuel + input smelts the input over time and emits block-light while burning.
Fuel is consumed in real time; output accumulates in the output slot.
Depends on #2 (ores) for things to smelt into ingots, and on #1 (crafting) UI/slot patterns. Build after both.
Context
There is currently no furnace block in
src/game/gen/BlockIds.ts(ids 0-37, with 28/29 reserved for glowstone/flowing water), and no smelting/tick code anywhere in the codebase (grep forsmelt/furnacereturns only false positives).Scope
src/game/gen/BlockIds.ts— appendFURNACE(andFURNACE_LITas a separate block id, or a block-state flag — see implementation note). Coordinated edit withBlocks.ts+Textures.tsperAGENTS.md.src/engine/Textures.ts— furnace top/side/front textures; lit variant with glowing front.src/ui/InventoryUI.tsor addsrc/ui/FurnaceUI.ts) — three slots: input, fuel, output. Reuse the drag/drop code from the inventory refactor in Voxel lighting + day/night cycle (sun, moon, two-channel shading) #1.src/game/Smelting.ts(or extendRecipes.tsfrom Voxel lighting + day/night cycle (sun, moon, two-channel shading) #1) —SMELTINGtable:Acceptance criteria
Roadmap reference
Phase 2 — "Smelting & furnaces".