Flux Wand Trigger
基本信息
| 属性 | 值 |
|---|---|
| 类 | FluxWandTrigger(实现 thaumcraft.api.wands.IWandTriggerManager) |
| 唯一方法 | performTrigger(World, ItemStack, EntityPlayer, int×3, int, int) |
| 返回值 | 恒 true(无条件) |
| 注册目标 | ConfigBlocks.blockFluxGas meta 0、ConfigBlocks.blockFluxGoo meta 0 |
| 注册 API | WandTriggerRegistry.registerWandBlockTrigger(trigger, 1, block, 0) |
| 优先级参数 | 1 |
| 注册时机 | ProxyCommon.preInit(core/proxy/ProxyCommon.java:47-48) |
行为
FluxWandTrigger 是一个空触发器:整个 performTrigger 方法体只有一行 return true;(wand/augmentation/FluxWandTrigger.java:12-16),7 个参数全部未使用。
它在 preInit 中重复注册两次(Flux Gas 和 Flux Goo 各一次),意味着它完全替换了 Thaumcraft 原生的 Flux 清除触发器。原生 performTrigger 负责扣除玩家 Vis 来清除 Flux 方块;替换成恒 true 的空实现后,法杖右键 Flux 不再消耗 Vis 也不再清除方块 —— 方块永远不消失。
这是与 Taint Capping 方向相反的一套机制:Taint Capping 通过事件独立地把 Flux 变成 Vis,与被清空的原生触发器并存;而本条直接废掉了原生路径。
数值
| 数值 | 值 |
|---|---|
performTrigger 返回值 |
true(恒定) |
| 注册次数 | 2(Flux Gas / Flux Goo) |
| 注册优先级 | 1 |
| 目标 meta | 0(两个方块均只注册 meta 0) |
| 实现行数 | 5(1 行 return) |
源码缺陷
- 空实现覆盖原生逻辑。
WandTriggerRegistry.registerWandBlockTrigger同一 (block, meta) 重复注册会替换原 handler,导致原生 Flux 清除功能被静默禁用。这是明确的行为回退,且无任何注释说明意图。 - 无注释的警告缺失:
ProxyCommon.preInit里有/* WARNING - Removed try catching itself - possible behavior change. */(core/proxy/ProxyCommon.java:30-32),但指的是 try-catch 而非本注册,容易误导读者以为此处已有风险提示。 - 7 个参数全部未使用,包括
world/stack/player—— 若本意是「记录玩家信息供后续使用」,则未完成。 - 类名与行为不符:
FluxWandTrigger暗示处理 Flux,实际什么都不做。
相关条目
- Taint Capping - 同一套 Flux 机制的另一实现(保留功能)
- 事件处理器 -
onPlayerInteract中的 5³ Flux 预扫描