异端法师村民(Heretic Villager)

[!INFO] 注册真源:Forbidden.java:77-78(init 阶段) 实现类:VillagerHereticManager.java:18-99

本模组向 VillagerRegistry 注册一个自定义村庄 profession,并挂接 8 条交易。

基本信息

属性 值
实现类 VillagerHereticManager implements IVillageTradeHandler
profession id Config.hereticID,默认 666
配置键 general:Heretic Villager ID(Config.java:52,167)
注册阶段 FMLInitializationEvent(Forbidden.crescendo,Forbidden.java:73-78)
VillagerRegistry.instance().registerVillagerId(Config.hereticID);
VillagerRegistry.instance().registerVillageTradeHandler(Config.hereticID, new VillagerHereticManager());

(Forbidden.java:77-78)

交易只在 villager.getProfession() == Config.hereticID 时注入(VillagerHereticManager.java:21),其余村民不受影响。

交易列表

全部 8 条交易的价格与数量均含 random.nextInt() 随机量(VillagerHereticManager.java:46-96)。表中区间为源码中 random.nextInt(n) 产生的范围。

# 玩家付出 村民给出 源码
1 绿宝石 ×(1~2) 致命碎片 meta 6 ×(3~4) :46-49
2 致命碎片 meta 4 ×(2~5) 绿宝石 ×1 :50-53,!noLust 才注册
3 致命碎片 meta 0 ×(4~9) 绿宝石 ×1 :54-57
4 暴食碎片 ×(4~9) 绿宝石 ×1 :58-61
5 绿宝石 ×(1~3) 骷髅(skull meta 0)×1 :62-65
6 绿宝石 ×(4~7) 恶魂之泪 ×1 :66-69
7 绿宝石 ×1 荧石粉 ×(8~16) :70-73
8 绿宝石 ×(8~12) + 木棍 ×1 亵渎杖杖芯的预充魔杖 :75-90
9 绿宝石 ×(4~8) + 钻石 ×1 火元素聚焦 ×1 :91-96

[!NOTE] 第 2 条(:50)整段包在 if (!Config.noLust) 中,与 SubCollar 物品、LUST 元素共用同一开关。

第 8 条:预充魔杖

这是唯一一条双物品的交易(MerchantRecipe 的 3 参构造),产出杖芯为 WAND_ROD_PROFANE、杖套为 Thaumcraft 铁杖套的魔杖(VillagerHereticManager.java:75-88):

ItemStack wand = new ItemStack(ConfigItems.itemWandCasting, 1,
        ConfigItems.WAND_CAP_IRON.getCraftCost() * ForbiddenItems.WAND_ROD_PROFANE.getCraftCost());
((ItemWandCasting) wand.getItem()).setCap(wand, ConfigItems.WAND_CAP_IRON);
((ItemWandCasting) wand.getItem()).setRod(wand, ForbiddenItems.WAND_ROD_PROFANE);
((ItemWandCasting) wand.getItem()).storeAllVis(wand,
        new AspectList().add(Aspect.FIRE, 5000).add(Aspect.WATER, 5000).add(Aspect.EARTH, 5000)
                .add(Aspect.AIR, 5000).add(Aspect.ORDER, 5000).add(Aspect.ENTROPY, 5000));
属性 值
杖芯 WAND_ROD_PROFANE(见暗黑魔杖部件)
杖套 Thaumcraft WAND_CAP_IRON(原版,非本 mod 杖套)
预充精华 6 种各 5000:IGNIS / AQUA / TERRA / AER / ORDO / ENTROPIA
交易权重 func_82783_a(-6)(:89)

第 9 条的 fire.func_82783_a(-6)(:95)同理。

[!WARNING] 魔杖的 ItemStack meta 由 ConfigItems.WAND_CAP_IRON.getCraftCost() * ForbiddenItems.WAND_ROD_PROFANE.getCraftCost() 计算(:77-78)——meta 取值来自两个 craftCost 的乘积,而实际杖芯/杖套随后又由 setRod / setCap 覆写。这是原版魔杖 meta 编码的固有写法,非缺陷,但 getCraftCost() 的具体数值不在本仓库内,meta 的最终数值无法核实。

源码缺陷

  • 23 条交易被整段注释掉(VillagerHereticManager.java:22-45)。这些是原 Thaumcraft 资源/护符/魔力豆/浴盐等物品的兑换,全部保留为注释代码。其中还包含一条重复定义 ConfigItems.itemResource 的交易(:23 与 :27),说明注释块本身也不一致。
  • profession id 默认为 666,与默认绿宝石交易的语义无关,属纯配置值;但 Config.hereticID 可被玩家改成任意值,若与其他 mod 的 profession id 撞车,registerVillagerId 的行为由 Forge 决定,本仓库内无从验证。

相关条目

  • 通用物品 —— 交易涉及的致命碎片 meta 0/4/6 与暴食碎片
  • 暗黑魔杖部件 —— WAND_ROD_PROFANE 杖芯真值
  • 研究 —— FORK 研究与本村民的解锁关系
  • 配置项 —— Heretic Villager ID 与 No Lust 开关