Skip to content
On this page

物品展示组件

物品展示组件用于显示一个原版或已注册物品的图标与数量,适合奖励预览、商店商品、任务需求和配方说明。它只负责展示,不提供物品放入、取出或交换行为。

组件默认完全透明,不会自动绘制槽位框或底色。需要背景时,可以像图片组件一样配置一张静态图片,并用源图选区裁剪九宫格或图集中的某一块。

适用场景

  • 奖励和掉落预览
  • 商店商品与价格展示
  • 任务需要物品
  • 配方材料和结果

需要玩家交互物品时,请使用物品槽组件

通用配置

配置项编辑器名称类型默认值可选值或格式说明
idID字符串自动生成 item_display_N页面内唯一 ID用于服务端 API 和状态更新。
type类型只读字符串item_display固定值创建后不能修改。
parent父级字符串布局组件 ID为空表示根级元素。
z层级整数0任意整数控制物品图标绘制顺序。
visible显示布尔值truetruefalse静态显隐开关。
enabled启用布尔值truetruefalse控制是否响应组件事件。
dragMode拖拽枚举offofftemporaryremember关闭拖动、仅本次页面保留位置,或在本地记住位置。
pointerEvents指针处理枚举autoautoblockpass配置事件或提示后 auto 命中;纯展示可用 pass
scale缩放数字或公式1非负值以展示区域中心缩放画面和命中范围,不改变布局值。
opacity背景透明度数字或公式101只影响展示背景和边框,物品、数量与附魔效果保持不透明。
visibleWhen显示条件条件表达式只读条件可根据页面变量控制展示。
enabledWhen启用条件条件表达式只读条件可根据页面变量控制事件。
tooltip多行提示字符串列表最多 32 行,每行最多 256 字符组件自定义悬浮提示。
containerBinding容器绑定字符串当前容器的语义槽位 ID仅容器替换页面使用;显示绑定槽位中的真实物品。
containerTooltip容器提示布尔值truetruefalse没有显式 tooltip 时是否显示绑定物品提示。
layout.xX数字或公式创建时画布位置合法布局公式图标区域左上角 X。
layout.yY数字或公式创建时画布位置合法布局公式图标区域左上角 Y。
layout.width数字或公式18合法布局公式推荐保持接近原版物品图标尺寸。
layout.height数字或公式18合法布局公式推荐保持接近原版物品图标尺寸。
events.leftPress
/rightPress/middlePress
按下脚本ChaUI Script多行脚本对应按键按下时触发。
events.leftRelease
/rightRelease/middleRelease
松开脚本ChaUI Script多行脚本对应按键捕获仍有效并松开时触发。
events.leftClick左键脚本ChaUI Script多行脚本左键点击展示区域时触发。
events.rightClick右键脚本ChaUI Script多行脚本右键点击时触发。
events.middleClick中键脚本ChaUI Script多行脚本中键点击时触发。
events.hoverEnter悬浮进入脚本ChaUI Script多行脚本鼠标进入时触发。
events.hoverLeave悬浮离开脚本ChaUI Script多行脚本鼠标离开时触发。

专属配置

配置项编辑器名称类型默认值可选值或格式说明
itemDisplay.itemId当前编辑器未直接显示字符串命名空间物品 ID当前实际渲染的物品,例如 minecraft:diamond
itemDisplay.itemCount当前编辑器未直接显示非负整数00 或正整数数量大于 0 时显示物品及数量装饰。
itemDisplay.itemPayload当前编辑器未直接显示字符串服务端生成的物品快照由 API 自动下发,用于还原名称、附魔、组件数据和 Mod 物品外观;页面作者通常不用手写。

原版物品提示

物品展示组件在没有配置显式 tooltip 时,会像原版背包中的物品一样显示当前物品的完整提示,包括名称、Lore、附魔和可用的物品组件信息。提示优先级固定为:显式 tooltip → 当前物品的原版提示 → 无提示,不会把两种提示叠在一起。

enabled: falseenabledWhen 结果为假时,物品图标仍会显示,但不会出现 Tooltip,也不会响应点击、悬浮事件或拖动。visible: falsevisibleWhen 结果为假时,组件和物品都会完全隐藏。

绑定原版容器槽位时,可用 containerTooltip: false 关闭绑定物品提示。普通 item_display 不需要额外开关;只要当前展示的是非空气物品且组件已启用,就会显示原版提示。 | itemDisplay.path | 背景路径 | 字符串 | 空 | ChaUI 安全相对路径;仅 pngjpgjpeg | 可使用 {vars.xxx} 等响应式路径模板;留空时不绘制背景。 | | itemDisplay.sourceX | 背景源X | 非负整数或公式 | 0 | 源图像素坐标或数字公式 | 背景选区左上角 X。 | | itemDisplay.sourceY | 背景源Y | 非负整数或公式 | 0 | 源图像素坐标或数字公式 | 背景选区左上角 Y。 | | itemDisplay.sourceWidth | 背景源宽 | 非负整数或公式 | 整张图片剩余宽度 | 像素尺寸或数字公式 | 背景选区宽度;为 0 时背景不绘制。 | | itemDisplay.sourceHeight | 背景源高 | 非负整数或公式 | 整张图片剩余高度 | 像素尺寸或数字公式 | 背景选区高度;为 0 时背景不绘制。 |

背景选区公式每次渲染重新计算并向下取整。公式无效或越界时只隐藏背景图片,物品模型、数量和附魔效果继续显示。

物品展示优先使用服务端下发的完整 itemPayload 还原物品;只有 payload 为空或无法还原时,才使用 itemIditemCount 作为安全回退。需要动态更换展示物品时,推荐直接调用服务端 API,不要手工拼接 payload。

服务端临时更新会修改当前页面会话中的展示状态,不会自动改写原始页面文件。

配置示例

yaml
- id: reward_display
  type: item_display
  parent: ""
  visible: true
  enabled: false
  pointerEvents: pass
  scale: 1
  opacity: 0.85
  z: 10
  layout:
    x: 20
    y: 20
    width: 18
    height: 18
  itemDisplay:
    itemId: minecraft:diamond   # 当前实际显示的物品
    itemCount: 3                # 显示数量
    path: gui/item_frame.png    # 可选静态背景;不写就是透明
    sourceX: 0
    sourceY: 0
    sourceWidth: 18
    sourceHeight: 18
  tooltip:
    - 通关奖励
  events: {}

展示组件对象可以读取当前展示配置。下面的创建事件会记录物品 ID 和数量:

yaml
events:
  create: |-
    vars.rewardItem = component("reward_display").itemDisplay.itemId
    vars.rewardCount = component("reward_display").itemDisplay.itemCount

常见问题

不配置背景时为什么没有槽位框

这是正常效果。物品展示默认只画物品本身,不自带底框;需要底框时配置 itemDisplay.path。背景图片只负责装饰,不会替代物品内容。

背景能不能使用 GIF

不能。物品展示背景只接受 pngjpgjpeg 静态图片。动态路径模板最终解析出的文件也必须是这三种格式。

能否显示 Mod 物品

物品 ID 必须在当前客户端注册。由服务端 API 提供的物品状态可按当前兼容环境同步更完整的显示数据。

为什么不能把物品拿走

物品展示组件只用于展示。需要放入和取出行为时使用物品槽组件。

创建事件

物品展示组件支持 events.create,可在实例创建后准备说明文字、显隐变量或关联组件状态。初始实例和动态复制实例各触发一次,但事件不能把客户端展示结果当作服务端权威物品数据。