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 那样会因高亮度加速老化。
相关条目
- Borer Essence(钻孔精华) - 本类唯一掉落物
- Dark Tower(黑暗高塔) - 高塔木方块所在的结构
- Tower Golem(高塔铁傀儡) - 同种塔木体系的高塔小怪
- Tower Ghast(高塔幽灵) - 同种塔木体系的另一只高塔小怪
- Tower Device(高塔装置) - 塔内机关方块
- Transform Powder(变形粉) - 本类的变形途径