0.27.22 GUI 物品保护修复
补齐只读菜单拖拽保护,保留玩家背包整理与宠物背包存取。
发布日期:2026-09-06
版本:0.27.22-SNAPSHOT
问题原因
LiPet 的只读菜单已经取消 InventoryClickEvent,但此前没有处理独立的 InventoryDragEvent。客户端拖拽经过菜单顶部槽位时不会进入普通点击监听,因此可能改动菜单内容,使展示图标或玩家物品处于错误位置。
修复内容
- 普通点击明确识别当前视图顶部的
LiPetInventoryHolder,并在最高事件优先级取消; - 新增拖拽保护,只要拖拽涉及任意顶部菜单槽位就取消整个操作;
- 拖拽只涉及玩家自身背包时允许继续,避免影响玩家整理背包;
- 主菜单、宠物商城、道具商城、仓库、宠物详情、管理菜单和放生确认页统一生效;
PetInventoryHolder代表的宠物独立背包仍然可编辑,关闭时照常持久化。
配置影响
本版没有新增配置,也不会修改 gui.yml、菜单图标、槽位、动作、价格或管理员自定义文本。停服替换 Jar 并完整启动即可生效,/lipet reload 无法替换正在运行的插件代码。
验证结果
- 七种 LiPet 只读菜单类型全部被保护;
- 拖拽槽位包含顶部边界
0..topSize-1时判定为受保护; - 拖拽只包含玩家背包槽位时不拦截;
- 宠物独立背包与其他插件背包不会被误识别;
- 默认兼容 API:361 项测试通过,失败、错误、跳过均为 0;
- Paper 26.2 Build 111 API:361 项测试通过,失败、错误、跳过均为 0。
本次验证覆盖服务端事件边界与完整构建,没有连接真人客户端执行鼠标手势画面验收。正式服建议先在测试服依次检查普通点击、Shift 点击、数字键交换、双击收集以及从玩家背包拖拽经过菜单顶部槽位。
升级步骤
- 停止服务器并备份
plugins/LiPet/; - 删除旧版 Jar,只保留
LiPet-0.27.22-SNAPSHOT.jar; - 完整启动服务器;
- 打开
/lipet menu、仓库和商城,确认菜单展示物品无法移动; - 打开宠物独立背包,确认物品仍可正常存取并在关闭后保存。