偷窃(ai-thief)

基本信息

属性 值
类名 toast.specialAI.ai.special.EntityAIThief
实现接口 ISpecialAI
名称 thief
默认权重 1
默认存值 float 16.0(逃跑 AI 距离)
互斥位 MOVEMENT + FACING
优先级 0

功能

主手为空且目标为玩家且玩家背包非空时,靠近玩家偷一个随机物品 → 投出 EntityItem 标记 ThiefUUIDMost/Least → 获得 60 tick 隐身 I。 得手后转用内部 EntityAIAvoidEntity(EntityPlayer, 16, 1.0, 1.2) 逃跑(玩家 HP > 1/3 maxHealth 时持续触发)。

触发条件

shouldExecute:
    target instanceof EntityPlayer && 主手为空 && hasItems(player)  → 接近玩家
    aiAvoid != null && (target == null || target.health > maxHealth/3) → 逃跑

物品归还(详见 AIHandler)

偷到的物品作为 EntityItem 投出,携带生物 UUID。下一次 TickEvent.WorldTickEvent 中由 AIHandler.equipToThief 把物品塞回主手并标记不掉落、不过期。

初始化(initialize)

  • 主手位(0)清空
  • 头盔位(4)装备 Thief's Cap 深蓝染色(0x102024)皮头盔,EffectHelper.addModifier 给 movementSpeed +0.1(op 1 乘性)
  • movementSpeed × +0.2(op 1 乘性)
  • setCanPickUpLoot(false)(关闭常规掉落拾取,避免重复触发)

hasItems

遍历玩家背包 36 槽,发现非空物品即返回 true。

removeRandomItem

  • 先统计玩家背包非空槽位数
  • 抽取 nextInt(count) 作为目标下标
  • 顺序遍历找到该槽位后 setInventorySlotContents(i, null)

resetTask

调用内部 aiAvoid.resetTask()(用 try/catch 兜底)。

相关条目