Ice Bomb(寒冰炸弹投射物)
事实基准:
/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册实体名 | TwilightForest:tfthrownice |
TwilightForestMod.java:873-880 |
| 实体 ID 常量 | idVehicleSpawnThrownIce = 15 |
TwilightForestMod.java:191 |
| 注册形式 | EntityRegistry.registerModEntity 直调(不经 TFCreatures) |
TwilightForestMod.java:873 |
| 追踪距离 / 更新频率 | 80 / 2 | TwilightForestMod.java:877-878 |
| 类 | twilightforest.entity.boss.EntityTFIceBomb |
entity/boss/EntityTFIceBomb.java(207 行) |
| 父类 | net.minecraft.entity.projectile.EntityThrowable |
同上 :22 |
| 所属结构 | 雪怪洞穴(yetiCave 特性 ID 17) |
TFFeature.java:104 |
⚠️ 注册名是
tfthrownice,不是Ice Bomb。TwilightForest:iceBomb是物品 (Ice Bomb(寒冰炸弹)),本条目是投射物实体。
数值
| 属性 | 值 | 来源 |
|---|---|---|
| 每 tick 区域伤害 | 1 点(TFDamageSources.iceBomb) |
EntityTFIceBomb.java:172 |
| 减速效果 | Potion.moveSlowdown,20 × 5 = 100 tick,强度 2 |
同上 :173-175 |
区域计时 zoneTimer 初值 |
80 tick | 同上 :24 |
| 区域伤害触发间隔 | 每 10 tick 一次(zoneTimer % 10 == 0) |
同上 :148 |
| 方块影响半径 | 3 格(球判定 lengthVector() <= range + 0.5) |
同上 :60、:68 |
| 实体伤害范围 | 包围盒 expand(3, 2, 3) | 同上 :156 |
初速 func_70182_d |
0.75F | 同上 :190-193 |
| 重力(未命中) | 0.025F | 同上 :199-201 |
| 重力(已命中) | 0F | 同上 :200 |
| 命中后速度衰减 | 三轴 *= 0.1 |
同上 :106-108 |
| 渲染方块 | Blocks.packed_ice |
同上 :185-187 |
AI 行为 / 特殊机制
投掷者:EntityTFYetiAlpha.attackEntityWithRangedAttack(EntityTFYetiAlpha.java:440),
以 setThrowableHeading(..., 0.75F, 12.0F) 抛出;
entity/EntityTFTroll.java 与 item/ItemTFIceBomb.java 也引用本类。
自毁保护:若投掷者是 EntityTFYetiAlpha 且落点距投掷者平方距离 ≤ 100(10 格),
直接 setDead()(:40-46)——雪怪不会炸到自己。
落地即冻结:onImpact 置 motionY = 0、hasHit = true,服务端执行
doTerrainEffects()(:38-54)。半径 3 格内(:65-72):
| 原方块 / 材质 | 变为 | 行号 |
|---|---|---|
Material.water |
Blocks.ice |
:79-81 |
Material.lava |
Blocks.obsidian |
:82-84 |
空气且 Blocks.snow_layer 可放置 |
Blocks.snow_layer |
:85-86 |
| 已是雪层且层数 < 7 | 层数 +1 | :88-90 |
区域伤害:已命中后每 tick zoneTimer-- 并调用 makeIceZone()(:111-113)。
客户端发 20 个 snowstuff 粒子(:137-145),服务端每 10 tick 对
expand(3,2,3) 内实体结算(:146-151、:154-179):
- 命中
EntityTFYeti:直接setDead()并在原位与上方一格各放一块Blocks.ice把尸体冻住(:161-169,源码注释留有TODO: make "frozen yeti" entity?)。 - 其它
EntityLivingBase:1 点TFDamageSources.iceBomb伤害 + 100 tick 强度 2 的缓慢。 - 投掷者本体被排除(
entity != this.getThrower(),:159)。
计时耗尽:zoneTimer <= 0 时 detonate(),但该方法只做 setDead()(:181-183)——
本投射物落地后不会再产生实体爆炸,全部伤害来自上面的区域结算。
粒子:飞行中每 tick 10 个 snowstuff 粒子(:125-133)。
刷怪蛋:走 EntityRegistry.registerModEntity 直调,不进入 TFCreatures.entityEggs,无刷怪蛋。
相关条目
- Alpha Yeti(阿尔法雪怪) - 主要投掷者,掉落
alphaFur与iceBomb - Ice Bomb(寒冰炸弹) - 同名物品,玩家可投掷
- 暮色森林世界生成特性(TFFeature) -
yetiCave特性 ID 17