本篇教程由作者设定未经允许禁止转载。
最近在开发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();
看看效果吧:
完事!
没有添加成功的原因可能是因为没有在蓝图工作台给机器选择一个recipeMap。