Tower Termite(高塔蠹虫)

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

基本信息

属性 值 来源
注册实体名 TwilightForest:Tower Termite TwilightForestMod.java:648
英文显示名 Towerwood Borer(entity.TwilightForest.Tower Termite.name) assets/twilightforest/lang/en_US.lang:604
实体 ID 常量 idMobTowerTermite = 218 TwilightForestMod.java:1119(声明在 :155)
蛋色 主 0x5d2b21 / 副 0xaca03a TwilightForestMod.java:650-651
注册形式 TFCreatures.registerTFCreature → 追踪 80 / 更新 3 entity/TFCreatures.java:23
类 twilightforest.entity.EntityTFTowerTermite(246 行) entity/EntityTFTowerTermite.java:28
父类 net.minecraft.entity.monster.EntityMob 同上 :28
体型 setSize(0.3F, 0.7F) 同上 :36
所属结构 不在任何 TFFeature 刷怪表;由「受感染高塔木」方块在被玩家破坏时释放 block/BlockTFTowerWood.java:154-159

🚨 本条目不属于冰霜高塔,见 Tower Golem 同款说明。 本类与黑暗高塔的关系是间接的:它靠塔身木材方块 BlockTFTowerWood 自我增殖, 而不是靠 TFFeature 刷怪表。全 src/main/java 检索 EntityTFTowerTermite, 命中仅 BlockTFTowerWood(释放)、ItemTFTransformPowder(变形表)、 TFClientProxy(渲染绑定)、本文件四处,TFFeature 里没有它。

数值

属性 值 来源
maxHealth 15.0 EntityTFTowerTermite.java:62
movementSpeed 0.27 同上 :63
attackDamage 5.0 同上 :64
召友冷却 allySummonCooldown 20 tick 同上 :112-115
召友搜索范围 x/z ±10、y ±5(逐层逐格螺旋展开) 同上 :149-151
掘地冷却 无冷却,无目标且寻路器无路时每 tick 尝试 同上 :134-136
掉落 getDropItem TFItems.borerEssence 同上 :227-229
生物属性 getCreatureAttribute EnumCreatureAttribute.ARTHROPOD 同上 :242-244
experienceValue 源码中未设置(全文检索无命中),沿用 EntityMob 链上的父类默认 —

AI 行为 / 特殊机制

任务表(:39-43):0 EntityAISwimming; 1 EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false); 2 EntityAIWander(this, 1.0D);3 EntityAIWatchClosest(this, EntityPlayer.class, 8.0F); 4 EntityAILookIdle(this)。 目标表(:44-45):1 EntityAIHurtByTarget(this, true)(注意是 true,会互相仇恨)、 2 EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)。 isAIEnabled() 恒 true(:52-54);canTriggerWalking() 覆写为 false,不触发脚下方块的 onEntityWalking(:71-73)。

受到伤害 → 召唤同伙(attackEntityFrom,:108-119):若伤害来源是 EntityDamageSource(即有实体来源,如箭、火球、玩家直接攻击)或 DamageSource.magic, 则把 allySummonCooldown 置 20。倒计时归零后 tryToSummonAllies()(:143-178) 在 x/z ±10、y ±5 的范围内逐格找 TFBlocks.towerWood 且 meta 为 BlockTFTowerWood.META_INFESTED(值 4,BlockTFTowerWood.java:38)的方块, 逐个引爆(设为空气 + 调用 onBlockDestroyedByPlayer,:162-168), 每引爆一个有 50% 概率提前收手(:170-173)。

无目标就钻进木头(updateAITasks,:134-136 → tryToBurrow,:183-201): 在无攻击目标且 getNavigator().noPath() 时,随机取 6 个面之一, 若该格是 meta 为 0 的普通高塔木(canBurrowIn,:206-208), 则把它变成 META_INFESTED、播爆炸粒子、然后 setDead() 自杀。 这就是感染链的起点:一只蠹虫钻进去 → 该木块变成受感染态 → 玩家打碎时放出新蠹虫 (BlockTFTowerWood.java:153-162,同时把该木块的硬度降到 0.75, BlockTFTowerWood.java:142-147)。

渲染朝向:onUpdate 每 tick 把 renderYawOffset = rotationYaw(:234-237)—— 身体整体转向而非只有头部模型转动。

声音:完全复用蠹虫(silverfish)的三个音效 mob.silverfish.say / mob.silverfish.hit / mob.silverfish.kill(:87-103), 脚步 mob.silverfish.step 音量仅 0.15F(:220-222)。

变形:ItemTFTransformPowder 中与原版 EntitySilverfish 双向变形 (ItemTFTransformPowder.java:72)。

死代码 / 无效代码:

  • :35 的 // this.texture = ...towertermite.png、:37 的 // this.moveSpeed = 0.27F; 均为注释, 移动速度的生效来源是 applyEntityAttributes(:63);
  • isInfestedBlock(Block, int)(:213-215)全 mod 无任何调用点——召友逻辑内联写了 同样的判断(:155),这个方法是残留;
  • findPlayerToAttack()(:79-82)在本文件内无调用点,且构造函数用的是 EntityAINearestAttackableTarget(:45),该方法实际不参与索敌;
  • 本类未覆写 onLivingUpdate,因此不像 Tower Ghast 那样会因高亮度加速老化。

相关条目