搜索

测试与故障排查

属性公式与动作解析、两套 API 构建、Paper 启动及持久化验证。

0.27.24 死亡扣级检查

本版默认启用死亡扣 1 级,请先确认 death-penalty,不要把配置内的死亡惩罚误判为旧版存档回退。关闭后若仍掉级,保留完整死亡日志、配置及服务端版本;出现保存失败提示时检查数据库。377 项自动测试和 Folia 重载、死亡、重启、复活记录见 本版说明。

0.27.23 Folia 排查结果

本版修复的路径、隔离服证据与尚未处理的并发风险请见 Folia 专项排查报告。出现 Accessing entity state off owning region's thread 时保留完整堆栈、服务端构建、LiPet 与模型/技能插件版本,以及玩家、宠物、目标是否跨区的信息。距离较远不自动代表不同 Folia 区域。本轮未验收 Shiroha、自定义 MM 技能或多人背包编辑。

本页从 LiPet 0.27.22-SNAPSHOT 完整 Wiki 同步整理;需要连续查阅全部功能时,请返回 LiPet 完整 Wiki。

0.27.22 GUI 物品保护验证

默认兼容 API 与 Paper 26.2 Build 111 API Profile 各 361 项测试通过,失败、错误和跳过均为 0。定向测试覆盖全部七种只读菜单、顶部槽位边界、只在玩家背包内拖拽,以及宠物独立背包继续可编辑的例外。最终 Jar 为 914152 字节,SHA-256 79BBA17643844D9BB9764BD7ED76EA62BF5E226A2183D3A6DC00C35605BF6D14。

本次没有连接真人客户端执行鼠标手势画面验收。正式服可依次测试普通点击、Shift 点击、数字键交换、双击收集和拖拽经过菜单顶部槽位;这些操作都不应移动菜单图标,宠物独立背包则应继续正常保存。

0.27.21 Folia 认主与召唤时序验证

默认兼容 API 与 Paper 26.2 Build 111 API Profile 各 359 项测试通过,失败、错误和跳过均为 0。Folia 26.2 Build 7 隔离服使用带持久化外观的真实狼走完整 LiPet 召唤链路,确认旧版的首 tick isValid=false 误回滚已经消失。

狼随后移动到距离模拟玩家 1024 格的另一 Folia 区域,清空原版驯服状态并触发实际重进恢复入口;主人 UUID、驯服状态和跨区域收回全部成功,日志没有 LiPet owning-region 异常。成品为 912938 字节,SHA-256 991DD2A5C9787665D0B4AC83D2EFD474ACD752BED9CB209AC6C8513668477BEA。探针没有连接真人网络客户端,也没有验证目标 Shiroha 的全部插件组合。

0.27.20 重进认主与喂食冷却验证

默认 Paper 1.21.11 兼容 API 与 Paper 26.2 Build 111 API Profile 各 359 项测试通过,失败、错误和跳过均为 0。定向测试覆盖普通驯服实体恢复主人、鹦鹉不上肩边界、冷却拦截与到期、关闭冷却,以及数据库失败撤销占位。

最终 Jar 在 Paper 26.2 Build 111 + Java 25 中使用真实狼实体完成主人 UUID 恢复;首次喂食返回 FED,紧接第二次返回 COOLDOWN 且经验不重复增加,随后隔离服安全停止。成品为 912509 字节,SHA-256 D056323ECDBCE4704ACAE26A9BDA8C86F35CAA947A69858E6276A861D6224964。真人网络客户端和 Folia/Shiroha 目标服仍需上线前验收。

0.27.19 属性加点验证

默认 Paper 1.21.11 兼容 API 与 Paper 26.2 Build 111 API Profile 各完成清理构建,均为 353 项测试通过,失败、错误、跳过为 0。定向测试覆盖力量不增加暴击率或速度、敏捷负责暴击率/速度/闪避、大写与小写动作,以及错误 UUID、缺失参数和未知属性的安全拒绝。

最终 Jar 在 Paper 26.2 Build 111 隔离服正常加载为 0.27.19-SNAPSHOT,/lipet status 与 /lipet reload 成功,随后只安全停止该测试服。最终 Jar 为 907340 字节,SHA-256 27ADA6445F39D3DD482086F965CFF5408989775C422D1878638BE89862ABE7A6。

0.27.18 Residence 天气与属性加点验证

默认 Paper 1.21.11 兼容 API 与 Paper 26.2 Build 111 API Profile 各完成清理构建,均为 349 项测试通过,失败、错误、跳过为 0。新增反射接口与天气伤害策略测试,覆盖 sun、rain 优先级、普通实体、真实泡水和安全回退。

Paper 26.2 Build 111 隔离服实测通过五个边界:sun=true 的 LiPet 烈焰人事件被取消;普通烈焰人不取消;移除 sun 不取消;sun 与 rain 同时启用时按雨天不取消;真实水方块内生命从 20 降至 10。最终 Jar 为 903969 字节,SHA-256 6C4CE0677752ED482BDA82B7B81DBB6D4E5F0C631A68DA251AE613A1346AAB49。

0.27.17 风弹喂食验证

默认兼容 API 与 Paper 26.2 API 均清理后完整编译,各 343 项测试通过。新增 10 项测试覆盖双手回退、物品数量变化、其他玩家、正常投掷、过期清理和独立事件结果。

Paper 26.2 Build 111 使用真实 Breeze 与原生 CraftPlayer,经交互及物品使用包处理器对照:旧版 8 颗风弹最终剩 6 颗,新版剩 7 颗,均获 4 经验;新版没有风弹实体。另通过副手保留、非主人失败、普通投掷和创造模式验证。不是手工派发事件,也没有连接真人客户端;Folia/Shiroha 目标服和异常延迟网络尚未实测。

0.27.16 捕捉幼体锁龄验证

默认兼容构建与 Paper 26.2 API Profile 各 333 项测试通过。新增 3 项定向测试,覆盖幼体恢复后锁龄、成年外观清除旧锁,以及捕捉继续持久化 adult=false。

Paper 26.2 Build 111 隔离服先让真实狼、猫、马跨越成年边界,确认 UUID、PDC、驯服状态和主人 UUID全部保留;随后应用 0.27.16 捕捉外观,三种实体均恢复幼体、启用年龄锁且主人 UUID不变。测试服安全关闭,Java 进程为 0。尚未进行真人客户端或 Folia/Shiroha 实服 20 分钟自然成长验收。

0.27.15 快乐恶魂移动验证

默认兼容构建与 Paper 26.2 API Profile 各 330 项测试通过。定向测试覆盖快乐恶魂绕过已接受的地面路径、停止残留路径、飞行速度写入、3 格跟随目标,以及战斗追击使用相同策略。

Paper 26.2 Build 111 隔离服生成真实成年 CraftHappyGhast,实读高度为 4 格。模拟主人移动 14 格后,实体在 40 tick 内水平跟随 2.823 格并抬升 0.605 格;随后通过骑乘 yaw、pitch、body yaw、持续前进转向和多层座位回归。测试服安全关闭且 Java 进程为 0。当前未做真人网络客户端或 Folia/Shiroha 实服体感验收。

0.27.14 原版宠物专属食物验证

默认兼容构建与 Paper 26.2 API Profile 各 327 项测试通过。测试遍历全部可捕捉原版宠物,检查食物 Material 与 4 点经验;另固定检查 34 个原版食物标签或同族规则,并验证狼模板不含骨头、猫模板不含熟鱼。

最终 Jar 在 Paper 26.2 Build 111 + PlayerPoints + SQLite 中启用,生成 87 个原版宠物文件和 2 个自定义示例。实读枯骆驼、猪灵、猪灵蛮兵、硫磺魔方、狼、猫、僵尸马、僵尸鹦鹉螺文件,均为新食物、无旧节点且 experience: 4;测试服随后安全关闭。

0.27.13 默认喂食经验验证

默认构建与 Paper 26.2 API Profile 各 325 项测试通过。配置测试遍历公共默认食物、狼模板和猫模板,确保每个已启用官方食物的经验都低于默认最弱战斗奖励;原版食物目录和缺失节点补全均验证为 4。

最终 Jar 在 Paper 26.2 Build 111 + PlayerPoints + SQLite 全新启动到 Done,生成 89 个独立宠物类型文件;实读公共 pet-types.yml 与 烈焰人.yml 的 BLAZE_POWDER 均为 experience: 4,随后重载成功并安全关闭。

0.27.12 Folia 名牌跨区调度验证

默认构建与 Paper 26.2 API Profile 各 324 项测试通过。新增确定性测试覆盖:非所属区域时不直接刷新、实体下一 tick 执行、第一次 owning-region 异常只重试一次、第二次失败只限频报告且不执行不安全回退。骑乘测试继续覆盖取消上下马、下马恢复和多层模型座位。

最终 Jar 在 Paper 26.2 Build 111 + PlayerPoints 3.3.5 两次完成 LiPet/SQLite 启用与安全关闭,但隔离环境没有走完 Paper 的世界初始化,因此本轮未声称状态命令和重载已验证。工作区没有 Shiroha/Folia 核心,目标服仍需按 0.27.12 更新日志 进行真实跨区验收。

0.27.11 原版食物与成长持久化验证

默认兼容构建与 Paper 26.2 Profile 各 321 项测试通过。确定性并发用例让两名玩家各提交 50 次战斗经验,所有经验均在各自的回收/关服保存屏障前完成,每只宠物只产生两个合并批次。真实 SQLite 保存 8 级、73 经验、STORED 和 revision 3,关闭并重新打开仓库后读取完全一致。

同一最终 Jar 在 Paper 26.1.2 Build 70 与 Paper 26.2 Build 111 完成真实 SQLite 启动、状态检查、热重载和安全关闭。旧服副本分别补全 86 与 77 个原版文件;Paper 26.2 的烈焰人生成完整注释和烈焰粉规则,已有自定义食物的狼文件哈希不变。当前没有真人客户端,实际双人刷怪消息节奏、Folia 与 MySQL 实服仍需目标服验收。

0.27.10 技能书与敏捷速度验证

默认兼容构建与 Paper 26.2 Profile 各 315 项测试通过,失败、错误和跳过均为 0。同一最终 Jar 在 Paper 26.1.2 Build 70、Paper 26.2 Build 111 的真实 SQLite 中快速提交 5 次迅捷技能升级,最终等级均为 5;第 6 次均返回满级且数据库等级不变。两服生成真实狼实体后,MOVEMENT_SPEED 从 5 级迅捷的 0.35 在增加 1 点敏捷后变为 0.355,随后安全关闭。

运行探针覆盖数据库串行升级、满级重读、成长刷新与真实实体属性。当前环境没有真人客户端,GUI 最终视觉、实际跟随体感、库存右键与退款交互,以及 Folia / MySQL 实服仍需目标服验收。

0.27.8 召唤无响应验证

旧 0.27.7 已在 Paper 26.2 Build 111 与真实 SQLite 连续复现两次:首次外观成功保存到 revision 3,异步实体任务入队后同一 tick 移除实体;8 tick 后召唤和收回仍未完成,数据库为 ACTIVE、活动实体索引为空。执行真实 /lipet reload 成功后仍然等待,确认配置重载不能清理这条未完成操作链。

新版默认兼容构建(Paper 1.21.11 API、Java 21 字节码)与 Paper 26.2 Profile 各 306 项测试通过,失败、错误和跳过均为 0。回归重点是任务受理后退休、调度拒绝、同步依赖错误、按本次已保存 revision 回滚、查询占位释放,以及取消返回值不提前解除数据操作串行约束。首个 ACTIVE 写入冲突或同步/异步失败只释放租约,不猜测 revision 回滚其他记录。

同一最终 Jar 在 Paper 26.1.2 Build 70、26.2 Build 111 与真实 SQLite 均通过故障注入:外观保存 UPDATED 到 revision 3,实体任务受理后同 tick 移除,首次召唤返回 FAILED、排队收回返回 NOT_ACTIVE,数据库恢复 STORED revision 4;无需重载即可重试 CALLED,实际只有一个实体与一个会话,随后正常收回。两台隔离服务器均安全关闭。

命令和仓库共用的反馈逻辑有自动测试覆盖:快速调用只有最终提示;等待超过 100 tick 才提示一次;等待提示发送失败不改变召唤结果;结果文字出错时使用独立“提示异常”文本并记录玩家 UUID 和请求。pet-call-pending: "" 可关闭等待提示。

同一成品还通过 Paper 26.2 狼骑乘回归,覆盖全员及后来旁观者名牌隐藏、原地 yaw/pitch、持续前进转头、下马 AI/感知恢复、真实重载、多层座位与取消下马。未做真人客户端画面、真实 ModelEngine/MEG 模型或 Folia 实服运行验证;完整记录和最终成品信息见 0.27.8 更新日志。

上一版 0.27.7 骑乘名牌与转向验证

默认兼容构建(Paper 1.21.11 API、Java 21 字节码)与 Paper 26.2 API Profile 各 264 项测试通过,失败、错误、跳过均为 0。同一最终 Jar 在 Paper 26.1.2 Build 70 完成狼骑乘探针,在 Paper 26.2 Build 111 完成狼及蝙蝠骑乘探针,均通过;构建 API 与实际运行服务端版本不混用。

验证覆盖已有及后来观察者的名牌隐藏、同 UUID TextDisplay 下马恢复、无新输入事件时原地 yaw 90° / pitch 20°、持续前进 yaw 135° → -90°、原感知/AI 恢复、取消上下马、真实 /lipet reload 切换隐藏开关,以及多层 ArmorStand 座位 yaw 45° → -135° 与 MONITOR 取消下马后继续控制。骑乘期间 hasAI 保持开启,仅暂停 aware。

这是服务器内 ServerPlayer / CraftPlayer 与实体状态探针,不是真人网络客户端画面;ArmorStand 座位链不等于真实 MEG 模型、动画和资源包实测。本轮未运行 Folia。完整记录和成品 SHA-256 见 0.27.7 更新日志。

上一版 0.27.6 货币名称与重载验证

默认构建与 Paper 26.2 API Profile 各 216 项测试通过,失败、错误、跳过均为 0。同一最终 Jar 已在隔离的 Paper 26.1.2 / Paper 26.2 Build 111 + PlayerPoints 3.3.5 环境验证并安全关闭:

  • 实际 PetGuiService 生成两个商城的 ItemStack Lore,默认均为 100.00 点券。
  • 执行真实 /lipet reload、数据库保持不变后,同一 GUI 服务和货币注册表显示“星光点券”,内置货币同步显示“伙伴币”。
  • 服务器 ID、群组、启动时初始余额设置不变,管理员自定义注释保留。
  • 实际 PlayerPoints 网关建立 100 点测试余额,通过生产 Provider 扣除 40 后余额为 60,验证后清理测试余额。

本轮是服务端 GUI 物品栏与 Lore 探针,不是玩家进服后的真人客户端视觉测试;实际支付验证覆盖 PlayerPoints,未据此声称 Vault 经济插件也完成真实支付验证。成品 SHA-256 和完整配置见 0.27.6 更新日志。

名称仍未更新时,先核对加载版本,再检查 config.yml 的 currency.*.display-name、重载成功提示与重新打开菜单。自定义 Lore 中的固定 PlayerPoints 文字需改为 <currency>;shop.yml 的支付 ID 和 100.00 价格格式无需修改。

20. 兼容说明

宠物 AI 与坐下状态

宠物每次召唤都会恢复原版 AI、Mob 感知和站立状态。非骑乘宠物的行为循环会修复被外部模型插件或旧实体数据意外关闭的 AI;玩家主动切换为“坐下”时暂停,切回“跟随”时恢复。骑乘期间则保留 hasAI,临时关闭 aware 以停用原版方向控制,避免与骑手输入竞争;下马后恢复原感知状态。

狼、猫等可驯服实体在收回前会先解除原版主人、驯服和坐下状态,再移除世界实体,避免原版驯服数据把实体继续保留下来。鹦鹉使用 LiPet 自己的主人标记,不再绑定原版主人,因此新召唤的鹦鹉不会自动飞到玩家肩上。

对于升级前已经停留在肩上的鹦鹉,/lipet store、管理菜单收回、信号棒收回和玩家退出流程都会同时检查左右肩。肩部数据会在发起保存时先安全摘除;若数据库保存失败,插件会把原肩部实体恢复,保存成功后才彻底清理。因此不会再出现聊天提示“已收回”但肩上仍有鹦鹉的情况。

跟随逻辑每 10 tick 更新一次:宠物超过 follow-distance 后启动原生寻路,进入 stop-distance 后停止;两者之间保持已有路径,避免来回启停。超过 teleport-distance,或原生寻路连续四次拒绝路径时,只有主人已落地且没有飞行或滑翔才会安全回传;主人仍在空中时宠物会等待。

召唤时会为宠物安装高优先级移动与目标控制 Goal,原版闲逛、逃跑和自动仇恨不能再反向覆盖插件路径。全部地面宠物都由服务端原生 Pathfinder 绕开方块:跟随每 10 tick 更新落点,战斗每 10 tick 刷新路径、每 2 tick 检查攻击距离;路径不可达时会停止旧路径,不会把宠物直线拖过障碍。飞行类或运行端确实没有寻路接口时才使用平滑速度兜底,并同步身体朝向;实际伤害仍由统一属性与攻击冷却计算。

文本样式

LiPet 会在最终写入前统一移除聊天消息、ActionBar、悬浮文本、GUI 标题与图标、捕捉球、技能书、信号棒和宠物名称的斜体装饰。根组件、嵌套组件和悬浮提示都会递归处理;即使旧配置使用 &o 或斜体标签,显示时也会强制转换为非斜体。

双行宠物名牌同样通过统一 MiniMessage 组件生成,宠物名和“主人”行都不会使用斜体。

Paper 26.1.2 / 26.2

LiPet 当前使用 Java 21 字节码构建,运行端推荐 Java 25。调度逻辑封装在 PlatformScheduler,业务层不直接散落调度调用。

活动宠物实体由加载索引维护。SQLite / MySQL 完成回调只读取线程安全状态,再把生命读取、属性刷新、召回和移除交给实体调度器;不会再从数据库线程调用区块实体查询。

0.27.4-SNAPSHOT 默认构建与 Paper 26.2 Profile 各 165 项测试通过,失败、错误和跳过均为 0。Paper 26.2 Build 111 + Java 25 + CraftEngine 26.8 + PlayerPoints 3.3.5 使用真实 0.27.3 配置启动,旧捕捉球材料与熟牛肉数值保持不变,只补入缺失开关和默认关闭案例。启用案例并改为 default:topaz_pickaxe 后,CraftEngine 索引 109 个物品,运行探针确认 CE 身份没有退化为原版金镐底材,并同时命中食物与捕捉球配置。成品大小 790853 字节,SHA-256 为 3E080ACF098093C5AC09A1B2EE0390E692FFDA36F32EE4208B87A7C4C844DF03。当前没有在线客户端,实际喂食与右键捕捉画面仍需目标测试服确认。

0.27.3-SNAPSHOT 默认构建与 Paper 26.2 Profile 各 160 项测试通过,失败、错误和跳过均为 0。Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 使用真实 0.27.2 多 YML 配置启动,旧 宠物类型/ 成功迁移为 宠物/,只生成 77 个缺失文件,最终 87 种默认可捕捉原版生物均有中文独立 YML;原始 MCPets 龙骑文件复制前后 SHA-256 一致,热重载与第二次启动正常且没有重复生成。成品大小 787007 字节,SHA-256 为 C2D0C846440CC81906A3FB719551E69EDE02DCA913045B5B99542ACCB83C71DF。当前环境没有真实 MythicMobs Jar 和在线客户端,龙骑 Mob 的实际生成、模型与骑乘画面仍需目标测试服确认。

0.27.1-SNAPSHOT 默认构建与 Paper 26.2 Profile 各 148 项测试通过。新增覆盖失败施放退避、冷却期间跳过随机抽取、定时规则合并扫描、静态 APIHelper、double power 和历史官方状态语言迁移。Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 隔离实服启用一条占位 MM 规则后,旧状态文本自动迁移,/lipet status 显示 PlayerPoints ONLINE、MythicMobs OFFLINE、技能类型 1、规则 1;热重载和安全关闭正常,LiPet 无报错。成品大小 750989 字节,SHA-256 为 B4630BFD0F23FD9CA0003B057269DED973ADD6E5C2743F6785523C45BA671B27。当前环境没有真实 MythicMobs Jar,实际战斗施放仍需在安装 MM 的目标测试服确认。

0.27.0-SNAPSHOT 默认构建与 Paper 26.2 Profile 各 144 项测试通过。Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 实测把 0.26.26 狼、猫多 YML 配置安全补全为带中文注释且默认关闭的 MM 示例,热重载成功,状态显示 PlayerPoints ONLINE、MythicMobs OFFLINE,未安装 MM 时 LiPet 无报错并安全关闭。成品大小 748702 字节,SHA-256 为 D2090041BA7C187A86C8C627F2DF9D499723795ACFF2FC53EF4DD664D89D09E2。当前环境没有真实 MythicMobs Jar,实际战斗施放仍需在安装 MM 的目标测试服确认;自动测试已覆盖 MM 5.x 七参数调用、目标和 power 传递。

0.26.26-SNAPSHOT 默认构建与 Paper 26.2 Profile 各 137 项自动测试通过,失败、错误和跳过均为 0。Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 使用真实 0.26.25 gui.yml 启动,缺失的管理返回按钮、中文注释和 manage-return:<entity_id> 动作自动补全,原仓库返回按钮保持不变;热重载、状态检查和安全关闭均成功,LiPet 自身日志无报错。测试服没有在线玩家,管理页到属性/成长面板的实际点击和最终视觉仍需目标测试服确认。成品大小 729546 字节,SHA-256 为 C4C3EAF41D974E2296B5FF829393C4C7BFA4EB578C5541A82532306C8B1F5650。

0.26.25-SNAPSHOT 默认构建与 Paper 26.2 Profile 各 132 项自动测试通过,失败、错误和跳过均为 0。Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 使用真实 0.26.24 默认 gui.yml 启动,仓库 Lore 自动迁移为绿色潜行操作、警告前空行和红色永久删除提示;热重载、状态检查和安全关闭均成功,LiPet 自身日志无报错。测试服没有在线玩家,仓库最终视觉和四种实际点击仍需目标测试服确认。成品大小 726864 字节,SHA-256 为 41F82C483C8375CDFD7B71A1A8AC1E2F0F92ED15D1664DD8068B8D9900661769。

0.26.24-SNAPSHOT 共 131 项自动测试通过,失败、错误和跳过均为 0。Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 分别验证了旧服狼、猫拆分到 宠物类型/wolf.yml、cat.yml,以及新服生成 宠物类型/狼.yml、猫.yml;仓库四键 Lore、动作与官方注释迁移正确,多文件热重载成功,PlayerPoints 显示 ONLINE,随后安全关闭。测试服没有在线玩家,仓库最终视觉和四种实际点击仍需目标测试服确认。成品大小 726809 字节,SHA-256 为 F57634F05DD8E1C68AD0A405289153DA706F17F93CB94810915B9E386B7169DD。

0.26.23-SNAPSHOT 的 Paper 26.2 Profile 共 121 项测试通过。自动测试覆盖官方旧“宠物仓库”按钮名称和完整旧 Lore 的精确迁移,以及服主自定义名称与 Lore 保护;Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 实测把 0.26.22 真实旧 gui.yml 迁移为“我的宠物”和“➥ 点击打开宠物列表”,并完成状态检查与安全关闭。LiPet 自身日志无报错;测试服没有在线玩家,菜单最终视觉仍需目标测试服确认。成品 SHA-256 为 F220C0EE7900372D4EEC25E14A66F5D0E042D90A8A42D783A88357565A850686。

0.26.22-SNAPSHOT 的 Paper 26.2 Profile 共 119 项测试通过。测试覆盖已有活动宠物的专用 pet-already-active 映射、历次官方默认文本、Bukkit 自动折行后的旧值和自定义语言保护;Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 实测把 0.26.21 真实旧配置迁移为“已达最大召唤数量,请将已召唤的休息后再召唤!”,并完成状态检查和安全关闭。测试服没有在线玩家,聊天框最终显示仍需目标测试服确认。成品 SHA-256 为 7AA16300F065436B0532A9AFBC9646F41E147D8D4DDC180ABBE6664A8542FD91。

0.26.21-SNAPSHOT 的 Paper 26.2 Profile 共 119 项测试通过。新增测试确认安全回传严格按“移除名牌 → 传送 → 恢复名牌”执行,并覆盖传送调用直接失败后的恢复;Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 实测启动、挂钩、状态检查和安全关闭,LiPet 日志无报错。测试服没有在线玩家,鹦鹉移动时的最终客户端视觉仍需目标测试服确认。成品 SHA-256 为 1C41F2E4BAF13676FD7F290F2A26F132406903CE6A593BDB4B8E8749D55F6C07。

0.26.20-SNAPSHOT 的 Paper 26.2 Profile 共 117 项测试通过。自动测试确认 INTERNAL 会解析为配置中的“宠物币”;Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 实测启动、挂钩、状态检查和安全关闭。商城 Lore 最终客户端视觉仍需在线玩家确认。成品 SHA-256 为 EC3A5D1A51D5FD9A7D436E1CCE0A11CA03C73F92EC0E4FF01A964B1375459077。

0.26.19-SNAPSHOT 的 Paper 26.2 Profile 共 116 项测试通过。Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 实测挂钩 ONLINE、宠物币榜、宠物等级榜及安全关闭;商城实际点击扣除 PlayerPoints 仍需在线玩家最终确认。成品 SHA-256 为 210DEC705F16F3FD2F5E9B4B0C65A3BD68A35C8C79F521466026A8DA8908BF15。

0.26.18-SNAPSHOT 的默认构建与 Paper 26.2 Profile 各 111 项测试通过。最终成品在 Paper 26.2 Build 111 + Java 25 完成启动、旧 gui.yml 四键操作与中文注释迁移、lookcoin / takecoin 和分组 coin give 的真实 SQLite 增减回环,并安全关闭。当前没有在线客户端,仓库实际点击与视觉反馈仍需目标服务器最终确认。成品 SHA-256 为 C88640A9866234E6EF6449D7D39848580AAF8DAC12BD7D8B5E6E4F4929EDA34F。

0.26.17-SNAPSHOT 的默认构建与 Paper 26.2 Profile 各 106 项测试通过。Paper 26.2 Build 111 + Java 25 实测 UUID 账户完成 1000 → give 250 → 1250 → take 400 → 850,余额不足扣除被拒绝且余额保持 850,随后安全关闭。当前没有在线客户端,名牌第一人称显示和末影龙实际骑乘仍需目标服务器确认。成品 SHA-256 为 0EE0223DF77D9AAC45D436B971FD8ABF1A3E1D28171300177D2B83A3943A8270。

0.26.14-SNAPSHOT 的默认兼容构建与 Paper 26.2 Profile 各有 102 项自动测试通过。同一 Java 21 成品 Jar 已在 Paper 26.1.2 Build 70 与 Paper 26.2 Build 111 搭配 CraftEngine 26.8.1 加载 109 个 CE 物品,并通过 default:topaz_pickaxe 生成 → 识别、CE 配置重载、LiPet 热重载与安全关闭验证。成品 SHA-256 为 06FEE21AF8F5858F0D383748C32908B6ACB0B4AB929511BCC774AA96D71DC554。

0.26.13-SNAPSHOT 的默认兼容构建与 Paper 26.2 Profile 各有 99 项自动测试通过,覆盖全部菜单点击反馈、多槽位解析、旧 slot 回退、重复槽位去重和旧配置安全补全。

0.26.9-SNAPSHOT 同一通用 Jar 已在 Paper 26.1.2 Build 70 与 Paper 26.2 Build 111 搭配 CraftEngine 26.8-SNAPSHOT 完成真实运行探针:CE 物品 default:topaz_pickaxe 被识别为完整自定义 ID,同底材原版物品独立识别为 minecraft:golden_pickaxe,并成功命中 pet-types.yml 食物规则;72 项自动测试全部通过。

0.26.8-SNAPSHOT 同一通用 Jar 已在 Paper 26.1.2 Build 70 与 Paper 26.2 Build 111 完成真实启动及 ModelEngine R4.1.0 更新构建运行探针;真实 magecat 模型验证了原版载体不可见、重复挂载只有一份模型、卸载后载体恢复可见,68 项自动测试全部通过。0.26.7-SNAPSHOT 另已验证旧版 GUI/商城 Lore 自动迁移和优雅关服,管理员自定义 Lore 保持不变。

0.26.6-SNAPSHOT 同一通用 Jar 已在 Paper 26.1.2 Build 70 与 Paper 26.2 Build 111 完成真实启动、rewards.yml 加载、奖励表建表、每日指令注册、PlaceholderAPI 2.12.3 挂钩和优雅关服检查;SQLite 奖励事务另行验证了首次到账、同日防重、次日重置和余额同步,58 项自动测试全部通过。0.26.5-SNAPSHOT 已验证旧 messages.yml 中文名称节点增量补全和中文变量解析。0.26.4-SNAPSHOT 的 TextDisplay 双行主人名牌实体测试已验证实际生成、玩家名文本、重命名复用、透明背景和收回即时删除。0.26.3-SNAPSHOT 已验证 SQLite 在线热切换、/lipet status 实际目标检查,以及无效 MySQL 候选连接失败后继续使用原 SQLite。当前测试环境没有可用 MySQL 服务,因此 MySQL 到 MySQL 的成功在线切换仍应先在测试服验证后再用于生产服。

默认交付包使用最低兼容 API 构建,以便同一 Jar 继续运行于 Paper 26.1.2。项目提供锁定 26.2.build.111-stable 的 26.2 编译检查 profile:

mvn -Ppaper-26.2 clean package

plugin.yml 的 api-version 刻意保留为 1.21.11,它表示最低可加载版本,并不表示只支持 1.21.11;改成 26.2 会让 Paper 26.1.2 拒绝加载同一 Jar。

捕捉仪式的音效和粒子使用 Bukkit Registry 解析。配置既可继续填写 ENTITY_PLAYER_LEVELUP、ENCHANT,也可填写 minecraft:entity.player.levelup、minecraft:enchant;不存在的键会记录中文警告并回退到安全默认值,不会因此禁用插件。

0.25.7 起新写入的宠物背包使用 Bukkit ItemStack 字节格式。旧版本保存的对象流数据仍可读取,并会在宠物背包下次保存时自然迁移,不需要手工转换数据库。

外部依赖

Vault、PlayerPoints、PlaceholderAPI、ModelEngine、CraftEngine 等为软依赖或 provided 依赖,不会打入 LiPet Jar。PlayerPoints 通过运行时 API 挂钩接入商城;CraftEngine 物品适配也不会缓存物品实例。

SQLite / MySQL 驱动由运行时依赖管理器按配置下载到插件数据目录,不直接塞进成品 Jar。

21. 常见问题

重启后宠物不见了

检查 storage.type。当前推荐:

storage:
  type: "SQLITE"

旧版 MEMORY 配置会自动迁移为 SQLite。生产服请备份 plugins/LiPet/lipet.db 或 MySQL 数据库。

插件显示 plugin is disabled

不要只看 /lipet 命令报错。需要查看服务器启动时最早的 LiPet 错误堆栈。

常见原因:

  • 配置格式错误。
  • 材质或实体类型拼错。
  • 数据库连接失败。
  • 运行时依赖无法下载。

No sound found with the name UI_TOAST_CHALLENGE

这是旧配置里的无效音效名。0.25.3+ 已修复:插件会自动回退为 ENTITY_PLAYER_LEVELUP,不再因此禁用。

Thread LiPet-SQLite failed main thread check

这是 0.26.0 的数据库回调错误。升级到 0.26.1+ 后,属性加点、喂养、召回和收回不再从 SQLite 线程查询区块实体。若升级后仍看到该堆栈,请先确认服务器实际加载的 Jar 版本不是旧版。

提示已收回,但可驯服宠物仍在

这是旧版本把狼、猫、鹦鹉等实体同时交给原版驯服系统管理造成的生命周期冲突。升级到 0.26.2+ 后,收回会先清理原版驯服/坐下状态,并额外处理左右肩实体。升级后首次召回旧鹦鹉时会自动解除原版肩部行为。

宠物背包没有保存

背包在关闭界面时保存。如果服务器崩溃,最后一次打开中的背包可能来不及保存。生产服建议定期备份数据库。

信号棒没有反应

确认:

  • 物品由 /lipet signalstick 发放。
  • 玩家当前有已召唤宠物。
  • 没有其他插件取消右键交互事件。

商城购买失败

检查:

  • 玩家余额是否足够。
  • shop.yml 中的 pet-type 是否存在且启用。
  • 玩家是否已经拥有该类型宠物。
  • Vault 模式下是否安装了 Vault 和经济插件。
  • PlayerPoints 模式下是否安装并启用了 PlayerPoints,且商品价格是否为整数。

宠物币只能消费,无法获取

升级到 0.26.6+ 后检查:

  • rewards.yml 顶层 enabled 以及对应玩法的 enabled 是否为 true。
  • 玩家是否拥有 lipet.command.daily 权限。
  • 战斗必须由当前召唤的宠物完成最后一击;玩家自己击杀不会获得宠物战斗奖励。
  • 对应玩法是否已经达到 daily-limit;每日额度按 reset-time-zone 的零点重置。
  • 数据库异常时查看控制台中的 LiPet-Rewards 错误,并确认当前 Jar 确实为新版本。

22. 升级建议

升级前:

  1. 停服。
  2. 备份 plugins/LiPet/。
  3. 备份 SQLite 或 MySQL 数据。
  4. 替换 Jar。
  5. 启动服务器。
  6. 执行 /lipet status。
  7. 检查控制台是否有 LiPet 警告或错误。

LiPet 会补全新增配置节点,但不会覆盖已有自定义配置值。