Skip to content

背包与装备界面

常用组件分工

  • InventorySlots:容器槽位语义
  • ItemSlot:单槽位
  • DisplaySlot:展示预览,不等于真实容器槽位
  • EntityView:角色或实体预览

典型布局

xml
<template>
  <Panel id="bagRoot">
    <Panel class="left">
      <InventorySlots />
    </Panel>

    <Panel class="right">
      <DisplaySlot id="weaponPreview" />
      <EntityView id="previewEntity" />
    </Panel>
  </Panel>
</template>

<style>
#bagRoot {
  width: 360px;
  display: flex;
  flex-direction: row;
  gap: 8px;
  padding: 8px;
  background: #111824;
}
</style>

同步展示物品

kotlin
fun syncWeaponPreview(player: Player, weapon: ItemStack) {
    BUIServerAPI.state().setDisplayItem(
        player = player,
        storeId = "inventory/main",
        key = "weaponPreview",
        item = weapon
    )
}

DisplaySlot 展示的是服务端写入的展示物品,不会自动映射到真实容器槽位。涉及装备、预览和对比时,通常由 setDisplayItem*() 单独驱动。