搜索

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、连接池或统计库等外部依赖类。

升级

  1. 停止服务器并备份 plugins/LiPet/ 与数据库。
  2. 删除旧 LiPet Jar,确保插件目录中只有一份 LiPet。
  3. 放入 LiPet-0.27.19-SNAPSHOT.jar 后完整启动服务器。
  4. 旧配置会自动补齐两条新消息;无需删除 gui.yml 或 messages.yml。

/lipet reload 不能替代 Jar 更新。