EmakiForge Changelog [2.2.0] - 2026-04-09 Added Recipe files now own blueprints, materials, and target items together
recipes/*.yml can now define target_item, blueprint_requirements, materials, and optional_material_limit directly, so the release no longer depends on separate default blueprints/ and materials/ directories.
Inline recipe materials can now declare capacity cost, stat contributions, name / lore actions, and capacity bonus directly, and the sample flame_sword.yml has been fully migrated to the new schema.
Improved Forge validation and GUI flow now follow the recipe model end to end
Material validation now matches inputs directly against recipe-defined required and optional materials by item source, which keeps fixed materials, optional materials, capacity limits, and capacity bonus checks consistent.
Default GUI wording, reload summaries, and command help now revolve around the "recipe" concept, so players and admins no longer need to reason about the old blueprint / material directory split.
Forge continues to delegate all external item-source availability to EmakiCoreLib, keeping only business-side matching, capacity calculation, and interaction feedback locally.
Fixed
Legacy keys such as required_materials, optional_materials, gui, and top-level forge_capacity are now rejected during parsing so old configs cannot be half-loaded into an inconsistent state.
Optional-material validation now blocks items that do not belong to the current recipe earlier in the flow, reducing follow-up errors caused by wrong materials slipping through.
Upgrade Notes
If you still use the old blueprints/ and materials/ config structure, migrate it to the new inline recipes/*.yml format before upgrading.
Default data release and list/editor flows now work around the recipes directory only, so do not rely on the removed default blueprint or material sample files.
This version should be paired with EmakiCoreLib 2.3.0, and CoreLib startup logs should be treated as the source of truth for external item-source bridge readiness.
Known Issues
The default template still does not show random-result previews. This limitation remains intentional to prevent reroll abuse.