Why does this matter to the average modder or server admin? Because misusing this value leads to the classic "loader mismatch" errors. A common mistake is to copy a mods.toml from an old Forge mod, change the name and description, but leave modloader="javafml" . When loaded in a pure Neoforge environment (especially one that has disabled legacy fallbacks), the loader may reject the mod or attempt to run it in an incomplete legacy mode, causing cryptic crashes or missing features. Conversely, setting modloader="neoforge" for a mod that still relies on old Forge internals will cause the Neoforge loader to look for entrypoints or behaviors that don’t exist. Therefore, the rule is straightforward:
: You must also include a loaderVersion field (e.g., loaderVersion="[2,)" ) to define which version range of the loader your mod supports. Example Snippet
: The modLoader field specifies the "Language Loader." Since most NeoForge mods are Java-based, javafml is the default provided in the NeoForge MDK .
For mod developers, the practical implication is straightforward but vital. When setting up a new project in the NeoForge environment, the mods.toml file should strictly use modLoader="neoforge" . Using the legacy javafml tag in a modern NeoForge mod can lead to warnings, unexpected behavior, or incompatibility as the gap between the legacy Forge codebase and the modern NeoForge codebase widens. The accompanying loaderVersion property must also align with this change, specifying the version range of the NeoForge loader rather than the old FML version.
Recent Comments