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), 让客户端立即移除方块,不等区块更新。

相关条目