BlockConfusingCharge
基本信息
| 属性 | 值 |
|---|---|
| 路径 | crazypants.enderzoo.charge.BlockConfusingCharge |
| 类型 | class(继承 BlockTNT,实现 ICharge) |
| 源码 | src/main/java/crazypants/enderzoo/charge/BlockConfusingCharge.java |
| 注册名 | blockConfusingCharge |
TNT 变体方块。点燃后生成 EntityPrimedCharge,爆炸时不破坏地形, 只对范围内玩家施加画面翻转式的「失明」效果。
爆炸效果(explode,第 100 行)
- 播放
random.explode音效,音量3F - 通过网络包让客户端执行
explodeEffect - 不创建
Explosion对象,因此不炸毁方块、不造成摔落 / 火焰伤害
失明效果(explodeEffect,第 117 行)
| 项 | 值 |
|---|---|
| 作用范围 | Config.confusingChargeRange(默认 6) |
| 基础持续 | Config.confusingChargeEffectDuration(默认 300 tick) |
| 衰减 | 距离越近越长:scale = exp(1 - d²/maxD²) / e,duration = ceil(300 * scale) |
| 客户端粒子 | 100 个 EntitySpellParticleFX,颜色取自药水 damage 8231 |
派生方块
- BlockEnderCharge — 覆写
explode,改为传送 - BlockConcussionCharge — 同时施加失明 + 传送
缺陷
create() 中 先注册网络包与 EntityPrimedCharge 实体,后判断 confusingChargeEnabled
(BlockConfusingCharge.java:41-60)。而 BlockEnderCharge /
BlockConcussionCharge 的 create() 不会补做这一步。
因此若只开 EnderCharge 而关 ConfusingCharge,EntityPrimedCharge 将未注册。