Skip to content
iPlugin

窗口设置

查阅标题、容器类型、行数、窗口模式与玩家背包区域。

窗口字段写在菜单顶层的 menu 中;layout、icons、locate、scale 属于面板,不写在 menu 下。

菜单的 menu 节点
menu:
  title: '&8设置'
  rows: 3
  type: CHEST
  virtual: false
  min-interact-interval: 200

窗口字段

字段类型必填省略行为说明
title文字或标题对象是不提供整个字段会使菜单无法加载支持颜色、占位符;标题对象的完整字段见下文
rows整数否取顶层面板中最大的高度,并限制在 1~6;不能确定高度时得到 1CHEST 的行数,显式值必须为 1~6;不会按 locate 加上高度计算整个窗口
type文字否CHEST选择容器;其他容器不使用 rows 改变自身槽位数,适用范围见下文
virtual布尔值否使用主配置 Menu.virtual-by-default,其随附配置为 falsefalse 为普通窗口,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)文字否LOOPLOOP、ONE_WAY、REVERSIBLE、RANDOM;实际播放差异见动画配置
pre-generate布尔值否按 true 处理true 在打开时预先计算帧文字;false 在每次轮到该帧时计算变量

frames 的每一项使用以下字段:

字段类型必填省略行为说明
value(title)文字是该帧无法加载当前帧的标题文字
last(delay)整数否使用 period;未设置 period 时为 20 tick当前帧显示后停留的时间,不是切换到它之前的额外等待
写在 menu 中的动态标题
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 为底图,对照显示背包物品、隐藏背包物品、在背包区域放置按钮三种配置效果。图中的背包物品是显示对照示例,不是菜单初始图标。

hello.yml · 背包配置对照配置效果示意 · 非游戏截图
图示状态显示玩家背包
4
窗口槽位 13窗口坐标 4x1面板局部坐标 4x1字符 A

以 hello.yml 为底图;切换状态对照背包物品显示和下方菜单按钮。示例背包物品不属于菜单图标。

上方三行箱子的窗口序号为 0~26,下方背包四行从窗口序号 27、坐标 0x3 开始。rows: 3 始终只表示上方三行。

hide-player-inventoryoverride-player-inventory可布局范围与显示
falsefalse只把上方窗口纳入面板范围,显示玩家背包
falsetrue下方四行计入布局范围,但不会因此隐藏真实背包;不用于制作下方展示按钮
truefalse 或 true下方物品显示被隐藏,四行仍计入布局范围;适合与虚拟窗口组合放置菜单图标

若要在下方显示菜单按钮,设置 virtual: true、hide-player-inventory: true,并保留 override-player-inventory: true。下列是三个窗口行数之后的一个面板片段:

追加到三行箱子菜单的 panels 列表
- locate:
    - 0
    - 3
  layout:
    - '    C    '
  icons:
    C:
      material: BARRIER
      name: '&c关闭菜单'
      action: 'menu close'

它将按钮放在窗口坐标 4x3、窗口槽位 31;该面板内的局部槽位仍为 4。关闭展示菜单后恢复背包显示。真实物品交互不要采用隐藏背包的组合,见物品交互面板。

Last updated on