搜索

0.27.21 Folia 认主与召唤时序修复

修复 Folia 新实体首 tick 有效性误判,并验证跨区域召唤、主人恢复与收回。

发布日期:2026-09-06 版本:0.27.21-SNAPSHOT

修复内容

Folia 召唤偶发无响应

Folia 在 World#spawn 返回后的当前 tick 内,可能已经接纳实体,但 Entity#isValid() 仍暂时返回 false。旧版把这个瞬时状态当成保护插件取消生成,清除实体并回滚数据库,因此玩家只会看到召唤失败或没有实体出现。

本版调整为:

  1. World#spawn 返回后只立即拒绝空实体或已经死亡的实体;
  2. 完成属性、外观、模型和技能初始化后,至少等待一个宠物自己的实体 tick;
  3. 在宠物 Entity Scheduler 上完成最终状态确认和活动会话注册;
  4. 实体死亡、调度拒绝或调度前退休时,仍按原有流程清理实体、回滚数据库状态并释放租约。

首次创建且尚未保存外观的宠物,以及已经保存外观的捕捉宠物,都使用相同的 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 并重启验证。

升级步骤

  1. 停止服务器并备份 plugins/LiPet/;
  2. 将旧 Jar 替换为 LiPet-0.27.21-SNAPSHOT.jar;
  3. 完整启动服务器,不使用第三方热插拔插件替换 Jar;
  4. 让玩家召唤一只有外观数据的宠物,退出后重进并检查主人、跟随和收回;
  5. 如仍有问题,请提供从召唤前开始的完整控制台日志、服务端核心及构建号。