跳到主要内容

构建 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排序按钮,绘制在布局之上,因此不会随滚动消失。

两条规则:

  1. 一个标记,一个槽位。 标记只会通过它自己的 count、direction、gap 和 repeatY 进行扩展。7 乘 8 的网格就是一个物品,count 为 7,direction 为 right,repeatY 为 8。没有 direction 时,标记保持为单个槽位。gap 是步长:1 表示相邻。
  2. 标记跟随布局。 在布局被解析之前,它们会按阅读顺序建立索引,因此请把标记物品放在被 scrollable 布局包裹的 simple 布局中,这样任务列表滚动时顺序保持稳定。

位于 simple 布局之外的标记,或位于共享底盘而非 menu 所指定的 Open GUI 中的标记,不会被填充。

可滚动的分类菜单​

一个六行的浏览界面,带边框、固定的控件,以及在 7 乘 8 任务网格上滚动的 7 乘 4 窗口:

  1. 创建一个 Open GUI main_quests_gui,guiType 为 CUSTOM,size 为 SIZE_54。
  2. 添加一个 simple 布局 deco。在 x 0、y 0 添加黑色玻璃板,count 为 9,direction 为 right,名称设为单个空格;在 y 5 也同样添加。在第 5 行,于 x 0 添加一个 BACK 物品(buttonPrefix 为 codex_button:,buttonType 为 BACK),于 x 4 添加一个 SORT_SLOT 物品,于 x 8 添加一个 CLOSE 物品。
  3. 添加一个 simple 布局 quest_grid,包含一个物品:buttonPrefix 为 codex_button:,buttonType 为 QUEST_SLOT,x 0,y 0,count 7,direction 为 right,repeatY 为 8。
  4. 添加一个 scrollable 布局 quests,innerId 为 quest_grid,virtualWidth 为 7,virtualHeight 为 8,并添加两个 buttons:位于 x 1、y 4 的 UP 箭头和位于 x 5、y 4 的 DOWN 箭头。
  5. 添加一个 frame 布局 root,包含两个框架:位于 0,0、尺寸为 9 乘 6 的 deco,以及位于 1,1、尺寸为 7 乘 4 的 quests。将 mainLayoutId 设为 root。
  6. 创建 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 和可见性。点击进行中的任务会追踪或取消追踪它;点击未开始或已完成的任务,则会发送全局设置中对应的消息。

检查清单​

  1. 一个 Quest Codex Global Settings 条目,并带有追踪构件。
  2. 至少一个 Quest Category,主菜单对应的分类不设置 parent。
  3. 每个分类对应一个 Quest Assignment。
  4. 每个分类对应一个 Category Menu,并且有一个 category 为空的用于主菜单,每个菜单都带有各自的标记。
  5. Category Menu 的 rows 等于 Open GUI 的高度。
  6. 玩家拥有 typewriter.codex.open,或者通过某个动作打开菜单。