New JSON Modlist format - MinecraftForge/FML GitHub Wiki
There are two added parameters to FML: --mods and --modListFile. Both allow for resolution of mod resources (jars and zips) outside of the mods directory. Neither has any impact beyond allowing for the setup of a common repository for mods beyond the mods dir itself. It's goal it to assist mod pack makers, by allowing them to only have one central place for mods, and just injecting the mods list into minecraft through this means.
--mods is a simple, comma separated list of files (relative to the minecraft directory), that will attempt to load and be treated as mods.
--modListFile will point to a json formatted file. It tells FML two things, the first is a "repositoryRoot". The second is a list of maven specified mod locators, stored in maven directory format under said repository root. Note, additional parameters MAY be added to this to facilitate client/common/server setups. Consider this one the common one.
The JSON file (obviously, an example):
{
"repositoryRoot": "/a/path/to/a/directory",
"modRef": [
"cpw.mods.ironchest:ironchest:1.7.2-6.1.10:universal",
"appeng:appliedenergistics2:rv1-stable-1"
],
"parentList": "/a/path/to/a/parent/json/of/the/same/format"
}
This will attempt to load files "cpw/mods/ironchest/ironchest/1.7.10-6.1.10/ironchest-6.1.10-universal.jar" and "appeng/appliedenergistics2/rv1-stable-1/appliedenergistics2-rv1-stable-1.jar" from under the repository root directory.
In theory this mechanism should allow for a "pool" of mods in a single location on disk, loaded by potentially many versions of mod packs, without having to duplicate into a mods folder.
The parentList allows for the loaded list to refer to a parentList. Perhaps you have a common set of mods, and lists then extend that set. This allows for that. The repositoryRoot does not have to be the same either. Parent lists are resolved before child lists, and allow for simple overriding of mod specs from parents in children. The modspec is simply the first, second, and optionally fourth component of the mod name above. This means you can force a different version in a child list.