本篇教程由作者设定未经允许禁止转载。

最近在开发1.12.2的魔改整合包,于是查阅了mbd的crt支持部分源代码,产生了本篇教程。

写在前面:本系列教程不会一次性更新完,本人研究完一点就更新一点。

本教程代码来源本人整合包脚本,部分格式借鉴了原作者的样例。

首先声明一下该脚本为mbd脚本

#loader multiblocked

依次导入以下包:

import mods.multiblocked.MBDRegistry;
import mods.multiblocked.definition.ControllerDefinition;
import mods.multiblocked.definition.ComponentDefinition;
import mods.multiblocked.recipe.RecipeMap;

接着指明要魔改配方的机器:

var definition as ComponentDefinition = MBDRegistry.getDefinition("gtrb:isomerization_platform");
var ebf = definition as ControllerDefinition;

其中,getDefinition方法填写的是目标机器的注册名。ControllerDefinition为机器的控制器。

然后,就可以使用recipeMap的start()方法愉快的魔改了。

ebf.recipeMap.start()
    .duration(300)
    .inputFluids(<liquid:liquid_mana>*80)
    .inputItems(<ore:crystalCertusQuartz>)
    .outputItems(<appliedenergistics2:material:1>)
    .buildAndRegister();

在start()方法中,会返回一个recipeMap的copy(一个recipeBuilder)。可以使用的方法如下:

 inputItems(ItemsIngredient... inputs) #物品输入
 outputItems(ItemStack... outputs) #物品输出
 inputItems(float chance, ItemsIngredient... inputs) #物品输入,不过是概率消耗了。
 outputItems(float chance, ItemStack... outputs) #概率产出
 inputFluids(FluidStack... inputs) #流体输入
 outputFluids(FluidStack... outputs) #流体输出
 inputFluids(float chance, FluidStack... inputs) #概率消耗输入
 outputFluids(float chance, FluidStack... outputs) #概率产出输出
 inputMana(int mana) #植魔Mana输入(植魔人狂喜)
 outputMana(int mana) #植魔Mana输出
 inputMana(float chance, int mana) #概率,后面重复部分不再赘述
 outputMana(float chance, int mana) 
 inputAspects(AspectStack... inputs) #神秘要素
 outputAspects(AspectStack... outputs) 
 inputAspects(float chance, AspectStack... inputs)
 outputAspects(float chance, AspectStack... outputs)
 inputHeat(double heat) #mek热量
 outputHeat(double heat)
 inputHeat(float chance, double heat)
 outputHeat(float chance, double heat)
 inputGas(GasStack... inputs) #mek气体
 outputGas(GasStack... outputs)
 inputGas(float chance, GasStack... inputs)
 outputGas(float chance, GasStack... outputs)
 inputParticles(ParticleStack... inputs) #量子块动力学的粒子
 outputParticles(ParticleStack... outputs)
 inputParticles(float chance, ParticleStack... inputs)
 outputParticles(float chance, ParticleStack... outputs)
 inputEU(int eu) #GTEU
 outputEU(int eu)
 inputEU(float chance, long eu)
 outputEU(float chance, long eu)
 inputLE(double le) #雷电工艺的LE
 outputLE(double le)
 inputLE(float chance, double le)
 outputLE(float chance, double le)
 inputHotAir(int hotAir) #奇才妙械的热空气
 outputHotAir(int hotAir)
 inputHotAir(float chance, int hotAir)
 outputHotAir(float chance, int hotAir)
  inputAura(int aura) #自然灵气的灵气
  outputAura(int aura)
  inputAura(float chance, int aura)
  outputAura(float chance, int aura)
  inputGP(float gp) #更多实用设备2的gp
  outputGP(float gp)
  inputGP(float chance, float gp)
  outputGP(float chance, float gp)
  inputEMC(long emc) #等价交换的EMC
  outputEMC(long emc)
  outputEMC(long emc)
  utputEMC(float chance, long emc)
  inputLP(int lp) #血魔法的lp
  outputLP(int lp)
  inputLP(float chance, int lp)
  outputLP(float chance, int lp)
  inputEmber(double ember) #余烬能量
  outputEmber(double ember)
  inputEmber(float chance, double ember)
  outputEmber(float chance, double ember)
  inputImpetus(int impetus) #神秘进阶的元动能量
  outputImpetus(int impetus)
  outputImpetus(float chance, long impetus)
  inputFE(int forgeEnergy) #RF输入
  outputFE(int forgeEnergy)
  inputFE(float chance, int forgeEnergy)
  outputFE(float chance, int forgeEnergy)
  perTick(boolean perTick) #每tick消耗
  data(String key, IData object)
  text(ITextComponent text)

最后,别忘记加上:

buildAndRegister();

完整代码:

#loader multiblocked

import mods.multiblocked.MBDRegistry;
import mods.multiblocked.definition.ControllerDefinition;
import mods.multiblocked.definition.ComponentDefinition;
import mods.multiblocked.recipe.RecipeMap;

import crafttweaker.text.ITextComponent;

var definition as ComponentDefinition = MBDRegistry.getDefinition("gtrb:isomerization_platform");

var ebf = definition as ControllerDefinition;
ebf.recipeMap.start()
    .duration(300)
    .inputFluids(<liquid:liquid_mana>*80)
    .inputItems(<ore:crystalCertusQuartz>)
    .outputItems(<appliedenergistics2:material:1>)
    .buildAndRegister();

看看效果吧:

mbd对CRT的支持(添加配方)-第1张图片完事!

没有添加成功的原因可能是因为没有在蓝图工作台给机器选择一个recipeMap。