本篇教程由作者设定未经允许禁止转载。
模块化机械:社区版 从入门到入土 —— Part.3.2 配方适配器
本篇教程皆在引导模块化机械与模块化机械:社区版的初学者入门,本教程包含配方适配器在 CraftTweaker 中的基础运用与高级运用。
本教程主要使用的模组为模块化机械:社区版 - 1.11.1-r33、CraftTweaker。
注意:本教程内容可能随时都有变化,请仔细对照本教程使用的模组版本,以免引起模组更新导致莫名其妙的报错问题。
教程目录:
Part 3.2 配方适配器 RecipeAdapter(当前)
Part.3.3 机械事件系统(未完成)
Part.4.1 并行配方处理(未完成)
Part.4.2 工厂系统(未完成)
Part.4.3 工厂事件系统(未完成)
Part.4.4 智能数据接口(未完成)
Part.4.5 单方块 / 多方块机械升级(未完成)
Part.4.6 自定义 GUI 信息(未完成)
Part.5 配置文件解析(未完成)
环境准备
本教程强烈推荐使用 Visual Studio Code(以下简称 VSCode),可以大大减少你的魔改工作量。
使用 VSCode,你可以利用它的强大的功能来更快的完成复杂的操作,同时拥有代码提示,大大减少代码阅读难度和出错率,同时可以安装插件来扩展功能,使其更加强大。
阅读本教程即代表你已熟悉 ZenScript 的大部分高级运用,并且已经了解基本的机械创建与配方创建。
安装模组
如果你已安装 CraftTweaker 和模块化机械本体且已启动游戏,你可以跳过此段描述。
要创建配方,你需要使用 CraftTweaker(任意版本)。
前言
在创建机械的过程中,我们可能希望创建某个机械的升级版(例如 xxx 机械 MK.1,xxx 机械 MK.2)。
但是每个机械的配方都是有对应的机械,导致我们需要为每个机械创建配方,难免会造成大量无用的代码,且浪费时间。
因此,配方适配器(RecipeAdapter)为我们实现了复制其他机械的所有配方的功能,同时还能够在复制过程中微调配方的内容。
RecipeAdapterBuilder
RecipeAdapterBuilder 是 MMCE 向 CraftTweaker 提供的一个类,它包含了所有关于 RecipeAdapter 的内容。
基础示例
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("assembler_mk2", "assembler_mk1").build()
上方代码创建了一个配方适配器的构建器,并在最后调用了 build() 方法。
运行此内容后,模组将会为名为 `assembler_mk2` 的机械添加名为 `assembler_mk1` 的机械中的所有配方。
配方修改器
除了可以复制所有配方之外,我们还可以为适配器添加配方修改器。
示例:
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("assembler_mk2", "assembler_mk1")
.addModifier(RecipeModifierBuilder.create("modularmachinery:duration", "input", 0.5, 1, false).build())
.addModifier(RecipeModifierBuilder.create("modularmachinery:energy", "input", 5.0, 1, false).build())
.build()
运行此内容后,模组将会为名为 `assembler_mk2` 的机械添加名为 `assembler_mk1` 的机械中的所有配方。
同时 `assembler_mk2` 中所有配方的工作时间均为 `assembler_mk1` 机械配方的一半,能量消耗均为 `assembler_mk1` 机械配方中的 5 倍。
额外输入
在上方的两个基础上,我们还可以为配方添加额外的输入。
所有的方法都可以像 RecipeBuilder 和 RecipePrimer 一样调用,换句话说 RecipeBuilder 和 RecipePrimer 的绝大部分方法,RecipeAdapterBuilder 都可以使用。
示例:
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("assembler_mk2", "assembler_mk1")
.addModifier(RecipeModifierBuilder.create("modularmachinery:duration", "input", 0.5, 1, false).build())
.addModifier(RecipeModifierBuilder.create("modularmachinery:energy", "input", 5.0, 1, false).build())
.addFluidInput(<liquid:ic2coolant> * 50)
.build()
运行此内容后,模组将会为名为 `assembler_mk2` 的机械添加名为 `assembler_mk1` 的机械中的所有配方。
同时 `assembler_mk2` 中所有配方的工作时间均为 `assembler_mk1` 机械配方的一半,能量消耗均为 `assembler_mk1` 机械配方中的 5 倍。
并且,在这些的配方的基础上,还会为每个配方都添加 50mb 的 IC2 冷却液的输入。
内置模组配方支持
配方适配器在支持复制自定义机械的配方的基础上,还支持部分模组的机械的配方。
同时也支持添加配方修改器与额外输入。
下方将会列出所有支持的模组的适配器(截止 MMCE-R33 版本)。
熔炉
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("target_machine", "minecraft:furnace").build()
此适配器会为目标机械添加熔炉中的所有配方。
(高级)同时还会在 ActiveMachineRecipe(通过配方事件中的 ZenGetter:activeRecipe 获取) 中的 customData 中写入一个键值为 "experience" 的浮点数,对应熔炉中产物的经验。
IC2 压缩机
需要安装模组 工业时代 2。
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("target_machine", "ic2:te_compressor").build()
此适配器会为目标机械添加所有 IC2 压缩机的配方。
匠魂 2 合金配方
需要安装模组 匠魂 2。
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("target_machine", "tconstruct:smeltery_alloy").build()
此适配器会为目标机械添加所有匠魂 2 中的合金配方。
匠魂 2 冶炼配方
需要安装模组 匠魂 2。
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("target_machine", "tconstruct:smeltery_melting").build()
此适配器会为目标机械添加所有匠魂 2 中的冶炼配方。
(高级)同时还会在 ActiveMachineRecipe(通过配方事件中的 ZenGetter:activeRecipe 获取) 中的 customData 中写入一个键值为 "temperatureRequired" 的整数,对应冶炼炉中熔化此物品需要的温度。
核电工艺:重制版
需要安装模组 核电工艺:重制版。
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("target_machine", "nuclearcraft:alloy_furnace").build()
此适配器会为目标机械添加所有核电工艺:重制版中的合金炉配方。
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("target_machine", "nuclearcraft:chemical_reactor").build()
此适配器会为目标机械添加所有核电工艺:重制版中的化学反应器配方。
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("target_machine", "nuclearcraft:infuser").build()
此适配器会为目标机械添加所有核电工艺:重制版中的流体注入器配方。
import mods.modularmachinery.RecipeAdapterBuilder;
RecipeAdapterBuilder.create("target_machine", "nuclearcraft:melter").build()
此适配器会为目标机械添加所有核电工艺:重制版中的融化机配方。