搜索

0.27.15 快乐恶魂移动修复

绕过不适用的地面路径,按大型体型抬升跟随目标,并同步骑乘身体朝向。

问题原因

快乐恶魂已经被 LiPet 识别为飞行宠物,但旧版跟随和战斗仍会先调用服务端通用 Pathfinder。Paper 26.2 的成年快乐恶魂使用恶魂专用 GhastMoveControl,同时创建的是通用路径导航;路径接口可能返回“已接受”,LiPet 便认为原生导航正在工作并停止速度兜底,最终表现为停住、移动断续或方向异常。

旧版还把所有飞行宠物的跟随和召回脚底位置固定在主人上方 1.5 格。成年快乐恶魂实际高 4 格,这个目标过低,容易让大型实体贴地或与主人周围地形相交。

修复内容

  • 快乐恶魂进入跟随时先停止残留路径,然后持续采用飞行速度移动;其他宠物仍按原有原生寻路和兜底规则运行。
  • 战斗追击使用同一快乐恶魂专用策略,避免追敌时再次卡在已接受但不工作的路径中。
  • 成年快乐恶魂的跟随与召回脚底目标按实体高度计算为主人上方 3 格;幼年实体以及其他普通飞行宠物继续保留至少 1.5 格偏移。
  • 骑乘任务每 tick 同步 yaw 和 pitch,并为快乐恶魂额外同步身体 yaw,避免大型模型身体朝向落后于玩家视角和实际速度方向。
  • 移动差异集中在独立策略类中,跟随、战斗和召回共用同一判断,没有把实体特判散落到配置读取或指令代码中。

配置与升级

本版没有新增配置项,也不会覆盖现有 pet-types.yml 或单宠物文件。attributes.movement-speed、behavior.follow-distance、behavior.teleport-distance、behavior.riding-speed、behavior.riding-sprint-multiplier、behavior.mount-type、模型和食物配置全部保持原值。

这是代码修复,执行旧 Jar 的 /lipet reload 无法生效。请停止服务器,删除旧 LiPet Jar,放入 LiPet-0.27.15-SNAPSHOT.jar 后完整启动;宠物数据库和配置目录无需删除。

验证

  • 默认 Paper 1.21.11 兼容构建运行 330 项测试,失败、错误和跳过均为 0。
  • Paper 26.2 API Profile 再运行 330 项测试,失败、错误和跳过均为 0。
  • 定向测试确认 Pathfinder 即使报告成功,快乐恶魂也不会调用该地面路径;它会停止旧路径、写入飞行速度并朝抬高目标移动。
  • Paper 26.2 Build 111 隔离服生成真实成年 CraftHappyGhast,实体高度实读为 4.0。模拟主人水平移动 14 格后,快乐恶魂在 40 tick 内水平移动 2.823 格、向 3 格高目标抬升 0.605 格,最终速度仍朝主人方向。
  • 同一实体完成骑乘原地转向、按住前进时从 135° 转到 -90°、下马恢复、配置重载和多层座位回归;位置 yaw、pitch 与身体 yaw 均跟随玩家。
  • 隔离服正常停服,测试结束后 Java 进程数为 0。该探针使用服务端原生模拟玩家,尚未进行真人网络客户端或 Folia/Shiroha 实服体感验收。
  • 成品:target/LiPet-0.27.15-SNAPSHOT.jar;大小:893401 字节;SHA-256:69071296B86A076AE2D1EDEB5AFE687EE9049C061AC0E58FBDD73F8EF557D359。Jar 共 463 个条目,未打入 SQLite、JUnit、Bukkit 或 Adventure 外部依赖类。