Modding/def.json

From Desynced Wiki
Revision as of 15:18, 21 March 2026 by Crashfly (talk | contribs) (updated required descriptions for options in def.json file.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The 'def.json' file is the starting file for your mod.

  • "id" is required. It is the unique mod identifier in the game.
  • "name" is required. It is the description in game that your mod will go by.
  • "version_name" is required. It gives a version reference when you update your own code.
  • "version_code" is required. It is a number.
  • "author" is required. It should identify the mod author.
  • "homepage" is not required to be filled out. It can be blank, however it may be useful if you want to link to a source code page.
  • "description" is required. Gives a quick description about your mod.
  • "options" is not required. It does give your mod a settings page under the Main Menu > Options > Mods.
  • "packages" having at least one entry is required.
    • Package name can be almost any descriptor.
      • Name gives a reference for the package.
      • Entry is the main starting point for the package.
      • 'map_settings' is an entry point for additional options when starting a new custom game.
      • Dependencies give packages your mod package is dependent on.
    • Secondary packages are not required, but can be helpful in some instances.
{
    "id": "YourModId",
    "name": "Your Mod Name",
    "version_name": "1.0",
    "version_code": 1,
    "author": "You",
    "homepage": "...",
    "description": "Example def.json for Your Mod",
    "options": "options.lua", // If you want your mod to have a settings page under Options > Mods
    "packages": {
        "Data": {
            "name": "Your Mod Data",
            "entry": "data.lua",
            "map_settings": "map_set.lua",
            "dependencies": [ "Main/Data" ],
        },
        "UI": {
            "name": "Your Mod UI",
            "entry": "ui.lua",
        },
        "Languages": {
            "name": "Translations",
            "languagesdir": "translations",
            "type": "Translation",
            "languages": {
                "en": "English (America)",
                'fr': "French",
                // ... etc
            }
        }
        // ... etc
    }
}