
ModernTabs
一个独立、跨平台的库,使创造模式标签页更加可定制化
什么是 ModernTabs?
这是一个库模组,为自定义任意创造模式标签页提供了一个跨平台的解决方案,比目前在 NeoForge 和 Fabric 上可能实现的功能更进一步。
ModernTabs 使得为每个标签页添加带有指定横幅的独立分区、更改滚动条贴图以及修改创造模式标签图标的背景贴图成为可能。此外,你可以使用任何贴图作为创造模式标签图标,而无需将其注册为游戏内的物品。
ModernTabs 还允许仅通过定义你想要的颜色来更改背景、图标背景和滚动条纹理,无需任何纹理贴图。
创造模式标签横幅的想法来自 Create Aeronautics/Simulated 模组,因此包含了其部分代码。
示例创造模式标签页

此示例创造模式标签页仅在开发环境中启用,因此仅用于展示。
这意味着它不会出现在常规整合包中。
面向开发者
如何在你的模组中使用 ModernTabs(设置):
你需要在你的 build.gradle 文件中定义以下内容:
repositories {
maven {
name = "Jitpack"
url 'https://jitpack.io'
}
}
dependencies {
// 仅在多加载器设置中需要(在你的模组的公共部分使用此配置)
// 包含公共模块
modImplementation("com.github.Roboter007.ModernTabs:ModernTabs-common:${rootProject.moderntabs_version}")
// Fabric 需要
// 包含 Fabric 特定模块以及公共模块
modImplementation("com.github.Roboter007.ModernTabs:ModernTabs-fabric:${rootProject.moderntabs_version}")
// NeoForge 需要
// 包含 NeoForge 特定模块以及公共模块
modImplementation("com.github.Roboter007.ModernTabs:ModernTabs-neoforge:${rootProject.moderntabs_version}")
}
然后你可以在你的 gradle.properties 文件中定义:
// 最新版本:
moderntabs_version=v1.4.0
为了在模组中正确实现创造模式标签横幅,你需要做的事情:
// TabIconBackground 类结合了标签图标背景的所有可能状态
// 如果在指定位置找不到贴图,它会使用默认的原版贴图
// 图标背景的贴图必须位于 textures/gui/sprites/creative_inventory/ 下
// 图标背景的贴图文件命名取决于:tab_tabIdentifer_row_column_selectionState.png
// 文件名示例:tab_example_top_left_selected.png
TabIconBackground exampleTabBackgrounds = new TabIconBackground(ExampleMod.MOD_ID, "example"); // example 是标签标识符
// 在此示例中,第一个参数代表文字背景颜色
// 第二个参数定义贴图文件的位置,第三个和第四个定义 example_titel.png 的渲染宽度和高度
// 贴图文件必须位于 sprites 文件夹中(在此示例中位于:textures/gui/sprites/creative_inventory/example_titel.png)
SpriteTabTitel spriteTabTitel = new SpriteTabTitel(new ModernColor("#36454F").lighten(0.5f), ModernTabs.path("container/creative_inventory/example_titel"), 64, 10);
// 只是一个示例颜色
ModernColor exampleColor = new ModernColor("#36454F");
// 使用你已注册的创造模式标签页(在此示例中:EXAMPLE_TAB)
ModernTabs.builder(EXAMPLE_TAB)
// 使定义的创造模式标签页能够使用自定义分区
.withEnabledSections(true)
// 更改任何给定状态下的标签图标背景贴图
.withCustomTabIconBackground(exampleTabBackgrounds)
// 显示一个常规 Minecraft 物品的 sprite 实例。
// 自定义图标的 sprite 必须位于 textures/gui/sprites/ 下
.withCustomTabIcon(ResourceLocation.fromNamespaceAndPath(ExampleMod.MOD_ID, "example_icon"))
// 更改滚动条的 sprite
// 自定义图标的滚动条必须位于 textures/gui/sprites/ 下
.withCustomScroller(ResourceLocation.fromNamespaceAndPath(ExampleMod.MOD_ID, "example_scroller"))
// 修改你的创造模式标签页标题
// 选项:1) 光晕文字样式(等同于创造模式标签横幅的文字)
// 2) sprite(使用 sprite 作为你的创造模式标签页标题)
// 3) 自定义(使用默认原版样式文字渲染,但具有更多配置选项,如文字颜色)
.withCustomTitelRendering(spriteTabTitel)
// 仅设置创造模式标签页的背景纹理颜色和滚动条纹理颜色
.withCustomBackgroundColor(exampleColor)
// 此方法与 withCustomBackgroundColor 方法功能相同,但同时也会更改标签图标背景颜色
.withCustomColor(exampleColor);
// 这定义了哪些物品包含在哪个分区中
// 要创建分区,你需要在你的 assets 文件夹中定义一个 json 文件(向下滚动一点,了解如何创建分区)
SectionedItems.addItem(ExampleItems.EXAMPLE_ITEM, ResourceLocation.fromNamespaceAndPath(ExampleMod.MOD_ID, "example_section"));
// 从网格中隐藏一个调试物品,但保持其可搜索
TabItemTransforms.setVisibility(MyItems.DEBUG_STICK, TabItemTransforms.VisibilityType.SEARCH_ONLY);
为了使创造模式标签分区正常工作,你需要为你想要的每个创造模式标签分区创建一个 JSON 文件。
这些 json 文件必须位于:assets/mymod/moderntabs/sections/example_section.json,并且你在代码中定义的分区必须与此位置的一个 json 文件匹配。
JSON 文件示例:
{
"priority": 0,
"title": {
"text": { "translate": "itemGroup.example_mod.basics" },
"color": "#FFFFFF",
"background": "#AA000000"
},
"sprite": "example_mod:basics_banner",
"only_animate_on_hover": false
}
| 字段 | 类型 | 默认值 | 备注 |
|---|---|---|---|
priority |
正整数 | 0 |
数值越低越先绘制(在标签页中位置越高)。 |
title.text |
组件 | 必填 | 任何普通文本/可翻译组件。 |
title.color |
"#RRGGBB" / "#AARRGGBB" |
#FFFFFFFF |
主要文本填充颜色。 |
title.secondary_color |
"#RRGGBB" / "#AARRGGBB" |
比 title.color 深 20% |
轮廓/“光晕”颜色。 |
title.background |
"#RRGGBB" / "#AARRGGBB" |
#AA000000 |
文本后面药丸形状的背景颜色。 |
sprite |
GUI sprite ID | moderntabs:default_banner |
位于 textures/gui/sprites/ 下的纹理,每个动画帧为 162×18 像素。 |
only_animate_on_hover |
布尔值 | false |
如果 sprite 是动画,它将暂停,直到鼠标悬停在横幅上。 |
常见问题
为什么又有一个添加创造模式标签横幅的模组?
➔ 我创建这个库是为了在我即将推出的一些模组中使用它,因此我需要同时支持 NeoForge 和 Fabric 的版本。
此外,它已经包含了许多其他功能,旨在让创造模式标签页更易于配置。
会支持 Minecraft 的 x 版本吗?
➔ 我不会进行向后移植。如果有人计划这样做,欢迎自由进行,如果你愿意,可以在 GitHub 上创建拉取请求。我将来可能会将其更新到更新版本(但我不保证)。
错误与功能请求
请在关联的 GitHub 上报告你遇到的任何错误或功能请求。
致谢
- 感谢 Create Aeronautics/Simulated 模组团队和贡献者创建了如此出色的模组。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。