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 注释掉的调试输出。
相关条目
- Redcap(红帽地精) - 直接父类,本条目所有未列行为均继承自它
- Pinch Beetle(枯萎甲虫) - 同款
getTotalArmorValue写法 - Block&Chain Goblin(链球地精) - 同在骑士要塞刷怪的敌人