Firstworks 0.0.14 - NeoForge 1.21.1
Curse Maven Snippet
What's new
Firstworks 0.0.14
Stone Age completion
- Added renewable resin tapping on pack-extensible
firstworks:resin_treeswith regrowing resin scars. - Resin scars now mount to the tapped tree face and expose four readable in-world growth stages from fresh cut to harvest-ready resin.
- Added Resin Tap, Resin, and Hafting Compound; the compound joins
firstworks:strong_bindingsas a reusable late-Stone binding sink.
Advanced ceramics and air control
- Added a data-driven
firstworks:workshop_processingrecipe type with Pottery Wheel, Stone Anvil, and Crucible Furnace station modes; ceramic firing and copper annealing use vanilla furnace recipes. - Added grog/refractory clay, refractory bricks, fired crucibles, tuyères, reusable casting molds, Stone Hammer, Heavy Leather, Bellows, and the Crucible Furnace.
- Crucible-furnace recipes pause without active Bellows air, making airflow an actual processing requirement rather than a recipe checkbox.
- Crucible Furnace fuel is pack-extensible through
#firstworks:crucible_furnace_fuels, which ships Coal and Charcoal by default and is also used by JEI. - Bellows presses now add to a finite three-stroke air reserve instead of replacing one fixed pulse, so attentive players can bank airflow while furnace particles become visibly more intense at high reserve.
- The bundled Pottery Wheel now supports a physical top-plate batch gesture: sneak-place a valid primary input on the inner, middle, or outer ring to load 1/2/3 items in one action while preserving the data-driven batch recipe contract.
- Pottery Wheel batch placement is input-slot-specific: catalyst-only items no longer trigger the 1/2/3 shortcut and instead fall through to normal single-item catalyst insertion.
- Rebuilt Stone/Copper workshop stations with full 3D in-world models, animated manual mechanisms, visible workpieces/process state, matching geometry-aware interaction/collision shapes, and matching 3D inventory renders instead of placeholder cubes or flat block-item sprites.
- Heated-station fuel is now a reserve independent of recipe state: manual or automated fuel top-ups preserve active progress and do not force a second fuel consumption.
- Workshop recipes reject unknown station ids during loading rather than silently creating unreachable recipes.
- Explicitly declared workshop catalysts remain required even when their ingredient/tag resolves empty; unresolved catalyst tags can no longer silently turn into catalyst-free recipes.
- Workshop recipes support optional
priority(default0) before the existing batch-size/catalyst/id tie-breakers, so pack overrides do not depend on recipe-id naming. - GUI-free workshop insertion now resolves overlapping recipe/fuel roles deterministically, with sneak-right-click forcing any valid tagged Crucible fuel into the fuel reserve on heated stations.
- Added cancellable
workshopProcessingStartingand completionworkshopProcessingCompletedKubeJS lifecycle events with station, recipe, input, catalyst, result, block entity, position, and level context. - Added Jade live status for all three workshop stations plus Bellows connection/air-reserve feedback, including progress, loaded catalyst, fuel/air pause reasons, and manual-action hints.
- Improved workshop JEI views with explicit manual-action vs processing-tick units, reusable/consumed catalyst state, Pottery Wheel batch-selection guidance, tagged Crucible fuels, and non-overlapping Bellows-air requirements.
Primitive Copper
- Added a complete raw copper -> Crucible Furnace cast billet -> vanilla-furnace annealed billet -> Stone Anvil -> copper ingot loop before mature foundry machinery.
- Added Copper Fasteners and Copper Knife downstream of the finished copper ingot.
- Added
enablePrimitiveCopperProgression(defaulttrue): enabled removes vanilla raw/ore copper smelting and blasting bypasses; disabled leaves the winning vanilla/datapack routes untouched while all Firstworks copper mechanics remain available.
Copper support and construction
- Added the lime/plaster construction loop.
- Added public tags for hammers, refractory materials, primitive copper, Crucible Furnace fuels, resin trees, and resin tapping tools.
- Added KubeJS schema and JEI integration for workshop recipes plus progression regression coverage.
Testing and CI
- Added NeoForge GameTests for the complete primitive-copper casting -> furnace annealing -> Stone Anvil chain, base Quern/Loom manual operation, Bellows air gating and reserve banking, reusable molds, block entities, valid lower/upper build-height edge behavior, running-furnace fuel/input/catalyst top-ups, and Pottery Wheel catalyst-only batch routing.
- Added behavioral regression coverage for catalyst-presence semantics plus checks for datapack-friendly grain/copper gating, tagged fuel, priority selection/schema bounds, workshop role routing, retained manual-machine/workshop JEI catalysts, workstation collision geometry, resin growth/facing assets, workshop station validation, and bounded quern animation catch-up.
- GameTest now loads isolated test-only KubeJS server scripts and executes the real workshop event bus, verifying that a cancelled
workshopProcessingStartingconsumes zero fuel/progress and remains latched, whileworkshopProcessingCompletedfires exactly once for a completed recipe. - CI and release verification run the JVM/resource checks plus
runGameTestServerin the same Gradle invocation, while dropping unnecessarycleanwork so compiled outputs are reused within the run.
Packmaker Customization
- Grain Progression Toggle:
- Added
enableGrainProgression(defaulttrue). When enabled, the winning Bread, Cookie, and Cake recipe ids are rewritten to require the Firstworks flour/dough pipeline (#c:doughs/wheat/#c:flours/wheat). - Firstworks no longer ships hard
data/minecraftreplacements for those recipes. When the toggle is disabled and datapacks are reloaded, Firstworks leaves the winning recipes untouched, so vanilla or another datapack/mod can supply them. - Changing this option requires a datapack reload or game restart.
- Added
- Primitive Copper Progression Toggle:
- Added
enablePrimitiveCopperProgression(defaulttrue). Disabling it stops Firstworks from removing the six vanilla copper smelting/blasting recipe ids while retaining Firstworks workshop recipes and content.
- Added
- Workshop Extension Contract:
firstworks:workshop_processingacceptsinput_count/catalyst_countin1–64,workin1–72000, and optional integerpriority(default0).#firstworks:crucible_furnace_fuelsmakes Crucible fuel data-driven and defaults to Coal + Charcoal.- KubeJS exposes cancellable
workshopProcessingStartingand non-cancellableworkshopProcessingCompletedhooks alongside the other processing APIs.
- Quern Recipe Priority:
firstworks:quern_grindingsupports an optionalpriorityfield (default0). When several quern recipes match the same ingredient, the highestpriorityis selected; ties break by recipe id, so overlapping matchers resolve deterministically. The requirement that quern ingredient matchers be mutually exclusive is relaxed.
- Quern Visual Speed:
- The grinding stone's rotation and catch-up speed scale with the work applied per crank (
quernManualWorkPerCrank). Faster manual/rotary work therefore reads as faster motion without the old fixed-speed multi-second animation backlog. No per-source labor or duration fields were added to recipes.
- The grinding stone's rotation and catch-up speed scale with the work applied per crank (
Notes
- Targets NeoForge 1.21.1.
- Keeps the existing project license and loader compatibility contract; 0.0.14 does not change either as part of the workshop feature set.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

