Redcap(红帽地精)

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

基本信息

属性 值 来源
注册实体名 TwilightForest:Redcap TwilightForestMod.java:455-460
实体 ID 常量 idMobRedcap = 180 TwilightForestMod.java:1084
蛋色 主 0x3b3a6c / 副 0xab1e14 TwilightForestMod.java:459-460
类 twilightforest.entity.EntityTFRedcap(177 行) entity/EntityTFRedcap.java:30
父类 net.minecraft.entity.monster.EntityMob 同上 :30
体型 setSize(0.9F, 1.4F) EntityTFRedcap.java:46
所属结构 小型丘陵 ID 1 / 中型丘陵 ID 2 / 大型丘陵 ID 3,三级刷怪表 TFFeature.java:134、:138、:149

中文名 红帽地精 取自 lang/zh_CN.lang:568。 这是暮色森林最基础的地精,其子类 Redcap Sapper(红帽工兵) 共享本类绝大部分行为。

数值

属性 值 来源
maxHealth 20.0 EntityTFRedcap.java:88
movementSpeed 0.28 EntityTFRedcap.java:89
attackDamage 源码中未设置 —— 检索方式:EntityTFRedcap.java 全文无 attackDamage,沿用 EntityMob 链上的父类默认 —
主手 Items.iron_pickaxe(共享静态 heldPick) EntityTFRedcap.java:32、:61
靴子 Items.iron_boots EntityTFRedcap.java:62
装备掉落概率 主手 0.2F、靴子 0.2F EntityTFRedcap.java:64-65
掉落物 getDropItem Items.coal(煤炭) EntityTFRedcap.java:107-110
TNTLeft 初值 0(普通红帽不会种 TNT) EntityTFRedcap.java:38
shy 初值 true EntityTFRedcap.java:48

AI 行为 / 特殊机制

怕火与怕 TNT(EntityTFRedcap.java:50-53):

  • 优先级 1 EntityAIAvoidEntity(EntityTNTPrimed, 2.0F, 1.0F, 2.0F) —— 主动避开点燃的 TNT;
  • 优先级 2 EntityAITFRedcapShy(this, 1.0F) —— 见下文;
  • 优先级 3 EntityAITFRedcapLightTNT(this, 1.0F) —— 主动点燃地上的 TNT。

点燃 TNT(entity/ai/EntityAITFRedcapLightTNT.java): shouldExecute 在 8 格内找到未点燃的 TNT 方块就触发(:25-44), startExecuting 把手里的东西换成火镰(EntityTFRedcap.heldFlint), 追过去点着;continueExecuting 一直持续到该坐标不再是 TNT 方块为止(:46-52)。

「害羞」:字段 shy 初始为 true(:48), isShy() 返回 shy && recentlyHit <= 0(:112-114)—— 只有没被攻击过时才算害羞。害羞行为由 entity/ai/EntityAITFRedcapShy.java 实现。

矿工装备与掉装备:手持铁镐 + 穿铁靴,两件都有 20% 概率掉落 (:61-65)—— 这是打红帽的主要收益来源。

音效(EntityTFRedcap.java:92-105):三个自定义音效事件 TwilightForest:mob.redcap.redcap、TwilightForest:mob.redcap.hurt、 TwilightForest:mob.redcap.die。

两级成就(onDeath,:159-175):暮色森林维度内被玩家击杀 → twilightHunter;再检查死亡点所在区块最近的 TFFeature, 若是 TFFeature.hill1(小型空心丘陵)额外触发 twilightHill1 (成就描述见 lang/en_US.lang:644)。

NBT 持久化(:139-154):TNTLeft 与 VillagerProfession 两项。 villagerProfession 是给女巫小屋变体用的(预设为 −1,本类不消费)。

死代码:EntityTFRedcap.java:44-45 两行注释掉的旧贴图 / moveSpeed 赋值。

相关条目