特殊 AI 模式索引(special-ai-index)

基本信息

属性 值
注册类 toast.specialAI.ai.special.SpecialAIHandler
接口 toast.specialAI.ai.special.ISpecialAI
数量 10
抽取 加权随机(权重由配置 ai_<name> 决定)

每个特殊 AI 都是 EntityAIBase + ISpecialAI,注册到实体的 tasks.addTask(0, ...),与基础攻击 AI 同优先级并独占 BIT_MOVEMENT/FACING/SWIMMING 互斥位,因此执行期间会压制其它移动 AI。

10 种 AI 总览

名称 类 默认权重 NBT 存值 互斥位 实体改造 详见
barrage EntityAIBarrage 1 float 3.0(箭矢伤害) M+F+S 头部戴 Dispenser + +20 max HP 弹幕箭矢攻击
charge EntityAICharge 1 float 0.5(击退倍率) M+F+S 黄染色皮头盔「Charger’s Helmet」+ +20 max HP + +1 knockbackResistance 冲锋撞飞
sprint EntityAISprint 1 float 0.7(速度倍率 +1) M+F 红染色皮靴「Running Boots」+ +0.1 movementSpeed 追击时加速冲刺
jump EntityAIJump 1 byte 1(启用) - 跳踏附魔皮靴 反复跳跃践踏目标
leap EntityAILeap 1 byte 1(启用) - 力量附魔弓 跳到目标身边高空砸下
spawner EntityAISpawner 1 byte 1(启用)+ 子标签 spawnerTags none 头部戴 Mob Spawner + +80 max HP + -0.2 movementSpeed 召唤同种怪物
shaman EntityAIShaman 1 float 1.0(每次治疗量) M+F 骨头 + 南瓜灯 + +20 max HP 治疗附近同盟并给增益
throw EntityAIThrow 1 byte 1(启用) M+F +10 max HP + +1 knockbackResistance 抓起附近小怪物扔向目标
throw_player EntityAIThrowPlayer 1 byte 1(启用) M+F 红染色皮头盔「Helmet of Strength」+ +1 attackDamage + +0.3 movementSpeed 把玩家抓起来扔向同盟
thief EntityAIThief 1 float 16.0(逃跑距离) M+F 深蓝染色皮头盔「Thief’s Cap」+ +0.1 movementSpeed + 关闭 loot pickup 偷玩家背包物品

加权抽取算法

SpecialAIHandler.saveSpecialAI(entity, aiTag):

choice = entity.getRNG().nextInt(AI_WEIGHT);   // AI_WEIGHT = Σ weights
for (i = SPECIAL_AI_LIST.length - 1; i >= 0; i--) {
    choice -= weights[i];
    if (choice < 0) {
        SPECIAL_AI_LIST[i].save(aiTag);
        return;
    }
}

SPECIAL_AI_LIST 数组顺序:

{ charge, sprint, jump, leap, barrage, spawner, shaman, throw, throw_player, thief }

注意反向遍历:下标越大权重越高越容易先被选中。配置 ai_<name> 默认均为 1,因此默认情况下 10 种平均分布。

NBT 兼容性

旧的 SPECIAL_TAG(byte)会被读取并转换为对应的 uAI 子标签(SPECIAL_AI_LIST[code-1]),保证从旧存档迁移。

注入时机

AIHandler.onEntityJoinWorld 中检查 _mob_list_1/2/3 与 _chance_1/2/3,对每个列表独立判定(mob_list_2/3 可叠加),命中则把抽取结果写入 tag.setTag("uAI", aiTag)。SpecialAIHandler.addSpecialAI 在加载时把 uAI 子标签中所有"已存"模式逐一 addTo(entity, tag) 并在初始化时 initialize(entity) 应用属性修饰符和装备。

互斥说明

互斥位 含义
M BIT_MOVEMENT (1) — 移动类
F BIT_FACING (2) — 朝向类
S BIT_SWIMMING (4) — 游泳类
— BIT_NONE (0) — 不互斥

相关条目