Tiny Bird(微小鸟)
事实基准:
/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册实体名 | TwilightForest:Tiny Bird |
TwilightForestMod.java:522-526 |
| 实体 ID 常量 | idMobTinyBird = 194 |
TwilightForestMod.java:1097 |
| 蛋色 | 主 0x33aadd / 副 0x1188ee |
TwilightForestMod.java:525-526 |
| 注册形式 | TFCreatures.registerTFCreature → 追踪 80 / 更新 3 |
TFCreatures.java:23、TwilightForestMod.java:522 |
| 类 | twilightforest.entity.passive.EntityTFTinyBird(349 行) |
entity/passive/EntityTFTinyBird.java:26 |
| 父类 | twilightforest.entity.passive.EntityTFBird → net.minecraft.entity.passive.EntityAnimal |
同上 :26、entity/passive/EntityTFBird.java:8 |
| 体型 | setSize(0.5F, 0.9F) |
EntityTFTinyBird.java:45 |
| 所属结构 | 不属于任何结构,仅在暮色森林基础群系刷怪表,权重 15、4~8 只 | biomes/TFBiomeBase.java:121 |
数值
| 属性 | 值 | 来源 |
|---|---|---|
maxHealth |
1.0 | EntityTFTinyBird.java:77 |
movementSpeed |
0.20000001192092896 | 同上 :78 |
getRenderSizeModifier |
0.3F | 同上 :161 |
| 颜色类型 | 构造时 rand.nextInt(4),对应 4 张渲染贴图 |
同上 :59、client/renderer/entity/RenderTFTinyBird.java:30-37 |
寻路权重 leaves |
200.0F | 同上 :180-182 |
寻路权重 wood |
15.0F | 同上 :183-185 |
寻路权重 grass |
9.0F | 同上 :186-188 |
| 其它方块寻路权重 | getLightBrightness - 0.5F |
同上 :190 |
| 起飞概率(站着时) | rand.nextInt(200) == 0 |
同上 :224 |
| 降落概率(飞行中) | rand.nextInt(10) == 0 |
同上 :280 |
| 飞行目标盒 | 水平 ±6 格、垂直 −2 ~ +4 格 | 同上 :263-266 |
| 飞行时垂直阻尼 | motionY *= 0.6 |
同上 :213 |
| 惊飞掉落冷却 | 20 000 ms | 同上 :30、:239 |
| DataWatcher 索引 | DATA_BIRDTYPE = 16、DATA_BIRDFLAGS = 17 |
同上 :28-29、:67-68 |
| 追踪距离 / 更新频率 | 80 / 3 | TFCreatures.java:23 |
继承:坠落伤害免疫 —— 父类
EntityTFBird.fall(float)方法体为空 (EntityTFBird.java:71-72),可从任意高度落下。attackDamage:本类无attackDamage设置,也无任何攻击 AI,不列。
AI 行为 / 特殊机制
任务表(:52-56):0 EntityAITFBirdFly;1 EntityAITempt(1.0F, Items.wheat_seeds, true);
2 EntityAIWander(1.0F);3 EntityAIWatchClosest(EntityPlayer, 6F);4 EntityAILookIdle。
飞行是自写的:EntityAITFBirdFly 只是触发器,真正的飞行逻辑在覆写的
updateAITasks() 里(:218-293)—— 停栖时按 1/200 概率起飞;飞行时以 1/30 概率或
接近目标(距离平方 < 4.0)时重选 currentFlightTarget,再按
(signum(d) × 系数 - motion) × 0.1 三轴收敛(:258-278)。飞行中每 tick
motionY *= 0.6 使其趋于水平(:212-214)。
会被吓飞:isSpooked() —— hurtTime > 0,或 4 格内玩家手持的不是 wheat_seeds
(空手也算吓跑)(:298-303)。被吓飞时 motionY = 0.4 并播放音效 1015(:233-237)。
⚠️ 本体的惊飞掉落是
null:getSpookedDrop()直接return null(:344-348), 所以 Tiny Bird 被吓飞什么也不掉。只有子类EntityTFRaven覆写为 20% 概率掉 1 个TFItems.feather(entity/passive/EntityTFRaven.java:110-112)。 20 秒冷却用System.currentTimeMillis()而非游戏时间,源码注释说明是为了防止 读档刷新掉落(EntityTFTinyBird.java:38、:239-245)。
颜色持久化:NBT 键 BirdType(:109-122),渲染端 0 = 麻雀、1 = 蓝知更鸟、
2 = 北美红雀、3 = 苍头白斑鹀(RenderTFTinyBird.java:30-37)。
完全不可推动:canBePushed() 返回 false,collideWithEntity(Entity) 与
func_85033_bc() 都覆写为空方法体(:332-341)—— 不会被推挤、也不会推动别人。
canDespawn() 返回 false,永不消失(:167-170)。
落点判定:isLandableBlock 要求非空气,且是树叶或顶面实心方块(:305-316)。
声音:TwilightForest:mob.tinybird.chirp / mob.tinybird.hurt /
死亡声复用 mob.tinybird.hurt(:132-154)。
成就:暮色森林维度内被玩家击杀触发 twilightHunter(:196-203)。
子类:EntityTFRaven extends EntityTFTinyBird,已单独注册为独立的实体
(TwilightForestMod.java:540),不计入本条目。
相关条目
- Forest Squirrel(林中松鼠) - 同刷怪表
- Forest Bunny(兔子) - 同刷怪表
- Hedge Spider(树篱蜘蛛) - 同刷怪表的另一只小动物