Redcap Sapper(红帽工兵)

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

基本信息

属性 值 来源
注册实体名 TwilightForest:Redcap Sapper TwilightForestMod.java:604-609
实体 ID 常量 idMobRedcapSapper = 210 TwilightForestMod.java:1112
蛋色 主 0x575d21 / 副 0xab1e14(副色与 Redcap 相同) TwilightForestMod.java:608-609
类 twilightforest.entity.EntityTFRedcapSapper(78 行) entity/EntityTFRedcapSapper.java:16
父类 twilightforest.entity.EntityTFRedcap 同上 :16
所属结构 中型丘陵 ID 2 / 大型丘陵 ID 3 / 骑士要塞 ID 15 TFFeature.java:139、:150、:191

整个类只有 78 行,绝大部分行为继承自 Redcap(红帽地精)。本条目只列与父类的差异。

数值

属性 值 来源
maxHealth 30.0 EntityTFRedcapSapper.java:37
父类 EntityTFRedcap maxHealth 20.0(已被本类覆写,不生效) EntityTFRedcap.java:88
movementSpeed 0.28(继承父类,本类未覆写) EntityTFRedcap.java:89
TNTLeft 初值 3(父类为 0) EntityTFRedcapSapper.java:25
靴子 TFItems.ironwoodBoots(父类用原版 iron_boots) EntityTFRedcapSapper.java:27
主手 TFItems.ironwoodPick(父类用原版 iron_pickaxe) EntityTFRedcapSapper.java:28
护甲值 super.getTotalArmorValue() + 2,上限 20 EntityTFRedcapSapper.java:43-52
种 TNT 触发距离平方 < 25(即 5 格内) EntityAITFRedcapPlantTNT.java:22
中型丘陵刷怪权重 1(同区域的 Redcap 是 10) TFFeature.java:139
大型丘陵刷怪权重 2 TFFeature.java:150
骑士要塞刷怪权重 2 TFFeature.java:191

AI 行为 / 特殊机制

种 TNT(EntityTFRedcapSapper.java:21):在父类任务表上插入优先级 4 EntityAITFRedcapPlantTNT(this),正好卡在父类的「点燃 TNT」(优先级 3) 与「近战」(优先级 5)之间。判定条件见 entity/ai/EntityAITFRedcapPlantTNT.java:17-28:有攻击目标、TNTLeft > 0、 距离平方 < 25、目标没有正看着它、8 格内没有已点燃的 TNT、5 格内没有未点燃的 TNT 方块。执行时(:34-52)先把手里的镐换成 EntityTFRedcap.heldTNT, 若脚下是空气就消耗 1 个 TNT 摆在自己脚下、鸣叫一声,任务结束再换回 getPick()。

getPick() 每次新建物品栈(EntityTFRedcapSapper.java:54-57): return new ItemStack(TFItems.ironwoodPick); —— 父类的 heldPick 是 public static 共享实例(EntityTFRedcap.java:32),子类刻意不用它, 每次调用都 new 一个新的(功能等价,只是多一次对象分配)。

装备覆盖顺序(:27-28):父类构造函数先跑(把铁镐/铁靴装上并设好 0.2F 掉落率), 子类构造再把两个槽位换成铁木装备 —— 装备掉落概率 0.2F 被继承保留。

护甲:getTotalArmorValue 在父类值上 +2 并封顶 20 (EntityTFRedcapSapper.java:43-52),与 Pinch Beetle(枯萎甲虫) 的写法完全相同。

二级成就(onDeath,:62-77):父类的 onDeath 先跑 (twilightHunter + hill1 检查),子类再加一条 —— 死亡点若在 TFFeature.hill2(中型空心丘陵)额外触发 twilightHill2 (成就描述见 lang/en_US.lang:646)。⚠️ 父类那条 hill1 检查对工兵永远不成立 (工兵不出现在 hill1 刷怪表里),是继承来的无效分支。

死代码:EntityTFRedcapSapper.java:23 注释掉的 // texture = ... "redcapsapper.png";;:68 注释掉的调试输出。

相关条目