Neoforge Mods.toml Modloader Value Neoforge Or Javafml [work] → [TOP-RATED]
While it might seem intuitive to use neoforge as the value since you are using the NeoForge loader, neoforge is the name of the , whereas javafml (Java Forge Mod Loader) is the specific language provider that handles standard Java mod entry points. Understanding the Key Fields in neoforge.mods.toml
To understand the distinction, one must first recognize that javafml is the legacy value. FML, or the "Forge Mod Loader," has been the engine powering Forge mods since Minecraft’s early days. For nearly a decade, virtually every Forge mod declared modloader="javafml" . This string told the Forge-compatible loader to initialize the mod using the standard FML system, which expects certain entrypoints (like a class annotated with @Mod ) and follows a well-worn lifecycle. When Neoforge forked from Forge in mid-2023, it initially retained compatibility with javafml mods, allowing thousands of existing mods to run unchanged. However, as Neoforge began diverging—removing deprecated APIs, refactoring the core loader, and introducing new features—it became necessary to distinguish between mods designed for the old Forge ecosystem and those built explicitly for Neoforge’s modernized architecture.
: When using javafml , the loader looks for a public class with the @Mod annotation. The value of this annotation must match one of the modId values defined in your TOML file. neoforge mods.toml modloader value neoforge or javafml
Thus, the modloader="neoforge" value was introduced. When Neoforge encounters this flag in a mods.toml , it knows that the mod expects the new, often stricter loading environment. This includes updated classloading mechanics, different handling of mixins, and potentially exclusive access to newer APIs that are not present in legacy Forge. More importantly, this flag acts as a compatibility lock: a mod declaring neoforge will not load under legacy Forge (and vice versa, a javafml mod may run on Neoforge only in a compatibility fallback mode, but with warnings). For mod developers, using neoforge signals a deliberate decision to cut ties with the past and embrace the future of the fork. It allows them to use Neoforge-exclusive features, shed deprecated code, and assume a cleaner, more predictable runtime.
Is NeoForge compatible with normal Forge mods? : r/feedthebeast While it might seem intuitive to use neoforge
When configuring your mod for NeoForge , the neoforge.mods.toml file (formerly mods.toml in Forge) is the heartbeat of your mod's identity. One of the most critical fields is the modLoader value, which tells the game exactly how to interpret and boot your Java code. The Direct Answer: neoforge vs. javafml
: You must also include a loaderVersion field (e.g., loaderVersion="[2,)" ) to define which version range of the loader your mod supports. Example Snippet For nearly a decade, virtually every Forge mod
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.

