截图
介绍
模组菜单

模组菜单让你查看已安装的模组,并且在模组支持的情况下,可以快速便捷地访问模组的配置界面。
模组菜单还支持一些更高级的功能,例如可翻译的模组名称和描述;得益于 Patbox 的 Text Placeholder API,模组描述中支持 QuickText 格式化;从普通模组中筛选出前置库模组;针对托管在 Modrinth 上或提供自身更新源的模组进行更新检查;以及对我们提供的所有功能进行深度配置。
支持的平台
模组菜单目前适用于 Minecraft: Java Edition 1.14 或更新版本的 Fabric 或 Quilt。
开发者
模组菜单为开发者提供了多种 API,以改善其模组在模组菜单中的显示效果。这些 API 以语言键、JSON 元数据甚至 Java API 的形式提供。
翻译 API
你无需改动任何 Java 代码,即可翻译模组的名称、摘要和描述。只需按照支持的格式,将翻译键添加到任意你想要的语言中即可。
翻译 API 文档
以下是模组菜单翻译成海盗语的一个示例。要创建你自己的翻译,只需将翻译键末尾的 modmenu(不是开头那个)替换为你自己的模组 ID,例如 modmenu.descriptionTranslation.traverse。
en_pt.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!"
此处的摘要翻译是多余的,无需包含,因为它与描述相同,但这里包含它是为了说明你可以将摘要(模组的一句话简短描述)与描述分开翻译,即使在英语中也是如此!
Fabric 元数据 API
只需在 fabric.mod.json 中添加元数据,你就可以添加许多内容。
所有这些都添加到 fabric.mod.json 中为模组菜单元数据自定义的区块里。以下是该 API 提供的许多功能的一个使用示例:
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 元数据 API 文档
徽章("badges": [ ])
当模组被设置为仅客户端时,Client 徽章会自动添加(在 fabric.mod.json 中设置 "environment": "client" 即可实现)。而其他徽章,例如 Library 和 Deprecated 徽章,则需要在此处定义。
支持的值:
library– 应分配给那些纯粹作为其他模组依赖的模组,默认情况下不应向用户显示,除非用户主动开启显示。deprecated– 应分配给那些纯粹出于历史遗留原因而存在的模组,例如旧的 API 模块等。
其他任何值都将被忽略,并且 Mod Menu 不支持添加你自己的徽章。如果你有令人信服的理由需要新徽章,可以在此处提交 issue。
链接("links": { })
links 对象允许模组作者在其描述末尾添加自定义超链接。如果你在官方 fabric.mod.json 元数据中指定了 sources 联系方式,它也会被包含在链接部分中。
links 对象中的任何键都会被包含在链接部分中,该键将用作翻译键。例如,以下内容:
fabric.mod.json
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://discord.gg/jEGF5fb"
}
}
}
将显示为一个文本为“Discord”的链接,因为“Discord”是 Mod Menu 提供的“modmenu.discord”的英文翻译。
Mod Menu 提供了若干可用于链接的默认翻译。完整列表可在 Mod Menu 的语言文件此处查看。所有默认链接翻译键的形式均为 modmenu.<type>。
如果你想添加自定义链接,也可以提供自己的翻译。请确保为任何自定义键使用你自己的命名空间(而不是 modmenu)。
父级("parent": "mod_id" or { })

父级用于将某个模组显示为另一个模组的子级。这适用于被划分为不同模块的模组。fabric.mod.json 中的以下元素会将模组定义为模组 ‘flamingo’ 的子级:
fabric.mod.json
"custom": {
"modmenu": {
"parent": "flamingo"
}
}
不过,如果你想将模组归组到一个父级下,但该父级并不是一个真实的模组,你也可以这样做。在下面的示例中,一个模组正在为一个父级定义元数据。请确保此元数据包含在使用该虚假/占位父级的所有子级中。这也可以用作可选父级的回退方案,如果存在该模组的真实元数据,它将被替换。
fabric.mod.json
"custom": {
"modmenu": {
"parent": {
"id": "this-mod-isnt-real",
"name": "Fake Mod",
"description": "Do cool stuff with this fake mod",
"icon": "assets/real-mod/fake-mod-icon.png",
"badges": [ "library" ]
}
}
}
占位父级模组仅支持以下元数据:
id(字符串)name(字符串)description(字符串)icon(字符串)badges(字符串数组)
禁用更新检查器("update_checker": false)
默认情况下,Mod Menu 的更新检查器会使用你模组 jar 的哈希值在 Modrinth 上查找最新版本。如果它找到匹配的项目,就会检查支持你的模组加载器和 Minecraft 版本的最新版本,如果该版本的哈希值与你的现有文件不同,就会提示用户有可用更新。
你可以通过在 Mod Menu 元数据中将 update_checker 设为 false 来禁用更新检查器,如下所示:
fabric.mod.json
"custom": {
"modmenu": {
"update_checker": false
}
}
Quilt 元数据 API
由于 Mod Menu 也支持 Quilt,Fabric 元数据 API 部分中的相同 API 同样适用于 Quilt 模组,但自定义元数据的格式略有不同。
你不再将 "modmenu" 块放在 "custom" 块内,而是将 "modmenu" 块作为根对象中的一个元素。因此它应该看起来像这样:
quilt.mod.json
{
...
"modmenu": {
// Here's where your links, badges, etc. stuff goes
}
}
Java API
要使用 Java API,你需要在 gradle 项目中添加 Mod Menu 作为编译时依赖。这不会让你的模组依赖 Mod Menu,但它会出现在你的环境中供你测试。
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 {
// Prior to Minecraft 26.x, use "modImplementation" instead
implementation("com.terraformersmc:modmenu:${project.modmenu_version}")
}
然后,在 gradle.properties 中定义你正在使用的 Mod Menu 版本。你可以在此处获取最新版本号,但如果你没有使用最新的 Minecraft 版本,可能需要不同的版本。请参阅版本页面获取完整版本列表。
gradle.properties
modmenu_version=VERSION_NUMBER_HERE
如果你不想将其放入环境中进行测试,但仍想针对 Mod Menu 编译以使用 Java API,可以使用
modCompileOnly代替modImplementation(即使 Mod Menu 未更新到你正在运行的 Minecraft 版本,这也能正常工作)。
Java API 文档
入门
要使用该 API,请在一个类上实现 ModMenuApi 接口,并将其作为类型为 “modmenu” 的入口点添加到你的 fabric.mod.json 中,如下所示:
fabric.mod.json
"entrypoints": {
"modmenu": [ "com.example.mod.ExampleModMenuApiImpl" ]
}
模组配置界面
模组可以提供 Screen 工厂,以提供通过配置按钮打开的自定义配置界面。在你的 API 实现中实现 getModConfigScreenFactory 方法即可做到这一点。
此功能的预期用途是让模组提供自己的配置界面。配置界面的模组 id 会由入口点来源的源模组容器自动确定。
提供的配置界面
模组可以提供 Screen 工厂,以便通过其他模组的配置按钮打开自定义的配置界面。为此,请在你的 API 实现中实现 getProvidedConfigScreenFactories 方法。
此功能的预期用途是让 Cloth Config 之类的模组为使用其 API 的模组提供配置界面。
整合包徽章
模组可以通过实现 attachModpackBadges 方法为其他模组授予 Modpack 徽章,例如通过以下方式:
@Override
public void attachModpackBadges(Consumer<String> consumer) {
consumer.accept("modmenu"); // Indicates that 'modmenu' is part of the modpack
}
请注意,像 Minecraft 本身和模组加载器这样的“内部”模组无法获得整合包徽章,因为它们不会在典型的整合包中分发。
静态辅助方法
ModMenuApi 还为希望更好地与 Mod Menu 配合的模组提供了一些辅助方法,例如制作它们自己的模组按钮。
创建模组界面实例
你可以调用此方法获取模组界面的实例:
Screen createModsScreen(Screen previous)
创建模组按钮 Text
你可以调用此方法获取将显示在 Mod Menu 模组按钮上的 Text:
Text createModsButtonText()
Terraformers 的其他作品
查看全部 →
Terrestria
Terrestria is a detailed and vibrant biomes mod for Minecraft running on the Fabric mod loader.
Biolith
A biome placement mod focusing on configurability and consistent distribution of modded biomes
Cinderscapes
A biome mod expanding the life of The Nether
评论
登录后评论和评分