Recipe System
基本信息
| 属性 | 值 |
|---|---|
| 配方入口 | WGContent.postInit() → add_infernal_recipes()(WGContent.java:242-247) |
| 配方类包 | witchinggadgets.common.recipes |
| 子包 | alchemic(6 个类)/ arcane(12 个类)/ infusion(13 个类)/ other(7 个类) |
| 辅助类 | WGResearchUtils.java |
功能
模组的配方分 5 个来源。前 4 个是注册在 WGContent.initializeItems() / postInit() 中的 Thaumcraft 与 Forge 配方,第 5 个(地狱锻炉配方)是模组自有的运行时生成体系。
1. 奥术配方(arcane)
12 个文件注册 Thaumcraft 的 ShapedArcaneRecipe / ShapelessArcaneRecipe,通过静态导入的 registerArcaneRecipe / registerShapelessArcaneRecipe 写入 WGContent.recipeList,供研究页面引用:
| 文件 | 覆盖内容 |
|---|---|
WG_arcane_advanced_robes.java |
法袍布料与成衣 |
WG_arcane_advanced_scribing_tools.java |
附魔抄写工具 |
WG_arcane_ageingstone.java |
Ageing Stone |
WG_arcane_bags.java |
袋子 |
WG_arcane_baubles.java |
饰品 |
WG_arcane_calculator.java |
奥术算盘 |
WG_arcane_cloaks.java |
斗篷与镰 |
WG_arcane_ench_soulbound.java |
Soul Tether 附魔 |
WG_arcane_ethereal_wall.java |
Ethereal Wall |
WG_arcane_label_lib.java |
Aspect Library |
WG_arcane_scan_camera.java |
显影箱 |
WG_arcane_spinning_wheel.java |
纺车 |
每个配方都以字符串键(如 "ADVANCEDROBES_CHEST")存入 recipeList(WGContent.java:170),研究页面再按键取回并强转为 ShapedArcaneRecipe / ShapelessArcaneRecipe / IArcaneRecipe。
2. 注液配方(infusion)
13 个文件注册 InfusionRecipe,覆盖:袋子(WG_infusion_bags.java)、饰品(WG_infusion_baubles.java)、 Spectral Mantle(WG_infusion_cloak_spectral.java)、附魔(WG_infusion_enchantments.java)、冰霜固化器(WG_infusion_ice_solidifier.java)、导引线(WG_infusion_labyrinth_string.java)、要素泵(WG_infusion_mirror_pump.java)、元初装备(WG_infusion_primordial_gear.java)、桑拿炉(WG_infusion_sauna_stove.java)、雪球机(WG_infusion_snowballer.java)、石头挤压机(WG_infusion_stone_extruder.java)、Terraformer(WG_infusion_terraformer.java)、墙上之镜(WG_infusion_wall_mirror.java)。
3. 炼金配方(alchemic)
6 个文件注册炼金坩埚配方:结晶簇(WG_alchemic_clusters.java)、Thaumcraft 矿种(WG_alchemic_tc_clusters.java)、TConstruct 矿种(WG_Tcon_clusters.java,位于 other 包)、纯净朱砂(WG_alchemic_pure_cinnabar.java)、玫瑰藤(WG_alchemic_rose_vine.java)、物质转化(WG_alchemic_transmogrify.java)、水晶胶囊(WG_alchemic_crystal_capsule.java)。
4. 杂项与染色配方(other)
7 个文件:GregTech 结晶簇(WG_GT_clusters.java)、TConstruct 结晶簇(WG_Tcon_clusters.java)、显影箱(WG_other_camera.java)、宝石切割(WG_other_gemcutting.java)、地狱锻炉(WG_other_infernal_blast_furnace.java)、织布机(WG_other_loom.java)、纺纱(WG_other_spinning.java)。
另有 3 个专属的染色配方类,全部经 RecipeSorter 注册为 SHAPELESS 并置于 forge:shapelessore 之后:
| 配方类 | 排序 ID | 注册位置 |
|---|---|---|
RobeColourizationRecipe |
WitchingGadgets:advrobedye |
WGContent.java:505, 508-512 |
CloakColourizationRecipe |
WitchingGadgets:cloakdye |
WGContent.java:506, 513-517 |
BagColourizationRecipe |
WitchingGadgets:bagdye |
WGContent.java:507, 518-522 |
5. 地狱锻炉配方(运行时生成)
这是模组唯一的运行时批量生成配方体系,由 add_infernal_recipes()(WGContent.java:249-298)在 postInit 阶段生成。产出物是 InfernalBlastfurnaceRecipe 对象列表(InfernalBlastfurnaceRecipe.recipes)。
行为随 GregTech 是否加载而分叉(WGContent.isGT5uLoaded,由 Loader.isModLoaded("gregtech_nh") 决定,WitchingGadgets.java:100-102):
加载 GregTech 时 —— 遍历 Materials.getMaterialsMap() 的全部材料,按三条分支生成:
- 需要高炉且熔点 ≤ 1000:产出 1 个锭,粉尘 1,时间 240(
WGContent.java:254-262) - 不需要高炉且有独立熔炼配方:产出锭数量取
GTMod.gregtechproxy.mMixedOreOnlyYieldsTwoThirdsOfPureOre ? 2 : 3,粉尘 2,时间 240(WGContent.java:268-276) - 材料带
SubTag.DONT_ADD_DEFAULT_BBF_RECIPE且恰为Materials.Tetrahedrite:产出同量锭 + 额外Antimony粒 3 倍(WGContent.java:279-289)
未加载 GregTech 时 —— 只添加一条基础配方:tryAddIngotImprovement("Iron", "Steel", false)(WGContent.java:295),即铁锭 → 钢锭。
生成后立即执行 remove_broken_recipes()(WGContent.java:300-307),把所有 getInput() == null || getOutput() == null 的配方移除。
数值
| 数值名 | 值 |
|---|---|
| 地狱锻炉配方统一时间值 | 240 |
| 地狱锻炉配方粉尘产出 | 1(高炉分支)/ 2(常规分支) |
| 地狱锻炉配方锭产出 | 1(高炉分支)/ 2 或 3(常规分支,取决于 mMixedOreOnlyYieldsTwoThirdsOfPureOre) |
| 特殊配方额外产出 | Tetrahedrite 配方额外给 Antimony 粒 3 * outputAmount(WGContent.java:285) |
| 染色配方数 | 3 |
RecipeSorter 排序 ID 数 |
3 |
交互
| 触发 | 行为 |
|---|---|
| 地狱锻炉合成 | 由 InfernalBlastfurnaceRecipe.getRecipeForInput / getRecipeForOutput 查找匹配(InfernalBlastfurnaceRecipe.java:67,72) |
| 销毁/移除配方 | 提供 removeRecipe / removeRecipes 静态方法(InfernalBlastfurnaceRecipe.java:94,98) |
相关条目
- Infernal Blast Furnace - 地狱锻炉配方所服务的机器
- 第三方模组集成 - 配方随 GregTech / TConstruct / Railcraft 加载而变化