BBSMC Logo
模组
资源包
数据包
整合包
光影
插件
软件资源
论坛
登录
模组插件数据包光影资源包整合包资源
登录
设置
模组菜单 - Mod Menu

模组菜单 - Mod Menu

此模组添加了一个用于查看模组列表的菜单界面

5,397
4
实用工具

基本信息

我的世界Java版本

1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.4–1.16.5
1.16.1
1.15.2
1.14.4

平台

\n \n \n Fabric
\n \n \n \n \n \n \n \n \n Quilt

运行环境

客户端

其他链接

反馈问题 查看源码
Modrinth地址

搬运团队

BBSMC 官方搬运(1)
BBSMC 官方搬运(1)团队

详情信息

许可证 MIT
发布于 6 months ago
更新于 2 months ago
简介渲染图更新日志版本百科讨论

模组菜单

模组屏幕的屏幕截图,在搜索栏和筛选按钮下方的左侧显示了一些模组的列表,其中选中了模组菜单。在屏幕的右侧,它显示了有关该模组的更多详细信息,例如作者、描述、链接、信用以及配置模组的按钮。

模组菜单允许您查看已安装的模组,如果模组支持,还可以快速轻松地访问模组的配置屏幕。

模组菜单还支持一些更高级的功能,例如可翻译的模组名称和描述,由于Patbox的文本占位符 API,在模组描述中支持QuickText 格式,从常规模组中筛选出库模组,为托管在 Modrinth 上或提供自己更新源的模组提供模组更新检查器,以及为我们提供的所有功能进行深度配置。

支持的平台

模组菜单目前可用于《我的世界:Java 版》1.14 或更高版本的 Fabric 或 Quilt。

开发者

模组菜单为开发者提供了许多 API,以改善他们的模组在模组菜单中的显示方式。这些以语言键、JSON 元数据甚至 Java API 的形式出现。

翻译 API

您可以在不触及任何 Java 代码的情况下翻译您的模组的名称、摘要和描述。只需以支持的格式将翻译键添加到您想要的任何语言中。

翻译 API 文档

这是模组菜单翻译成海盗语的一个示例。要创建您自己的翻译,只需将翻译键末尾的modmenu(不是开头的那个)替换为您自己的模组 ID,例如modmenu.descriptionTranslation.traverse。

en_pt.json

"modmenu.nameTranslation.modmenu": "菜单 o' 模组!",
"modmenu.descriptionTranslation.modmenu": "菜单 o' 模组 ye 安装 matey!",
"modmenu.summaryTranslation.modmenu": "菜单 o' 模组 ye 安装 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": "示例 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 模块等。

任何其他值将被忽略,并且模组菜单不支持添加您自己的徽章。如果您有一个令人信服的新徽章用例,您可以在此处打开一个问题。

链接("links": { })

links对象允许模组作者在其描述的末尾添加自定义超链接。如果您在官方的fabric.mod.json元数据中指定了sources联系人,它也将包含在链接部分中。

links对象中的任何键都将包含在链接部分中,键将用作翻译键。例如,这个:

fabric.mod.json

"custom": {
    "modmenu": {
        "links": {
          "modmenu.discord": "https://discord.gg/jEGF5fb"
        }
    }
}

将显示为一个带有文本“Discord”的链接,因为“Discord”是模组菜单提供的“modmenu.discord”的英语翻译。

模组菜单提供了几个可用于链接的默认翻译。完整列表可以在模组菜单的语言文件这里中看到。所有默认链接翻译键都采用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": "虚拟模组",
            "description": "使用这个虚拟模组做很酷的事情",
            "icon": "assets/real-mod/fake-mod-icon.png",
            "badges": [ "library" ]
        }
    }
}

虚拟父模组仅支持以下元数据:

  • id(字符串)
  • name(字符串)
  • description(字符串)
  • icon(字符串)
  • badges(字符串数组)

禁用更新检查器("update_checker": false)

默认情况下,模组菜单的更新检查器将使用您的模组的 jar 文件的哈希值在 Modrinth 上查找最新版本。如果它找到匹配的项目,它将检查支持您的模组加载器和《我的世界》版本的最新版本,如果它的哈希值与您现有的文件不同,它将提示用户有可用的更新。

您可以通过在您的模组菜单元数据中像这样将update_checker设置为false来禁用更新检查器:

fabric.mod.json

"custom": {
    "modmenu": {
        "update_checker": false
    }
}

Quilt 元数据 API

由于模组菜单也支持 Quilt,Fabric 元数据 API 部分中的相同 API 也可用于 Quilt 模组,但自定义元数据的格式略有不同。

不是在"custom"块内的"modmenu"块,而是将"modmenu"块作为根对象中的元素。所以它应该看起来像:

quilt.mod.json

{
 ...
  "modmenu": {
    // 这里是您的链接、徽章等内容的位置
  }
}

Java API

要使用 Java API,您需要在您的 gradle 项目中将模组菜单作为编译时依赖项添加。这不会使您的模组需要模组菜单,但它将在您的环境中供您进行测试。

build.gradle

// 将 Terraformers maven 仓库添加到您的 repositories 块中
repositories {
  maven {
    name = "Terraformers"
    url = "https://maven.terraformersmc.com/"
  }
}

// 在您的环境中添加模组菜单作为依赖项
dependencies {
  modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}")
}

然后,在您的gradle.properties中定义您正在使用的模组菜单的版本。您可以在这里获得最新的版本号,但如果您没有使用最新的《我的世界》版本,您可能需要不同的版本。有关版本的完整列表,请参阅版本页面。

gradle.properties

modmenu_version=VERSION_NUMBER_HERE

如果您不想在测试环境中使用它,但仍然想针对模组菜单进行编译以使用 Java API,您可以使用modCompileOnly而不是modImplementation(即使模组菜单未更新到您正在运行的《我的世界》版本,这也将起作用)。

Java API 文档

入门

要使用该 API,在一个类上实现ModMenuApi接口,并将其作为"modmenu"类型的入口点添加到您的fabric.mod.json中,如下所示:

fabric.mod.json

"entrypoints": {
  "modmenu": [ "com.example.mod.ExampleModMenuApiImpl" ]
}

模组配置屏幕

模组可以提供一个屏幕工厂,以提供一个自定义的配置屏幕,通过配置按钮打开。在您的 API 实现中实现getModConfigScreenFactory方法来实现此目的。

此功能的预期用例是为模组提供自己的配置屏幕。配置屏幕的模组 ID 由入口点起源的源模组容器自动确定。

提供的配置屏幕

模组可以提供屏幕工厂,为其他模组提供通过配置按钮打开的自定义配置屏幕。在您的 API 实现中实现getProvidedConfigScreenFactories方法来实现此目的。

此功能的预期用例是像 Cloth Config 这样的模组为使用其 API 的模组提供配置屏幕。

模组包徽章

模组可以通过实现attachModpackBadges方法为其他模组赋予Modpack徽章,例如通过以下方式:

@Override
public void attachModpackBadges(Consumer<String> consumer) {
	consumer.accept("modmenu"); // 表示'modmenu'是模组包的一部分
}

请注意,像《我的世界》本身和模组加载器这样的“内部”模组不能被赋予模组包徽章,因为它们不是在典型的模组包中分发的。

静态辅助方法

ModMenuApi还为想要更好地与模组菜单配合使用的模组提供了一些辅助方法,例如制作自己的模组按钮。

创建一个模组屏幕实例

您可以调用此方法来获取模组屏幕的实例:

Screen createModsScreen(Screen previous)

创建一个模组按钮Text

您可以调用此方法来获取将在模组菜单模组按钮上显示的文本:

Text createModsButtonText()
设置
"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

本站与Modrinth无从属关系,网站遵循Modrinth网站程序的LGPL协议开源 开源地址

版权所有 © 2019-2024 青岛柒兮网络科技有限公司 | ICP经营许可证: 鲁B2-20210590 | ICP备案: 鲁ICP备2021009459号-12