人物模板
全身人物的皮肤来源、目标、尺寸、模型、视角、动作与布局引用
人物模板显示全身皮肤,与只显示脸部的头像模板不同。先定义模板,再在布局中引用;人物位置由布局负责。可视化操作见制作全身人物。
文件与 ID
| 路径 | 用途 |
|---|---|
core/template/avatar/player.yml | 自带 player_card 人物模板 |
core/layout/examples/avatar.yml | 自带 avatar_example 布局,引用 player_card |
core/assets/skin/ | 本地皮肤 PNG |
模板顶层节点是 ID;文件名和子目录只用于整理,同类模板 ID 必须全局唯一。布局还需由 HUD等显示系统引用才会显示。除标有完整文件路径的示例外,本页代码均为对应节点中的片段。
模板结构
player_card:
height: 96
skin:
type: player
target:
type: viewer
model: auto
view:
yaw: -20
pitch: 5
motion:
type: idle| 字段 | 类型 / 省略值 | 范围或说明 |
|---|---|---|
height | 整数 / 96 | 显示高度,16~256 GUI 像素 |
skin.type | 字符串 / player | player 玩家皮肤,或 file 本地皮肤 |
skin.target | 对象 / viewer | 玩家皮肤目标,也作为 follow 的默认目标 |
skin.file | 字符串 / 无 | file 必填;相对 core/assets/skin 的 PNG 路径;player 时不要填写 |
skin.model | 字符串 / auto | auto、classic、slim |
view.yaw | 数值 / -20 | 水平视角,-180~180 度 |
view.pitch | 数值 / 5 | 俯仰视角,-30~30 度 |
motion.type | 字符串 / idle | 见下方六种动作 |
motion.target | 对象 / 无 | 仅 follow 可填;省略时跟随皮肤目标 |
宽度自动取高度的 3/4 并向上取整,例如高度 96 对应宽度 72,没有独立 width 字段。动作使用固定显示框,不改变布局占位。
auto 使用玩家皮肤的模型信息;没有模型信息或使用本地 PNG 时按 classic 处理。细手臂皮肤可显式选择 slim。
目标字段
skin.target、布局的 avatar.target 和 follow 的 motion.target 使用相同规则:
type | 必填字段 | 说明 |
|---|---|---|
viewer | 无 | 当前观看者,也是默认值 |
player | name 或 uuid,且只能填一个 | 固定玩家;名字限 3~16 位字母、数字或下划线,UUID 使用标准格式 |
variable | key | 读取布局变量,值为玩家名或 UUID |
kether | script | 返回 Player、UUID、玩家名或 null;refresh 为正整数,默认 20 tick |
固定玩家示例,放在模板中:
skin:
type: player
target:
type: player
name: Alex动态目标示例,放在 skin 中:
target:
type: kether
script: "get target_uuid"
refresh: 20在游戏中,人物与头像共用玩家皮肤来源。玩家皮肤加载中或不可用时显示默认 Steve,取得皮肤后自动更新。
本地皮肤
把标准 64×64 PNG 皮肤放入 core/assets/skin/npc/guide.png,再定义模板:
guide:
height: 96
skin:
type: file
file: npc/guide.png
model: slim
motion:
type: wave- 每张 PNG 不超过
1 MiB;不接受64×32旧版皮肤、GIF、外部 URL 或目录外路径。 - 路径相对
core/assets/skin,使用小写字母、数字、下划线、连字符及目录分隔符/,以.png结尾。 - 本地皮肤不要求对应玩家在线,也不用登记为普通图片组。
- 本地 PNG 没有模型信息;需要细手臂时指定
slim。
动作
motion.type | 游戏中的表现 |
|---|---|
still | 静止站姿 |
idle | 轻微待机动作,默认 |
walk | 循环行走 |
run | 循环跑步 |
wave | 挥手 |
follow | 跟随在线目标的待机、行走、跑步、潜行、跳跃和头部朝向 |
follow 省略 motion.target 时跟随皮肤目标。也可让本地皮肤跟随观看者:
motion:
type: follow
target:
type: viewer目标离线或不可用时回到待机。follow 不重建飞行、游泳、滑翔或骑乘等专用姿态;动作状态随显示容器的内容刷新采样。
布局引用
avatar_example:
character:
anchor:
x: 15
y: 40
x: 0
y: 0
layer: 0
avatar:
template: player_card| 字段 | 说明 |
|---|---|
avatar.template | 必填,人物模板 ID |
avatar.target | 可选,整体覆盖模板的 skin.target,只影响当前引用 |
avatar.motion | 可选,整体覆盖模板的 motion,不是逐字段合并 |
以下片段让当前人物通过布局变量选取皮肤,但跟随观看者的动作:
avatar:
template: player_card
target:
type: variable
key: target_player
motion:
type: follow
target:
type: viewer覆盖动作时,若省略 motion.target,将使用当前皮肤目标,不继承模板里单独指定的动作目标。file 模板的 avatar.target 不会替换 PNG,但仍可决定未显式指定目标的 follow 跟随谁。
人物沿用普通元素的 anchor、x、y、align、layer 和 condition,见坐标与锚点。一个布局最多四个人物。
应用修改
人物模板、本地皮肤或布局引用变化后,执行 /xerr reload、/xerr pack,再让客户端加载新包。输出位于 generated/resource_pack 和 generated/resource_pack.zip,自托管发布包缓存位于 cache/hosted_packs。
编辑器可绘制本地皮肤并预览尺寸、视角和预设动作;离线玩家目标使用内置 Steve 样本,follow 在没有在线实体时显示待机样本。游戏中再检查真实目标及动作跟随。