

Mod Menu
Mod Menu lets you view the mods you have installed and, if supported by the mod, enables quick and easy access to the mod's config screens.
Mod Menu also supports some more advanced features, such as translatable mod names and descriptions, support for QuickText formatting in mod descriptions thanks to Patbox's Text Placeholder API, filters library mods out from regular mods, a mod update checker for mods hosted on Modrinth or that provide their own update sources, and deep configuration for all the features we provide.
Supported Platforms
Mod Menu is currently available for Fabric or Quilt on Minecraft: Java Edition 1.14 or newer.
Developers
Mod Menu includes a number of APIs for developers to improve how their mod appears in Mod Menu. These come in the form of language keys, JSON metadata, and even a Java API.
Translation API
You can translate your mod's name, summary, and description all without touching any Java code. Simply add translation keys in the supported format to any language you'd like.
Translation API Documentation
Here's an example of Mod Menu's translations into Pirate Speak. To create your own, simply replace `modmenu` at the end (***NOT*** the one in the beginning) of the translation key with your own mod ID, for example `modmenu.descriptionTranslation.traverse`. `en_pt.json` ```json "modmenu.nameTranslation.modmenu": "Menu o' mods!", "modmenu.descriptionTranslation.modmenu": "Menu o' mods ye installed matey!", "modmenu.summaryTranslation.modmenu": "Menu o' mods ye installed matey!" ``` > The summary translation is redundant here and does not need to be included because it's the same as the description, but it was included to show that you may translate the summary (a short, one-sentence description of the mod) separately from the description, even in English!Fabric Metadata API
There's a number of things you can add just with metadata in your fabric.mod.json
.
All of these are added to a custom block in your fabric.mod.json
for Mod Menu's metadata. Here's an example usage of many of the features this API provides:
fabric.mod.json
{
...
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://discord.gg/jEGF5fb"
},
"badges": [ "library", "deprecated" ],
"parent": {
"id": "example-api",
"name": "Example API",
"description": "Modular example library",
"icon": "assets/example-api-module-v1/parent_icon.png",
"badges": [ "library" ]
},
"update_checker": true
}
}
}
Fabric Metadata API Documentation
#### Badges (`"badges": [ ]`) While the `Client` badge is added automatically to mods set as client-side only (set `"environment": "client"` in `fabric.mod.json` to do this.), other badges such as the `Library` and `Deprecated` badges require definition here. Supported values: - `library` - should be assigned to mods that are purely dependencies for other mods that should not be shown to the user by default unless they toggle them on. - `deprecated` - should be assigned to mods that exist purely for legacy reasons, such as an old API module or such. Any others will be ignored, and Mod Menu does not support adding your own badges. You may open an issue [here](https://github.com/TerraformersMC/ModMenu/issues) if you have a compelling use case for a new badge. #### Links (`"links": { }`) The `links` object allows mod authors to add custom hyperlinks to the end of their description. If you specify a `sources` contact in the official `fabric.mod.json` metadata, it will also be included in the links section. Any key in the `links` object will be included in the links section, with the key being used as a translation key. For example, this: `fabric.mod.json` ```json "custom": { "modmenu": { "links": { "modmenu.discord": "https://discord.gg/jEGF5fb" } } } ``` will show as a link with the text "Discord", since "Discord" is the English translation of "modmenu.discord" provided by Mod Menu. Mod Menu provides several default translations that can be used for links. A full list can be seen in Mod Menu's language file [here](https://github.com/TerraformersMC/ModMenu/blob/-/src/main/resources/assets/modmenu/lang/en_us.json). All default link translation keys take the form `modmenu.
Quilt Metadata API
Since Mod Menu supports Quilt as well, the same APIs in the Fabric Metadata API section are also available for Quilt mods, but the format for custom metadata is slightly different.
Instead of a "modmenu"
block inside of a "custom"
block, you put the "modmenu"
block as an element in the root object. So it should look like:
quilt.mod.json
{
...
"modmenu": {
// Here's where your links, badges, etc. stuff goes
}
}
Java API
To use the Java API, you'll need to add Mod Menu as a compile-time dependency in your gradle project. This won't make your mod require Mod Menu, but it'll be present in your environment for you to test with.
build.gradle
// Add the Terraformers maven repo to your repositories block
repositories {
maven {
name = "Terraformers"
url = "https://maven.terraformersmc.com/"
}
}
// Add Mod Menu as a dependency in your environment
dependencies {
modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}")
}
Then, define the version of Mod Menu you're using in your gradle.properties
. You can get the latest version number here, but you may need a different version if you're not using the latest Minecraft version. See the versions page for a full list of versions.
gradle.properties
modmenu_version=VERSION_NUMBER_HERE
If you don't want it in your environment for testing but still want to compile against Mod Menu for using the Java API, you can use
modCompileOnly
instead ofmodImplementation
(this will work even if Mod Menu is not updated to the version of Minecraft you're running).