Skip to content
This repository has been archived by the owner on May 26, 2018. It is now read-only.

FML mod information file

LexManos edited this page Jun 2, 2014 · 25 revisions

Every jar containing an FML mod should also contain, at the root, a text file named mcmod.info. This is to simplify the info loading, and for good compatibility between launchers and FML. With a valid mcmod.info file, users can easily access info about your mod by clicking the Mods button on the main screen in Minecraft.

This file uses JSON to define a list of mods and various properties for each. Multiple mods can be listed in the same mcmod.info file.

As a general note, FML mods should always be packaged as jars so the user can simply place the archive in the mods folder. Note that bytecode modifications to Minecraft classes are not supported via this installation method. If you need something modified in a Minecraft base class you should request that Forge or FML add the feature you need, or look into creating an FML coremod.

Example

{
  "modListVersion": 2,
  "modList": [{
    "modid": "mod_IronChest",
    "name": "Iron Chest",
    "description": "A simple mod adding some new chests with larger sizes, upgradeable in place. The feature chest is the crystal chest, which is see-through - this inventory contents can be viewed without opening the chest.",
    "version": "3.1.1.21",
    "mcversion": "1.4.5",
    "url": "http://www.minecraftforum.net/topic/981855-",
    "updateUrl": "",
    "authorList": [ "cpw", "Lishid" ],
    "credits": "Authored by cpw, based on an original idea by Lishid",
    "logoFile": "/mod_IronChest.logo.png",
    "screenshots": [ "shot1.png", "shot2.png" ],
    "parent": "mod_BuildCraftCore",
    "requiredMods": [ "Forge", "mod_BuildCraftCore" ],
    "dependencies": [ "mod_BuildCraftCore" ],
    "dependants": [ "MySpecialSubMod" ],
    "useDependencyInformation": true
  }]
}

Property documentation

Please be sure to define all properties in your file to avoid warning messages being logged when parsing the file. Use an empty string "" or an empty array [] as appropriate.

The top-level properties are modListVersion, which should always be "2", and modList, which is an array of objects. Each object is a mod definition, with the following properties:

Property Type Description
modid string Ties the individual data sections together with their respective mods. Non-existent mods mentioned in the file are ignored.
name string The mod's human-readable name.
description string A brief paragraph or two describing what your mod does.
version string The mod's version.
mcversion string Minecraft's version.
url string The mod's web site, forum thread, GitHub project, or whatever. Will eventually allow the user to open the link directly from the info screen in-game.
updateUrl string Currently unimplemented, will eventually be used to automatically check for mod updates.
authorList array The mod's authors in list format.
credits string Free form text field where you can acknowledge whatever. Keep it short as this field isn't text wrapped (though it will be eventually).
logoFile string The resource path of the image to display at the top of the info screen. Read from the classpath, so make sure it's uniquely named, or better yet located in a package directory unique to your mod. You are responsible for making it look good at various client screen sizes.
screenshots array Currently unimplemented, will eventually be displayed in the info screen.
parent string Used to connect multiple submods together under a single top level entry. Avoids cluttering up the info screen with mods that don't do anything on their own but are rather modules of another mod.
requiredMods array List of required mods ("hard" dependencies). Any mods listed here but not installed will prevent your mod from loading. Minecraft will shut down with an error screen explaining the problem to the user. This is much more user-friendly than simply crashing.

It's a good idea to include "Forge" if your mod uses Forge methods (as opposed to just FML methods).

This property does not specify the order that mods are loaded. In other words, your mod might very load before a mod that it requires. Ordering only occurs when coupled with an entry in the dependencies property, below.
dependencies array List of optional mods ("soft" dependencies) that should load before this mod. A mod that is listed in both requiredMods and dependencies is a required mod that will always be loaded before your mod.
dependants array List of optional mods ("soft" dependencies) that should load after this mod.
useDependencyInformation boolean Should normally be true. If not, or if the property is missing, the previous 3 properties will be ignored entirely.

Dependency info can also be overridden by using a @Mod(useMetadata=false, dependencies=<String>) Java annotation for FML mods.

For ModLoader mods (i.e., extending BaseMod rather than using FML's @Mod annotation), these 3 properties are always ignored. Instead, FML inspects the BaseMod.getPriorities method.
Clone this wiki locally