分类条目 GUI
分类条目图鉴是 EmakiCodex 的第二套图鉴模型,与 advancements/*.yml 的原版成就页彼此独立。玩家用 /codex codex(或 /codex open)打开,界面布局来自 gui/codex_gui.yml,内容来自 codex/*.yml。
分类文件的完整字段表见配置详解。本页说明界面布局、交互与占位符。
打开与权限
| 项目 | 说明 |
|---|---|
| 命令 | /codex codex、/codex open |
| 权限 | emakicodex.use,或 emakicodex.admin 旁路 |
| 限制 | 仅玩家可执行;没有任何有效分类时不会打开界面 |
| 模板 id | codex_gui,模板未加载时打开失败并记录警告 |
条目四态
| 状态 | 含义 | 可执行操作 |
|---|---|---|
| 未解锁 | 玩家还没有满足任何解锁通路 | 无;hidden: true 的条目此时不出现在界面里 |
| 可激活 | 已解锁但未激活 | 左键激活 |
| 已激活 | rewards.attributes 正在生效 | 右键领取一次性奖励 |
| 已领取 | 一次性奖励已发放 | 无(属性奖励继续生效) |
激活与领取是两个独立操作:激活只开启属性奖励,领取只执行一次 rewards.actions。属性奖励不保存数值,按当前 codex/*.yml 实时推导,因此调整配置会同步影响已激活的玩家。
布局 type
功能格必须显式写 type,没有 type 的格子只是纯装饰。
| type | 作用 |
|---|---|
entry | 条目格。全部条目格共同构成一页,越界的格子渲染为空气。左键激活,右键领取。 |
category_tab | 分类标签。按各分类文件的 order 升序填充,越界渲染为空气,点击切换分类并回到第 1 页。 |
page_prev | 上一页。已在首页时不响应。 |
page_info | 页码信息。页码只能放在这里,不能写进 GUI 标题。 |
page_next | 下一页。已在末页时不响应。 |
close | 关闭界面。 |
默认模板的条目区是 10-16,19-25,28-34,即每页 21 个条目格;页大小由实际摆放的 entry 格数量决定,改布局即改页大小。
占位符
条目格可用:
| 占位符 | 含义 |
|---|---|
%entry_title% | 条目标题;未解锁时替换为未知条目文案 |
%entry_description% | 条目描述;未解锁时为空 |
%entry_state% | 四态之一的状态文案 |
%entry_hint% | 当前可执行操作的提示 |
%entry_rewards% | 奖励清单,多行展开(整行只写这一个占位符才会展开) |
%codex_category% | 分类 id |
%codex_entry% | 条目 id |
分类标签可用 %category_id%、%category_title%、%category_state%;页码格可用 %current_page%、%total_pages%、%entry_count%、%category_title%。
默认布局片段
yaml
id: "codex_gui"
gui_type: CHEST
title: "<gradient:#D946EF:#F59E0B>图鉴</gradient>"
rows: 6
slots:
category_tab:
type: "category_tab"
slots: "0-8"
item:
components:
custom_name: "%category_title%"
lore:
- "<gray>分类: <white>%category_id%</white></gray>"
- "%category_state%"
entry:
type: "entry"
slots: "10-16,19-25,28-34"
item:
components:
custom_name: "%entry_title%"
lore:
- "%entry_description%"
- "<gray>状态: %entry_state%</gray>"
- "%entry_rewards%"
- "%entry_hint%"
page_info:
type: "page_info"
slots: [49]
item:
source: "book"
components:
custom_name: "<gray>第 %current_page%/%total_pages% 页</gray>"未解锁条目会使用锁定图标渲染,并把标题替换为未知条目文案,因此不需要为“未知条目”单独配置一个格子。