基础法杖杖身配方(10 种)

基本信息

属性 值
注册位置 GTWandRegistry.register()(:22-42)
触发条件 无(只要装了必需依赖就注册)
产出物品 Thaumcraft 的 itemWandCasting(ConfigItems.itemWandCasting)

⚠️ 本 mod 不注册任何新方块/物品/实体。 它删光原版与附属的全部 ArcaneWandRecipe / ArcaneSceptreRecipe (TCWandAPI.removeTCWands()),换成 2 条动态配方 (GTNHWandRecipe / GTNHScepterRecipe), 再由下表的 baseCost / capCost / 倍率在运行时算出每根杖的实际造价。 ⇒ 这里列的不是「新增的杖」,而是被改写后的原版杖的造价。

全部 10 种

杖身 tag base cap GT 等级 权杖倍率 杖(staff)base,cap 杖-权杖倍率
wood 0 5 LV 2.0 — —
greatwood 20 5 MV 2.0 75, 15 1.4
reed 60 10 HV 1.4 125, 15 1.5
blaze 60 10 HV 1.4 125, 15 1.5
obsidian 60 10 HV 1.4 125, 15 1.5
ice 60 10 HV 1.4 125, 15 1.5
quartz 60 10 HV 1.4 125, 15 1.5
bone 60 10 HV 1.4 125, 15 1.5
silverwood 115 15 EV 1.25 165, 15 1.75
primal — — — — 175, 20 1.25

regUpwardStaffRecipe 的语义是「staff 等级 = wand 等级 +1 档」 (WandRecipeCreator.java:97-100 调 wandDetails.tier().nextTier()), 所以上表 staff 那一列的等级无需另列。 ⚠️ 唯一例外:primal 走的是显式的 regStaffRecipe(175, 20, IV),没有对应的 wand 配方(:42)。 GTTier.nextTier() 在最高档会返回自己,不会越界。

wood 的特殊处理

wood 用的是四参重载 regWandRecipe(int, int, ItemStack, GTTier)(:25):

ItemStack stick = GTModHandler.getModItem("Forestry", "oakStick", 1, 0, new ItemStack(Items.stick));
WandRod.rods.get("wood").setItem(stick);
new WandRecipeCreator("wood").regWandRecipe(0, 5, stick, GTTier.LV).regSceptreRecipe(2.0F);

两处改动:

  1. WandRod.rods.get("wood").setItem(stick) 把原版木杖的制作材料换成 Forestry 的橡木棍(缺失时回退原版木棍)
  2. 配方里杖身格与权杖格都用这根棍子(customCraftingRod) —— 见 WandRecipeCreator.applyCustomizations,它只对 WAND / SCEPTRE 生效,STAFF / STAFF_SCEPTRE 仍用原杖身
  3. base = 0 ⇒ 木杖的基础造价为 0,只由 cap 决定

⚠️ 源码缺陷:WandRod.rods.get("wood").setItem(stick) 没有判空。 若某 mod 删除了 wood 杖身注册,此行直接 NPE。

源码核对(2026-10-01 审计)

  • 全部数值直接读自 GTWandRegistry.java:25-42 的链式调用实参, 未做任何外推。例如 reed 与 blaze/obsidian/ice/quartz/bone 五者的 (60, 10, HV, 1.4F, 125, 15, 1.5F) 在源码中逐字相同, 不是「按等级递推」得出的。
  • 权杖造价 = (int)((base + cap × capMultiplier) × sceptreMultiplier) —— 注意先整除截断再乘与浮点截断的顺序,见 铸造格与造价公式。
  • 附属杖身见 附属模组杖身。
  • 每根杖都要求同时完成杖身研究与端盖研究才能合成 (GTNHWandRecipe.matches,:33-35 与 :59-64)。