Skip to content

界面与展示

本页说明玩家看到的仓库界面:config.ymlguidisplay 两段,gui/storage_gui.yml 模板结构,以及点击语义。

容量与槽位数量见容量与缩容config.yml 的其余键见配置详解

gui

yaml
gui:
  storage_rows: 5
  deposit_feedback: actionbar
  require_empty_cursor_for_withdraw: false
字段类型默认说明
storage_rowsint5展示区行数,合法 1–5。功能区永远独占最后一行,所以实际窗口行数 = storage_rows + 1
deposit_feedbackenumactionbar存入成功后的反馈方式:actionbar / message / none
require_empty_cursor_for_withdrawbooleanfalse取出是否要求光标为空。见下方说明。

deposit_feedback 不建议设为 none。混用存入下物品按条目顺序落位,可能落到别的页;关掉反馈后玩家会以为物品消失。

require_empty_cursor_for_withdraw 是防手滑开关。设为 true 时,光标上拿着物品去点展示区槽位不再存入,而是变成无操作并提示 gui.deposit.cursor_guard,用来关掉「本想取出、但光标里还有残留物品」这个误操作窗口;代价是失去「拿着物品点条目即存入」这条快捷路径。设为 false(默认)时保留该快捷存入。要存入仍可用固定投入口或 deposit_all

storage_rows 换算表

模板文件里的 slots 只是占位值。真实槽位号在加载时按 gui.storage_rows 换算:

text
storageRows  = clamp(gui.storage_rows, 1, 5)
totalRows    = storageRows + 1
functionBase = storageRows * 9
展示区槽位    = 0 .. functionBase - 1
功能区槽位    = functionBase + offset
storage_rowstotalRows每页格数展示区槽位功能区槽位(offset 0–8)
1290–89–17
23180–1718–26
34270–2627–35
45360–3536–44
56450–4445–53

钳位规则:填 >= 6 时钳到 5 并记 warning;填 <= 0 时钳到 1 并记 warning。totalRows 最大为 6,正好落在 CoreLib 的 1–6 范围内。

storage_gui.yml 模板结构

yaml
id: storage_gui
gui_type: CHEST
title: "<gradient:#4DA6FF:#FFD166>绘卷仓库</gradient>"

slots:
  storage_slot:
    type: storage_slot
    slots: [0]
    item:
      source: "gray_stained_glass_pane"

  page_prev:
    type: page_prev
    offset: 0
    slots: [0]
    item:
      source: "arrow"
顶层键说明
id模板 id,必须是 storage_gui,实现按这个 id 取模板。
gui_type容器类型,CHEST。行数不在此声明,由 gui.storage_rows 推导。
title窗口标题,支持 MiniMessage。
slots槽位条目表,键名即条目 key。

slots 下可用的 9 个槽位类型:

槽位类型作用
storage_slot展示区原型。必需项,缺失时展示区无法构建,模板整体解析失败。
deposit_slot固定投入口。光标带物品点击即存入。
page_prev上一页。
page_info当前页信息,只做展示。
page_next下一页。
search打开搜索输入;搜索中右键清除过滤。
sort切换排序,Shift 点击反向切换。
deposit_all一键存入,遍历背包 36 格。
unlock付费扩容入口。

条目的 type 可显式声明;省略时按条目 key 小写推导,因此把条目命名为对应类型名即可。

offset 与 slots 的关系

功能区条目只配 offset(合法 0–8)。模板中的 slots 键仅为通过通用模板解析而保留,加载时会被换算结果覆盖,不能当作真实位置。

  • offset 缺失、非数字或越出 0–8 时,该条目被拒绝并记 warning。
  • 两个条目占用同一个 offset 时,后者被拒绝并记 warning。
  • 全部功能条目都被拒绝时记 warning,翻页与存入按钮将不可用。

展示区的 storage_slot 是原型:加载时展开为 0 .. functionBase - 1 整个展示区,其中配置的物品只作为「未解锁槽位」的占位外观来源,不影响已解锁槽位的渲染。

gui.storage_rows 后功能区会自动跟随,不需要手改任何槽位号。

GUI 点击语义

位置操作效果
展示区槽位光标带物品 + 左键存入整个光标
展示区槽位光标带物品 + 右键存入 1 个
展示区槽位光标为空 + 左/右/Shift 左/Shift 右键withdraw_amounts 取出
展示区槽位光标为空 + 中键打开自定义数量输入(受 behavior.withdraw_prompt.enabled 控制,对话框或聊天输入由 behavior.withdraw_prompt.mode 决定)
deposit_slot光标带物品存入整个光标
deposit_slot光标为空提示投入口为空
deposit_all点击遍历背包 36 格批量存入
sort点击 / Shift 点击切换排序 / 反向切换
search点击打开搜索输入;搜索中右键清除过滤
page_prev / page_next点击翻页,空页不可翻入
背包内物品Shift 点击重定向到投入口逻辑

被拒绝的点击方式:双击、数字键、副手交换键、丢弃键、Ctrl + 丢弃键。这些方式分别会跨槽聚合、绕过光标语义或直接丢弃物品,无法赋予安全含义,点击时统一回报 gui.click.unsupported

搜索状态下展示区禁止存入(翻页跟随过滤结果,展示区槽位不再对应真实槽位号),但固定投入口仍然可用。

取出数量、排序默认值与存入过滤等行为键见配置详解behavior 段。

display

yaml
display:
  amount_mode: percent
  percent_scale: 99
  compact_units: ["K", "M", "B", "T", "P", "E"]
  compact_decimals: 2
  show_exact_amount: true
  lore_position: bottom
字段类型默认说明
amount_modeenumpercent槽位物品 amount 的表达方式:percent 用 1–99 表示占用百分比,one 恒为 1。
percent_scaleint99percent 模式的刻度上限,实现会钳制到 1–99。
compact_unitslist[K, M, B, T, P, E]紧凑数量单位,置空则使用精确数字。
compact_decimalsint2紧凑格式保留的小数位,尾随零会被裁掉。
show_exact_amountbooleantrue是否在 lore 中额外显示带千分位的精确数量。
lore_positionenumbottom生成的展示信息插入 lore 的位置:top / bottom

1–99 刻度规则

max_stack_size 组件的合法范围就是 1–99,因此实现从不使用 100 或更大的值,也不涉及发包技巧。刻度边界是刻意设计的:

情形显示的 amount
amount_mode: one恒为 1
stackLimit 为不限制(Long.MAX_VALUE)或 <= 0退化为 1,百分比对无限上限没有意义
存量 <= 01
存量 >= stackLimit(真正装满)percent_scale(默认 99
部分装满clamp(round(amount / stackLimit * scale), 1, scale - 1),即默认最多 98

没有这些钳位,几乎空的槽位会渲染成 0(不可见),几乎装满的槽位会与真正装满无法区分。

lore 中的百分比文本独立计算于真实 0–100 范围,不继承 1–99 的钳制。

紧凑单位

compact_units 依次对应 10³、10⁶、10⁹、10¹²、10¹⁵、10¹⁸ 六个阈值。Long.MAX_VALUE 约为 9.22E,所以 E 单位覆盖整个 long 范围。小于 1000 或单位列表为空时输出原始数字。

相关页面