Registering Configs (for Minecraft 1.20.2 to 1.21.4) - Fuzss/forge-config-api-port GitHub Wiki
Configs must be registered at an appropriate time to ensure they load correctly.
NeoForge's & Minecraft Forge's mod loading process is split into multiple stages, all configs are loaded in their own stage, and therefore are not available immediately upon registration.
Fabric has no loading stages though, nothing is deferred. Therefore all registered client & common configs load immediately.
Fabric Api
- NeoForge Config Registry:
fuzs.forgeconfigapiport.fabric.api.neoforge.v4.NeoForgeConfigRegistry - Minecraft Forge Config Registry:
fuzs.forgeconfigapiport.fabric.api.forge.v4.ForgeConfigRegistry - Registration Point:
net.fabricmc.api.ModInitializer::onInitialize,net.fabricmc.api.ClientModInitializer::onInitializeClient,net.fabricmc.api.DedicatedServerModInitializer::onInitializeServer - Client & Common Configs Load Immediately: ✅
NeoForge Api
- NeoForge Config Registry: N/A
- Minecraft Forge Config Registry:
fuzs.forgeconfigapiport.neoforge.api.forge.v4.ForgeConfigRegistry - Registration Point:
net.neoforged.fml.event.lifecycle.FMLConstructModEvent, Mod Main Class Constructor (Class annotated with@Mod) - Client & Common Configs Load Immediately: ❌ (supports startup configs instead)
Minecraft Forge Api
- NeoForge Config Registry:
fuzs.forgeconfigapiport.forge.api.neoforge.v4.NeoForgeConfigRegistry - Minecraft Forge Config Registry: N/A
- Registration Point:
net.minecraftforge.fml.event.lifecycle.FMLConstructModEvent, Mod Main Class Constructor (Class annotated with@Mod) - Client & Common Configs Load Immediately: ❌
Methods for registration
Opposed to native config registration on NeoForge / Minecraft Forge an additional valid mod id must be specified.
void register(String modId, ModConfig.Type type, IConfigSpec<?> spec)
There also is a version which supports a custom file name. Note that the file name must include the file extension which should probably be .toml.
void register(String modId, ModConfig.Type type, IConfigSpec<?> spec, String fileName)
Implementations on NeoForge / Minecraft Forge additional include methods without the need for a mod id. The internally used mod id will be retrieved using ModLoadingContext.get().getActiveNamespace().