Seeker Arrow(追踪箭)

事实基准:/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。

基本信息

属性 值 来源
注册名 TwilightForest:tfSeekerArrow TwilightForestMod.java:883
实体 ID 常量 idVehicleSpawnSeekerArrow = 16 TwilightForestMod.java:192
注册形式 EntityRegistry.registerModEntity 直调(无 registerTFCreature 包装,故没有刷怪蛋) TwilightForestMod.java:881-888
跟踪距离 / 更新频率 150 / 1 TwilightForestMod.java:886-887
类 twilightforest.entity.EntitySeekerArrow(163 行) entity/EntitySeekerArrow.java:14
父类 net.minecraft.entity.projectile.EntityArrow entity/EntitySeekerArrow.java:14
产出方 ItemTFSeekerBow(追踪弓) item/ItemTFSeekerBow.java:22

数值

属性 值 来源
索敌距离 seekDistance 5.0 EntitySeekerArrow.java:17
每 tick 下落增量 motionY += 0.045F EntitySeekerArrow.java:150
发射速度倍率 velocity * 0.5F(比普通弓慢一半) ItemTFSeekerBow.java:22
单 tick 转向修正上限 X/Z ±2.0,Y ±1.0 EntitySeekerArrow.java:128-130
飞行判定阈值 速度平方 > 1.0 EntitySeekerArrow.java:158-161

生命值、攻击力、护甲等 SharedMonsterAttributes 在本类中没有设置 —— 它是投射物, 不继承 EntityLivingBase 的生物属性表。

追踪机制

onUpdate(EntitySeekerArrow.java:29-156)是本实体的全部逻辑:

  1. 索敌:以当前位置为原点,把飞行方向左右各偏 π/6 得到一个 5 格长的选择框, 上下各扩 3 格(EntitySeekerArrow.java:46-61)。
  2. 筛选目标:只锁定 EntityLivingBase 且排除玩家(EntitySeekerArrow.java:70); 用方向向量点积取夹角最小者(EntitySeekerArrow.java:84-91)。
  3. 转向:目标在身后(点积 ≥ 0)时放弃目标(EntitySeekerArrow.java:143-148); 在前方时按当前速度改写 motionX/Y/Z(EntitySeekerArrow.java:115-142)。

相关条目