GUI 配置
Forge 的 GUI 配置位于 gui/ 目录,包括锻造 GUI 和配方书 GUI。GUI 不只是显示菜单,还负责保护输入槽、处理点击、返还物品和触发锻造流程。
文件说明
| 文件 | 作用 |
|---|---|
forge_gui.yml | 玩家执行锻造的主界面。 |
recipe_book.yml | 玩家查看已加载配方的配方书。 |
模板结构
模板使用 CoreLib GUI 模板格式。顶层字段:
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 模板 ID,与文件名对应。 |
gui_type | string | 容器类型,锻造界面使用 CHEST。 |
title | string | GUI 标题,支持 MiniMessage 与 %recipe% 替换。 |
rows | integer | 行数。内置 forge_gui 为 5 行,recipe_book 为 6 行。 |
slots | map | 槽位组定义,key 为组名。 |
virtual_items | map | 不占槽位的动态展示物品。 |
texts | map | 状态文案片段。 |
每个槽位组包含:
| 字段 | 类型 | 说明 |
|---|---|---|
slots | list<integer> | 该组占用的槽位索引列表。 |
type | string | 功能类型。省略时为纯装饰槽。 |
item | object | 槽位默认展示物品(source + components)。 |
sounds | object | 点击音效等配置。 |
锻造界面槽位类型
forge_gui.yml 中由 type 驱动的功能槽位:
| type | 作用 |
|---|---|
blueprint_inputs | 图纸输入槽。Forge 按放入的图纸物品源自动匹配配方。 |
required_materials | 必需材料输入槽。 |
optional_materials | 可选材料输入槽,消耗锻造容量。 |
capacity_display | 展示当前容量、容量上限和容量状态。 |
confirm | 确认锻造按钮。 |
没有 type 的槽位组(内置模板中的 top_frame、side_frame、core_frame)只做背景填充。
配方书槽位类型
recipe_book.yml 中由 type 驱动的功能槽位:
| type | 作用 |
|---|---|
recipe_list | 配方条目展示区域。 |
prev_page | 上一页。 |
next_page | 下一页。 |
close | 关闭菜单。 |
槽位组示例
yaml
blueprint_inputs:
slots:
- 10
- 19
type: "blueprint_inputs"
item:
source: "guster_banner_pattern"
components:
custom_name: "<light_purple>放入图纸</light_purple>"
lore:
- "<gray>配方会按图纸物品源自动匹配"确认按钮示例
yaml
confirm:
slots:
- 34
type: "confirm"
item:
source: "ANVIL"
components:
custom_name: "<green>确认锻造</green>"
lore:
- "<gray>当前容量: <yellow>%current%/%max%</yellow>"
- "<yellow>点击后开始执行锻造"
sounds:
click:
sound: "ui.button.click"
volume: 1.0
pitch: 1.0容量展示变量
capacity_display 和 confirm 槽位的 lore 中可用:
| 变量 | 说明 |
|---|---|
%current% | 当前已占用容量。 |
%max% | 容量上限。 |
%capacity_state% | 容量状态文案,取值来自 texts.capacity_state。 |
texts.capacity_state 支持四个状态键:waiting(等待图纸)、overflow(已超限)、warning(接近上限)、normal(正常)。
虚拟物品
virtual_items.confirm_blocked 定义容量超限时替换确认按钮的展示物品:
yaml
virtual_items:
confirm_blocked:
item:
source: "BARRIER"
components:
custom_name: "<red>无法锻造</red>"
lore:
- "<gray>当前容量: <yellow>%current%/%max%</yellow></gray>"
- "<red>可选材料容量已超出上限</red>"玩家体验建议
- 在图纸槽和材料槽的默认展示物品 Lore 中写清楚该槽位接收什么。
- 用
texts.capacity_state明确区分等待图纸、接近上限和已超限,减少玩家困惑。 - 容量超限时
confirm_blocked会替换确认按钮,建议在 Lore 中直接说明如何解决。 - 装饰槽位组用于分隔功能区域,调整布局时注意不要与功能槽位索引冲突。