构建 Codex 菜单
Quest Codex 没有内置界面。每个菜单都是你自己设计的 GUI 布局池,codex 只会填充你放入其中的标记槽位。请先阅读 GUI 指南:了解 GUI 菜单、布局、框架与槽位以及交互与导航。
组成部分
| 条目 | 作用 |
|---|---|
| Quest Category | 声明一个分类:标题、图标、父级、条件。 |
| Quest Assignment | 将任务放入某个分类,并设置顺序和按状态的覆盖。 |
| Category Menu | 某个分类的菜单(或主菜单,或被追踪任务菜单)。其 menu 字段引用一个存放布局的 Open GUI。 |
标记
在所引用 Open GUI 的 simple 布局中放置一个物品,将 buttonPrefix 设为 codex_button:,并将 buttonType 设为某个标记:
buttonType | 被替换为 |
|---|---|
CATEGORY_SLOT | 主菜单中每个槽位对应一个根分类。 |
QUEST_SLOT | 分类菜单中每个槽位对应一个任务。 |
TRACKED_QUEST_SLOT | @tracked 菜单中每个槽位对应一个被追踪的任务。 |
SORT_SLOT | 排序按钮,绘制在布局之上,因此不会随滚动消失。 |
两条规则:
- 一个标记,一个槽位。 标记只会通过它自己的
count、direction、gap和repeatY进行扩展。7 乘 8 的网格就是一个物品,count为 7,direction为right,repeatY为 8。没有direction时,标记保持为单个槽位。gap是步长:1表示相邻。 - 标记跟随布局。 在布局被解析之前,它们会按阅读顺序建立索引,因此请把标记物品放在被
scrollable布局包裹的simple布局中,这样任务列表滚动时顺序保持稳定。
位于 simple 布局之外的标记,或位于共享底盘而非 menu 所指定的 Open GUI 中的标记,不会被填充。
可滚动的分类菜单
一个六行的浏览界面,带边框、固定的控件,以及在 7 乘 8 任务网格上滚动的 7 乘 4 窗口:
- 创建一个 Open GUI
main_quests_gui,guiType为CUSTOM,size为SIZE_54。 - 添加一个
simple布局deco。在x0、y0 添加黑色玻璃板,count为 9,direction为right,名称设为单个空格;在y5 也同样添加。在第 5 行,于x0 添加一个BACK物品(buttonPrefix为codex_button:,buttonType为BACK),于x4 添加一个SORT_SLOT物品,于x8 添加一个CLOSE物品。 - 添加一个
simple布局quest_grid,包含一个物品:buttonPrefix为codex_button:,buttonType为QUEST_SLOT,x0,y0,count7,direction为right,repeatY为 8。 - 添加一个
scrollable布局quests,innerId为quest_grid,virtualWidth为 7,virtualHeight为 8,并添加两个buttons:位于x1、y4 的UP箭头和位于x5、y4 的DOWN箭头。 - 添加一个
frame布局root,包含两个框架:位于 0,0、尺寸为 9 乘 6 的deco,以及位于 1,1、尺寸为 7 乘 4 的quests。将mainLayoutId设为root。 - 创建 Category Menu,
category为main_quests,rows为6,menu设为main_quests_gui。
任务网格位于可滚动内容之中,因此任务会随窗口一起滚动。箭头只有在存在可滚动内容时才会出现。
排序按钮
SORT_SLOT 会显示当前的排序模式,并在点击时循环切换:全部、未开始、进行中、已完成。该模式按玩家保存,直到服务器重启,并适用于所有分类菜单。请在 Category Menu 的 sortDisplay 中配置每种模式的物品、标签和 lore;若未配置,则使用内置标签。
导航按钮
用 PAGE_NEXT、PAGE_PREV、SCROLL_UP、SCROLL_DOWN、SCROLL_LEFT、SCROLL_RIGHT、BACK、CLOSE 或 SORT 标记一个槽位,即可绑定其点击动作。你配置的物品、名称和 lore 会被保留;仅当槽位没有物品时,才会出现默认的箭头、屏障或漏斗。你也可以使用普通物品,配合 gui:back、gui:close 或 gui:scroll 命令。
当菜单中有标记时,PAGE_NEXT 和 PAGE_PREV 会翻动任务或分类列表的页码,否则翻动 paginated 布局的页码。
任务外观
任务槽位会根据玩家的进度变化。Quest Lore 按状态添加 lore,Quest Assignment 则可以按状态覆盖图标、名称、lore 和可见性。点击进行中的任务会追踪或取消追踪它;点击未开始或已完成的任务,则会发送全局设置中对应的消息。
检查清单
- 一个 Quest Codex Global Settings 条目,并带有追踪构件。
- 至少一个 Quest Category,主菜单对应的分类不设置
parent。 - 每个分类对应一个 Quest Assignment。
- 每个分类对应一个 Category Menu,并且有一个
category为空的用于主菜单,每个菜单都带有各自的标记。 - Category Menu 的
rows等于 Open GUI 的高度。 - 玩家拥有
typewriter.codex.open,或者通过某个动作打开菜单。