机器

格雷科技社区版在 RecipeMap 里存储所有的合成表。 为了得到它们,你需要向你的代码导入 mods.gregtech.recipe.RecipeMap

合成表被分类在对应的机器里,调用 RecipeMap.getByName(机器名称) 来获取特定的合成表和构建器。

可用机器列表

尚未实现:

防火砖高炉 使用了和普通的合成表不同的语法。 例子:

import mods.gregtech.recipe.PBFRecipeBuilder;

//防火砖高炉
PBFRecipeBuilder.start()
    .input(<ore:ingotCompressedWroughtIron> * 1)
    .output(<ore:ingotSteel>.firstItem * 1)
    .duration(250)
    .fuelAmount(2)
    .buildAndRegister();

//从防火砖高炉移除合成表
import mods.gregtech.recipe.RecipeMaps;

for recipe in RecipeMaps.getPrimitiveBlastFurnaceRecipes() {
    recipe.remove();

构建器信息

在获得 RecipeMap 的一个实例后,你可以使用它的构建器定义合成表

调用构建器方法:

recipeMap.recipeBuilder()

这有点像 Java 的 Stream<T> ,有齐全的功能来控制你的合成表的行为。

一个电力高炉的例子:

//电力高炉
val blast_furnace = mods.gregtech.recipe.RecipeMap.getByName("blast_furnace");
blast_furnace.recipeBuilder()
    .inputs(<ore:ingotCompressedWroughtIron> * 1)
    .fluidInputs([<liquid:oxygen> * 500])
    .outputs(<ore:ingotSteel>.firstItem * 1)
    .property("temperature", 1000) //this is a minimal temperature at which the item will be smelted
    .duration(40)
    .EUt(120)
    .buildAndRegister();

一些参数可以用 .property() 方法来指定:

名称 说明
explosives 聚爆压缩机,炸药的数量
circuit 可配置集成电路的机器。 集成电路的配置
temperature 高炉。 最低需要的温度。

这些参数尚未实现:

名称 说明
amplifier UU物质增殖液生产机。 输出UU物质增殖液的数量。
eu_to_start 聚变反应堆,开始聚变的 EU 数量

你可以像使用 “temperature” 一样使用它们

.property("circuit", X)//,X 是集成电路的配置
.property("explosives", Y)//,Y 是使合成表工作的炸药数量

更多有用的方法:

.inputs()
.fluidInputs()
.outputs()
.fluidOutputs()
.chancedOutput(<itemstack>, 0-10000) (10000 is 100%)
.duration() // 单位是tick
.notConsumable(X) // X 是CraftTweaker的ID。 像 .inputs 一样工作,但是物品不会被消耗
.hidden() // 这个合成表是否在 JEI 里隐藏
.chancedOutput(<itemstack>, 0-10000) (10000 is 100%) // 不是每一台机器都有效。 一些机器使用那一个。 最不能的一台是打粉机
.EUt() // 每tick的EU消耗

移除

移除一个合成表是由这个合成表的实例自身完成的,所以你需要先找到这个合成表。

例子:

val compressor as RecipeMap = RecipeMap.getByName("compressor");

// findRecipe(long 电压, IItemHandlerModifiable 输入, IMultipleTankHandler/List<FluidStack> 流体输入)
compressor.findRecipe(2, [<minecraft:redstone>], null).remove();