跳到主要内容

BetterModel

将 BetterModel 动画 3D 模型作为 TypeWriter NPC,支持动画动作、骨骼控制和过场动画。

付费v1.5实体与模型
依赖TypeWriter0.9BetterModelQuest extension (TypeWriter)Basic extension (TypeWriter)Entity extension (TypeWriter)RoadNetwork extension (TypeWriter)

概述​

BetterModel 将 BetterModel 插件与 TypeWriter 连接起来。你在 Blockbench 中设计模型及其动画,将其安装到 BetterModel 中,然后在 TypeWriter 中把它当作实体使用:由 definition 指定使用哪个模型,由 instance 将其放置到世界中,TypeWriter 常规的实体机制(audience、activity、交互、对话说话者)都能作用于它。

模型通过数据包按玩家渲染,因此每位玩家看到的同一个 NPC 可以处于不同的状态:显示不同的骨骼、不同的发光、不同的装备。该扩展还添加了播放和停止动画的动作、用于让模型和玩家肢体动起来的过场动画条目,以及一个挂载在动画模型某根骨骼上的镜头。

功能​

  • 模型实体 — 通过 definition 和 instance,把任意 BetterModel 模型变成支持 audience、activity 和交互的 NPC。
  • 自动动画 — 待机、行走、侧移、跳跃、飞行、攻击、受伤和交互动画会根据实体状态自动播放,名称可以修改。
  • 动画动作 — 从任意触发器对已放置的模型播放或停止某个动画。
  • 按玩家控制骨骼 — 根据条件显示或隐藏骨骼,并设置发光、着色、附魔光效和亮度。
  • 自定义碰撞箱 — 使用 Hitbox 将点击区域绑定到骨骼,或使用模型中 hitbox 骨骼生成的自动碰撞箱。
  • 骨骼替换 — 使用 Attachment 或 Passenger,用另一个模型的骨骼替换某根骨骼。
  • 玩家动画 — 通过动作或在过场动画中,对玩家播放 BetterModel 的玩家肢体动画。
  • 过场动画 — 用 entity cinematic 根据录制内容驱动模型,并用 bone camera 进行拍摄。
  • 交互指示器 — 带名称的模型会在名称上方显示交互或对话指示器,由交互目标和交互条目驱动。

安装​

  1. 在服务器上安装 BetterModel,并确保它能加载你的模型。骨骼镜头需要 BetterModel 2.1.0 或更高版本;该扩展基于 BetterModel 3.3.0 构建。
  2. 安装 TypeWriter 官方扩展 Quest、Basic、Entity 和 RoadNetwork(该扩展基于这四个构建)。
  3. 从商店获取 BetterModel(见上方按钮),并将 JAR 放入 plugins/Typewriter/extensions/。
  4. 重启服务器。日志会显示 [BetterModelExtension] BetterModel detected: initializing。如果缺少 BetterModel,则会显示 BetterModel plugin not found; extension disabled。
  5. 将你的模型放入 BetterModel,并按照 BetterModel 文档生成其资源包。玩家必须接受该资源包才能看到模型。

快速上手​

放置一个在你点击时会挥手的动画 NPC:

  1. 在 TypeWriter 网页面板中,打开一个 static 页面,添加一个 BetterModel Definition。将 modelId 设为你的模型在 BetterModel 中的名称,启用 named 并设置 displayName。
  2. 在 defaultAnimationSettings 中,检查 idle、walk 和 interact 是否与你模型的动画名称一致(默认值为 idle、walk 和 interact)。
  3. 打开一个 manifest 页面,添加一个 BetterModel Instance,将 definition 设为你刚创建的那个,并使用位置工具捕获 spawnLocation。
  4. 可选:在 definition 的 data 中添加 Bone Visibility,对不满足条件的玩家隐藏某根骨骼(例如帽子)。
  5. 添加一个 entity interact event 和一个 Play Entity Animation 动作。将 entity 设为该 instance,animation 设为一个自定义的动画名称。
  6. Publish(发布),然后在游戏中点击该 NPC。
碰撞箱

NPC 只能在其拥有交互碰撞箱的位置被点击。请在 Blockbench 中将一根骨骼命名为 hitbox,或添加一个 Hitbox 条目。如果两者都没有,则会使用一个覆盖整个模型的单一方框。

工作原理​

Definition 保存共享的内容(模型、动画名称、碰撞箱、data)。Instance 保存位置、额外的 data 以及一个 activity。Instance 的 data 条目会在 definition 的之后应用,因此 instance 可以覆盖其 definition。

配置​

该扩展没有配置文件。模型、肢体和资源包都由 BetterModel 管理。

BetterModel 的两个文件夹会按名称被使用:实体使用由 BetterModel 注册的模型,而玩家动作和过场动画则从 BetterModel 的 players 文件夹中读取玩家肢体模型(例如 steve、alex)。

条目​

15 个条目,由扩展源码生成。

动作3
过场动画4
实体2
实体数据6

故障排查​

NPC 不可见。 请在日志中查找 Model '...' not found。modelId 必须与 BetterModel 已加载的某个模型相匹配。如果不匹配,扩展会尝试名为 steve 的模型,如果它也缺失,则什么都不会生成。同时检查玩家是否接受了资源包。

NPC 出现了,却无法点击。 交互碰撞箱来自名称中包含 hitbox 或 hit_box 的骨骼,或者来自 Hitbox 条目。如果模型两者都没有,则会创建一个覆盖模型的方框,其高度至少为 1.8 格。如果方框悬浮在错误的高度,请调整 defaultAnimationSettings 中的 hitboxYOffset(默认 -1.6)。

某个动画没有任何效果。 动画名称是 Blockbench 模型中的名称,拼写必须完全一致。对于 Play Player Animation,modelId 必须是 BetterModel 的 players 文件夹中的肢体模型,而不是普通模型。

装备、着火或其他原版数据没有效果。 模型没有原版实体元数据。日志会一次性打印诸如 '...' has no BetterModel equivalent and is ignored 的警告。主手、副手和头盔装备需要在 Blockbench 中为骨骼打上 ri、li 和 ph 标签(否则日志会提示该模型没有对应该槽位的骨骼);盔甲槽位不受支持。非均匀的 3D 缩放只使用 X 值。

骨骼镜头不动。 当模型对玩家不可见,或找不到该骨骼时,它会停留在原来的位置。请检查 boneName(不区分大小写),以及是否设置了 entityCinematic 或 instance;两者都设置时,以 entity cinematic 为准。

切换世界或重新连接后模型消失了。 扩展会在加入、重生、传送和资源包加载之后,以较短的延迟(最长 5 秒)重新加载模型。如果模型一直缺失,请重新登录;过场动画模型会在切换世界和玩家退出时被移除。

相关扩展​