Skip to content

GUI 配置

Forge 的 GUI 配置位于 gui/ 目录,包括锻造 GUI 和配方书 GUI。GUI 不只是显示菜单,还负责保护输入槽、处理点击、返还物品和触发锻造流程。

文件说明

文件作用
forge_gui.yml玩家执行锻造的主界面。
recipe_book.yml玩家查看已加载配方的配方书。

模板结构

模板使用 CoreLib GUI 模板格式。顶层字段:

字段类型说明
idstring模板 ID,与文件名对应。
gui_typestring容器类型,锻造界面使用 CHEST
titlestringGUI 标题,支持 MiniMessage 与 %recipe% 替换。
rowsinteger行数。内置 forge_gui 为 5 行,recipe_book 为 6 行。
slotsmap槽位组定义,key 为组名。
virtual_itemsmap不占槽位的动态展示物品。
textsmap状态文案片段。

每个槽位组包含:

字段类型说明
slotslist<integer>该组占用的槽位索引列表。
typestring功能类型。省略时为纯装饰槽。
itemobject槽位默认展示物品(source + components)。
soundsobject点击音效等配置。

锻造界面槽位类型

forge_gui.yml 中由 type 驱动的功能槽位:

type作用
blueprint_inputs图纸输入槽。Forge 按放入的图纸物品源自动匹配配方。
required_materials必需材料输入槽。
optional_materials可选材料输入槽,消耗锻造容量。
capacity_display展示当前容量、容量上限和容量状态。
confirm确认锻造按钮。

没有 type 的槽位组(内置模板中的 top_frameside_framecore_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_displayconfirm 槽位的 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 中直接说明如何解决。
  • 装饰槽位组用于分隔功能区域,调整布局时注意不要与功能槽位索引冲突。