Porting to Prometheus - Crystal-Nest/soul-fire-d GitHub Wiki
Porting to Prometheus
Prometheus is the new core mod that exposes data‑driven fire mechanics and APIs for other mods. It replaces Soul Fire'd’s public API starting with Soul Fire’d v6.0.0. From that version on, Soul Fire’d simply leverages Prometheus.
- Minecraft: 1.21+
- Loaders: Fabric and NeoForge
Learn more about Prometheus here.
If your mod depended on Soul Fire’d API, follow this guide to migrate.
TL;DR migration checklist
- Update Soul Fire’d to v6.0.0. If your project still compiles, you probably don’t need Prometheus directly.
- Add Prometheus as a dependency if compilation breaks due to missing API types.
- Rename namespaces:
soul_fire_d→prometheus. - Adopt 1.21.3+ API shapes everywhere (Prometheus unifies 1.21/1.21.1 to match 1.21.3+).
- Add a call to
Fire.Builder#setDefaultComponents()before building each of your fires. - Adjust the changes below if you use affected classes or JSON schemas.
- Rebuild, run, and test your fires and blocks.
Tip: If you don’t reference
SOUL_FIRE_TYPE, you can remove Soul Fire’d from your dependencies after adding Prometheus.
Terminology updates
Prometheus standardizes wiki and code terms.
| Old name | New name |
|---|---|
| Data Driven Fires | DDFs (formerly DDFires) |
| Data Driven Enchantments | DDEs |
Version alignment for 1.21.x
Soul Fire’d had minor API differences across 1.21/1.21.1 vs 1.21.3+. Prometheus removes those differences. In 1.21/1.21.1, use the same interfaces you would use on 1.21.3+.
Affected areas:
- FireManager fire‑component registration methods.
- Constructors of custom blocks.
- DDF JSON definitions.
For full, current signatures and examples, see the Prometheus Wiki.
DDF JSON notes
Use the 1.21.3+ format for all 1.21.x targets. Validate your existing DDF entries against the Prometheus schema/examples.
API and namespace changes
DynamicBlockEntityTypemoved to Cobweb.CustomCampfireBlock#getBlockEntityType()now returnsBlockEntityTypeinstead ofDynamicBlockEntityType.- Fire Components are now absent by default when building a Fire. Added the new
Fire.Builder#setDefaultComponents()method to easily set the default value for every Fire Component. - Namespace rename: every
soul_fire_dAPI reference becomesprometheus. SOUL_FIRE_TYPEremains in Soul Fire’d, but is now exposed asFireRegistry#SOUL_FIRE_TYPE.
Troubleshooting
- Still seeing compile errors? Check for lingering
soul_fire_dimports, adjusted method signatures, and old DDF JSON field formats. - Using types that moved? Replace usages of
DynamicBlockEntityTypeand update imports. Review the Prometheus Wiki for any helper replacements. - Mixed environments (Fabric/NeoForge)? Ensure you depend on the Prometheus artifact matching your loader and Minecraft version.
References
- Prometheus Wiki: latest APIs, signatures, and JSON examples.
- Soul Fire’d v6.0.0: first release where the public API lives in Prometheus.