ICustomMenu GUI 配置教程
ICustomMenu GUI 配置教程
本模组允许通过数据包(Datapack)完全自定义游戏内界面。配置文件路径:data/<命名空间>/custom_menus/<文件名>.json
1. 核心属性 (Root Properties)
| 属性 | 类型 | 描述 | 示例 |
|---|---|---|---|
keybind | String | 快捷键 ID。 | "key.keyboard.k" |
animation_direction | String | 滑入方向 (left, right, top, bottom)。 | "left" |
background | Object | 背景贴图与区域定义。 | 见下文 |
components | Array | 界面组件列表。 | 见下文 |
2. 背景配置 (Background)
1 | "background": { |
3. 组件库 (Component Gallery)
A. 文字组件 (text)
支持样式代码(§)、动态缩放以及动态占位符。
1 | { |
支持的占位符:
%player_name%: 玩家名称%health%: 当前血量%max_health%: 最大血量%food%: 饥饿值%level%: 等级%x%,%y%,%z%: 坐标- [联动] ClassBioArsenal:
%cba_profession%: 当前职业名称%cba_level%: 职业等级%cba_exp%: 当前经验%cba_max_exp%: 升级所需经验%cba_exp_progress%: 经验百分比 (例如 45.00%)
- [联动] PlayerAffixes:
%pa_talents_count%: 已解锁天赋总数%pa_has_talent:<id>%: 是否拥有特定天赋 (true/false)%pa_has_affix:<id>%: 是否拥有特定词条 (true/false)
B. 基础按钮 (button)
自定义背景色的矩形按钮。
1 | { |
C. 原版样式按钮 (vanilla_button)
使用 Minecraft 标准按钮贴图。
1 | { |
D. 图片按钮 (image_button)
完全自定义贴图的按钮,支持叠加文字。
1 | { |
E. 静态图片 (image)
用于装饰或展示贴图。
1 | { |
F. 玩家模型 (player_model)
渲染 3D 玩家小人,会跟随鼠标旋转。
1 | { |
G. 线框组件 (wireframe / rounded_wireframe)
用于勾勒区域或装饰。
1 | { |
H. 线条组件 (horizontal_line / vertical_line)
简单的分割线。
1 | { |
I. 进度条 (progress_bar)
展示数值进度(如血量、经验)。
1 | { |
J. 物品渲染 (item)
直接渲染 Minecraft 物品图标。
1 | { |
4. 全局属性 (Global Properties)
所有组件都支持以下属性:
| 属性 | 类型 | 描述 |
|---|---|---|
tooltip | String / Array | 鼠标悬停时显示的提示文字。支持占位符。如果是数组,则显示为多行。 |
color | String | 颜色字符串。支持 #RRGGBB 或 #AARRGGBB。 |
示例:
1 | { |
5. 动作系统 (Action System)
| 类型 | 描述 | 示例值 (value) |
|---|---|---|
command | 以玩家身份执行指令。 | "/spawn" |
close | 关闭当前 GUI。 | (无需值) |
server_event | 触发后端 Java 事件。 | "my_mod_event" |
custom | [API] 触发通过 API 注册的自定义动作。 | "my_custom_action" |
switch_menu | [高级] 切换子菜单内容。 | "icustommenu:sub_page" |
5. 动作前置要求 (Action Requirements)
您可以为按钮动作添加 requirements,只有满足条件时动作才会执行。
物品消耗示例
1 | { |
6. 联动模组扩展 (Mod Integration)
当安装了以下模组时,将自动解锁额外的占位符与动作要求。
A. ClassBioArsenal (职业系统)
占位符:
%cba_profession%: 当前职业名称 (如berserker)%cba_level%: 职业等级%cba_exp%: 当前经验%cba_max_exp%: 升级所需经验%cba_exp_progress%: 经验百分比 (例如45.00%)
动作要求 (requirements):
- 职业检查 (
cba_profession): 只有指定职业的玩家才能执行动作。1
2
3
4{
"type": "cba_profession",
"id": "berserker"
} - 等级检查 (
cba_level): 只有达到指定等级的玩家才能执行动作。1
2
3
4{
"type": "cba_level",
"min": 10
}
B. PlayerAffixes (天赋系统)
占位符:
%pa_talents_count%: 已解锁天赋总数%pa_has_talent:<id>%: 是否拥有特定天赋 (true/false)%pa_has_affix:<id>%: 是否拥有特定词条 (true/false)
动作要求 (requirements):
- 天赋检查 (
pa_talent): 检查是否解锁了特定天赋。1
2
3
4{
"type": "pa_talent",
"id": "playeraffixes:strength_boost"
} - 词条检查 (
pa_affix): 检查是否拥有特定词条。1
2
3
4{
"type": "pa_affix",
"id": "playeraffixes:lifesteal"
}
7. 嵌套菜单与路由 (Nested Menus / Router)
嵌套菜单允许您在主界面(如侧边栏)不变的情况下,动态切换中间的内容区域。
步骤 1: 定义主菜单 (main.json)
主菜单中定义导航按钮,并指定子菜单的偏移位置。
1 | { |
步骤 2: 定义子菜单 (home_sub.json)
子菜单中的坐标(x, y)是相对于主菜单中定义的 offset 的。
1 | { |
7. 自定义动作 API (Custom Actions API)
custom 类型的动作允许您通过 Java 代码或 KubeJS 脚本注册复杂的逻辑。
JSON 配置
1 | { |
KubeJS 注册示例 (Server Script)
在 kubejs/server_scripts/ 目录下创建脚本:
1 | // 获取 API 类 |
8. 开发者贴士
- 热加载: 修改 JSON 后,在游戏内输入
/custommenu reload即可立即看到效果。 - 贴图路径: 推荐放在
assets/<命名空间>/textures/gui/下。 - 透明度: 贴图支持透明通道(PNG)。
- KubeJS 联动: 确保已安装 KubeJS,并使用
CustomMenuAPI进行逻辑扩展。
💗感谢你的喜欢与支持!
本作品由 JoBackRer 于 2026-01-27 18:00:22 发布
作品地址:ICustomMenu GUI 配置教程
除特别声明外,本站作品均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 JoBackRer の blog

