The adapter is the only place in the plugin that touches Lumina and Dalamud types - everything outside Anvil.RecipeData.Internal stays on the BCL surface (Critical Boundary per 00-Anvil-Scope §3.3). - LuminaRecipeAdapter: walks Status, CraftAction, Action, Item, ItemFood, and Recipe + RecipeLevelTable, builds the AnvilXxx records, and swaps the CatalogState into RecipeDataCatalog in one atomic write. Cosmic actions normalise the Action-sheet ClassJob=-1 sentinel to RowIdByClassJob key 0 (spec §2.3.1); the legacy ARR singletons (Manipulation 278, Waste Not 279, Innovation 284, Waste Not II 285) drop out via the PrimaryCostValue == 0 filter (spec §3.1 #3). The CraftAction sheet wins the canonical icon at the CRP variant (ClassJobId 8). Per-job rows are cross-checked for Cost, ClassJobLevel, and Specialist consistency; mismatches log a warning. - SH-15 option B is hard-wired: every AnvilRecipe ships with MissionHasMaterialMiracle = false, MissionHasSteadyHand = false, and IsSplendorCosmic = false in v0.1.0. IsCosmic is still set from Recipe.Number == 0 so the catalog can label Cosmic recipes; the WKS mission sheet chain is not walked. v0.2.0 will replace those constant assignments with the resolver and the rest of the adapter stays put. - The adapter invariant (Cosmic sub-flag implies the master IsCosmic flag) throws on inconsistent recipe states at catalog-build time so v0.2.0+ catches a broken WKS resolver before it corrupts the simulator. - ItemFood walk uses ItemAction.Data[0] (48 = "well fed", 49 = "medicated") instead of an ItemAction.Type column that does not exist in the current Lumina schema. The bonus extractor filters ItemFood.Params to the three crafting BaseParam ids (CP=11, Craftsmanship=70, Control=71). Item rows are populated only for the ItemIds that recipes / foods actually reference - no 50k-row mirror. - AnvilStrings.resx + AnvilStrings.de.resx + AnvilStrings.Designer.cs: Localization layer for condition display names and the SelfTest step name. The adapter looks the condition strings up through the generated ResourceManager so culture-switching is a no-restart change later on.
Anvil
An independent Hellion Forge plugin for FINAL FANTASY XIV crafting.
Anvil is a privacy-focused, zero-telemetry crafting helper for Dalamud (API level 15+). It provides a crafting simulator, a solver wrapper, recipe bookmarks, and an opt-in Auto-Craft hook.
Status: v0.1.0 — early development. The crafting simulator, solver wrapper, macro engine, hooks, IPC provider, bookmark store, and UI layers are being built module-by-module under the Anvil clean-room pipeline. The Recipe Data layer (module 01) is the first ground-up piece.
Features (planned)
- Crafting Simulator — state machine for FFXIV crafting steps, conditions, buffs, and actions, with full Cosmic Exploration schema support.
- Solver Wrapper — bridge to the Raphael Rust solver (bundled binary).
- Recipe Note Overlay — anchors next to FFXIV's recipe-note addon.
- Synth Helper Overlay — live next-action hint during synthesis.
- Macro Editor — compose, replay, export to FFXIV macros and MacroMate.
- Recipe Bookmarks — local list with notes, tags, and quick-open.
- Auto-Craft (opt-in) —
UseActionhook with explicit warning modal. - IPC Provider — exposes theme, macros, and crafting status to other Hellion Forge plugins.
- Bilingual EN/DE UI with Hellion Anvil-Boutique styling (Forge-Bronze on dark surface).
Privacy
Zero telemetry. No network calls. Everything stays on your machine. See PRIVACY.md for the full statement.
Attribution
Anvil is a clean-room re-implementation, not a fork. The plugin is inspired by Craftimizer by Asriel Camora (MIT) — see NOTICE.md for the goodwill attribution.
License
MIT — Copyright (c) 2026 Hellion Online Media.
Install
The custom Dalamud repository URL for Anvil is:
https://gitea.hellion-forge.cloud/JonKazama-Hellion/Anvil/raw/branch/main/repo.json
Add this URL under Dalamud → Settings → Experimental → Custom Plugin Repositories, then install Anvil from the plugin installer.