package gregtech.api.interfaces.internal;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
public interface IGT_RecipeAdder {
/**
* Adds a FusionreactorRecipe
* Does not work anymore!
*/
@Deprecated
boolean addFusionReactorRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, int aFusionDurationInTicks, int aFusionEnergyPerTick, int aEnergyNeededForStartingFusion);
/**
* Adds a FusionreactorRecipe
*
* @param aInput1 = first Input (not null, and respects StackSize)
* @param aInput2 = second Input (not null, and respects StackSize)
* @param aOutput1 = Output of the Fusion (can be null, and respects StackSize)
* @param aFusionDurationInTicks = How many ticks the Fusion lasts (must be > 0)
* @param aFusionEnergyPerTick = The EU generated per Tick (can even be negative!)
* @param aEnergyNeededForStartingFusion = EU needed for heating the Reactor up (must be >= 0)
* @return true if the Recipe got added, otherwise false.
*/
boolean addFusionReactorRecipe(FluidStack aInput1, FluidStack aInput2, FluidStack aOutput1, int aFusionDurationInTicks, int aFusionEnergyPerTick, int aEnergyNeededForStartingFusion);
/**
* Adds a Centrifuge Recipe
*
* @param aInput1 must be != null
* @param aCellInput this is for the needed Cells, > 0 for Tincellcount, < 0 for negative Fuelcancount, == 0 for nothing
* @param aOutput1 must be != null
* @param aOutput2 can be null
* @param aOutput3 can be null
* @param aOutput4 can be null
* @param aDuration must be > 0
*/
boolean addCentrifugeRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int aDuration);
boolean addCentrifugeRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int aDuration, int aEUt);
/**
* Adds a Centrifuge Recipe
*
* @param aInput1 must be != null
* @param aOutput1 must be != null
* @param aOutput2 can be null
* @param aOutput3 can be null
* @param aOutput4 can be null
* @param aDuration must be > 0
*/
boolean addCentrifugeRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int[] aChances, int aDuration, int aEUt);
boolean addCentrifugeRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int[] aChances, int aDuration, int aEUt, boolean aCleanroom);
/**
* @param aInput1 must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @return
*/
boolean addCompressorRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt);
/**
* Adds a Electrolyzer Recipe
*
* @param aInput1 must be != null
* @param aCellInput this is for the needed Cells, > 0 for Tincellcount, < 0 for negative Fuelcancount, == 0 for nothing
* @param aOutput1 must be != null
* @param aOutput2 can be null
* @param aOutput3 can be null
* @param aOutput4 can be null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addElectrolyzerRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int aDuration, int aEUt);
/**
* Adds a Electrolyzer Recipe
*
* @param aInput1 must be != null
* @param aCellInput this is for the needed Cells, > 0 for Tincellcount, < 0 for negative Fuelcancount, == 0 for nothing
* @param aOutput1 must be != null
* @param aOutput2 can be null
* @param aOutput3 can be null
* @param aOutput4 can be null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addElectrolyzerRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int[] aChances, int aDuration, int aEUt);
/**
* Adds a Chemical Recipe
*
* @param aInput1 must be != null
* @param aInput2 must be != null
* @param aOutput must be != null
* @param aDuration must be > 0
*/
boolean addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput, int aDuration);
boolean addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Chemical Recipe
*
* @param aInput1 must be != null
* @param aInput2 must be != null
* @param aOutput must be != null
* @param aDuration must be > 0
*/
boolean addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration);
/**
* Adds a Chemical Recipe
* Only use this when the recipe conflicts in MultiBlock!
*
* @param aInput1 must be != null
* @param aInput2 must be != null
* @param aOutput1 must be != null
* @param aOutput2 must be != null
* @param aDuration must be > 0
*/
boolean addChemicalRecipeForBasicMachineOnly(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, ItemStack aOutput2, int aDuration, int aEUtick);
/**
* Adds a Chemical Recipe
*
* @param aInput1 must be != null
* @param aInput2 must be != null
* @param aOutput1 must be != null
* @param aOutput2 must be != null
* @param aDuration must be > 0
*/
boolean addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, ItemStack aOutput2, int aDuration);
/**
* Adds Recipes for creating a radically polymerized polymer from a base Material (for example Ethylene -> Polyethylene)
*
* @param aBasicMaterial The basic Material
* @param aBasicMaterialCell The corresponding Cell basic Material
* @param aPolymer The polymer
*/
void addDefaultPolymerizationRecipes(Fluid aBasicMaterial, ItemStack aBasicMaterialCell, Fluid aPolymer);
/**
* Adds a Chemical Recipe
*
* @param aInput1 must be != null
* @param aInput2 must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @param aEUtick must be > 0
*/
boolean addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration, int aEUtick);
boolean addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, ItemStack aOutput2, int aDuration, int aEUtick, boolean aCleanroom);
/**
* Adds a Chemical Recipe
*
* @param aInput1 must be != null
* @param aInput2 must be != null
* @param aOutput1 must be != null
* @param aOutput2 must be != null
* @param aDuration must be > 0
* @param aEUtick must be > 0
*/
boolean addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, ItemStack aOutput2, int aDuration, int aEUtick);
/**
* Adds a Chemical Recipe that only exists in the Large Chemical Reactor
*
* @param aInputs item inputs
* @param aFluidInputs fluid inputs
* @param aFluidOutputs fluid outputs
* @param aOutputs item outputs
* @param aDuration must be > 0
* @param aEUtick must be > 0
*
aInputs and aFluidInputs must contain at least one valid input.
*
aOutputs and aFluidOutputs must contain at least one valid output.
*
*/
boolean addMultiblockChemicalRecipe(ItemStack[] aInputs, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, ItemStack[] aOutputs, int aDuration, int aEUtick);
/**
* Adds a Blast Furnace Recipe
*
* @param aInput1 must be != null
* @param aInput2 can be null
* @param aOutput1 must be != null
* @param aOutput2 can be null
* @param aDuration must be > 0
* @param aEUt should be > 0
* @param aLevel should be > 0 is the minimum Heat Level needed for this Recipe
*/
@Deprecated
boolean addBlastRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, int aLevel);
/**
* Adds a Blast Furnace Recipe
*
* @param aInput1 must be != null
* @param aInput2 can be null
* @param aOutput1 must be != null
* @param aOutput2 can be null
* @param aDuration must be > 0
* @param aEUt should be > 0
* @param aLevel should be > 0 is the minimum Heat Level needed for this Recipe
*/
boolean addBlastRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, int aLevel);
/**
* Adds a Blast Furnace Recipe
*
* @param aInput1 must be != null if aInput2 == null
* @param aInput2 must be != null if aInput1 == null
* @param aCoalAmount must be > 0
* @param aOutput1 must be != null if aOutput2 == null
* @param aOutput2 must be != null if aOutput1 == null
* @param aDuration must be > 0
*/
boolean addPrimitiveBlastRecipe(ItemStack aInput1, ItemStack aInput2, int aCoalAmount, ItemStack aOutput1, ItemStack aOutput2, int aDuration);
/**
* Adds a Canning Machine Recipe
*
* @param aInput1 must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0, 100 ticks is standard.
* @param aEUt should be > 0, 1 EU/t is standard.
*/
boolean addCannerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
/**
* Adds an Alloy Smelter Recipe
*
* @param aInput1 must be != null
* @param aInput2 can be null
* @param aOutput1 must be != null
* @param aOutput2 can be null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addAlloySmelterRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, int aDuration, int aEUt);
boolean addAlloySmelterRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, int aDuration, int aEUt, boolean hidden);
/**
* Adds a CNC-Machine Recipe
*
* @param aInput1 must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addCNCRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt);
/**
* Adds an Assembler Recipe
*
* @param aInput1 must be != null
* @param aOutput1 must be != null
* @param aInput2 must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addAssemblerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, int aDuration, int aEUt);
/**
* Adds an Assembler Recipe
*
* @param aInputs must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*
*/
boolean addAssemblerRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt);
/**
* Adds an Assembler Recipe
*
* @param aInput1 must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addAssemblerRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt);
boolean addAssemblerRecipe(ItemStack aInput1, Object aOreDict, int aAmount, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt);
boolean addAssemblerRecipe(ItemStack[] aInputs, Object aOreDict, int aAmount, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt);
boolean addAssemblerRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt, boolean aCleanroom);
boolean addAssemblerRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt, boolean aCleanroom);
/**
* Adds an Circuit Assembler Recipe
*
* @param aInputs must be 1-6 ItemStacks
* @param aFluidInput 0-1 fluids
* @param aOutput must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addCircuitAssemblerRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput, int aDuration, int aEUt);
boolean addCircuitAssemblerRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput, int aDuration, int aEUt, boolean aCleanroom);
/**
* Adds an Assemblyline Recipe
*
* @param aInputs must be != null, 4-16 inputs
* @param aFluidInputs 0-4 fluids
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addAssemblylineRecipe(ItemStack aResearchItem, int aResearchTime, ItemStack[] aInputs, FluidStack[] aFluidInputs, ItemStack aOutput1, int aDuration, int aEUt);
/**
* Adds a Assemblyline Recipe
*
* @param aInputs elements should be: ItemStack for single item;
* ItemStack[] for multiple equivalent items;
* {OreDict, amount} for oredict.
*/
boolean addAssemblylineRecipe(ItemStack aResearchItem, int aResearchTime, Object[] aInputs, FluidStack[] aFluidInputs, ItemStack aOutput1, int aDuration, int aEUt);
/**
* Adds a Forge Hammer Recipe
*
* @param aInput1 must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addForgeHammerRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt);
/**
* Adds a Wiremill Recipe
*
* @param aInput must be != null
* @param aOutput must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addWiremillRecipe(ItemStack aInput, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Polariser Recipe
*
* @param aInput must be != null
* @param aOutput must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addPolarizerRecipe(ItemStack aInput, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Plate Bending Machine Recipe
*
* @param aInput must be != null
* @param aOutput must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addBenderRecipe(ItemStack aInput, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Extruder Machine Recipe
*
* @param aInput must be != null
* @param aShape must be != null, Set the stackSize to 0 if you don't want to let it consume this Item.
* @param aOutput must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addExtruderRecipe(ItemStack aInput, ItemStack aShape, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Slicer Machine Recipe
*
* @param aInput must be != null
* @param aShape must be != null, Set the stackSize to 0 if you don't want to let it consume this Item.
* @param aOutput must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
*/
boolean addSlicerRecipe(ItemStack aInput, ItemStack aShape, ItemStack aOutput, int aDuration, int aEUt);
/**
* @param aInput must be != null
* @param aFluidInput must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
* @return
*/
boolean addOreWasherRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, FluidStack aFluidInput, int aDuration, int aEUt);
/**
* Adds an Implosion Compressor Recipe
*
* @param aInput1 must be != null
* @param aInput2 amount of ITNT, should be > 0
* @param aOutput1 must be != null
* @param aOutput2 can be null
*/
boolean addImplosionRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2);
/**
* Adds a Grinder Recipe
*
* @param aInput1 must be != null
* @param aInput2 id for the Cell needed for this Recipe
* @param aOutput1 must be != null
* @param aOutput2 can be null
* @param aOutput3 can be null
* @param aOutput4 can be null
*/
boolean addGrinderRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4);
/**
* Adds a Distillation Tower Recipe
*
* @param aInput must be != null
* @param aOutputs must be != null 1-5 Fluids
* @param aOutput2 can be null
*/
boolean addDistillationTowerRecipe(FluidStack aInput, FluidStack[] aOutputs, ItemStack aOutput2, int aDuration, int aEUt);
boolean addSimpleArcFurnaceRecipe(ItemStack aInput, FluidStack aFluidInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt);
boolean addPlasmaArcFurnaceRecipe(ItemStack aInput, FluidStack aFluidInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt);
boolean addPlasmaArcFurnaceRecipe(ItemStack aInput, FluidStack aFluidInput, ItemStack[] aOutputs, FluidStack aFluidPutput, int[] aChances, int aDuration, int aEUt);
/**
* Adds a Distillation Tower Recipe
*/
boolean addDistillationRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, int aDuration, int aEUt);
/**
* Adds a Lathe Machine Recipe
*/
boolean addLatheRecipe(ItemStack aInput1, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
/**
* Adds a Cutter Recipe
*/
boolean addCutterRecipe(ItemStack aInput, FluidStack aLubricant, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
/**
* Adds Cutter Recipes with default Lubricants
*/
boolean addCutterRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
boolean addCutterRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, boolean aCleanroom);
boolean addCutterRecipe(ItemStack aInput, ItemStack aCircuit, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
boolean addCutterRecipe(ItemStack aInput, ItemStack aCircuit, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, boolean aCleanroom);
boolean addCutterRecipe(ItemStack[] aInputs, ItemStack[] aOutputs, int aDuration, int aEUt, int aSpecial);
/**
* Adds a Boxing Recipe
*/
boolean addBoxingRecipe(ItemStack aContainedItem, ItemStack aEmptyBox, ItemStack aFullBox, int aDuration, int aEUt);
/**
* @param aInput must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
* @param aEUt should be > 0
* @return
*/
boolean addThermalCentrifugeRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, int aDuration, int aEUt);
/**
* Adds an Unboxing Recipe
*/
boolean addUnboxingRecipe(ItemStack aFullBox, ItemStack aContainedItem, ItemStack aEmptyBox, int aDuration, int aEUt);
/**
* Adds a Vacuum Freezer Recipe
*
* @param aInput1 must be != null
* @param aOutput1 must be != null
* @param aDuration must be > 0
*/
boolean addVacuumFreezerRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration);
boolean addVacuumFreezerRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt);
/**
* Adds a Fuel for My Generators
*
* @param aInput1 must be != null
* @param aOutput1 can be null
* @param aEU EU per MilliBucket. If no Liquid Form of this Container is available, then it will give you EU*1000 per Item.
* @param aType 0 = Diesel; 1 = Gas Turbine; 2 = Thermal; 3 = Dense Fluid; 4 = Plasma; 5 = Magic; And if something is unclear or missing, then look at the GT_Recipe-Class
*/
boolean addFuel(ItemStack aInput1, ItemStack aOutput1, int aEU, int aType);
/**
* Adds an Amplifier Recipe for the Amplifabricator
*/
boolean addAmplifier(ItemStack aAmplifierItem, int aDuration, int aAmplifierAmountOutputted);
/**
* Adds a Recipe for the Brewing Machine (intentionally limited to Fluid IDs)
*/
boolean addBrewingRecipe(ItemStack aIngredient, Fluid aInput, Fluid aOutput, boolean aHidden);
boolean addBrewingRecipe(ItemStack aIngredient, Fluid aInput, Fluid aOutput, int aDuration, int aEUt, boolean aHidden);
boolean addBrewingRecipeCustom(ItemStack aIngredient, FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt, boolean aHidden);
/**
* Adds a Recipe for the Fermenter
*/
boolean addFermentingRecipe(FluidStack aInput, FluidStack aOutput, int aDuration, boolean aHidden);
boolean addFermentingRecipe(FluidStack aInput, FluidStack aOutput, int aDuration, int aEUT, boolean aHidden);
/**
* Adds a Recipe for the Fluid Heater
*/
boolean addFluidHeaterRecipe(ItemStack aCircuit, FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt);
/**
* Adds a Recipe for the Distillery
*/
boolean addDistilleryRecipe(ItemStack aCircuit, FluidStack aInput, FluidStack aOutput, ItemStack aSolidOutput, int aDuration, int aEUt, boolean aHidden);
boolean addDistilleryRecipe(ItemStack aCircuit, FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt, boolean aHidden);
boolean addDistilleryRecipe(int circuitConfig, FluidStack aInput, FluidStack aOutput, ItemStack aSolidOutput, int aDuration, int aEUt, boolean aHidden);
boolean addDistilleryRecipe(int aCircuit, FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt, boolean aHidden);
/**
* Adds a Recipe for the Fluid Solidifier
*/
boolean addFluidSolidifierRecipe(ItemStack aMold, FluidStack aInput, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Recipe for Fluid Smelting
*/
boolean addFluidSmelterRecipe(ItemStack aInput, ItemStack aRemains, FluidStack aOutput, int aChance, int aDuration, int aEUt);
/**
* Adds a Recipe for Fluid Smelting
*/
boolean addFluidSmelterRecipe(ItemStack aInput, ItemStack aRemains, FluidStack aOutput, int aChance, int aDuration, int aEUt, boolean hidden);
/**
* Adds a Recipe for Fluid Extraction
*/
boolean addFluidExtractionRecipe(ItemStack aInput, ItemStack aRemains, FluidStack aOutput, int aChance, int aDuration, int aEUt);
/**
* Adds a Recipe for the Fluid Canner
*/
boolean addFluidCannerRecipe(ItemStack aInput, ItemStack aOutput, FluidStack aFluidInput, FluidStack aFluidOutput);
boolean addFluidCannerRecipe(ItemStack aInput, ItemStack aOutput, FluidStack aFluidInput, FluidStack aFluidOutput, int aDuration, int aEUt);
/**
* Adds a Recipe for the Chemical Bath
*/
boolean addChemicalBathRecipe(ItemStack aInput, FluidStack aBathingFluid, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, int[] aChances, int aDuration, int aEUt);
/**
* Adds a Recipe for the Electromagnetic Separator
*/
boolean addElectromagneticSeparatorRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, int[] aChances, int aDuration, int aEUt);
/**
* Adds a Recipe for the Extractor
*/
boolean addExtractorRecipe(ItemStack aInput, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Recipe for the Printer
*/
boolean addPrinterRecipe(ItemStack aInput, FluidStack aFluid, ItemStack aSpecialSlot, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Recipe for the Autoclave
*/
boolean addAutoclaveRecipe(ItemStack aInput, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt);
boolean addAutoclaveRecipe(ItemStack aInput, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
boolean addAutoclaveRecipe(ItemStack aInput, ItemStack aCircuit, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
boolean addAutoclaveRecipe(ItemStack aInput, ItemStack aCircuit, FluidStack aFluidIn, FluidStack aFluidOut, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
boolean addAutoclaveSpaceRecipe(ItemStack aInput, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
boolean addAutoclaveSpaceRecipe(ItemStack aInput, ItemStack aCircuit, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
/**
* Adds a Recipe for the Mixer
*/
boolean addMixerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aInput3, ItemStack aInput4, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration, int aEUt);
boolean addMixerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aInput3, ItemStack aInput4, ItemStack aInput5, ItemStack aInput6, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration, int aEUt);
boolean addMixerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aInput3, ItemStack aInput4, ItemStack aInput5, ItemStack aInput6, ItemStack aInput7, ItemStack aInput8, ItemStack aInput9, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration, int aEUt);
/**
* Adds a Recipe for the Laser Engraver
*/
boolean addLaserEngraverRecipe(ItemStack aItemToEngrave, ItemStack aLens, ItemStack aEngravedItem, int aDuration, int aEUt);
/**
* Adds a Recipe for the Laser Engraver
*/
boolean addLaserEngraverRecipe(ItemStack aItemToEngrave, ItemStack aLens, ItemStack aEngravedItem, int aDuration, int aEUt, boolean aCleanroom);
/**
* Adds a Recipe for the Forming Press
*/
boolean addFormingPressRecipe(ItemStack aItemToImprint, ItemStack aForm, ItemStack aImprintedItem, int aDuration, int aEUt);
/**
* Adds a Recipe for the Sifter. (up to 9 Outputs)
*/
boolean addSifterRecipe(ItemStack aItemToSift, ItemStack[] aSiftedItems, int[] aChances, int aDuration, int aEUt);
/**
* Adds a Recipe for the Arc Furnace. (up to 4 Outputs)
*/
boolean addArcFurnaceRecipe(ItemStack aInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt);
/**
* Adds a Recipe for the Arc Furnace. (up to 4 Outputs)
*/
boolean addArcFurnaceRecipe(ItemStack aInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt, boolean hidden);
/**
* Adds a Recipe for the GT Pulveriser. (up to 4 Outputs)
*/
boolean addPulveriserRecipe(ItemStack aInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt);
/**
* Adds a Recipe for the GT Pulveriser. (up to 4 Outputs)
*/
boolean addPulveriserRecipe(ItemStack aInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt, boolean hidden);
/**
* Adds a Distillation Tower Recipe
* Every Fluid also gets separate distillation recipes
*
* @param aInput must be != null
* @param aOutputs must be != null 1-5 Fluids
* @param aOutput2 can be null
*/
boolean addUniversalDistillationRecipe(FluidStack aInput, FluidStack[] aOutputs, ItemStack aOutput2, int aDuration, int aEUt);
/**
* Adds Pyrolyse Recipe
*
* @param aInput
* @param intCircuit
* @param aOutput
* @param aFluidOutput
* @param aDuration
* @param aEUt
*/
boolean addPyrolyseRecipe(ItemStack aInput, FluidStack aFluidInput, int intCircuit, ItemStack aOutput, FluidStack aFluidOutput, int aDuration, int aEUt);
/**
* Adds Oil Cracking Recipe
*
* @param aInput
* @param aOutput
* @param aDuration
* @param aEUt
*/
@Deprecated
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
*/
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!
*
* @param aItemStack = The Item you want to display for this Sound
* @param aSoundName = The Name of the Sound in the resources/newsound-folder like Vanillasounds
* @return true if the Sound got added, otherwise false.
*/
boolean addSonictronSound(ItemStack aItemStack, String aSoundName);
}