Cube of Annihilation(湮灭之方投射物)
事实基准:
/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册名 | TwilightForest:tfcubeannihilation |
TwilightForestMod.java:907 |
| 实体 ID 常量 | idVehicleSpawnCubeOfAnnihilation = 19 |
TwilightForestMod.java:195 |
| 注册形式 | EntityRegistry.registerModEntity 直调(无刷怪蛋) |
TwilightForestMod.java:905-912 |
| 跟踪距离 / 更新频率 | 80 / 1 | TwilightForestMod.java:910-911 |
| 类 | twilightforest.entity.EntityTFCubeOfAnnihilation(252 行) |
entity/EntityTFCubeOfAnnihilation.java:25 |
| 父类 | EntityThrowable |
EntityTFCubeOfAnnihilation.java:25 |
| 体型 | setSize(1.1F, 1F)(客户端构造)/ setSize(1F, 1F)(其它构造) |
EntityTFCubeOfAnnihilation.java:32, 39, 46 |
| 抛出方 | ItemTFCubeOfAnnihilation(右键发射) |
item/ItemTFCubeOfAnnihilation.java:47 |
注册名是全小写
tfcubeannihilation,与同组的tfchainBlock(B大写)不一致 —— 两个都是registerModEntity直调的内部名,无刷怪蛋。
数值
| 属性 | 值 | 来源 |
|---|---|---|
| 命中生物伤害 | 10 | EntityTFCubeOfAnnihilation.java:62 |
| 每 tick 重力 | 0(完全无重力) | EntityTFCubeOfAnnihilation.java:53-56 |
| 初始速度 | 1.5F | EntityTFCubeOfAnnihilation.java:248-250 |
| 速度上限 | 0.5F | EntityTFCubeOfAnnihilation.java:216 |
| 速度不足时的衰减 | ×0.5 | EntityTFCubeOfAnnihilation.java:222-227 |
| 前飞目标距离 | 玩家视线方向 × 16F 格 | EntityTFCubeOfAnnihilation.java:189-197 |
| 破坏范围扩框 | 各轴 +0.2 | EntityTFCubeOfAnnihilation.java:71, 230 |
| 免疫火焰 | isImmuneToFire = true(全部 3 个构造都设) |
EntityTFCubeOfAnnihilation.java:33, 40, 47 |
| 回收判定 | 回到投掷者 1 格扩框内 | EntityTFCubeOfAnnihilation.java:165-178 |
特殊机制
持续破坏(每 tick)
与链球只在命中时破坏不同,湮灭之方在飞行途中每 tick 都调用
affectBlocksInAABB(EntityTFCubeOfAnnihilation.java:230)——
它是一条持续挖隧道的移动破坏方块。
破坏白名单与黑名单
canAnnihilate(EntityTFCubeOfAnnihilation.java:124-134):
| 条件 | 结果 |
|---|---|
TFBlocks.deadrock / castleBlock / forceField / thorns |
可摧毁(白名单) |
TFBlocks.castleMagic 且 meta ≠ 3 |
可摧毁 |
TFBlocks.castleMagic 且 meta = 3 |
不可摧毁 |
| 其它方块:爆炸抗性 < 8.0 且硬度 ≥ 0 | 可摧毁 |
白名单是城堡建材 —— 意味着它本就是为拆最终城堡设计的。 爆炸抗性阈值 8 比链球的 7 略宽松。
撞上打不开的方块就回程
hasHitObstacle 标志(EntityTFCubeOfAnnihilation.java:27, 113)一旦置位,
isReturning() 恒返回 true(EntityTFCubeOfAnnihilation.java:236-243),
方块开始向玩家飞回。另外玩家松手(不再使用物品)也会立即回程(第 241 行)。
同步包
每次成功摧毁方块都会向 64 格内客户端广播
TFGenericPacketHandler.makeAnnihilateBlockPacket(EntityTFCubeOfAnnihilation.java:109, 136-148),
让客户端立即移除方块,不等区块更新。
相关条目
- Cube of Annihilation(毁灭魔方) - 发射本实体的物品
- Cube Talisman(魔方护符) - 湮灭之方系道具