TFC Registry API
🟡 Updated this year⚠️ Install Order · 2 steps
Install in this order, then this mod last — most mods fail to load without their framework and dependencies in place.
Preview

🔍 Analysis
- 👍 0.0% endorsement rate
- 🏆 #22 of 32 game-mechanics mods in this game by downloads
📋 About This Mod
# TFC Registry API A lightweight library mod that automatically discovers and unifies **all** TerraFirmaCraft registry types added by any mod. It works with **any** addon, as long as they correctly implement this library's registry interfaces or TFC's own: - `RegistryMetal` - `RegistryRock` - `RegistrySoilVariant` - `RegistryWood` Where these are provided by this library: - `RegistryOre` - `RegistrySand` - `RegistrySoil` ### How discovery works The mod automatically finds all types **if**: - The type implements the correct `Registry` interface - The type is an **enum** (required for auto-discovery) If an addon does **not** use enums or needs manual registration, it can still be supported by the addon developer by calling the helper registration methods directly: Example: manually register soil variants from a non-enum source ```java SoilVariantRegistryHelper.registerTypes( YourSoilVariantClass.class, List.of(yourVariant1, yourVariant2, ...), "yourmodid" ); ``` Same method exists in every helper class: ```java MetalRegistryHelper.registerTypes(...) WoodRegistryHelper.registerTypes(...) RockRegistryHelper.registerTypes(...) OreRegistryHelper.registerTypes(...) SoilRegistryHelper.registerTypes(...) SandRegistryHelper.registerTypes(...) SoilVariantRegistryHelper.registerTypes(...) ``` Code examples: ```java // Metals List<RegistryMetal> allMetals = MetalRegistryHelper.getAllMetalValues(); RegistryMetal brass = MetalRegistryHelper.getMetalValueOrDefault("brass"); // Woods List<RegistryWood> allWoods = WoodRegistryHelper.getAllWoodValues(); RegistryWood ebony = WoodRegistryHelper.getWoodValueOrDefault("ebony"); // Rocks List<RegistryRock> allRocks = RockRegistryHelper.getAllRockValues(); RegistryRock marble = RockRegistryHelper.getRockValueOrDefault("marble"); // Ores List<RegistryOre> allOres = OreRegistryHelper.getAllOreValues(); RegistryOre sphalerite = OreRegistryHelper.getOreValueOrDefault("sphalerite"); // Soils List<RegistrySoil> allSoils = SoilRegistryHelper.getAllSoilValues(); RegistrySoil duff = SoilRegistryHelper.getSoilValueOrDefault("duff"); // Sand colors List<RegistrySand> allSands = SandRegistryHelper.getAllSandValues(); RegistrySand white = SandRegistryHelper.getSandValueOrDefault("white"); // Soil variants List<RegistrySoilVariant> allVariants = SoilVariantRegistryHelper.getAllSoilVariantValues(); RegistrySoilVariant inceptisol = SoilVariantRegistryHelper.getSoilVariantValueOrDefault("inceptisol"); ``` All `getValueOrDefault("name")` methods are case-insensitive and return a safe fallback if not found. For example, iterating over the `List<RegistryWood>` list, can yield a list of wood types like this, where this shows a scenario with (<https://modrinth.com/mod/arborfirmacraft-(afc)>) installed: ```java acacia, ash, aspen, birch, blackwood, chestnut, douglas_fir, hickory, kapok, mangrove, maple, oak, palm, pine, rosewood, sequoia, spruce, sycamore, white_cedar, willow, araucaria, baobab, beech, cypress, eucalyptus, fig, ginkgo, hevea, ipe, ironwood, mahoe, mahogany, teak, tualang ``` You can easily register new blocks using the lists/getters provided by the helpers. Here is shown an example of how to add a new `SoilBlock` for all registered soil types and soil variants: ```java public static final Map<RegistrySoil, Map<RegistrySoilVariant, Id<Block>>> NEW_SOIL_BLOCKS = SoilRegistryHelper.getAllSoilValues().stream() .collect(Collectors.toMap( type -> type, type -> SoilVariantRegistryHelper.getAllSoilVariantValues().stream() .collect(Collectors.toMap( variant -> variant, variant -> register(type.toString() + "/" + variant.toString(), () -> new SoilBlock(Block.Properties.of().mapColor(MapColor.DIRT).strength(1.4f), type, variant)) )) )); ``` For example: if a block/item/entity/whatever constructor *insists* on using e.g. `SoilBlockType`, such as (<https://github.com/TerraFirmaCraft/TerraFirmaCraft/blob/1.21.x/src/main/java/net/dries007/tfc/common/blocks/soil/ConnectedGrassBlock.java>), you can safely cast your `soil` from the RegistrySoil interface to it like this `(RegistrySoil)(Object)soil` (*or however else you prefer to do it*), since I've made TFC's `SoilBlockType`enum class implement the custom `RegistrySoil` interface. Ideal for addons, modpack makers, or any setting that needs to work with every TFC-compatible metal, wood, rock, ore, soil, sand, or variant regardless of which mods are installed. For example, you can use the registry type lists created by this library, to easily create new blocks, items, entities etc. for all of or the desired entries of the specific type.
# TFC Registry API
A lightweight library mod that automatically discovers and unifies all TerraFirmaCraft registry types added by any mod. It works with any addon, as long as they correctly implement this library's registry interfaces or TFC's own:
- `RegistryMetal`
- `RegistryRock`
- `RegistrySoilVariant`
- `RegistryWood`
Where these are provided by this library: - `RegistryOre` - `RegistrySand` - `RegistrySoil`
### How discovery works
The mod automatically finds all types if: - The type implements the correct `Registry` interface - The type is an enum (required for auto-discovery)
If an addon does not use enums or needs manual registration, it can still be supported by the addon developer by calling the helper registration methods directly:
Example: manually register soil variants from a non-enum source ```java SoilVariantRegistryHelper.registerTypes( YourSoilVariantClass.class, List.of(yourVariant1, yourVariant2, ...), "yourmodid" ); ``` Same method exists in every helper class: ```java MetalRegistryHelper.registerTypes(...) WoodRegistryHelper.registerTypes(...) RockRegistryHelper.registerTypes(...) OreRegistryHelper.registerTypes(...) SoilRegistryHelper.registerTypes(...) SandRegistryHelper.registerTypes(...) SoilVariantRegistryHelper.registerTypes(...) ```
Code examples:
```java
// Metals
List
// Woods
List
// Rocks
List
// Ores
List
// Soils
List
// Sand colors
List
// Soil variants
List
All `getValueOrDefault("name")` methods are case-insensitive and return a safe fallback if not found.
For example, iterating over the `List
```java
acacia, ash, aspen, birch, blackwood, chestnut, douglas_fir, hickory, kapok, mangrove, maple, oak, palm, pine, rosewood, sequoia, spruce, sycamore, white_cedar, willow, araucaria, baobab, beech, cypress, eucalyptus, fig, ginkgo, hevea, ipe, ironwood, mahoe, mahogany, teak, tualang
```
You can easily register new blocks using the lists/getters provided by the helpers. Here is shown an example of how to add a new `SoilBlock` for all registered soil types and soil variants:
```java
public static final Map
Ideal for addons, modpack makers, or any setting that needs to work with every TFC-compatible metal, wood, rock, ore, soil, sand, or variant regardless of which mods are installed.
For example, you can use the registry type lists created by this library, to easily create new blocks, items, entities etc. for all of or the desired entries of the specific type.
📊 Mod Details
- Game
- Minecraft Mods
- Author
- Verph
- Version
- 1.2
- Downloads
- 7,293
- Endorsements
- 2
- Category
- game-mechanics
- Created
- 12/2/2025
- Updated
- 12/12/2025
- Game Versions
- 1.21, 1.21.1
- Tags
- game-mechanics, library, utility
🔧 How to Install Minecraft Mods Mods
Download from Modrinth. Use Prism Launcher or drop into your mods folder.
📖 Full step-by-step install guide for Minecraft Mods →
Visit the official mod page for specific installation instructions for this mod.
🎮 Need cheat codes or console commands? Check ur gaming wiki for Minecraft Mods commands, item IDs, and more.
❓ Frequently Asked Questions
Which Minecraft Mods versions does TFC Registry API support?
The author lists 1.21, 1.21.1. Other versions may work but are untested by the author.
What is the latest version of TFC Registry API?
Version 1.2, published 2025-12-12 with 7,293 downloads recorded at the source.
Keep browsing — more Minecraft Mods mods await