配方总览
基本信息
| 属性 | 值 |
|---|---|
| 配方来源 | 纯代码注册,无 .json 配方文件 |
| 注册源 | com.fouristhenumber.utilitiesinexcess.common.recipe.RecipeLoader |
| 注册调用 | CommonProxy.preInit 末尾 RecipeLoader.run()(CommonProxy.java:136) |
| 配方总数 | 147(跨验证,见下) |
| 开关总数 | 72(RecipeConfig),默认全部 true |
功能
本模组的 147 条配方全部在 RecipeLoader 中以 Java 代码写死,通过 GameRegistry.addShapedRecipe / addShapelessRecipe / addFurnaceRecipe 注册。src/main/resources 下没有任何 recipe JSON。
配方辅助方法 addShapedRecipe / addShapelessRecipe / addFurnaceRecipe(RecipeLoader.java:1748-1757)都是对 DisableableItemStack 静态方法的转发。后者会在注册前检查产物与所有材料是否 isEnabled(),任一被配置关闭则整条配方跳过(DisableableItemStack.java:26-47)。因此关掉某个方块/物品会自动移除所有依赖它的配方,无需手工清理。
数值
| 配方类型 | 数量 | 统计口径 |
|---|---|---|
有序合成 addShapedRecipe |
111 | 出现 112 次,减 1 处方法声明(RecipeLoader.java:1748) |
无序合成 addShapelessRecipe |
13 | 出现 14 次,减 1 处方法声明(RecipeLoader.java:1752) |
熔炉 addFurnaceRecipe |
4 | 出现 5 次,减 1 处方法声明(RecipeLoader.java:1756) |
自定义 IRecipe 实例 |
6 | 见下 |
| 末影莲祭坛配方(独立注册表) | 13 | EnderLocusRegistry.instance().addRecipe |
| 合计 | 147 |
6 个自定义 IRecipe
这些不是有序/无序配方,而是自定义 IRecipe 实现,在 RecipeLoader 中直接 new 并 GameRegistry.addRecipe:
| 类 | 实例数 | 位置 | 用途 |
|---|---|---|---|
RecipePaintRollerToPaint |
2 | RecipeLoader.java:1287, 1296 |
油漆滚筒染色(1:1 与 1:16 两种) |
RecipeInvertedIngot |
1 | RecipeLoader.java:1338 |
反转锭的动态转换 |
RecipeGlove |
1 | RecipeLoader.java:1488 |
手套合成 |
PeacefulRecipe |
2 | RecipeLoader.java:1725, 1738 |
仅在和平难度可用的配方 |
common/recipe/ 包内共 6 个文件:RecipeLoader(主注册器)+ 上述 4 个自定义配方类 + DisableableItemStack(开关过滤器)。
13 条末影莲祭坛配方
EnderLocus 方块拥有自己的一套配方注册表,与工作台配方完全独立:EnderLocusRegistry.instance().addRecipe(new EnderLocusRecipe(...)) 在 RecipeLoader 中被调用 13 次。祭坛配方消耗的是祭坛方块内的物品,而非工作台九宫格。
交互 — 开关机制
| 项目 | 数值 |
|---|---|
RecipeConfig 布尔开关总数 |
72 |
其中默认 true |
72 |
默认 false |
0 |
在 RecipeLoader 中被引用的开关数 |
72(无死开关) |
唯一不受任何配方开关控制的是真绿幕:RecipeLoader.java:539-549 直接无条件调用 addShapedRecipe(ModBlocks.TRUE_GREENSCREEN, ...),外层没有 if (RecipeConfig.…) 判断。这与同文件其余所有配方都带开关的写法不一致,是一个可核实的不一致。但即使该配方无条件注册,若 BlockConfig.enableTrueGreenscreen 为假,产物方块不存在,DisableableItemStack.isEnabled() 仍会拦截它(DisableableItemStack.java:27)。
交互 — 分组开关
RecipeLoader.run() 把 147 条配方按功能分组,每组一个总开关。已核实的组:
| 配方组 | 开关 | 状态 |
|---|---|---|
| 发电机 | enableGeneratorRecipes |
默认 true |
| 压缩方块 | enableCompressedBlockRecipes |
默认 true |
| 垃圾箱 | enableTrashCan{Item,Fluid,Energy}Recipe |
默认 true |
| 箱子三档 | enable{MarginallyMaximised,SignificantlyShrunk,RadicallyReduced}ChestRecipe |
默认 true |
| 传送门 | enableUnderworldPortalRecipe / enableEndOfTimePortalRecipe |
默认 true |
| 文件柜 | enableFilingCabinetRecipes / enableFilingCabinetUpgradeRecipe |
默认 true |
| 虚空采掘场 | enableVoidQuarryRecipe / enableVoidMarkerRecipe / enableVoidQuarryUpgradeRecipes |
默认 true |
| 智能泵 | enableSmartPumpRecipe |
默认 true |
| 反转工具 | enableInvertedToolRecipes |
默认 true |
| 洒水壶 | enableWateringCanRecipe |
默认 true |
| 反转物品 | enableReversionSigilRecipe / enableInvertedIngotRecipe |
默认 true |
| 末影莲矿石 | enableEnderLocusOreRecipes |
默认 true |
全部 72 个开关的逐条名称本条目未完整抄录——RecipeConfig.java 含 72 个 @Config.DefaultBoolean(true) 字段,完整清单可查该文件。