跳转到正文
iPlugin

人物模板

全身人物的皮肤来源、目标、尺寸、模型、视角、动作与布局引用

人物模板显示全身皮肤,与只显示脸部的头像模板不同。先定义模板,再在布局中引用;人物位置由布局负责。可视化操作见制作全身人物。

文件与 ID

路径用途
core/template/avatar/player.yml自带 player_card 人物模板
core/layout/examples/avatar.yml自带 avatar_example 布局,引用 player_card
core/assets/skin/本地皮肤 PNG

模板顶层节点是 ID;文件名和子目录只用于整理,同类模板 ID 必须全局唯一。布局还需由 HUD等显示系统引用才会显示。除标有完整文件路径的示例外,本页代码均为对应节点中的片段。

模板结构

plugins/Xerr/core/template/avatar/player.yml
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字符串 / playerplayer 玩家皮肤,或 file 本地皮肤
skin.target对象 / viewer玩家皮肤目标,也作为 follow 的默认目标
skin.file字符串 / 无file 必填;相对 core/assets/skin 的 PNG 路径;player 时不要填写
skin.model字符串 / autoauto、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无当前观看者,也是默认值
playername 或 uuid,且只能填一个固定玩家;名字限 3~16 位字母、数字或下划线,UUID 使用标准格式
variablekey读取布局变量,值为玩家名或 UUID
ketherscript返回 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,再定义模板:

plugins/Xerr/core/template/avatar/guide.yml
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 不重建飞行、游泳、滑翔或骑乘等专用姿态;动作状态随显示容器的内容刷新采样。

布局引用

plugins/Xerr/core/layout/examples/avatar.yml
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 在没有在线实体时显示待机样本。游戏中再检查真实目标及动作跟随。