Skip to content
On this page

背包映射表

背包映射用于让 item_slot 直接显示和操作玩家的真实物品。它只在下面的配置中生效:

yaml
itemSlot:
  bind: backpack_0
  mode: mapped
  allowPut: true
  allowTake: true

客户端只负责显示并提交点击意图,真正的物品读取、交换和写回始终由服务端完成。

主背包与快捷栏

bind对应位置说明
backpack_0backpack_8快捷栏第 1~9 格数字从 0 开始,不是从 1 开始。
backpack_9backpack_35主背包其余 27 格按 Minecraft 背包内部顺序依次映射。

因此,第 1 个快捷栏槽写作 backpack_0,最后一个快捷栏槽写作 backpack_8,主背包最后一格写作 backpack_35backpack_36 不存在,会在保存或打开前被拒绝。

主手、副手与盔甲

bind对应位置是否动态
backpack_mainhand当前主手
backpack_offhand副手
backpack_helmet头盔
backpack_chestplate胸甲
backpack_leggings护腿
backpack_boots靴子

backpack_mainhand 不是额外复制出来的一格。它始终指向玩家当前选中的快捷栏槽。例如当前选择第 4 格时,它与 backpack_3 显示和操作的是同一件物品;玩家切换快捷栏后,它会立即改为指向新的主手。

与玩家常量的区别

映射槽和只读常量用途不同:

  • itemSlot.bind 把页面槽位映射到真实背包,由服务端裁决放入、取出和交换;
  • vals.player.inventory.* 只读取客户端当前看到的背包、主手、副手和盔甲状态,不能修改物品。

所有背包汇总字段、装备位置、物品属性和中文写法,请查阅只读常量

不能用客户端常量发奖励

vals.player.inventory.* 来自客户端本地状态,只适合界面显示、布局和条件。发放奖励、扣除物品或判断玩家是否拥有某件物品时,业务插件必须重新读取服务端背包。

完整 mapped 槽示例

yaml
- id: helmet_slot
  type: item_slot
  visible: true
  enabled: true
  pointerEvents: auto
  z: 10
  layout:
    x: 20
    y: 20
    width: 18
    height: 18
  itemSlot:
    bind: backpack_helmet
    mode: mapped
    allowPut: true
    allowTake: true

mapped 模式不要配置 closePolicy。槽位默认没有内置底图;需要背景时可以使用 itemSlot.path,也可以在槽位后面放一个较低 z 的矩形或图片组件。