0.30.0 全物种 AI 与攻击分型
受控导航、攻击分型、真实投射物、地形保护与公共/独立宠物配置。
行为设计
参考 CombatPets 官方仓库 的跟随优先、战斗分型、可见性、蓄力及冷却设计,基于 LiPet 现有业务独立实现。参考提交为 b0e7fbd3b07b73d3937b7d1a59ed11a4ffb615a7;不复制其源码,也不引入其版本专属 NMS 模块。
普通地面生物保留原生寻路;Brain、飞行、水生及无正常导航能力的生物使用受控局部路点。路径有访问上限和缓存,只读取已加载、当前区域可安全访问的区块。水生路径保持在水中;路径避开岩浆、火、仙人掌、岩浆块和营火。普通跟随不依赖远距离反复传送,连续无路或距离过远时才沿原有安全召回流程处理。
本次变化
- 所有类型不再统一使用固定三格范围的瞬时近战。攻击按碰撞箱边缘判距,并按物种选择方式、范围、蓄力和冷却。
- 弓箭、弩、三叉戟、风弹、火球、凋灵之首、龙火球、羊驼唾沫、雪球、潜影弹、药水使用真实有限寿命投射物。命中才结算宠物属性伤害;非锁定目标、主人和无权限目标不会被这些受控弹道伤害。
- 三叉戟额外校验每 tick 实际飞过的短距离线段,补足窄目标漏碰。先检查方块和最近实体,并继续触发标准命中事件;不把传送或异常位移当成弹道,也不跨未加载/其他 Folia 区域读实体。
- 守卫者使用粒子蓄力射线;唤魔者使用视觉尖牙;青蛙有舌头目标;山羊有冲撞节奏;苦力怕使用不破坏方块、不自杀的爆炸表现。这些是宠物化攻击,不承诺与原版敌对生物的所有效果完全相同。
- 监守者、铁傀儡、劫掠兽、疣猪兽等发送对应的攻击实体状态;没有专属攻击动画的原版动物不能凭 Bukkit 增加新的客户端动画。
- 原版 Brain/特殊头部不再抢占受控导航;坐下、骑乘、牵引、失去合法目标或返回主人时取消蓄力。正在飞行的弹丸也会在命中时重新检查目标和状态。
- 修复鱿鱼无 AI 时不消费移动速度、史莱姆整格边缘卡墙、巨人绕障、海龟陆地追击、龙火球撞自身部件和火球出生点偏移导致瞄准错误。
- 补齐兔子的连续跳跃追击,以及僵尸疣猪兽、唤魔者、幻术师的原生目标/施法接管,避免绕过插件攻击流程误伤或隔墙施法。
- 龙处于受控悬停状态时使用限速短距位置步进;潜影贝使用沿路径逐格位移。两者不是普通步行,不能把这两类的测试说成“无传送跟随”。名牌独立跟随,Folia 使用异步局部位移。
- 宠物本体及有归属的攻击不能破坏地形,防止龙身体破坏、爆炸和原生方块变更。
配置:统一默认与单宠覆盖
统一配置位于 plugins/LiPet/pet-types.yml:
defaults:
behavior:
attack:
# AUTO 按物种选择;也可指定下表中的攻击方式。
style: AUTO
# 碰撞箱边缘距离;0 使用物种默认,其他取值大于 0 且不超过 32 格。
range: 0
# 释放间隔,单位 tick;0 使用物种默认,其他取值 1-1200。蓄力另计。
cooldown-ticks: 0
独立宠物 YML 的 behavior.attack 可只写需要不同的字段,其余继承公共配置:
behavior:
attack:
# 本宠物改为弓箭攻击,其他属性不受影响。
style: BOW
# 释放间隔 40 tick;蓄力另计。
cooldown-ticks: 40
升级仅补充缺失的公共节点及中文注释,不覆盖管理员现有值,不向所有独立文件写死默认参数。MM 等级技能仍沿用原来的独立配置和触发流程;自定义模型的专属动画需要相应模型/技能配置。
| 方式 | AUTO 默认类型 | 范围 / 释放间隔 / 蓄力(tick) |
|---|---|---|
| MELEE | 无其他专属方式的类型 | 1.8 / 20 / 0 |
| BOW | 骷髅、流浪者、沼骸、焦骸、幻术师 | 12 / 30 / 10 |
| CROSSBOW | 掠夺者 | 12 / 36 / 16 |
| TRIDENT | 溺尸 | 10 / 30 / 10 |
| SMALL_FIREBALL / WIND_CHARGE | 烈焰人 / 旋风人 | 12 / 30 / 12 |
| FIREBALL / DRAGON_FIREBALL | 恶魂 / 末影龙 | 16 / 40 / 20 |
| WITHER_SKULL | 凋灵 | 14 / 30 / 12 |
| SPIT | 羊驼、行商羊驼 | 10 / 26 / 8 |
| SNOWBALL | 雪傀儡 | 10 / 20 / 6 |
| SHULKER_BULLET | 潜影贝 | 12 / 36 / 12 |
| POTION | 女巫 | 10 / 36 / 12 |
| BEAM | 守卫者、远古守卫者 | 12 / 36 / 24 |
| FANGS | 唤魔者 | 8 / 36 / 16 |
| TONGUE | 青蛙 | 3 / 24 / 6 |
| RAM | 山羊 | 2.2 / 28 / 8 |
| BURST | 苦力怕 | 2.5 / 36 / 16 |
攻击默认值不会改变已捕获宠物的外观、背包、等级和属性数据。药水、爆炸、尖牙等原版范围副作用不直接照搬,避免误伤旁观生物。
验证范围
逐物种报告见 AI 逐物种测试记录。测试使用隔离服真实实体和服务端代理玩家,直接运行 LiPet 的索敌、跟随、战斗与坐下/召回流程,而非只测辅助方法。
服务端结果不等同于真人客户端动画、第一人称骑乘或所有自定义 MM/ModelEngine 模型的视觉验收。正式服必须正常重启加载新 Jar,/lipet reload 不能替换 Java 代码。