WinterWolf(寒冬狼)
事实基准:
/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册实体名 | TwilightForest:WinterWolf(无空格、无驼峰) |
TwilightForestMod.java:700-704 |
| 实体 ID 常量 | idMobWinterWolf = 227 |
TwilightForestMod.java:1129 |
| 蛋色 | 主 0xdfe3e5 / 副 0xb2bcca |
TwilightForestMod.java:703-704 |
| 注册形式 | TFCreatures.registerTFCreature → 追踪 80 / 更新 3 |
TFCreatures.java:23、TwilightForestMod.java:700 |
| 类 | twilightforest.entity.EntityTFWinterWolf(170 行) |
entity/EntityTFWinterWolf.java:22 |
| 父类 | twilightforest.entity.EntityTFHostileWolf → net.minecraft.entity.passive.EntityWolf |
同上 :22、entity/EntityTFHostileWolf.java:21 |
| 体型 | setSize(1.4F, 1.9F) |
EntityTFWinterWolf.java:30 |
| 所属结构 | 不属于任何结构,仅在雪地群系刷怪表,权重 5、1~4 只 | biomes/TFBiomeSnow.java:53 |
注册名是
WinterWolf(一个词),不是 “Winter Wolf”。查实体用/summon TwilightForest:WinterWolf。
数值
| 属性 | 值 | 来源 |
|---|---|---|
maxHealth |
30.0(父类 EntityTFHostileWolf 先设为 10.0,本类再覆盖) |
EntityTFWinterWolf.java:49、EntityTFHostileWolf.java:39 |
近战伤害 getAttackStrength |
6 | EntityTFWinterWolf.java:60-62 |
attackDamage 属性 |
源码中未设置 —— 本类未写 attackDamage;实际伤害由 getAttackStrength 硬编码 6 |
同上 :57-71 |
movementSpeed |
源码中未设置,沿用 EntityWolf 的原版值(EntityTFWinterWolf.java 全文无 movementSpeed,EntityTFHostileWolf.java 亦无) |
同上 |
| 吐息射程 / 时长 / 概率 | 5F / 30 / 0.1F | 同上 :34 |
BREATH_DURATION |
10 —— 死代码,见下 | 同上 :25 |
BREATH_DAMAGE |
2 —— 死代码,见下 | 同上 :26 |
| 吐息粒子 | 每 tick 10 个 snowstuff,散布 5~7.5、速度 3.0~3.15 |
同上 :90-107 |
getDropItem |
TFItems.arcticFur |
同上 :166-168 |
getSoundPitch |
0.6 + (rand - rand) × 0.2 | 同上 :129 |
| DataWatcher 索引 | BREATH_FLAG = 21 |
同上 :24、:54 |
| 追踪距离 / 更新频率 | 80 / 3 | TFCreatures.java:23 |
AI 行为 / 特殊机制
🚨
doBreathAttack的方法体被整段注释掉 —— 寒冬狼的吐息不造成任何伤害,也不点燃。EntityTFWinterWolf.java:143-149:public void doBreathAttack(Entity target) { // if (!target.isImmuneToFire() && target.attackEntityFrom(DamageSource.inFire, BREATH_DAMAGE)) // { // target.setFire(BREATH_DURATION); // } }因此
BREATH_DAMAGE = 2与BREATH_DURATION = 10(:25-26)都是死代码。 吐息 AI(EntityAITFBreathAttack)仍会正常播放:喷 10 个snowstuff粒子/tick (:82-108)并播放mob.ghast.fireball音效(:115-123),但没有伤害。 这也解释了为什么它敢 30 点血却只有 6 点近战。
清空父类任务表重建(:32-40):
this.tasks.taskEntries.clear() 与 this.targetTasks.taskEntries.clear() 之后重加 ——
0 EntityAISwimming、2 EntityAITFBreathAttack(1.0F, 5F, 30, 0.1F)、
3 EntityAIAttackOnCollide(EntityPlayer, 1.0F, false)、6 EntityAIWander(1.0F);
目标表 1 EntityAIHurtByTarget(false)、2 EntityAINearestAttackableTarget(EntityPlayer)。
(父类 EntityTFHostileWolf 额外加的第 4 号目标任务因此被移除。)
近战不走护甲:attackEntityAsMob 被覆写为直接 DamageSource.causeMobDamage(this) × 6,
不经过父类的护甲 / 附魔计算(:64-71)。
呼吸状态:isBreathing() / setBreathing() 走 DataWatcher 索引 21,值 0/1
(:132-141)。
雪地无视光照刷怪:isValidLightLevel 覆写 —— 若所在群系是 TFBiomeBase.tfSnow
直接返回 true(:154-164)。
⚠️ 本类没有覆写
getCanSpawnHere,因此实际走父类EntityTFHostileWolf.getCanSpawnHere()(EntityTFHostileWolf.java:66-80): 近树篱迷宫时跳过光照检查,并且额外要求不在任何液体中;其它情况才调用 (被覆写的)isValidLightLevel()。
继承来的行为:
- 和平难度即死 —— 父类
onUpdate在PEACEFUL下直接setDead()(EntityTFHostileWolf.java:43-48)。 - 永不可繁殖 —— 父类
isBreedingItem恒返回false(EntityTFHostileWolf.java:111-113)。 - 不可挤奶 —— 父类
interact恒返回false(EntityTFHostileWolf.java:119-121)。 - 成就
twilightHunter—— 本类无onDeath,继承父类 (EntityTFHostileWolf.java:54-60)。
相关条目
- Hostile Wolf(敌意狼) - 直接父类
- Yeti(雪怪) - 同雪地群系的另一只
- Alpha Yeti(阿尔法雪怪) - 雪怪洞穴塔主
- Arctic Fur(极地毛皮) - 唯一掉落物