窗口设置
查阅标题、容器类型、行数、窗口模式与玩家背包区域。
窗口字段写在菜单顶层的 menu 中;layout、icons、locate、scale 属于面板,不写在 menu 下。
menu:
title: '&8设置'
rows: 3
type: CHEST
virtual: false
min-interact-interval: 200窗口字段
| 字段 | 类型 | 必填 | 省略行为 | 说明 |
|---|---|---|---|---|
title | 文字或标题对象 | 是 | 不提供整个字段会使菜单无法加载 | 支持颜色、占位符;标题对象的完整字段见下文 |
rows | 整数 | 否 | 取顶层面板中最大的高度,并限制在 1~6;不能确定高度时得到 1 | CHEST 的行数,显式值必须为 1~6;不会按 locate 加上高度计算整个窗口 |
type | 文字 | 否 | CHEST | 选择容器;其他容器不使用 rows 改变自身槽位数,适用范围见下文 |
virtual | 布尔值 | 否 | 使用主配置 Menu.virtual-by-default,其随附配置为 false | false 为普通窗口,true 为虚拟展示窗口;真实物品存取必须显式使用 false |
hide-player-inventory | 布尔值 | 否 | false;顶层含 crafting 时会保持为 false | 暂时隐藏下方背包中的物品显示,不会隐藏格子,也不会删除背包物品 |
override-player-inventory | 布尔值 | 否 | true | 允许面板尺寸延伸到下方背包四行;隐藏背包时,即使此项为 false,下方区域仍计入可布局范围 |
min-interact-interval | 整数 | 否 | 200 毫秒 | 同一玩家的菜单点击最小间隔;不是 tick,也不等同于对所有拖拽、快捷移动设置冷却 |
省略 rows 只适合由单个面板高度就能确定行数的菜单。多面板上下拼接时显式填写 rows:例如两个高一行的面板分别放在第一行和第三行,不能据此自动得到三行窗口。
菜单也支持把 title、rows、virtual、type、hide-player-inventory、override-player-inventory 简写在文件顶层,但只在没有 menu 节点时收集这些字段。min-interact-interval 不属于这组简写,必须写在 menu 内;不要混用两种位置。
普通窗口与虚拟窗口
| 用途 | 设置与效果 |
|---|---|
| 图标、点击动作、翻页、滚动、筛选、动画 | 两种模式都能使用 Invero 的这些功能 |
| 玩家放入、取出或拖拽真实物品 | virtual: false,并配置 crafting 面板 |
| 需要其他插件收到普通背包窗口事件 | 使用普通窗口;其他插件仍可能改变或取消事件 |
| 只展示菜单,不开放真实物品交互 | 可使用虚拟窗口;不要将其当成真实物品容器 |
添加 crafting 不会自动把 virtual: true 改成 false。物品交互菜单应像 storage-demo.yml 一样显式写明 virtual: false。
标题字段
静态标题直接填写文字:
menu:
title: '&8传送菜单'
rows: 3动态标题使用对象。下表字段都位于 menu.title:
| 字段 | 类型 | 必填 | 省略行为 | 说明 |
|---|---|---|---|---|
values | 文字列表 | 否 | 不提供简写帧 | 按顺序转换为标题帧;与 frames 选一种写法,同时填写时 values 的内容生效 |
frames | 标题帧对象列表 | 否 | 空帧列表,显示 Untitled | 零帧显示 Untitled,一帧显示静态标题,两帧及以上播放动画 |
period | 整数 | 否 | 20 tick | 未单独设置停留时间的标题帧使用此值 |
type(mode) | 文字 | 否 | LOOP | LOOP、ONE_WAY、REVERSIBLE、RANDOM;实际播放差异见动画配置 |
pre-generate | 布尔值 | 否 | 按 true 处理 | true 在打开时预先计算帧文字;false 在每次轮到该帧时计算变量 |
frames 的每一项使用以下字段:
| 字段 | 类型 | 必填 | 省略行为 | 说明 |
|---|---|---|---|---|
value(title) | 文字 | 是 | 该帧无法加载 | 当前帧的标题文字 |
last(delay) | 整数 | 否 | 使用 period;未设置 period 时为 20 tick | 当前帧显示后停留的时间,不是切换到它之前的额外等待 |
title:
period: 20
type: LOOP
pre-generate: false
frames:
- value: '&8传送菜单'
last: 40
- title: '&a选择目的地'
delay: 20标题对象没有单独的 value 列表字段:统一帧列表写 values,逐帧文字写 frames 内的 value。values 与 frames 都必须是列表,不能直接把一个文字列表当成 title 的值。
menu title update 重新计算配置中的第一帧标题,不是更新动画当前帧,也不会自动暂停动画。需要暂停、恢复或临时改标题时,见标题控制。
容器类型
type 使用服务端的背包类型名称,匹配时忽略大小写,并将空格、连字符转换成下划线。无法识别的名称会回退为 CHEST;能识别却不受菜单支持的类型则可能无法打开,不能把拼写错误当成选择其他窗口的方式。
type | 菜单容器 |
|---|---|
CHEST | 九列箱子,行数由 rows 决定 |
ENDER_CHEST、BARREL | 三行箱子式窗口 |
DISPENSER、DROPPER | 目标为九格容器;普通窗口的类型映射受限,不作为可靠的九格菜单示例 |
ANVIL | 铁砧式窗口;不会因此开放铁砧改名、修理规则 |
FURNACE、BLAST_FURNACE、SMOKER | 对应炉式窗口 |
BREWING、ENCHANTING、BEACON、HOPPER | 对应酿造、附魔、信标、漏斗式窗口 |
WORKBENCH、CRAFTING、GRINDSTONE、LOOM、MERCHANT、SHULKER_BOX、CARTOGRAPHY、STONECUTTER | 可声明的其他类型,打开能力和显示受服务端及窗口模式限制 |
除箱子和铁砧式窗口外,其他类型并非完整支持;不能据此使用原版合成、交易、燃料、进度或容器专属属性。普通窗口下,DISPENSER、DROPPER、LOOM、MERCHANT、SHULKER_BOX、SMOKER、CARTOGRAPHY、STONECUTTER 存在显示类型对应不一致的问题。需要规则九宫格或多行按钮时,使用 CHEST 布局,不把这些受限类型当成等价替代。
面板的逻辑坐标仍按九列换算,不能套用其他容器的外观排列猜测坐标。非箱子窗口也不能用 rows 扩容。
玩家背包区域
下图以 hello.yml 为底图,对照显示背包物品、隐藏背包物品、在背包区域放置按钮三种配置效果。图中的背包物品是显示对照示例,不是菜单初始图标。

4以 hello.yml 为底图;切换状态对照背包物品显示和下方菜单按钮。示例背包物品不属于菜单图标。
上方三行箱子的窗口序号为 0~26,下方背包四行从窗口序号 27、坐标 0x3 开始。rows: 3 始终只表示上方三行。
hide-player-inventory | override-player-inventory | 可布局范围与显示 |
|---|---|---|
false | false | 只把上方窗口纳入面板范围,显示玩家背包 |
false | true | 下方四行计入布局范围,但不会因此隐藏真实背包;不用于制作下方展示按钮 |
true | false 或 true | 下方物品显示被隐藏,四行仍计入布局范围;适合与虚拟窗口组合放置菜单图标 |
若要在下方显示菜单按钮,设置 virtual: true、hide-player-inventory: true,并保留 override-player-inventory: true。下列是三个窗口行数之后的一个面板片段:
- locate:
- 0
- 3
layout:
- ' C '
icons:
C:
material: BARRIER
name: '&c关闭菜单'
action: 'menu close'它将按钮放在窗口坐标 4x3、窗口槽位 31;该面板内的局部槽位仍为 4。关闭展示菜单后恢复背包显示。真实物品交互不要采用隐藏背包的组合,见物品交互面板。
Last updated on