搜索

2.2.4 宠物主动攻击开关

每宠保存主动攻击设置、关闭后继续跟随、管理员限制与升级说明。

本页保留 2.2.4 的功能与验证记录。自 2.3.2 起,玩家可见名称统一为“主动攻击”;配置键、动作、变量与已保存开关继续沿用。详见 2.3.2 名称更新说明。

宠物管理菜单新增“自动攻击”按钮。潜行空手右键自己的已召唤宠物,点击按钮即可开启或关闭,菜单会显示这只宠物当前的选择。

开关控制的行为

设置 行为
开启 允许现有自动战斗逻辑运行,仍遵守管理员物种配置、主人与友方保护、区域限制、技能配置和冷却
关闭 清除当前战斗目标,停止自动索敌、主人攻击援助、主人或宠物受击后的自动反击、原版自主仇恨、普通攻击及自动战斗技能;宠物继续跟随

这项设置按每只宠物保存,不会批量改变玩家的其他宠物。旧宠物与新宠物默认开启,召回、玩家重进和正常重启后仍保留各自的选择。

关闭自动攻击不会切换坐下状态,也不会影响背包、喂食和骑乘。/lipet skills cast <1|2|3> 手动入口继续保留,但仍要求技能已解锁、冷却结束且具有所需的合法目标;需要目标的技能不能在没有目标时强行施放。

玩家开关不能越过管理员限制。例如物种配置 behavior.auto-attack.enabled: false 禁用主动索敌时,即使玩家选择开启,也不会重新开启该物种的主动索敌。

配置与保存

按钮位于 gui.yml -> manage.actions.auto-attack,默认使用铁剑图标和槽位 22(从 0 开始)。文字、Lore、位置可调整,旧菜单升级优先选用空槽,避免覆盖已有按钮。enabled: false 只隐藏入口,不会批量关闭已保存的宠物设置。

如果自定义管理菜单已占满所有槽位,新按钮会先以 enabled: false 补入。服主腾出一个槽位,设置 slot 并启用按钮后执行 /lipet reload,再重新打开菜单即可使用。

旧配置即使只自定义按钮名称、没有写槽位,也可以安全补全。点击后的异步保存只刷新仍在查看的管理菜单,不会把已经关闭菜单的玩家重新拉回。

按钮支持 <auto_attack> 显示状态文字、<auto_attack_enabled> 显示 true/false,以及 <auto_attack_next> 表示下一次点击要保存的相反值。内置动作 auto-attack:<pet_id>:<auto_attack_next> 应保留完整格式。

messages.yml 的 pet-auto-attack-state-enabled/disabled 控制两种状态文字,pet-auto-attack-enabled/disabled 控制保存成功提示,pet-auto-attack-save-failed/save-conflict 分别提示保存失败和状态冲突。文本支持 MiniMessage,旧配置只补缺失项,管理员已有值与注释保持。

开关属于宠物存档,使用现有 SQLite / MySQL 持久化和宠物同步流程。升级自动补充缺失数据库字段,历史宠物按开启兼容;无需删除或重建数据库。保存失败会提示,不能将点击按钮当作已保存成功。

更新方式

  1. 正常停服,备份 LiPet 配置、数据库及恢复台账。
  2. 将旧 LiPet Jar 移出 plugins 扫描目录,只保留 LiPet-2.2.4.jar。
  3. 保留原配置、独立宠物文件和数据库,再正常启动,确认控制台出现 Enabling LiPet v2.2.4。
  4. 召唤一只宠物,在管理菜单关闭自动攻击,观察停止自动战斗且继续跟随,再召回、重新召唤确认设置保留。

更换 Jar 必须正常重启;/lipet reload 不能替换已加载的 Java 代码。数据库连接变更也仍需正常重启,不执行在线换库。

112 项技能、已有 ModelEngine 模型和 CE 物品贴图包 1.0.0 继续兼容。本次开关不要求更新客户端资源包。

验证结果

最终 2.2.4 Jar 的 803 项测试全部通过,失败、错误和跳过均为 0;Jar 内 609 个业务类与最终编译输出逐字节一致。同一 Jar 还通过以下隔离运行检查:

环境 本轮通过检查 范围
MySQL 8.0.45 28 项(5 项旧版数据准备、23 项新版检查) 从 2.2.3 数据升级、原宠物字段与技能背包保留、自动攻击设置保存、16 个并发条件保存竞争
Paper 26.2 Build 111 45 项(首次运行 36 项、完整进程重启 9 项) 实际 GUI 点击、开关状态、收回再召唤,以及正常停服和重启后的持久化
Paper 26.2 / Folia 26.2 各 36 项,共 72 项战斗检查 真实 Bukkit 实体与伤害事件、关闭自动战斗、自动技能限制与继续跟随

运行检查使用隔离服务端玩家对象和数据库,不等同真人客户端视觉验收或完整弹道物理验收;没有连接客户数据库,也没有替换生产服正在加载的插件。其他历史版本的验证不计作本次重跑。

最终已验 2.2.4 Jar SHA-256:

7058D207BC9B2CDCDE8F75375D516CFCC55AAB6054CBD16BE81419FEEF057042