0.27.20 重进认主与喂食冷却
玩家重进和区块载入恢复原版驯服主人,并新增可热重载的全局喂食冷却。
版本:0.27.20-SNAPSHOT,日期:2026-09-06。
修复内容
玩家未执行 /lipet store 就退出时,正常流程会异步保存并收回活动宠物;如果玩家很快重进、宠物区块重新载入,或原版驯服状态在这段生命周期内丢失,旧版只恢复 LiPet 的活动索引、属性与模型,没有重新写入原版驯服主人。狼、猫等实体因此可能仍是 LiPet 活动宠物,但表现得像“不认主”。
本版在两个入口恢复主人:
- 玩家加入后检查当前服务器仍保留的活动会话,在宠物实体所属线程重新绑定档案中的主人 UUID。
- 宠物所在区块重新载入或热重载时,按同一主人 UUID 恢复原版驯服关系。
鹦鹉继续保持非原版驯服状态。这样可以阻止它进入玩家肩部数据后脱离世界实体索引,同时 LiPet 自己的主人、跟随、交互和背包判断仍以持久化档案为准。
喂食冷却
config.yml 新增:
feeding:
# 同一只宠物两次成功喂食之间的冷却秒数,支持小数,取值范围 0-60。
# 默认 1 秒可避免连续右键重复结算;设为 0 可关闭冷却。修改后执行 /lipet reload 生效。
cooldown-seconds: 1.0
冷却按宠物独立计算。插件先确认实体、主人、食物、等级限制以及本次喂食确实会带来经验、治疗或属性点,再预留冷却并保存档案。冷却期间返回剩余秒数,不扣除食物。数据库写入返回失败或抛出异常时会撤销预留,玩家可以立即重试。
旧服升级时只补充缺失节点与默认中文注释,不覆盖服主已经修改的配置。messages.yml -> pet-feed-cooldown 可自定义冷却提示,<seconds> 为剩余秒数。
升级步骤
- 正常停止服务端,仅替换
plugins目录中的旧 LiPet Jar,保留数据库和所有 YML。 - 放入
LiPet-0.27.20-SNAPSHOT.jar并完整启动,执行/lipet status核对版本。 - 按需要修改
feeding.cooldown-seconds,以后可用/lipet reload应用该数值和冷却提示。 - 验收时召唤狼或猫后退出并重进,确认仍能按主人交互;快速连续喂食应只结算第一次,等待提示时间后再次成功。
验证
- 默认兼容 API 与 Paper 26.2 Build 111 API 各执行 359 项自动测试,失败、错误和跳过均为 0。
- 自动测试覆盖普通驯服实体重载后恢复主人、鹦鹉继续解除主人、冷却拦截、到期放行、关闭冷却以及数据库失败回滚占位。
- 最终 Jar 在 Paper 26.2 Build 111 + Java 25 中使用真实狼实体完成主人 UUID 重绑;首次喂食为
FED,紧接第二次为COOLDOWN且经验未增加,随后隔离服安全停止。真人网络客户端重进体感仍建议在目标服替换 Jar 后验收。 - 成品大小
912509字节,SHA-256:D056323ECDBCE4704ACAE26A9BDA8C86F35CAA947A69858E6276A861D6224964;主类为 Java 21 字节码,未打入 Bukkit、SQLite、JUnit 或 Adventure 依赖。