0.27.21 Folia 认主与召唤时序修复
修复 Folia 新实体首 tick 有效性误判,并验证跨区域召唤、主人恢复与收回。
发布日期:2026-09-06
版本:0.27.21-SNAPSHOT
修复内容
Folia 召唤偶发无响应
Folia 在 World#spawn 返回后的当前 tick 内,可能已经接纳实体,但 Entity#isValid() 仍暂时返回 false。旧版把这个瞬时状态当成保护插件取消生成,清除实体并回滚数据库,因此玩家只会看到召唤失败或没有实体出现。
本版调整为:
World#spawn返回后只立即拒绝空实体或已经死亡的实体;- 完成属性、外观、模型和技能初始化后,至少等待一个宠物自己的实体 tick;
- 在宠物 Entity Scheduler 上完成最终状态确认和活动会话注册;
- 实体死亡、调度拒绝或调度前退休时,仍按原有流程清理实体、回滚数据库状态并释放租约。
首次创建且尚未保存外观的宠物,以及已经保存外观的捕捉宠物,都使用相同的 Folia 安全流程。
玩家重进后的宠物主人
0.27.20 加入的主人恢复链路经过真实 Folia 跨区域验证。玩家重进事件只负责定位活动会话,实际 Tameable 主人写入会投递到宠物自己的 Entity Scheduler。玩家与宠物相距较远、位于不同区域时,不会从玩家区域直接访问宠物状态。
配置影响
本版没有新增或重置配置。feeding.cooldown-seconds、宠物类型、模型、食物、商城、GUI 和管理员自定义文本均保持原值。
验证结果
- 默认兼容 API:359 项测试通过,失败、错误、跳过均为 0;
- Paper 26.2 Build 111 API:359 项测试通过,失败、错误、跳过均为 0;
- Folia 26.2 Build 7 隔离服:带持久化外观的真实狼通过正常召唤;
- 狼移动到距离模拟玩家 1024 格的另一 Folia 区域后,清空原版驯服状态并触发实际玩家重进恢复流程,主人 UUID 与驯服状态恢复成功;
- 跨区域收回完成,服务端安全关闭;测试日志没有 LiPet owning-region 异常。
探针使用服务端原生模拟玩家,没有真人网络客户端、ModelEngine 资源包或目标 Shiroha 插件组合的画面验收。正式服仍建议先停服备份,再替换 Jar 并重启验证。
升级步骤
- 停止服务器并备份
plugins/LiPet/; - 将旧 Jar 替换为
LiPet-0.27.21-SNAPSHOT.jar; - 完整启动服务器,不使用第三方热插拔插件替换 Jar;
- 让玩家召唤一只有外观数据的宠物,退出后重进并检查主人、跟随和收回;
- 如仍有问题,请提供从召唤前开始的完整控制台日志、服务端核心及构建号。