WandOverlord(地狱火魔杖触发)

[!INFO] 实现类:WandOverlord.java:14-44(implements IWandTriggerManager) 注册真源:Forbidden.java:88-90(postInit)

WandOverlord 是本 mod 唯一的魔杖方块触发器。它让玩家在完成 HELLFIRE 研究后,用一根不带聚焦的魔杖右键下界岩或黑曜石顶部,以消耗精华为代价在其上方点燃火焰——替代随身携带打火石。

基本信息

属性 值
实现类 WandOverlord implements IWandTriggerManager
触发方块 Blocks.obsidian(黑曜石)、Blocks.netherrack(下界岩)
触发了然 1(event == 1 && side == 1)
精华消耗 Aspect.FIRE(IGNIS)2 点 / 次
前置研究 HELLFIRE
代价物品 火药筒 ×1(仅用于 canPlayerEdit 的物品判定,不消耗)
wandLord = new WandOverlord();
WandTriggerRegistry.registerWandBlockTrigger(wandLord, 1, Blocks.obsidian, 0);
WandTriggerRegistry.registerWandBlockTrigger(wandLord, 1, Blocks.netherrack, 0);

(Forbidden.java:88-90)

两个方块注册的是同一个 WandOverlord 实例、同一个 WandOverlord.ordinal 值 1。

触发条件

performTrigger(WandOverlord.java:16-21)只在 event == 1 && side == 1 时委派给 hellfire(),否则直接返回 false(即不消耗任何东西)。

hellfire()(:23-43)的 5 个前置条件全部短路,任一不满足即返回 false:

# 条件 源码
1 服务端(world.isRemote 为假) :24
2 魔杖非空 :24
3 魔杖是 ItemWandCasting :25
4 魔杖没有装聚焦(getFocusItem(wand) != null 则失败) :26
5 玩家已完成 HELLFIRE 研究 :27
6 player.canPlayerEdit(x, y, z, side, fire_charge) :28

行为

条件全部满足后(:31-43):

  1. 检查目标正上方 y + 1 是空气(world.isAirBlock)
  2. 调用 consumeVis(wand, player, Aspect.FIRE, 2, false) 扣 2 点 IGNIS;返回 false(精华不足)时整体失败
  3. 播放点燃音效 fire.ignite,音量 1.0F,音高 rand() * 0.4F + 0.8F(:33-39)
  4. 在 x, y+1, z 放置 Blocks.fire(:40)
  5. player.swingItem() 挥手动画(:41)
  6. 返回 true

放置的不是火把——是真正的火焰方块,因此会自行熄灭,也会烧毁方块。

[!NOTE] 条件 6 传入的 Items.fire_charge 仅用于 canPlayerEdit 的物品权限判定(决定玩家是否有权在该坐标放置),代码中没有 consumeInventoryItem 或 damageItem,即火药筒不会被扣除。

研究关联

HELLFIRE 研究(ForbiddenResearch.java:179-188):

字段 值
分类 FORBIDDEN
精华需求 FIRE 3 + NETHER 4 + TRAVEL 2
图标 Blocks.fire
页数 1 页(forbidden.research_page.HELLFIRE.1)
特性 .setRound()、.setHidden()、.setAspectTriggers(DarkAspects.NETHER)
前置 NETHERSHARDS

.setHidden() 意味着该研究不出现在研究列表中,只能靠扫描 NETHER(下狱)精华发现。研究页正文明确描述了本机制(en_US.lang:374):

“Right click with a focus-less wand in your hand on the top of netherrack or obsidian to light a flame using some Ignis from your wand.”

源码缺陷

  • canPlayerEdit 传的是 Items.fire_charge(火药筒)而非火柴:作为放置权限的判定物品语义正确(火药筒能点燃),但与研究页描述的"flint and steel"不是同一物品,属用物品 ID 作权限令牌的近似写法。
  • aspectTriggers 是 NETHER 而非本 mod 自有元素:研究解锁实际靠 Thaumcraft 原生的 NETHER(下界)精华,而 mod 自己的 infernus 元素同名但属不同对象(见暗黑元素)。两者拉丁名都是 infernus 级别不同,易混淆。
  • 两个 registerWandBlockTrigger 的 ordinal 均为 1(Forbidden.java:89-90):这是 Thaumcraft API 的正常用法(ordinal 标识同一触发器实例),非缺陷。

相关条目

  • 研究 —— 54 条研究按 4 个来源拆分;HELLFIRE 为隐藏研究
  • 暗黑元素 —— 7 个自定义元素与 HELLFIRE 的触发关系
  • 暗黑魔杖部件 —— 杖芯/杖套注册表;本触发器不限定具体杖芯