The plugin is now loadable. Dalamud injects five services into the Plugin constructor (Lightless pattern), the constructor builds the generic-host container synchronously, and PluginLifecycle drives StartAsync from LoadAsync. Module 02+ extends PluginHostFactory; this file set stays put. - PluginHostDependencies (record): bundles the five Dalamud services v0.1.0 needs (IDalamudPluginInterface, IPluginLog, IDataManager, IFramework, ISelfTestRegistry). - PluginHostFactory.Build: HostBuilder + AddDalamudLogging + the four service blocks (Dalamud services, Anvil singletons, ISelfTestStep collection, IHostedService init chain). Every registration uses an explicit factory lambda - the default activator only sees public ctors and Anvil follows the internal-sealed convention. - PluginLifecycle (IAsyncDisposable): owns Host.StartAsync, marshals the Host.Dispose call onto the framework thread, idempotency guard via Interlocked, ExceptionDispatchInfo.Capture preserves the original load-throw stack when a failure cascades. - Plugin (IAsyncDalamudPlugin): constructor injection of the five Dalamud services, builds the dependencies record, kicks off the host build, hands DisposeAsync to the lifecycle. - Hosting/RecipeDataLoadHostedService: dispatches LuminaRecipeAdapter .LoadInternal onto the framework thread on StartAsync. Lumina sheet reads have no documented thread safety; conservative default. - Hosting/SelfTestRegistrationHostedService: collects every ISelfTestStep registration from DI and hands them to ISelfTestRegistry.RegisterTestSteps once the host is up. - SelfTest/RecipeDataAdapterLoadStep: nine pass criteria per spec §4.1 (IsLoaded, RecipeCount > 0, ActionCount in 30..80, BuffsByKind.Count == 14, ConditionsByKind.Count == 11, Foods >= 30, Medicines >= 5, BasicSynthesis.RowIdByClassJob[8] == 100001, Cosmic-surface silent-degradation warning). Returns Waiting while the catalog is still loading. - Infrastructure/Logging trio: DalamudLogger maps Microsoft.Extensions.Logging levels to IPluginLog, the provider emits an Anvil bootstrap banner with a Forge-Bronze fingerprint on ctor, the extension wires the provider into the ILoggingBuilder via TryAddEnumerable.
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.