配方组

基本信息

属性 值
配方组数量 3(核心),另有 2 个跨模组条件配方组
切换配置项 recipes,默认 normal(ConfigurationHandler.java:50-54)
切换时机 postInit(IC2NuclearControl.java:218-242)
注册方式 全部走 IC2 的 Recipes.advRecipes(机器配方)
通用前置 三组开头都先注册 StorageArrayRecipe(RecipesNew.java:23、RecipesOld.java:25、GregtechRecipes.java:25)

分派逻辑

postInit 的完整分派(IC2NuclearControl.java:224-242):

if (IC2 版本为 SPEIGER) {          // IC2 经典版
    recipes == "normal-force"   → RecipesNew.addRecipes()
    recipes == "gregtech-force" → GregtechRecipes.addRecipes()
    其他                          → RecipesOld.addOldRecipes()
} else {
    recipes == "old"                    → RecipesOld.addOldRecipes()
    recipes == "gregtech" 或 "gregtech5" → GregtechRecipes.addRecipes()  + 日志
    其他                                 → RecipesNew.addRecipes()
}

因此 recipes 实际接受 5 个值:normal(默认)、old、gregtech、gregtech5、normal-force、gregtech-force(后者两个仅在 IC2 经典版下生效)。配置项注释只写了 normal, old or gregtech(ConfigurationHandler.java:52-54),与代码实际行为不符。

选择 GregTech 配方时会打印日志「Hard… I mean, FUN recipes turned on! Have fun!」(IC2NuclearControl.java:239)。

三组对比

配方组 文件 文件行数 addRecipe 数 定位
normal recipes/RecipesNew.java 232 27 默认,材料以 IC2 物品字典 + 常见材料为主
old recipes/RecipesOld.java 232 25 兼容旧版物品名,整类标注 @Deprecated(RecipesOld.java:21)
gregtech crossmod/gregtech/GregtechRecipes.java — 29 材料换成 GT 物品(螺栓、玻璃板、电路等级等)

RecipesOld 类的 Javadoc 写着「It’s not :P ~Chocohead」(RecipesOld.java:21)。

DreamCraft 短路

三组配方都在注册普通配方之前检查 DreamCraft:

if (Loader.isModLoaded("dreamcraft")) { return; }

出现在 RecipesNew.java:25-27、RecipesOld.java:26-28、GregtechRecipes.java:27-29。但 StorageArrayRecipe 在此检查之前注册(RecipesNew.java:23、RecipesOld.java:24、GregtechRecipes.java:25),因此即使安装了 DreamCraft,储能阵列配方仍会注册。原版工具包配方也有同样的短路(crossmod/vanilla/Vanilla.java:29-31)。

材料体系差异示例

产物 normal old gregtech
温度监控器 plateLead + circuitAdvanced + dustRedstone(RecipesNew.java:33-35) reinforcedGlass + circuitAdvanced + dustRedstone(RecipesOld.java:35-37) GT 物品
温度计 blockGlass + plateIron + IC2 waterCell(RecipesNew.java:116-119) — boltIron + plateGlass + cellMercury + stickIron(GregtechRecipes.java:36-39)
数码温度计 itemRubber + 温度计 + IC2 powerunitsmall(RecipesNew.java:122-125) — boltTungsten + plateGlass + circuitGood + GT 电脑显示器 meta 32740(GregtechRecipes.java:42-45)

gregtech 组中用到的 GT 物品常量(GregtechRecipes.java:31-34):

meta 物品
32740 GT 电脑显示器
32690 GT 传感器
32680 GT 发射器

均取自 GameRegistry.findItem("gregtech", "gt.metaitem.01")(GregtechRecipes.java:31)。

条件配方组

配方组 触发条件 addRecipe 数 引用
AppengRecipes.addRecipesToRegistry() AE2 加载 且 recipes == normal 5 CrossAppeng.java:36-38
AppengRecipes.addGregtechRecipes() AE2 加载 且 recipes == gregtech — CrossAppeng.java:40-42
BigReactorsRecipesNew.addRecipes() Big Reactors 加载 且 recipes == normal 3 CrossBigReactors.java:38-40
BigReactorsRecipesGregtech.addRecipes() Big Reactors 加载 且 recipes == gregtech 3 CrossBigReactors.java:42-44

注意这两个跨模组配方组用的是 equals("normal") / equals("gregtech")(CrossAppeng.java:36),不认 gregtech5 等其他值。

无配方物品

以下物品在三组核心配方中均无注册(grep -c 三个文件均为 0 命中):

物品 说明
itemEnergyArrayLocationCard(电力阵列定位卡片) 见卡片
itemLiquidArrayLocationCard(流体阵列定位卡片) 同上
itemPanelMemoryCard(面板记忆卡) 同上
itemUpgrade metadata 2(网页升级) 配方整段被注释,见升级件

各产物的具体配方

完整的配方形状与材料对照分散在各条目中:

产物 所在条目
核控灯(白 / 橙) 核控灯方块
温度监控器 温度监控器
蜂鸣报警器 / 工业警报器 警报器
远程温度监控器 远程温度监控器
信息屏 4 种 信息屏体系
电力计数器 / 平均电力计数器 电力计数器
范围触发器 范围触发器
温度计 / 数码温度计 温度计
3 种传感工具 传感工具
范围升级 / 彩色升级 升级件
便携式信息屏 便携式信息屏
卡片 卡片

相关条目