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格后,快乐恶魂在40tick 内水平移动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 外部依赖类。