Expanded Materials class for cracked Fluids, changed cracking recipes

Fluid cracking can be done with either Steam or Hydrogen and at 3
different severities for a total of six different recipes.
Cracking severity is controlled with a programmed circuit.

Removed the previously used liquids for cracked light fuel/heavy fuel

Changed the Distillation Tower recipes so they can utilize up to 11
fluid outputs
This commit is contained in:
Johannes Gäßler 2017-05-24 23:59:42 +02:00
parent 856f1bebbf
commit b27566a70a
8 changed files with 1144 additions and 1016 deletions

View file

@ -1,243 +1,256 @@
package gregtech.api.enums;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import gregtech.api.objects.MaterialStack;
public class MaterialBuilder {
public static final int DIESEL = 0, GAS = 1, THERMAL = 2, SEMIFLUID = 3, PLASMA = 4, MAGIC = 5;
private int metaItemSubID;
private TextureSet iconSet;
private float toolSpeed = 1.0f;
private int durability = 0;
private int toolQuality = 0;
private int types = 0;
private int r = 255, g = 255, b = 255, a = 0;
private String name;
private String defaultLocalName;
private int fuelType = 0;
private int fuelPower = 0;
private int meltingPoint = 0;
private int blastFurnaceTemp = 0;
private boolean blastFurnaceRequired = false;
private boolean transparent = false;
private int oreValue = 1;
private int densityMultiplier = 1;
private int densityDivider = 1;
private Dyes color = Dyes._NULL;
private int extraData = 0;
private List<MaterialStack> materialList = new ArrayList<MaterialStack>();
private List<TC_Aspects.TC_AspectStack> aspects = new ArrayList<TC_Aspects.TC_AspectStack>();
private boolean hasCorrespondingFluid = false;
private boolean hasCorrespondingGas = false;
private int liquidTemperature = 300;
private int gasTemperature = 300;
public MaterialBuilder(int metaItemSubID, TextureSet iconSet, String defaultLocalName) {
this.metaItemSubID = metaItemSubID;
this.iconSet = iconSet;
this.name = defaultLocalName.replace(" ", "");
this.defaultLocalName = defaultLocalName;
}
public Materials constructMaterial() {
return new Materials(metaItemSubID, iconSet, toolSpeed, durability, toolQuality, types, r, g, b, a, name, defaultLocalName, fuelType, fuelPower, meltingPoint, blastFurnaceTemp,
blastFurnaceRequired, transparent, oreValue, densityMultiplier, densityDivider, color, extraData, materialList, aspects)
.setHasCorrespondingFluid(hasCorrespondingFluid)
.setHasCorrespondingGas(hasCorrespondingGas);
}
public MaterialBuilder setName(String name){
this.name = name;
return this;
}
public MaterialBuilder setTypes(int types){
this.types = types;
return this;
}
public MaterialBuilder addDustItems(){
types = types | 1;
return this;
}
public MaterialBuilder addMetalItems(){
types = types | 2;
return this;
}
public MaterialBuilder addGemItems(){
types = types | 4;
return this;
}
public MaterialBuilder addOreItems(){
types = types | 8;
return this;
}
public MaterialBuilder addCell(){
types = types | 16;
return this;
}
public MaterialBuilder addPlasma(){
types = types | 32;
return this;
}
public MaterialBuilder addToolHeadItems(){
types = types | 64;
return this;
}
public MaterialBuilder addGearItems(){
types = types | 128;
return this;
}
public MaterialBuilder addFluid(){
this.hasCorrespondingFluid = true;
return this;
}
public MaterialBuilder addGas(){
this.hasCorrespondingGas = true;
return this;
}
public MaterialBuilder setRGBA(int r, int g, int b, int a){
this.r = r;
this.g = g;
this.b = b;
this.a = a;
return this;
}
public MaterialBuilder setRGB(int r, int g, int b){
this.r = r;
this.g = g;
this.b = b;
return this;
}
public MaterialBuilder setTransparent(boolean transparent){
this.transparent = transparent;
return this;
}
public MaterialBuilder setColor(Dyes color){
this.color = color;
return this;
}
public MaterialBuilder setToolSpeed(float toolSpeed) {
this.toolSpeed = toolSpeed;
return this;
}
public MaterialBuilder setDurability(int durability) {
this.durability = durability;
return this;
}
public MaterialBuilder setToolQuality(int toolQuality) {
this.toolQuality = toolQuality;
return this;
}
public MaterialBuilder setFuelType(int fuelType) {
this.fuelType = fuelType;
return this;
}
public MaterialBuilder setFuelPower(int fuelPower) {
this.fuelPower = fuelPower;
return this;
}
public MaterialBuilder setMeltingPoint(int meltingPoint) {
this.meltingPoint = meltingPoint;
return this;
}
public MaterialBuilder setBlastFurnaceTemp(int blastFurnaceTemp) {
this.blastFurnaceTemp = blastFurnaceTemp;
return this;
}
public MaterialBuilder setBlastFurnaceRequired(boolean blastFurnaceRequired) {
this.blastFurnaceRequired = blastFurnaceRequired;
return this;
}
public MaterialBuilder setOreValue(int oreValue) {
this.oreValue = oreValue;
return this;
}
public MaterialBuilder setDensityMultiplier(int densityMultiplier) {
this.densityMultiplier = densityMultiplier;
return this;
}
public MaterialBuilder setDensityDivider(int densityDivider) {
this.densityDivider = densityDivider;
return this;
}
public MaterialBuilder setExtraData(int extraData) {
this.extraData = extraData;
return this;
}
public MaterialBuilder addElectrolyzerRecipe(){
extraData = extraData | 1;
return this;
}
public MaterialBuilder addCentrifugeRecipe(){
extraData = extraData | 2;
return this;
}
public MaterialBuilder setMaterialList(List<MaterialStack> materialList) {
this.materialList = materialList;
return this;
}
public MaterialBuilder setMaterialList(MaterialStack ... materials) {
this.materialList = Arrays.asList(materials);
return this;
}
public MaterialBuilder setAspects(List<TC_Aspects.TC_AspectStack> aspects) {
this.aspects = aspects;
return this;
}
public int getLiquidTemperature() {
return liquidTemperature;
}
public MaterialBuilder setLiquidTemperature(int liquidTemperature) {
this.liquidTemperature = liquidTemperature;
return this;
}
public int getGasTemperature() {
return gasTemperature;
}
public MaterialBuilder setGasTemperature(int gasTemperature) {
this.gasTemperature = gasTemperature;
return this;
}
}
package gregtech.api.enums;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import gregtech.api.objects.MaterialStack;
public class MaterialBuilder {
public static final int DIESEL = 0, GAS = 1, THERMAL = 2, SEMIFLUID = 3, PLASMA = 4, MAGIC = 5;
private int metaItemSubID;
private TextureSet iconSet;
private float toolSpeed = 1.0f;
private int durability = 0;
private int toolQuality = 0;
private int types = 0;
private int r = 255, g = 255, b = 255, a = 0;
private String name;
private String defaultLocalName;
private int fuelType = 0;
private int fuelPower = 0;
private int meltingPoint = 0;
private int blastFurnaceTemp = 0;
private boolean blastFurnaceRequired = false;
private boolean transparent = false;
private int oreValue = 1;
private int densityMultiplier = 1;
private int densityDivider = 1;
private Dyes color = Dyes._NULL;
private int extraData = 0;
private List<MaterialStack> materialList = new ArrayList<MaterialStack>();
private List<TC_Aspects.TC_AspectStack> aspects = new ArrayList<TC_Aspects.TC_AspectStack>();
private boolean hasCorrespondingFluid = false;
private boolean hasCorrespondingGas = false;
private boolean canBeCracked = false;
private boolean canBeSteamCracked = false;
private int liquidTemperature = 300;
private int gasTemperature = 300;
public MaterialBuilder(int metaItemSubID, TextureSet iconSet, String defaultLocalName) {
this.metaItemSubID = metaItemSubID;
this.iconSet = iconSet;
this.name = defaultLocalName.replace(" ", "");
this.defaultLocalName = defaultLocalName;
}
public Materials constructMaterial() {
return new Materials(metaItemSubID, iconSet, toolSpeed, durability, toolQuality, types, r, g, b, a, name, defaultLocalName, fuelType, fuelPower, meltingPoint, blastFurnaceTemp,
blastFurnaceRequired, transparent, oreValue, densityMultiplier, densityDivider, color, extraData, materialList, aspects)
.setHasCorrespondingFluid(hasCorrespondingFluid)
.setHasCorrespondingGas(hasCorrespondingGas)
.setCanBeCracked(canBeCracked);
}
public MaterialBuilder setName(String name){
this.name = name;
return this;
}
public MaterialBuilder setTypes(int types){
this.types = types;
return this;
}
public MaterialBuilder addDustItems(){
types = types | 1;
return this;
}
public MaterialBuilder addMetalItems(){
types = types | 2;
return this;
}
public MaterialBuilder addGemItems(){
types = types | 4;
return this;
}
public MaterialBuilder addOreItems(){
types = types | 8;
return this;
}
public MaterialBuilder addCell(){
types = types | 16;
return this;
}
public MaterialBuilder addPlasma(){
types = types | 32;
return this;
}
public MaterialBuilder addToolHeadItems(){
types = types | 64;
return this;
}
public MaterialBuilder addGearItems(){
types = types | 128;
return this;
}
public MaterialBuilder addFluid(){
this.hasCorrespondingFluid = true;
return this;
}
public MaterialBuilder addGas(){
this.hasCorrespondingGas = true;
return this;
}
public MaterialBuilder setRGBA(int r, int g, int b, int a){
this.r = r;
this.g = g;
this.b = b;
this.a = a;
return this;
}
public MaterialBuilder setRGB(int r, int g, int b){
this.r = r;
this.g = g;
this.b = b;
return this;
}
public MaterialBuilder setTransparent(boolean transparent){
this.transparent = transparent;
return this;
}
public MaterialBuilder setColor(Dyes color){
this.color = color;
return this;
}
public MaterialBuilder setToolSpeed(float toolSpeed) {
this.toolSpeed = toolSpeed;
return this;
}
public MaterialBuilder setDurability(int durability) {
this.durability = durability;
return this;
}
public MaterialBuilder setToolQuality(int toolQuality) {
this.toolQuality = toolQuality;
return this;
}
public MaterialBuilder setFuelType(int fuelType) {
this.fuelType = fuelType;
return this;
}
public MaterialBuilder setFuelPower(int fuelPower) {
this.fuelPower = fuelPower;
return this;
}
public MaterialBuilder setMeltingPoint(int meltingPoint) {
this.meltingPoint = meltingPoint;
return this;
}
public MaterialBuilder setBlastFurnaceTemp(int blastFurnaceTemp) {
this.blastFurnaceTemp = blastFurnaceTemp;
return this;
}
public MaterialBuilder setBlastFurnaceRequired(boolean blastFurnaceRequired) {
this.blastFurnaceRequired = blastFurnaceRequired;
return this;
}
public MaterialBuilder setOreValue(int oreValue) {
this.oreValue = oreValue;
return this;
}
public MaterialBuilder setDensityMultiplier(int densityMultiplier) {
this.densityMultiplier = densityMultiplier;
return this;
}
public MaterialBuilder setDensityDivider(int densityDivider) {
this.densityDivider = densityDivider;
return this;
}
public MaterialBuilder setExtraData(int extraData) {
this.extraData = extraData;
return this;
}
public MaterialBuilder addElectrolyzerRecipe(){
extraData = extraData | 1;
return this;
}
public MaterialBuilder addCentrifugeRecipe(){
extraData = extraData | 2;
return this;
}
public MaterialBuilder setMaterialList(List<MaterialStack> materialList) {
this.materialList = materialList;
return this;
}
public MaterialBuilder setMaterialList(MaterialStack ... materials) {
this.materialList = Arrays.asList(materials);
return this;
}
public MaterialBuilder setAspects(List<TC_Aspects.TC_AspectStack> aspects) {
this.aspects = aspects;
return this;
}
public int getLiquidTemperature() {
return liquidTemperature;
}
public MaterialBuilder setLiquidTemperature(int liquidTemperature) {
this.liquidTemperature = liquidTemperature;
return this;
}
public int getGasTemperature() {
return gasTemperature;
}
public MaterialBuilder setGasTemperature(int gasTemperature) {
this.gasTemperature = gasTemperature;
return this;
}
public boolean canBeCracked() {
return canBeCracked;
}
public MaterialBuilder setCanBeCracked(boolean canBeCracked) {
this.canBeCracked = canBeCracked;
return this;
}
}

View file

@ -528,22 +528,20 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
public static Materials NatruralGas = new Materials(733, TextureSet.SET_FLUID, 1.0F, 0, 1, 16, 255, 255, 255, 0, "NatruralGas", "Natural Gas", 1, 15, -1, 0, false, false, 3, 1, 1, Dyes.dyeWhite);
public static Materials SulfuricGas = new Materials(734, TextureSet.SET_FLUID, 1.0F, 0, 1, 16, 255, 255, 255, 0, "SulfuricGas", "Sulfuric Gas", 1, 20, -1, 0, false, false, 3, 1, 1, Dyes.dyeWhite);
public static Materials Gas = new Materials(735, TextureSet.SET_FLUID, 1.0F, 0, 1, 16, 255, 255, 255, 0, "Gas", "Refinery Gas", 1, 128, -1, 0, false, false, 3, 1, 1, Dyes.dyeWhite);
public static Materials Gas = new Materials(735, TextureSet.SET_FLUID, 1.0F, 0, 1, 16, 255, 255, 255, 0, "Gas", "Refinery Gas", 1, 128, -1, 0, false, false, 3, 1, 1, Dyes.dyeWhite).setCanBeCracked(true);
public static Materials SulfuricNaphtha = new Materials(736, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "SulfuricNaphtha", "Sulfuric Naphtha", 1, 32, -1, 0, false, false, 1, 1, 1, Dyes.dyeYellow);
public static Materials SulfuricLightFuel = new Materials(737, TextureSet.SET_FLUID,1.0F, 0, 0, 16, 255, 255, 0, 0, "SulfuricLightFuel", "Sulfuric Light Fuel", 0, 32, -1, 0, false, false, 1, 1, 1, Dyes.dyeYellow);
public static Materials SulfuricHeavyFuel = new Materials(738, TextureSet.SET_FLUID,1.0F, 0, 0, 16, 255, 255, 0, 0, "SulfuricHeavyFuel", "Sulfuric Heavy Fuel", 3, 32, -1, 0, false, false, 1, 1, 1, Dyes.dyeBlack);
public static Materials Naphtha = new Materials(739, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "Naphtha", "Naphtha", 1, 256, -1, 0, false, false, 1, 1, 1, Dyes.dyeYellow);
public static Materials LightFuel = new Materials(740, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "LightFuel", "Light Fuel", 0, 256, -1, 0, false, false, 1, 1, 1, Dyes.dyeYellow);
public static Materials HeavyFuel = new Materials(741, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "HeavyFuel", "Heavy Fuel", 3, 192, -1, 0, false, false, 1, 1, 1, Dyes.dyeBlack);
public static Materials Naphtha = new Materials(739, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "Naphtha", "Naphtha", 1, 256, -1, 0, false, false, 1, 1, 1, Dyes.dyeYellow).setCanBeCracked(true);
public static Materials LightFuel = new Materials(740, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "LightFuel", "Light Fuel", 0, 256, -1, 0, false, false, 1, 1, 1, Dyes.dyeYellow).setCanBeCracked(true);
public static Materials HeavyFuel = new Materials(741, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "HeavyFuel", "Heavy Fuel", 3, 192, -1, 0, false, false, 1, 1, 1, Dyes.dyeBlack).setCanBeCracked(true);
public static Materials LPG = new Materials(742, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "LPG", "LPG", 1, 256, -1, 0, false, false, 1, 1, 1, Dyes.dyeYellow);
public static Materials CrackedLightFuel = new Materials(743, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "CrackedLightFuel", "Cracked Light Fuel", 0, 0, -1, 0, false, false, 1, 1, 1, Dyes.dyeYellow);
public static Materials CrackedHeavyFuel = new Materials(744, TextureSet.SET_FLUID, 1.0F, 0, 0, 16, 255, 255, 0, 0, "CrackedHeavyFuel", "Cracked Heavy Fuel", 0, 0, -1, 0, false, false, 1, 1, 1, Dyes.dyeBlack);
public static Materials Ethane = new MaterialBuilder(642, TextureSet.SET_FLUID, "Ethane").addCell().addGas().setRGB(210, 210, 240).setColor(Dyes.dyeWhite).setFuelType(MaterialBuilder.GAS).setFuelPower(168).setMaterialList(new MaterialStack(Carbon, 2), new MaterialStack(Hydrogen, 6)).addElectrolyzerRecipe().constructMaterial();
public static Materials Propane = new MaterialBuilder(643, TextureSet.SET_FLUID, "Propane").addCell().addGas().setRGB(240, 206, 100).setColor(Dyes.dyeYellow).setFuelType(MaterialBuilder.GAS).setFuelPower(232).setMaterialList(new MaterialStack(Carbon, 3), new MaterialStack(Hydrogen, 8)).addElectrolyzerRecipe().constructMaterial();
public static Materials Butane = new MaterialBuilder(644, TextureSet.SET_FLUID, "Butane").addCell().addGas().setRGB(182, 55, 30).setColor(Dyes.dyeOrange).setFuelType(MaterialBuilder.GAS).setFuelPower(296).setMaterialList(new MaterialStack(Carbon, 4), new MaterialStack(Hydrogen, 10)).addElectrolyzerRecipe().constructMaterial();
public static Materials Butene = new MaterialBuilder(645, TextureSet.SET_FLUID, "Butene").addCell().addGas().setRGB(197, 70, 15).setColor(Dyes.dyeOrange).setFuelType(MaterialBuilder.GAS).setFuelPower(256).setMaterialList(new MaterialStack(Carbon, 4), new MaterialStack(Hydrogen, 8)).addElectrolyzerRecipe().constructMaterial();
public static Materials Butadiene = new MaterialBuilder(646, TextureSet.SET_FLUID, "Butadiene").addCell().addGas().setRGB(212, 85, 0).setColor(Dyes.dyeOrange).setFuelType(MaterialBuilder.GAS).setFuelPower(206).setMaterialList(new MaterialStack(Carbon, 4), new MaterialStack(Hydrogen, 6)).addElectrolyzerRecipe().constructMaterial();
public static Materials Ethane = new MaterialBuilder(642, TextureSet.SET_FLUID, "Ethane").addCell().addGas().setRGB(200, 200, 255).setColor(Dyes.dyeWhite).setFuelType(MaterialBuilder.GAS).setFuelPower(168).setMaterialList(new MaterialStack(Carbon, 2), new MaterialStack(Hydrogen, 6)).addElectrolyzerRecipe().setCanBeCracked(true).constructMaterial();
public static Materials Propane = new MaterialBuilder(643, TextureSet.SET_FLUID, "Propane").addCell().addGas().setRGB(250, 226, 80).setColor(Dyes.dyeYellow).setFuelType(MaterialBuilder.GAS).setFuelPower(232).setMaterialList(new MaterialStack(Carbon, 3), new MaterialStack(Hydrogen, 8)).addElectrolyzerRecipe().setCanBeCracked(true).constructMaterial();
public static Materials Butane = new MaterialBuilder(644, TextureSet.SET_FLUID, "Butane").addCell().addGas().setRGB(182, 55, 30).setColor(Dyes.dyeOrange).setFuelType(MaterialBuilder.GAS).setFuelPower(296).setMaterialList(new MaterialStack(Carbon, 4), new MaterialStack(Hydrogen, 10)).addElectrolyzerRecipe().setCanBeCracked(true).constructMaterial();
public static Materials Butene = new MaterialBuilder(645, TextureSet.SET_FLUID, "Butene").addCell().addGas().setRGB(207, 80, 5).setColor(Dyes.dyeOrange).setFuelType(MaterialBuilder.GAS).setFuelPower(256).setMaterialList(new MaterialStack(Carbon, 4), new MaterialStack(Hydrogen, 8)).addElectrolyzerRecipe().setCanBeCracked(true).constructMaterial();
public static Materials Butadiene = new MaterialBuilder(646, TextureSet.SET_FLUID, "Butadiene").addCell().addGas().setRGB(232, 105, 0).setColor(Dyes.dyeOrange).setFuelType(MaterialBuilder.GAS).setFuelPower(206).setMaterialList(new MaterialStack(Carbon, 4), new MaterialStack(Hydrogen, 6)).addElectrolyzerRecipe().setCanBeCracked(true).constructMaterial();
public static Materials Toluene = new MaterialBuilder(647, TextureSet.SET_FLUID, "Toluene").addCell().setRGB(80, 29, 5).setColor(Dyes.dyeBrown).setMaterialList(new MaterialStack(Carbon, 7), new MaterialStack(Hydrogen, 8)).addElectrolyzerRecipe().constructMaterial();
public static Materials Epichlorohydrin = new MaterialBuilder(648, TextureSet.SET_FLUID, "Epichlorohydrin").addCell().setRGB(80, 29, 5).setColor(Dyes.dyeBrown).setMaterialList(new MaterialStack(Carbon, 3), new MaterialStack(Hydrogen, 5), new MaterialStack(Chlorine, 1), new MaterialStack(Oxygen, 1)).addElectrolyzerRecipe().constructMaterial();
public static Materials PolyvinylChloride = new MaterialBuilder(649, TextureSet.SET_DULL, "Polyvinyl Chloride").addDustItems().addMetalItems().addToolHeadItems().addGearItems().setToolSpeed(3.0f).setDurability(32).setToolQuality(1).setRGB(215, 230, 230).setColor(Dyes.dyeLightGray).setMaterialList(new MaterialStack(Carbon, 2), new MaterialStack(Hydrogen, 3), new MaterialStack(Chlorine, 1)).constructMaterial();
@ -570,8 +568,8 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
public static Materials Methanol = new MaterialBuilder(673, TextureSet.SET_FLUID, "Methanol").addCell().addFluid().setRGB(170, 136, 0).setColor(Dyes.dyeBrown).setFuelPower(96).setMaterialList(new MaterialStack(Carbon, 1), new MaterialStack(Hydrogen, 4), new MaterialStack(Oxygen, 1)).addElectrolyzerRecipe().constructMaterial();
public static Materials CarbonMonoxide = new MaterialBuilder(674, TextureSet.SET_FLUID, "Carbon Monoxide").addCell().addGas().setRGB(14, 72, 128).setColor(Dyes.dyeBrown).setFuelType(MaterialBuilder.GAS).setFuelPower(32).setMaterialList(new MaterialStack(Carbon, 1), new MaterialStack(Oxygen, 1)).addElectrolyzerRecipe().constructMaterial();
public static Materials MetalMixture = new MaterialBuilder(676, TextureSet.SET_METALLIC, "Metal Mixture").addDustItems().setRGB(80, 45, 22).setColor(Dyes.dyeBrown).constructMaterial();
public static Materials Ethylene = new MaterialBuilder(677, TextureSet.SET_FLUID, "Ethylene").addCell().addGas().setRGB(225, 225, 225).setColor(Dyes.dyeWhite).setFuelType(MaterialBuilder.GAS).setFuelPower(288).setMaterialList(new MaterialStack(Carbon, 2), new MaterialStack(Hydrogen, 4)).addElectrolyzerRecipe().constructMaterial();
public static Materials Propene = new MaterialBuilder(678, TextureSet.SET_FLUID, "Propene").addCell().addGas().setRGB(255, 221, 85).setColor(Dyes.dyeYellow).setFuelType(MaterialBuilder.GAS).setFuelPower(144).setMaterialList(new MaterialStack(Carbon, 3), new MaterialStack(Hydrogen, 6)).addElectrolyzerRecipe().constructMaterial();
public static Materials Ethylene = new MaterialBuilder(677, TextureSet.SET_FLUID, "Ethylene").addCell().addGas().setRGB(225, 225, 225).setColor(Dyes.dyeWhite).setFuelType(MaterialBuilder.GAS).setFuelPower(288).setMaterialList(new MaterialStack(Carbon, 2), new MaterialStack(Hydrogen, 4)).addElectrolyzerRecipe().setCanBeCracked(true).constructMaterial();
public static Materials Propene = new MaterialBuilder(678, TextureSet.SET_FLUID, "Propene").addCell().addGas().setRGB(255, 221, 85).setColor(Dyes.dyeYellow).setFuelType(MaterialBuilder.GAS).setFuelPower(144).setMaterialList(new MaterialStack(Carbon, 3), new MaterialStack(Hydrogen, 6)).addElectrolyzerRecipe().setCanBeCracked(true).constructMaterial();
public static Materials VinylAcetate = new MaterialBuilder(679, TextureSet.SET_FLUID, "Vinyl Acetate").addCell().addFluid().setRGB(255, 179, 128).setColor(Dyes.dyeOrange).setMaterialList(new MaterialStack(Carbon, 4), new MaterialStack(Hydrogen, 6), new MaterialStack(Oxygen, 2)).addElectrolyzerRecipe().constructMaterial();
public static Materials PolyvinylAcetate = new MaterialBuilder(680, TextureSet.SET_FLUID, "Polyvinyl Acetate").addCell().addFluid().setRGB(255, 153, 85).setColor(Dyes.dyeOrange).setMaterialList(new MaterialStack(Carbon, 4), new MaterialStack(Hydrogen, 6), new MaterialStack(Oxygen, 2)).constructMaterial();
public static Materials MethylAcetate = new MaterialBuilder(681, TextureSet.SET_FLUID, "Methyl Acetate").addCell().addFluid().setRGB(238, 198, 175).setColor(Dyes.dyeOrange).setMaterialList(new MaterialStack(Carbon, 3), new MaterialStack(Hydrogen, 6), new MaterialStack(Oxygen, 2)).addElectrolyzerRecipe().constructMaterial();
@ -732,6 +730,8 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
@Deprecated public static Materials Beryl = new Materials(Emerald, false);
@Deprecated public static Materials BlackGranite = new Materials(GraniteBlack, false);
@Deprecated public static Materials CalciumCarbonate = new Materials(Calcite, false);
@Deprecated public static Materials CrackedLightFuel = new Materials(LightFuel, false);
@Deprecated public static Materials CrackedHeavyFuel = new Materials(HeavyFuel, false);
@Deprecated public static Materials CreosoteOil = new Materials(Creosote, false);
@Deprecated public static Materials Chromium = new Materials(Chrome, false);
@Deprecated public static Materials Diesel = new Materials(Fuel, false);
@ -796,7 +796,8 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
public boolean mHasParentMod = true, mHasPlasma = false, mHasGas = false, mCustomOre = false;
public Fluid mSolid = null, mFluid = null, mGas = null, mPlasma = null;
private boolean hasCorrespondingFluid = false, hasCorrespondingGas = false;
private boolean hasCorrespondingFluid = false, hasCorrespondingGas = false, canBeCracked = false, canBeSteamCracked = false;
private Fluid[] hydroCrackedFluids = new Fluid[3], steamCrackedFluids = new Fluid[3];
/**
* This Fluid is used as standard Unit for Molten Materials. 1296 is a Molten Block, that means 144 is one Material Unit worth of fluid.
@ -1950,11 +1951,9 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
return MATERIALS_MAP.values();
}
public boolean hasCorrespondingFluid() {
return hasCorrespondingFluid;
}
public Materials setHasCorrespondingFluid(boolean hasCorrespondingFluid) {
this.hasCorrespondingFluid = hasCorrespondingFluid;
@ -1970,6 +1969,15 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
return this;
}
public boolean canBeCracked() {
return canBeCracked;
}
public Materials setCanBeCracked(boolean canBeCracked) {
this.canBeCracked = canBeCracked;
return this;
}
public int getLiquidTemperature() {
return mMeltingPoint == 0 ? 295 : mMeltingPoint;
}
@ -1979,6 +1987,58 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
return this;
}
public Materials setHydroCrackedFluids(Fluid[] hydroCrackedFluids) {
this.hydroCrackedFluids = hydroCrackedFluids;
return this;
}
public FluidStack getLightlyHydroCracked(int amount) {
if (hydroCrackedFluids[0] == null) {
return null;
}
return new FluidStack(hydroCrackedFluids[0], amount);
}
public FluidStack getModeratelyHydroCracked(int amount) {
if (hydroCrackedFluids[0] == null) {
return null;
}
return new FluidStack(hydroCrackedFluids[1], amount);
}
public FluidStack getSeverelyHydroCracked(int amount) {
if (hydroCrackedFluids[0] == null) {
return null;
}
return new FluidStack(hydroCrackedFluids[2], amount);
}
public Materials setSteamCrackedFluids(Fluid[] steamCrackedFluids) {
this.steamCrackedFluids = steamCrackedFluids;
return this;
}
public FluidStack getLightlySteamCracked(int amount) {
if (hydroCrackedFluids[0] == null) {
return null;
}
return new FluidStack(steamCrackedFluids[0], amount);
}
public FluidStack getModeratelySteamCracked(int amount) {
if (hydroCrackedFluids[0] == null) {
return null;
}
return new FluidStack(steamCrackedFluids[1], amount);
}
public FluidStack getSeverelySteamCracked(int amount) {
if (hydroCrackedFluids[0] == null) {
return null;
}
return new FluidStack(steamCrackedFluids[2], amount);
}
public int getGasTemperature() {
return mGasTemp == 0 ? 295 : mMeltingPoint;
}

View file

@ -556,7 +556,7 @@ public interface IGT_RecipeAdder {
/**
* Adds a Distillation Tower Recipe
* Every Fluid also gets seperate distillation recipes
* Every Fluid also gets separate distillation recipes
*
* @param aInput1 must be != null
* @param aOutputs must be != null 1-5 Fluids
@ -584,8 +584,21 @@ public interface IGT_RecipeAdder {
* @param aDuration
* @param aEUt
*/
@Deprecated
public boolean addCrackingRecipe(FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt);
/**
* Adds Oil Cracking Recipe
*
* @param circuitConfig The circuit configuration to control cracking severity
* @param aInput The fluid to be cracked
* @param aInput2 The fluid to catalyze the cracking (typically Hydrogen or Steam)
* @param aOutput The cracked fluid
* @param aDuration
* @param aEUt
*/
public boolean addCrackingRecipe(int circuitConfig, FluidStack aInput, FluidStack aInput2, FluidStack aOutput, int aDuration, int aEUt);
/**
* Adds a Sound to the Sonictron9001
* you should NOT call this in the preInit-Phase!

View file

@ -553,7 +553,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
public static final GT_Recipe_Map sChemicalRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.chemicalreactor", "Chemical Reactor", null, RES_PATH_GUI + "basicmachines/ChemicalReactor", 2, 2, 1, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sMultiblockChemicalRecipes = new GT_Recipe_Map_LargeChemicalReactor();
public static final GT_Recipe_Map sDistillationRecipes = new GT_Recipe_Map_DistillationTower();
public static final GT_Recipe_Map sCrakingRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.craker", "Oil Cracker", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 0, 1, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sCrakingRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.craker", "Oil Cracker", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 1, 2, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sPyrolyseRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.pyro", "Pyrolyse Oven", null, RES_PATH_GUI + "basicmachines/Default", 2, 1, 1, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sWiremillRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.wiremill", "Wiremill", null, RES_PATH_GUI + "basicmachines/Wiremill", 1, 1, 1, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sBenderRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(400), "gt.recipe.metalbender", "Metal Bender", null, RES_PATH_GUI + "basicmachines/Bender", 2, 1, 2, 0, 1, E, 1, E, true, true);
@ -1538,7 +1538,8 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
ArrayList<PositionedStack> inputStacks = new ArrayList<PositionedStack>(itemLimit + fluidLimit);
for (int i = 0; i < itemLimit; i++) {
inputStacks.add(new FixedPositionedStack(this.getRepresentativeInput(i), 48 - i * 18, 5));
System.out.println(Arrays.toString(mInputs) + " + " + Arrays.toString(mFluidInputs) + " -> " + Arrays.toString(mOutputs));
inputStacks.add(new FixedPositionedStack(this.mInputs[i].copy(), 48 - i * 18, 5));
}
for (int i = 0; i < fluidLimit; i++) {
@ -1555,7 +1556,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
ArrayList<PositionedStack> outputStacks = new ArrayList<PositionedStack>(itemLimit + fluidLimit);
for (int i = 0; i < itemLimit; i++) {
outputStacks.add(new FixedPositionedStack(this.getOutput(i), 102 + i * 18, 5));
outputStacks.add(new FixedPositionedStack(this.mOutputs[i].copy(), 102 + i * 18, 5));
}
for (int i = 0; i < fluidLimit; i++) {

View file

@ -1566,7 +1566,52 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
return addFluid("plasma." + aMaterial.mName.toLowerCase(Locale.ENGLISH), "plasma.autogenerated", aMaterial.mDefaultLocalName + " Plasma", aMaterial,
aMaterial.mMoltenRGBa, 3, 10000, GT_OreDictUnificator.get(OrePrefixes.cellPlasma, aMaterial, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
}
public void addAutoGeneratedHydroCrackedFluids(Materials aMaterial){
Fluid[] crackedFluids = new Fluid[3];
String[] prefixes = {"lightlyhydrocracked.", "moderatelyhydrocracked.", "severelyhydrocracked."};
String[] localPrefixes = {"Lightly Hydro-Cracked ", "Moderately Hydro-Cracked ", "Severely Hydro-Cracked "};
GT_Fluid uncrackedFluid = null;
if (aMaterial.mFluid != null) {
uncrackedFluid = (GT_Fluid) aMaterial.mFluid;
} else if (aMaterial.mGas != null) {
uncrackedFluid = (GT_Fluid) aMaterial.mGas;
}
for (int i = 0; i < 3; i++) {
crackedFluids[i] = addFluid(prefixes[i] + aMaterial.mName.toLowerCase(Locale.ENGLISH), uncrackedFluid.mTextureName,
localPrefixes[i] + aMaterial.mDefaultLocalName, null, aMaterial.mRGBa, 2, 775, null, null, 0);
int hydrogenAmount = 2 * i + 2;
GT_Values.RA.addCrackingRecipe(i + 1, new FluidStack(uncrackedFluid, 1000), Materials.Hydrogen.getGas(hydrogenAmount * 1000),
new FluidStack(crackedFluids[i], 1000), 40 + 20 * i, 120 + 60 * i);
GT_Values.RA.addChemicalRecipe(Materials.Hydrogen.getCells(hydrogenAmount), GT_Utility.getIntegratedCircuit(i + 1), new FluidStack(uncrackedFluid, 1000),
new FluidStack(crackedFluids[i], 750), Materials.Empty.getCells(hydrogenAmount), 160 + 80 * i, 30 + 15 * i);
GT_Values.RA.addChemicalRecipe(aMaterial.getCells(1), GT_Utility.getIntegratedCircuit(i + 1), Materials.Hydrogen.getGas(hydrogenAmount * 1000),
new FluidStack(crackedFluids[i], 750), Materials.Empty.getCells(1), 160 + 80 * i, 30 + 15 * i);
}
}
public void addAutoGeneratedSteamCrackedFluids(Materials aMaterial){
Fluid[] crackedFluids = new Fluid[3];
String[] prefixes = {"lightlysteamcracked.", "moderatelysteamcracked.", "severelysteamcracked."};
String[] localPrefixes = {"Lightly Steam-Cracked ", "Moderately Steam-Cracked ", "Severely Steam-Cracked "};
GT_Fluid uncrackedFluid = null;
if (aMaterial.mFluid != null) {
uncrackedFluid = (GT_Fluid) aMaterial.mFluid;
} else if (aMaterial.mGas != null) {
uncrackedFluid = (GT_Fluid) aMaterial.mGas;
}
for (int i = 0; i < 3; i++) {
crackedFluids[i] = addFluid(prefixes[i] + aMaterial.mName.toLowerCase(Locale.ENGLISH), uncrackedFluid.mTextureName,
localPrefixes[i] + aMaterial.mDefaultLocalName, null, aMaterial.mRGBa, 2, 775, null, null, 0);
GT_Values.RA.addCrackingRecipe(i + 1, new FluidStack(uncrackedFluid, 1000), GT_ModHandler.getSteam(1000),
new FluidStack(crackedFluids[i], 2000), 40 + 20 * i, 240 + 120 * i);
GT_Values.RA.addChemicalRecipe(GT_ModHandler.getIC2Item("steamCell", 1L), GT_Utility.getIntegratedCircuit(i + 1), new FluidStack(uncrackedFluid, 1000),
new FluidStack(crackedFluids[i], 1500), Materials.Empty.getCells(1), 160 + 80 * i, 60 + 30 * i);
GT_Values.RA.addChemicalRecipe(aMaterial.getCells(1), GT_Utility.getIntegratedCircuit(i + 1), GT_ModHandler.getSteam(1000),
new FluidStack(crackedFluids[i], 1500), Materials.Empty.getCells(1), 160 + 80 * i, 60 + 30 * i);
}
}
public Fluid addFluid(String aName, String aLocalized, Materials aMaterial, int aState, int aTemperatureK) {
return addFluid(aName, aLocalized, aMaterial, aState, aTemperatureK, null, null, 0);
}

View file

@ -357,30 +357,14 @@ public class GT_RecipeAdder
@Override
public boolean addUniversalDistillationRecipe(FluidStack aInput, FluidStack[] aOutputs, ItemStack aOutput2, int aDuration, int aEUt) {
if (aOutputs.length > 0) {
addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 0L, new Object[0]), aInput, aOutputs[0], aDuration * 2, aEUt / 4, false);
}
if (aOutputs.length > 1) {
addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 1L, new Object[0]), aInput, aOutputs[1], aDuration * 2, aEUt / 4, false);
}
if (aOutputs.length > 2) {
addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 2L, new Object[0]), aInput, aOutputs[2], aDuration * 2, aEUt / 4, false);
}
if (aOutputs.length > 3) {
addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 3L, new Object[0]), aInput, aOutputs[3], aDuration * 2, aEUt / 4, false);
}
if (aOutputs.length > 4) {
addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 4L, new Object[0]), aInput, aOutputs[4], aDuration * 2, aEUt / 4, false);
}
if (aOutputs.length > 5) {
addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 5L, new Object[0]), aInput, aOutputs[5], aDuration * 2, aEUt / 4, false);
}
for (int i = 0; i < Math.min(aOutputs.length, 11); i++) {
addDistilleryRecipe(GT_Utility.getIntegratedCircuit(i), aInput, aOutputs[i], aDuration * 2, aEUt / 4, false);
}
return addDistillationTowerRecipe(aInput, aOutputs, aOutput2, aDuration, aEUt);
}
public boolean addDistillationTowerRecipe(FluidStack aInput, FluidStack[] aOutputs, ItemStack aOutput2, int aDuration, int aEUt) {
if (aInput == null || aOutputs == null || aOutputs.length < 1 || aOutputs.length > 5) {
if (aInput == null || aOutputs == null || aOutputs.length < 1 || aOutputs.length > 11) {
return false;
}
if ((aDuration = GregTech_API.sRecipeFile.get("distillation", aInput.getUnlocalizedName(), aDuration)) <= 0) {
@ -845,20 +829,35 @@ public class GT_RecipeAdder
}
@Override
@Deprecated
public boolean addCrackingRecipe(FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt) {
if ((aInput == null) || (aOutput == null)) {
// if ((aInput == null) || (aOutput == null)) {
// return false;
// }
// if ((aDuration = GregTech_API.sRecipeFile.get("cracking", aInput.getUnlocalizedName(), aDuration)) <= 0) {
// return false;
// }
// GT_Recipe.GT_Recipe_Map.sCrakingRecipes.addRecipe(true, null, null, null, null, new FluidStack[]{aInput}, new FluidStack[]{aOutput}, aDuration, aEUt, 0);
// GT_Recipe.GT_Recipe_Map.sCrakingRecipes.addRecipe(true, null, null, null, null, new FluidStack[]{aInput, GT_ModHandler.getSteam(aInput.amount)}, new FluidStack[]{aOutput, Materials.Hydrogen.getGas(aInput.amount)}, aDuration, aEUt, 0);
// GT_Recipe.GT_Recipe_Map.sCrakingRecipes.addRecipe(true, null, null, null, null, new FluidStack[]{aInput, Materials.Hydrogen.getGas(aInput.amount)}, new FluidStack[]{new FluidStack(aOutput.getFluid(), (int) (aOutput.amount * 1.3))}, aDuration, aEUt, 0);
// return true;
return false;
}
@Override
public boolean addCrackingRecipe(int circuitConfig, FluidStack aInput, FluidStack aInput2, FluidStack aOutput, int aDuration, int aEUt) {
if ((aInput == null && aInput2 == null) || (aOutput == null)) {
return false;
}
if ((aDuration = GregTech_API.sRecipeFile.get("cracking", aInput.getUnlocalizedName(), aDuration)) <= 0) {
return false;
}
GT_Recipe.GT_Recipe_Map.sCrakingRecipes.addRecipe(true, null, null, null, null, new FluidStack[]{aInput}, new FluidStack[]{aOutput}, aDuration, aEUt, 0);
GT_Recipe.GT_Recipe_Map.sCrakingRecipes.addRecipe(true, null, null, null, null, new FluidStack[]{aInput, GT_ModHandler.getSteam(aInput.amount)}, new FluidStack[]{aOutput, Materials.Hydrogen.getGas(aInput.amount)}, aDuration, aEUt, 0);
GT_Recipe.GT_Recipe_Map.sCrakingRecipes.addRecipe(true, null, null, null, null, new FluidStack[]{aInput, Materials.Hydrogen.getGas(aInput.amount)}, new FluidStack[]{new FluidStack(aOutput.getFluid(), (int) (aOutput.amount * 1.3))}, aDuration, aEUt, 0);
GT_Recipe.GT_Recipe_Map.sCrakingRecipes.addRecipe(false, new ItemStack[]{GT_Utility.getIntegratedCircuit(circuitConfig)}, null, null, null,
new FluidStack[]{aInput, aInput2}, new FluidStack[]{aOutput}, aDuration, aEUt, 0);
return true;
}
@Override
@Override
public boolean addAssemblylineRecipe(ItemStack aResearchItem, int aResearchTime, ItemStack[] aInputs, FluidStack[] aFluidInputs, ItemStack aOutput, int aDuration, int aEUt) {
if ((aResearchItem==null)||(aResearchTime<=0)||(aInputs == null) || (aOutput == null) || aInputs.length>15 || aInputs.length<4) {
return false;

View file

@ -652,8 +652,6 @@ if(Loader.isModLoaded("Railcraft")){
GT_Values.RA.addUniversalDistillationRecipe(new FluidStack(FluidRegistry.getFluid("oilgc"), 50), new FluidStack[]{Materials.SulfuricGas.getGas(60), Materials.SulfuricNaphtha.getFluid(20), Materials.SulfuricLightFuel.getFluid(50), Materials.SulfuricHeavyFuel.getFluid(15)}, null, 20, 96);
}
GT_Values.RA.addUniversalDistillationRecipe(Materials.OilHeavy.getFluid(100), new FluidStack[]{Materials.SulfuricGas.getGas(60), Materials.SulfuricNaphtha.getFluid(15), Materials.SulfuricLightFuel.getFluid(45), Materials.SulfuricHeavyFuel.getFluid(250)}, null, 20, 288);
GT_Values.RA.addUniversalDistillationRecipe(Materials.CrackedLightFuel.getFluid(192), new FluidStack[]{Materials.Gas.getGas(480), Materials.Naphtha.getFluid(60), Materials.HeavyFuel.getFluid(20), new FluidStack(ItemList.sToluene,20)}, null, 16, 120);
GT_Values.RA.addUniversalDistillationRecipe(Materials.CrackedHeavyFuel.getFluid(192), new FluidStack[]{Materials.Gas.getGas(160), Materials.Naphtha.getFluid(20), Materials.LightFuel.getFluid(80), new FluidStack(ItemList.sToluene,60), Materials.Lubricant.getFluid(10)}, GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.HydratedCoal, 1L), 16, 120);
GT_Values.RA.addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 1L, new Object[0]), Materials.HeavyFuel.getFluid(10L), new FluidStack(ItemList.sToluene,4), 16, 24, false);
GT_Values.RA.addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 1L, new Object[0]), new FluidStack(ItemList.sToluene,30), Materials.LightFuel.getFluid(30L), 16, 24, false);
@ -676,9 +674,6 @@ if(Loader.isModLoaded("Railcraft")){
GT_Values.RA.addChemicalRecipe(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Saltpeter, 1L), null, Materials.Naphtha.getFluid(576), Materials.Polycaprolactam.getMolten(1296), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Potassium, 1), 640);
GT_Values.RA.addWiremillRecipe(GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.Polycaprolactam, 1L), new ItemStack(Items.string, 32), 80, 48);
GT_Values.RA.addCrackingRecipe(Materials.LightFuel.getFluid(128), Materials.CrackedLightFuel.getFluid(192), 16, 320);
GT_Values.RA.addCrackingRecipe(Materials.HeavyFuel.getFluid(128), Materials.CrackedHeavyFuel.getFluid(192), 16, 320);
GT_Values.RA.addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 4L, new Object[0]), Materials.Creosote.getFluid(3L), Materials.Lubricant.getFluid(1L), 16, 24, false);
GT_Values.RA.addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 4L, new Object[0]), Materials.SeedOil.getFluid(4L), Materials.Lubricant.getFluid(1L), 16, 24, false);
GT_Values.RA.addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 4L, new Object[0]), Materials.FishOil.getFluid(3L), Materials.Lubricant.getFluid(1L), 16, 24, false);