0.27.19 属性加点与属性归属修复
revision 冲突对账重试、力量与敏捷职责修正,以及 GUI 动作安全解析。
版本:0.27.19-SNAPSHOT,日期:2026-09-05。
修复内容
属性点偶尔无法分配
旧版每次加点只尝试保存一次。宠物刚获得经验、连续点击、跨服同步或其他写入让数据库 revision 先发生变化时,本次加点会直接返回失败。
新版继续按玩家串行处理成长操作,并为属性加点增加权威档案对账与有限重试:
- 活动宠物先重新读取数据库档案并刷新活动会话;
- 仓库宠物重新读取最新档案;
- revision 冲突时最多重试两次;
- 只有保存确认成功后才扣除属性点,重试不会重复扣点。
力量错误增加暴击率
四项属性现在按界面说明明确分工:
- 力量:攻击、暴击伤害、少量吸血;
- 体质:最大生命、生命恢复、吸血;
- 防御:伤害减免、击退抗性;
- 敏捷:移动速度、暴击率、闪避率。
已有宠物的力量、体质、防御、敏捷原始点数不会变化。升级后衍生属性会按新公式实时计算,所以原先由力量提供的暴击率会移除,敏捷提供的暴击率保持不变。
自定义 GUI 动作与失败提示
属性动作支持以下稳定格式,属性键不区分大小写:
action: "attribute:<pet_id>:STRENGTH"
action: "attribute:<pet_id>:strength"
错误 UUID、缺少参数或未知属性不再抛出 InventoryClickEvent 异常,而是显示 messages.yml -> pet-attribute-invalid-action。没有剩余属性点时显示 pet-attribute-no-points,数据异常或重试仍失败时保留 pet-attribute-failed。
配置迁移只补全缺少的消息节点,不覆盖已有文本、按钮、槽位、动作或宠物数据。
验证
- 默认兼容 API 全量测试:353 项通过,0 失败;
- 覆盖力量与敏捷衍生属性边界;
- 覆盖大写、小写、错误 UUID、缺失参数和未知属性动作;
- SQLite 属性字段持久化及其余现有功能回归通过;
- Paper 26.2 Build 111 API 清理构建:353 项通过,0 失败;
- 最终 Jar:907340 字节;
- SHA-256:
27ADA6445F39D3DD482086F965CFF5408989775C422D1878638BE89862ABE7A6; - Jar 内未打入 SQLite、Adventure、连接池或统计库等外部依赖类。
升级
- 停止服务器并备份
plugins/LiPet/与数据库。 - 删除旧 LiPet Jar,确保插件目录中只有一份 LiPet。
- 放入
LiPet-0.27.19-SNAPSHOT.jar后完整启动服务器。 - 旧配置会自动补齐两条新消息;无需删除
gui.yml或messages.yml。
/lipet reload 不能替代 Jar 更新。