Skip to content
On this page

实体渲染组件

实体渲染组件使用 Minecraft 原版实体渲染表现,在页面中显示当前玩家、世界实体或页面专用虚拟实体。它支持透视或正交投影、整体旋转、名称、缩放、偏移和头部追踪鼠标。

适用场景

  • 角色预览与玩家信息页
  • 商店 NPC、任务目标和怪物图鉴
  • 不加入世界的页面虚拟实体
  • 与其他实体模型替换系统共享原版渲染结果

虚拟实体只存在于当前页面会话,不加入世界、不运行 AI,也不参与碰撞、伤害或服务端实体同步。

通用配置

配置项编辑器名称类型默认值可选值或格式说明
idID字符串自动生成 entity_N页面内唯一 ID用于状态更新和运行时实体定位。
type类型只读字符串entity固定值创建后不能修改。
parent父级字符串布局组件 ID为空表示根级元素。
z层级整数0任意整数控制实体绘制顺序。
visible显示布尔值truetruefalse静态显隐开关。
enabled启用布尔值truetruefalse控制是否响应组件事件。
pointerEvents指针处理枚举autoautoblockpass配置事件或提示后 auto 命中;纯展示实体可用 pass
scale组件缩放数字或公式1非负值以组件中心缩放最终实体画面和命中范围,并与 entity.scale 相乘。
visibleWhen显示条件条件表达式只读条件条件为假时隐藏。
enabledWhen启用条件条件表达式只读条件条件为假时禁用。
tooltip多行提示字符串列表最多 32 行,每行最多 256 字符鼠标悬浮提示。
containerBinding容器绑定字符串当前容器的语义槽位 ID仅容器替换页面使用,可读取绑定物品信息。
containerTooltip容器提示布尔值truetruefalse没有显式 tooltip 时是否显示绑定物品提示。
layout.xX数字或公式创建时画布位置合法布局公式实体绘制区域左上角 X。
layout.yY数字或公式创建时画布位置合法布局公式实体绘制区域左上角 Y。
layout.width数字或公式64合法布局公式实体适配区域宽度。
layout.height数字或公式80合法布局公式实体适配区域高度。
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多行脚本鼠标离开时触发。

专属配置

配置项编辑器名称类型默认值可选值或格式说明
entity.source来源枚举selfselfuuidentity_idvirtual决定实体从哪里取得。
entity.uuidUUIDUUID 字符串合法实体 UUIDsource=uuid 显示,用于查找当前客户端世界实体。
entity.entityId实体ID非负整数当前世界网络实体 IDsource=entity_id 显示。
entity.entityType实体类型命名空间 IDvirtual 时默认 minecraft:zombieminecraft:zombie仅 virtual 使用;没有合法 summon 时必须提供。
entity.summon召唤输入字符串summon-like 字符串仅 virtual 使用;可包含实体类型、坐标占位和 SNBT,类型优先于 entityType。
entity.entityNbt实体NBTSNBT 复合标签{ 开始、} 结束,最多 8192 字符仅 virtual 使用;summon 内已有 SNBT 时以 summon 为准。
entity.virtualUuid虚拟UUIDUUID 字符串自动生成合法 UUID仅 virtual 使用;为空时按页面会话和组件生成稳定 UUID。
entity.displayName显示名字符串无控制字符设置实体自定义名称,也可供其他模型系统判断。
entity.showName显示名称布尔值falsetruefalse是否绘制头顶名牌。
entity.yaw整体Yaw有限数字0角度旋转整个 GUI 实体结果。
entity.pitch整体Pitch有限数字0角度旋转整个 GUI 实体结果。
entity.roll整体Roll有限数字0角度绕屏幕 Z 轴旋转整个结果。
entity.orthographic正交投影布尔值falsetruefalsefalse 使用有近大远小效果的透视投影;true 使用没有透视缩短的正交投影。
entity.trackMouse追踪鼠标布尔值falsetruefalse仅控制头部追踪,不改变整体旋转。
entity.autoYawRange头部Yaw范围非负数字600 或正数trackMouse=true 时允许配置。
entity.autoPitchRange头部Pitch范围非负数字300 或正数trackMouse=true 时允许配置。
entity.scale缩放正数1.0正数在自动适配组件区域的基础上调整大小。
entity.offsetX偏移X有限数字0任意有限数字相对组件中心的横向绘制偏移。
entity.offsetY偏移Y有限数字0任意有限数字相对组件中心的纵向绘制偏移。

实体组件不使用根级 opacity。需要改变视觉大小时,根级 scale 负责整体组件缩放,entity.scale 负责实体在组件区域内的适配倍率,最终效果会把两者相乘。

透视与正交怎么选

默认的 orthographic: false 使用透视投影。靠近视点的部位会稍大、远离视点的部位会稍小,更接近游戏世界中看到实体时的立体感。ChaUI 会按组件宽高和实体包围范围自动安排观察距离,视野角固定为 30 度,不需要再配置其他参数。

把它改为 orthographic: true 后,实体前后部位不会因为距离产生大小变化。正交投影适合图鉴头像、固定比例对比和需要延续旧版显示效果的页面。

这个字段必须直接填写 YAML 布尔值 truefalse,不能写成带引号的 "true"、数字 1 或其他文字。

四种来源

来源使用字段行为
self无额外定位字段显示当前打开页面的客户端玩家。
uuiduuid按 UUID 查找当前客户端世界中的实体。
entity_identityId按当前客户端世界网络实体 ID 查找。
virtualentityTypesummon,可选 NBT 与 virtualUuid创建页面私有实体,不加入真实世界。

真实实体在渲染过程中临时使用页面设置的显示名和名牌状态,渲染结束后会恢复,避免污染世界中的实体状态。无法找到实体、无法创建类型或 NBT 应用失败时会安全跳过或降级为基础实体。

配置示例

yaml
- id: preview_zombie
  type: entity
  parent: ""
  visible: true
  enabled: false
  pointerEvents: pass
  scale: 1
  z: 10
  layout:
    x: window.width * 0.5 - 32
    y: 30
    width: 64
    height: 80
  entity:
    source: virtual
    entityType: minecraft:zombie
    displayName: 示例实体
    showName: true
    yaw: 0
    pitch: 0
    roll: 0
    orthographic: false
    trackMouse: true
    autoYawRange: 45
    autoPitchRange: 25
    scale: 1.0
    offsetX: 0
    offsetY: 0
  tooltip:
    - 鼠标移动时观察头部
  events: {}

实体组件对象可以读取当前来源、显示名、朝向和投影模式。下面的创建事件会把当前显示名与投影模式保存到页面变量:

yaml
events:
  create: |-
    vars.previewName = component("preview_zombie").entity.displayName
    vars.previewYaw = component("preview_zombie").entity.yaw
    vars.previewOrthographic = component("preview_zombie").entity.orthographic

常见问题

virtual 保存时提示缺少实体类型

source=virtual 必须提供合法 entityType,或提供能够解析出实体类型的 summon

关闭追踪鼠标后为什么不能保留范围字段

autoYawRangeautoPitchRange 只在 trackMouse=true 时合法。编辑器关闭追踪后会移除这两个字段。

为什么找不到 uuid 或 entity_id 实体

它们只能查找当前客户端世界已经知道的实体。实体不在当前维度、尚未同步或已经移除时不会渲染。

为什么写了 orthographic 仍然保存失败

orthographic 只接受真正的布尔值。请写 orthographic: trueorthographic: false,不要添加引号。新建实体组件会明确保存 orthographic: false,也就是默认透视投影。

创建事件

实体组件可在 events.create 中设置页面变量或调整实体显示字段。初始实体在页面 open 后执行一次,动态新增或复制的实体实例也会执行一次。页面关闭与 reload 会统一释放该作用域中的虚拟实体。