添加一个模组菜单,用于查看已安装的模组列表。

Mod Menu 允许你查看已安装的模组,并且如果模组支持,可以快速便捷地访问其配置界面。
Mod Menu 还支持一些更高级的功能,例如可翻译的模组名称和描述、借助 Patbox 的 Text Placeholder API 在模组描述中支持 QuickText 格式化、将库模组与常规模组区分过滤、为托管在 Modrinth 或提供自身更新源的模组提供更新检查器,以及对我们提供的所有功能进行深度配置。
Mod Menu 目前适用于 Minecraft: Java Edition 1.14 或更高版本的 Fabric 或 Quilt。
Mod Menu 包含一系列 API,供开发者改善其模组在 Mod Menu 中的显示效果。这些 API 以语言键、JSON 元数据甚至 Java API 的形式提供。
你可以翻译模组的名称、摘要和描述,而无需接触任何 Java 代码。只需将符合支持格式的翻译键添加到任意你希望的语言中。
翻译 API 文档
以下是 Mod Menu 翻译成海盗语的示例。要创建你自己的翻译,只需将翻译键末尾的 modmenu(不是开头的那个)替换为你自己的模组 ID,例如 modmenu.descriptionTranslation.traverse。
en_pt.json
```json
"modmenu.nameTranslation.modmenu": "模组菜单!",
"modmenu.descriptionTranslation.modmenu": "伙计,你安装的模组菜单!",
"modmenu.summaryTranslation.modmenu": "伙计,你安装的模组菜单!"
```
> 这里的摘要翻译是冗余的,无需包含,因为它与描述相同,但为了展示你可以将摘要(模组的简短单句描述)与描述分开翻译,即使在英语中也是如此!
你可以仅通过 fabric.mod.json 中的元数据添加许多内容。
所有这些都添加到 fabric.mod.json 中 Mod Menu 元数据的自定义块中。以下是此 API 提供的许多功能的示例用法:
fabric.mod.json
```json5
{
...
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://discord.gg/jEGF5fb"
},
"badges": [ "library", "deprecated" ],
"parent": {
"id": "example-api",
"name": "Example API",
"description": "模块化示例库",
"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 不支持添加自定义徽章。如果你有添加新徽章的充分理由,可以在此处提交问题。
"links": { })links 对象允许模组作者在描述末尾添加自定义超链接。如果你在官方的 fabric.mod.json 元数据中指定了 sources 联系方式,它也将包含在链接部分。
links 对象中的任何键都将包含在链接部分,键将用作翻译键。例如:
fabric.mod.json
```json
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://discord.gg/jEGF5fb"
}
}
}
```
将显示为文本为 "Discord" 的链接,因为 "Discord" 是 Mod Menu 提供的 "modmenu.discord" 的英文翻译。
Mod Menu 提供了几个可用于链接的默认翻译。完整列表可在 Mod Menu 的语言文件中查看此处。所有默认链接翻译键的格式为 modmenu.。
你也可以提供自己的翻译,如果你想添加自定义链接。请确保为任何自定义键使用你自己的命名空间(而不是 modmenu)。
"parent": "mod_id" 或 { })父模组用于将一个模组显示为另一个模组的子项。这适用于划分为不同模块的模组。fabric.mod.json 中的以下元素将定义该模组为 'flamingo' 模组的子项:
fabric.mod.json
```json
"custom": {
"modmenu": {
"parent": "flamingo"
}
}
```
但是,如果你想将模组分组到一个父模组下,而该父模组并非实际存在的模组,你也可以这样做。在下面的示例中,一个模组为虚拟父模组定义元数据。确保此元数据包含在所有使用该虚拟父模组的子模组中。这也可以用作可选父模组的后备方案,如果存在真实的模组元数据,它将被替换。
fabric.mod.json
```json
"custom": {
"modmenu": {
"parent": {
"id": "this-mod-isnt-real",
"name": "虚拟模组",
"description": "用这个虚拟模组做酷炫的事情",
"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
```json
"custom": {
"modmenu": {
"update_checker": false
}
}
```
由于 Mod Menu 也支持 Quilt,Fabric 元数据 API 部分中的相同 API 也可用于 Quilt 模组,但自定义元数据的格式略有不同。
不是将 "modmenu" 块放在 "custom" 块内,而是将 "modmenu" 块作为根对象中的一个元素。因此应如下所示:
quilt.mod.json
```json5
{
...
"modmenu": {
// 这里是你的链接、徽章等内容的放置位置
}
}
```
要使用 Java API,你需要在 gradle 项目中将 Mod Menu 添加为编译时依赖项。这不会使你的模组依赖 Mod Menu,但它将在你的环境中供你测试使用。
build.gradle
```gradle
// 将 Terraformers Maven 仓库添加到你的 repositories 块中
repositories {
maven {
name = "Terraformers"
url = "https://maven.terraformersmc.com/"
}
}
// 在你的环境中添加 Mod Menu 作为依赖项
dependencies {
// 在 Minecraft 26.x 之前,使用 "modImplementation" 代替
implementation("com.terraformersmc:modmenu:${project.modmenu_version}")
}
```
然后,在你的 gradle.properties 中定义你使用的 Mod Menu 版本。你可以在此处获取最新版本号,但如果你使用的不是最新的 Minecraft 版本,可能需要不同的版本。查看版本页面获取完整版本列表。
gradle.properties
```properties
modmenuversion=VERSIONNUMBER_HERE
```
> 如果你不想在环境中进行测试,但仍想针对 Mod Menu 进行编译以使用 Java API,可以使用 modCompileOnly 代替 modImplementation(即使 Mod Menu 未更新到你运行的 Minecraft 版本,这也有效)。
Java API 文档
要使用 API,请在一个类上实现 ModMenuApi 接口,并将其作为类型为 "modmenu" 的入口点添加到你的 fabric.mod.json 中,如下所示:
fabric.mod.json
```json
"entrypoints": {
"modmenu": [ "com.example.mod.ExampleModMenuApiImpl" ]
}
```
模组可以提供 Screen 工厂,以提供自定义配置界面,通过配置按钮打开。在你的 API 实现中实现 getModConfigScreenFactory 方法来实现此功能。
此功能的预期用例是让模组提供自己的配置界面。配置界面的模组 ID 会自动根据入口点来源的模组容器确定。
模组可以提供 Screen 工厂,为其他模组提供自定义配置界面,通过配置按钮打开。在你的 API 实现中实现 getProvidedConfigScreenFactories 方法来实现此功能。
此功能的预期用例是让像 Cloth Config 这样的模组为使用其 API 的模组提供配置界面。
模组可以通过实现 attachModpackBadges 方法为其他模组赋予 Modpack 徽章,例如通过以下方式:
```java
@Override
public void attachModpackBadges(Consumer consumer) {
consumer.accept("modmenu"); // 表示 'modmenu' 是整合包的一部分
}
```
请注意,'内部'模组如 Minecraft 本身和模组加载器不能被赋予整合包徽章,因为它们不包含在典型的整合包分发中。
ModMenuApi 还提供了一些辅助方法,供希望更好地与 Mod Menu 协作的模组使用,例如创建自己的 Mods 按钮。
你可以调用此方法获取 Mods 界面的实例:
```java
Screen createModsScreen(Screen previous)
```
Text你可以调用此方法获取将显示在 Mod Menu Mods 按钮上的 Text:
```java
Text createModsButtonText()
```
友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人次:3,044,201 | 今日访问人次:28,329 | 昨日访问人次:20,728
独立 IP:7,706 | 最近24小时独立访客:25,332
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6