Tower Golem(高塔铁傀儡)

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

基本信息

属性 值 来源
注册实体名 TwilightForest:Tower Golem TwilightForestMod.java:642
英文显示名 Carminite Golem(entity.TwilightForest.Tower Golem.name) assets/twilightforest/lang/en_US.lang:603
实体 ID 常量 idMobTowerGolem = 216 TwilightForestMod.java:1118(声明在 :154)
蛋色 主 0x6b3d20 / 副 0xe2ddda TwilightForestMod.java:644-645
注册形式 TFCreatures.registerTFCreature → 追踪 80 / 更新 3 entity/TFCreatures.java:23
类 twilightforest.entity.EntityTFTowerGolem(216 行) entity/EntityTFTowerGolem.java:26
父类 net.minecraft.entity.monster.EntityMob 同上 :26
体型 setSize(1.4F, 2.9F) 同上 :34
所属结构 黑暗高塔(TFFeature.darkTower,特性 ID 14),权重 10、4~4 只 TFFeature.java:170

🚨 本条目不属于冰霜高塔。 类名里的 Tower 指的是「塔内通用小怪」, 与 Tower Ghast、Tower Termite 同挂黑暗高塔刷怪表。 冰霜高塔(iceTower,特性 ID 7、size 2)的刷怪条目只有三个: EntityTFSnowGuardian / EntityTFIceShooter / EntityTFIceExploder (TFFeature.java:198-200),与本类无关。

本类不在任何群系刷怪表中:全 src/main/java 检索 EntityTFTowerGolem, 命中仅 TwilightForestMod(注册)、TFFeature:170(刷怪表)、 TFClientProxy(渲染绑定)、ModelTFTowerGolem / RenderTFTowerGolem(客户端)四处。

数值

属性 值 来源
maxHealth 40.0 EntityTFTowerGolem.java:60
movementSpeed 0.25 同上 :61
attackDamage 9.0 同上 :62
击飞高度 命中成功后目标 motionY += 0.4 同上 :85
护甲值 getTotalArmorValue 父类值 +2,上限 20 同上 :69-77
挥击动画计时 attackTimer 10(每次挥击重置,onLivingUpdate 递减) 同上 :80、:135-137、:177
单区块上限 getMaxSpawnedInChunk 16 同上 :212-214
dropFewItems:铁锭 rand.nextInt(3) 枚 Items.iron_ingot(0~2) 同上 :196-200
dropFewItems:高塔木 rand.nextInt(3) 个 TFBlocks.towerWood(0~2) 同上 :202-206
experienceValue 源码中未设置(本类与 EntityTFTowerGolem.java 全文检索 experienceValue 无命中),沿用 EntityMob 链上的父类默认 —

AI 行为 / 特殊机制

任务表(:38-41):1 EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false); 2 EntityAIWander(this, 1.0F);3 EntityAIWatchClosest(this, EntityPlayer.class, 6.0F) 与 3 EntityAILookIdle(this)(优先级 3 被占用两次,后加入的覆盖前者)。 目标表(:42-43):1 EntityAIHurtByTarget(this, false)、 2 EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)。 getNavigator().setAvoidsWater(true)(:37);isAIEnabled() 恒 true(:50-52)。

命中反馈广播:attackEntityAsMob 每次挥击把 attackTimer 置 10 并 worldObj.setEntityState(this, (byte) 4)(:80-81);客户端 handleHealthUpdate 收到字节 4 时重置计时器并播放 mob.irongolem.throw(:176-178)。ModelTFTowerGolem:132 读取 getAttackTimer() 驱动手臂抬起动画。

顺手打怪:collideWithEntity 中若撞到 IMob 且 getRNG().nextInt(10) == 0, 会把它设为攻击目标(:120-126)。

粒子:onLivingUpdate 在水平速度平方 > 2.5e-7 且 rand.nextInt(5) == 0 时, 于脚下 0.2 格处生成 4 个 blockcrack 粒子(模拟踩碎方块,:139-158); 另有 50% 概率生成 1 个 reddust 粒子(:161-170)。

声音:存活音为字符串 "none"(:95-97)——即本类不播存活音; 受伤 / 死亡 / 脚步分别复用铁傀儡的 mob.irongolem.hit / mob.irongolem.death / mob.irongolem.walk,func_145780_a 被覆写为无视方块类型直接播放(:102-118)。

死代码::32 的 // this.texture = ...carminitegolem.png 与 :35 的 // this.moveSpeed = 0.25F; 均为注释。移动速度的生效来源是 applyEntityAttributes(:61),不是那行注释。

相关条目