Warning
Registrars are currently experimental. Stable release is expected by 0.7.0.
Heads up!
Added in Fzzy Config 0.5.9
A simple registration system built into PlatformApi for cross-platform access to built-in or modded Registry objects.
Registrar Pieces and Parts
The system is built out of two basic parts
Registrar 🗗
The registration manager object for a particular Registry. Game objects are registered into this, much like a DeferredRegister from a (Neo)Forge modding context.
RegistrySupplier 🗗
The output object of a Registrar, this supplier performs all the basic registry-reference actions you should need
RegistrySupplier provides:
get()- The registered object; it is aSupplier<T>of the object type.getKey()- TheRegistryKeythe object is registered with.getId()- TheIdentifierthe object is registered with.getEntry()- TheRegistryEntrythat stores the object in the registry.
Info
As of 0.6.5, RegistrySupplier is itself an instance of RegistryEntry.
Creating a Registrar
Create a new Registrar using the PlatformApi accessed through the ConfigApi.
Registrar<Item> myItemRegistrar = ConfigApiJava.platform().createRegistrar(MOD_ID, Registries.ITEM);
Using the Registrar
Once you have a registrar, there are two primary activities you need to do with it.
register()objects to itinit()the registrar to link it to the mod loading system
Registrar<Item> myItemRegistrar = ConfigApiJava.platform().createRegistrar(MOD_ID, Registries.ITEM);public RegistrySupplier<Item> ITEM_1 = myItemRegistrar.register("item_1", () -> new Item1());//mod initializer, in your mod entrypoint or related initializerpublic void myCommonInit() {myItemRegistrar.init();}
Load Order
Fzzy Config doesn't currently have the ability to strictly work with load orders, so keep this in mind if you need to register in a certain order relative to another mod. On Fabric, load orders aren't even a concept.