配方组
基本信息
| 属性 | 值 |
|---|---|
| 配方组数量 | 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 种传感工具 | 传感工具 |
| 范围升级 / 彩色升级 | 升级件 |
| 便携式信息屏 | 便携式信息屏 |
| 卡片 | 卡片 |
相关条目
- 配置项 -
recipes配置项 - IC2 与 GregTech 集成 - 经典版 IC2 的配方妥协
- 信息类模组集成 - AE2 / Big Reactors 条件配方