Firefly(萤火虫)
事实基准:
/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册实体名 | TwilightForest:Firefly |
TwilightForestMod.java:622-627 |
| 实体 ID 常量 | idMobFirefly = 213 |
TwilightForestMod.java:1115 |
| 蛋色 | 主 0xa4d316 / 副 0xbaee02(主色与 Naga 蛋相同) |
TwilightForestMod.java:626-627 |
| 类 | twilightforest.entity.passive.EntityTFMobileFirefly(185 行) |
entity/passive/EntityTFMobileFirefly.java:13 |
| 父类 | net.minecraft.entity.passive.EntityAmbientCreature |
同上 :13 |
| 体型 | setSize(0.5F, 0.5F) |
EntityTFMobileFirefly.java:23 |
| 所属结构 | 不属于任何结构 —— 位于洞穴生物刷怪表(spawnableCaveCreatureList),权重 10、8~8 只 |
biomes/TFBiomeBase.java:138 |
「Firefly」在本模组里是实体;
tile.TFFirefly.name=Firefly(lang/en_US.lang:104) 是火萤石方块,两者同名但不是同一个东西。另有Firefly Jar(萤火虫罐)方块作为装饰与光源。
数值
| 属性 | 值 | 来源 |
|---|---|---|
maxHealth |
6.0 | EntityTFMobileFirefly.java:74 |
| 垂直速度每 tick 衰减 | motionY *= 0.6 |
EntityTFMobileFirefly.java:92 |
飞行插值速度 speed |
0.05 | EntityTFMobileFirefly.java:117 |
| 水平插值上限 | signum * 0.5 |
EntityTFMobileFirefly.java:118、:120 |
| 垂直插值上限 | signum * 0.7,且速度是水平的 2 倍 |
EntityTFMobileFirefly.java:119 |
前移量 moveForward |
0.5F | EntityTFMobileFirefly.java:123 |
| 游荡目标重选概率 | rand.nextInt(30) == 0(1/30 每 tick) |
EntityTFMobileFirefly.java:105 |
| 游荡目标盒 | 自身周围 7×6×7,Y 偏移 −2~+4 | EntityTFMobileFirefly.java:108-111 |
| 目标失效判定 | 目标格非空气,或 posY < 1 |
EntityTFMobileFirefly.java:99-103 |
| 刷怪高度上限 | minY >= 63 直接拒绝 |
EntityTFMobileFirefly.java:164-165 |
| 刷怪方块光上限 | <= rand.nextInt(4) |
EntityTFMobileFirefly.java:170-172 |
| 声音音量 | 0.1F | EntityTFMobileFirefly.java:31 |
movementSpeed / attackDamage |
源码中未设置 —— 检索方式:本类 applyEntityAttributes 只动 maxHealth(:71-75),沿用 EntityAmbientCreature / EntityBat 链上的父类默认 |
— |
AI 行为 / 特殊机制
手写飞行 AI(EntityTFMobileFirefly.java:95-125):本类没有用任何
EntityAI* 任务,而是在 updateAITasks 里自己维护
currentFlightTarget(一个 ChunkCoordinates)。目标失效即重选;
距离目标平方 < 4.0 也提前重选(:105-107)。用 Math.signum 做
分段线性插值驱向目标,并按 atan2(motionZ, motionX) 反算朝向(:121-124)。
注意:currentFlightTarget 初始化为 null(:19),且从不写入 NBT,
所以读档后第一 tick 会重新选点。
重力豁免:onUpdate 每 tick 把 motionY 乘 0.6(:92)压制下沉;
fall 与 updateFallState 都被覆写为空方法(:139-147)——
不产生任何坠落伤害、不更新 fallDistance。
碰撞与触发器:canBePushed() 返回 false(:62-64)、
collideWithEntity 空实现(:66)、canTriggerWalking() 返回 false(:132-134)、
doesEntityNotTriggerPressurePlate() 返回 true(:153-155)——
既不推挤其他生物,也不触发压力板 / 绊线 / 破坏农作物。
发光:getGlowBrightness() 返回 sin(ticksExisted / 7.0) + 1F(:182-184),
客户端 getBrightnessForRender 恒返回满亮度 15728880(:176-180)。
声音:getSoundPitch 在父类基础上再乘 0.95(:37-40),
受伤 / 死亡复用蝙蝠音效 mob.bat.hurt / mob.bat.death(:45-57)。
无掉落覆写:本类没有 getDropItem / dropFewItems,
死亡掉落完全由 EntityAmbientCreature 链决定,本源码内无法核实具体物品。
相关条目
- Firefly(萤火虫) - 同名的火萤石方块,注意区分
- Firefly Jar(萤火虫罐) - 装饰与光源方块
- Bighorn Sheep(大角山羊) - 同在暮色森林基础群系被动刷怪表