Falling Ice(坠落冰块)
事实基准:
/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册名 | TwilightForest:tffallingice |
TwilightForestMod.java:867 |
| 实体 ID 常量 | idVehicleSpawnFallingIce = 14 |
TwilightForestMod.java:190 |
| 注册形式 | EntityRegistry.registerModEntity 直调(无刷怪蛋) |
TwilightForestMod.java:865-872 |
| 跟踪距离 / 更新频率 | 80 / 3 | TwilightForestMod.java:870-871 |
| 类 | twilightforest.entity.boss.EntityTFFallingIce(213 行,在 boss 包但不是 Boss) |
entity/boss/EntityTFFallingIce.java:18 |
| 父类 | net.minecraft.entity.Entity(裸 Entity,无 AI、无属性) |
EntityTFFallingIce.java:18 |
| 体型 | setSize(2.98F, 2.98F) |
EntityTFFallingIce.java:27 |
| 外观方块 | Blocks.packed_ice |
EntityTFFallingIce.java:206-208 |
| 唯一生成方 | EntityTFYetiAlpha.makeBlockFall() |
entity/boss/EntityTFYetiAlpha.java:429 |
| 生成位置 | 头顶正上方第一个非空气格,且实体从 by - 3 处生成 |
EntityTFYetiAlpha.java:389-396, 429 |
类放在
twilightforest.entity.boss包里,但它是环境破坏型投射物, 没有生命值、没有 AI、不能被/kill以外的常规手段处理 —— 归类只是文件位置,不表示它是塔主。
数值
| 属性 | 值 | 来源 |
|---|---|---|
悬停时间 HANG_TIME |
100 tick(先在空中挂 5 秒) | EntityTFFallingIce.java:20, 74-76 |
| 坠落时每 tick 重力 | 0.04 | EntityTFFallingIce.java:75 |
| 速度衰减 | 每轴 ×0.98 | EntityTFFallingIce.java:79-81 |
| 落地反弹 | motionY *= -0.5,水平 ×0.7 |
EntityTFFallingIce.java:87-89 |
每次伤害系数 hurtAmount |
10 | EntityTFFallingIce.java:29 |
伤害上限 hurtMax |
30 | EntityTFFallingIce.java:30 |
| 伤害公式 | min(floor(落差 - 1.0) × 10, 30) |
EntityTFFallingIce.java:133-145 |
| 可破坏方块 | 原版 ice / packed_ice / stone |
EntityTFFallingIce.java:180-181 |
| 破坏范围扩框 | X/Z 各 +0.5 | EntityTFFallingIce.java:113 |
| 落地粒子数 | 200 个 blockcrack_<packed_ice>_0 |
EntityTFFallingIce.java:149-155 |
| 拖尾粒子 | 每 tick 2 个 snowwarning |
EntityTFFallingIce.java:118-127 |
特殊机制
悬停后坠落
onUpdate(EntityTFFallingIce.java:67-116)先自增 fallTime,
只有当 fallTime > 100 才开始施加重力(EntityTFFallingIce.java:72-76)。
这意味着冰块会先在生成点悬停约 5 秒,给玩家反应时间。
坠落伤害
fall(float)(EntityTFFallingIce.java:133-160)用原版的落体距离算伤害,
对周围 2 格扩框内所有实体造成 fallingBlock 伤害,但
EntityTFYetiAlpha 被显式豁免(EntityTFFallingIce.java:141)——
雪人首领扔的冰块砸不到自己。
连锁消除
onUpdate 里会检查同区域更「老」的 EntityTFFallingIce 并将其清除
(EntityTFFallingIce.java:105-112)—— 冰块不会互相堆叠重叠。
破坏地形
destroyIceInAABB(EntityTFFallingIce.java:165-186)把范围内的
ice / packed_ice / stone 直接替换为 air(flag 3)。
它会挖掉基岩以上的石头 —— 雪人首领战可以把地面打穿。
落地即毁
onGround 时 setDead()(EntityTFFallingIce.java:86-92),
所以只有下落过程中才可被碰撞。
其它
entityInit()被覆写为空方法体(EntityTFFallingIce.java:55)—— 不注册任何 DataWatcher 键。readEntityFromNBT/writeEntityToNBT都是空实现(第 188-196 行), 冰块不保存任何状态。canTriggerWalking()返回false(EntityTFFallingIce.java:51-53)。
相关条目
- Alpha Yeti(雪人首领) - 唯一会生成冰块实体的塔主
- Snow Queen(雪之女王) - 同为冰霜系 Boss