Development: Difference between revisions

19,207 bytes removed ,  1 year ago
m
Improved the page
(Add link to my git management page)
m (Improved the page)
Line 1:
== Introduction ==
 
Everyone can contribute to GTNH in one way or another. One possible way is to expand/improve the source code of the mods. To get started, you first need a vision for what you want to do. If you have no idea you can look through [[https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues|Github issues]] and try to adress some. If you do have a vision and are unsure wether its good or want to hear more opinisions on it you can discuss it with others in a new issue or on discord.
 
== Getting started ==
 
If you found a mod that you want to edit, create a fork of it first, by pressing the fork-button on its GitHub page. After that you can clone your fork to a local repository and import it into your IDE and get started on development. If you are unsure how to do things, try to look up how similar things are already done.
 
=== From Scratch ===
 
# Create a new GitHub repository and clone it
# Choose and download a [https://files.minecraftforge.net/net/minecraftforge/forge/ Forge] MDK and extract the contents of the ZIP-archive into the directory, where you cloned your repository to (If you are developing for Minecraft 1.7.10, you can use SinTh0r4s' [https://github.com/GTNewHorizons/ExampleMod1.7.10/releases/tag/latest-packages]-template).
# Edit your project details (name, version, dependecies, etc.).
#Execute <code>gradlew setupDecompWorkspace eclipse</code> / <code>gradlew setupDecompWorkspace idea</code> in the root directory of your project
# In Eclipse / IntelliJ IDEA, import your workspace as a Gradle project.
# Done.
 
=== From an existing Repository ===
 
# Clone the repository
#Execute <code>gradlew setupDecompWorkspace eclipse</code> / <code>gradlew setupDecompWorkspace idea</code> in the root directory of your project
# In Eclipse / IntelliJ IDEA, import your workspace as an existing Gradle project.
#If the import fails, you may have to adjust the Gradle version and/or buildscript. If you are developing for Minecraft 1.7.10, read [https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/master/docs/migration.md this guide].
#Execute <code>./gradlew genIntellijRuns</code> if you are using InteliJ to run the project inside your IDE.
# Done.
 
=== Common issues ===
* If even after you executed the <code>gradlw setupDecompWorkspace</code> command your IDE tells you that stuff is missing, try to reload gradle.
* You need Java 8 (64 bit) for development. If you have multiple Java versions installed you may need to set the JAVA_HOME environment variable to the location of your Java 8 installation.
 
=== Git Configuration ===
If you would like to avoid signing commits with your real name, see here: [[Managing Git Identities]]
 
==Tools==
All applications that are grouped together can do about the same. This does not mean that you can pick any one of them, as they differ in functionality, style, performace and customizability. It is recommended you look at what they can do and try each one out, so you can decide which application you want to use for which use case.
Line 44 ⟶ 77:
*[https://java-decompiler.github.io/ Java Decompiler]
*[https://github.com/glowredman/MCPMappingViewer MCP Mapping Viewer]
 
==Setting up a Development Environment==
 
=== From Scratch ===
 
# Create a new GitHub repository and clone it
# Choose and download a [https://files.minecraftforge.net/net/minecraftforge/forge/ Forge] MDK and extract the contents of the ZIP-archive into the directory, where you cloned your repository to (If you are developing for Minecraft 1.7.10, you can use SinTh0r4s' [https://github.com/GTNewHorizons/ExampleMod1.7.10/releases/tag/latest-packages]-template).
# Edit your project details (name, version, dependecies, etc.).
#Execute <code>gradlew setupDecompWorkspace eclipse</code> / <code>gradlew setupDecompWorkspace idea</code> in the root directory of your project
# In Eclipse / IntelliJ IDEA, import your workspace as a Gradle project.
# Done.
 
=== From an existing Repository ===
 
# Clone the repository
#Execute <code>gradlew setupDecompWorkspace eclipse</code> / <code>gradlew setupDecompWorkspace idea</code> in the root directory of your project
# In Eclipse / IntelliJ IDEA, import your workspace as an existing Gradle project.
#If the import fails, you may have to adjust the Gradle version and/or buildscript. If you are developing for Minecraft 1.7.10, read [https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/master/docs/migration.md this guide].
#Execute <code>./gradlew genIntellijRuns</code> if you are using InteliJ to run the project inside your IDE.
# Done.
 
=== Git Configuration ===
If you would like to avoid signing commits with your real name, see here: [[Managing Git Identities]]
 
==Maven/Jenkins Selection==
Line 399 ⟶ 409:
* Debugging that config should show up loading the hot swap agent at the beginning of the logs
* If you have custom jvm args in the configs, make sure to remove all gc-related options as dcevm is works only with the default gc
 
==Miscellaneous==
All GregTech methods are taken from [https://github.com/GTNewHorizons/GT5-Unofficial/ its sourcecode], version 5.09.34.15 (12th of March, 2021).
 
===How to...===
 
====...get...====
 
=====...an Item=====
<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegistry;
GameRegistry.findItem(String modId, String name);
</syntaxhighlight>Vanilla Items are located in <code>net.minecraft.init.Items</code>.
 
=====...a Block=====
<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegistry;
GameRegistry.findBlock(String modId, String name);
</syntaxhighlight>Vanilla Blocks are located in <code>net.minecraft.init.Blocks</code>.
 
=====...a Fluid=====
<syntaxhighlight lang="java">
import net.minecraftforge.fluids.FluidRegistry;
FluidRegistry.getFluid(String fluidName);
</syntaxhighlight>Vanilla Fluids are located in <code>net.minecraftforge.fluids.FluidRegistry</code>.
 
=====...an ItemStack=====
<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegistry;
GameRegistry.findItemStack(String modId, String name, int stackSize);
</syntaxhighlight>If you want to change the meta-data, do<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
ItemStack stack = GameRegistry.findItemStack(String modId, String name, int stackSize);
Items.apple.setDamage(stack, int damage); // BE AWARE: This can throw a NullPointerException if there is no Item for the given namespace! Items.apple can be any instance of net.minecraft.item.Item
</syntaxhighlight>
 
=====...a FluidStack=====
<syntaxhighlight lang="java">
import net.minecraftforge.fluids.FluidRegistry;
FluidRegistry.getFluidStack(String fluidName, int amount);
</syntaxhighlight>
 
===== ...a GregTech Integrated Circuit =====
<syntaxhighlight lang="java">
import gregtech.api.util.GT_Utility;
GT_Utility.getIntegratedCircuit(int config);
</syntaxhighlight>
 
==== ...add... ====
 
===== ...a Shaped Recipe =====
<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.ItemStack;
GameRegistry.addShapedRecipe(ItemStack output, Object... params);
</syntaxhighlight>
 
===== ...a Shapeless Recipe =====
<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.ItemStack;
GameRegistry.addShapelessRecipe(ItemStack output, Object... params);
</syntaxhighlight>
 
===== ...a Shaped OreDict Recipe =====
<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegsitry;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.ShapedOreRecipe;
GameRegistry.addRecipe(new ShapedOreRecipe(ItemStack result, Object... recipe));
</syntaxhighlight>
 
===== ...a Shapeless OreDict Recipe =====
<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegsitry;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.ShapelessOreRecipe;
GameRegistry.addRecipe(new ShapelessOreRecipe(ItemStack result, Object... recipe));
</syntaxhighlight>
 
===== ...a Smelting Recipe =====
<syntaxhighlight lang="java">
import cpw.mods.fml.common.registry.GameRegsitry;
import net.minecraft.item.ItemStack;
GameRegistry.addSmelting(ItemStack input, ItemStack output, float xp);
</syntaxhighlight>
 
===== ...a GregTech Fuel =====
<syntaxhighlight lang="java">
import gregtech.api.enums.GT_Values;
import net.minecraft.item.ItemStack;
GT_Values.RA.addFuel(ItemStack aInput1, ItemStack aOutput1, int aEU, int aType);
</syntaxhighlight>
 
===== ...a GregTech Sonictron Sound =====
<syntaxhighlight lang="java">
import gregtech.api.enums.GT_Values;
import net.minecraft.item.ItemStack;
GT_Values.RA.addSonictronSound(ItemStack aItemStack, String aSoundName);
</syntaxhighlight>
 
===== ...a GregTech Recipe =====
<syntaxhighlight lang="java">
import gregtech.api.enums.GT_Values;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
 
//Alloy Smelter
GT_Values.RA.addAlloySmelterRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, int aDuration, int aEUt);
GT_Values.RA.addAlloySmelterRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, int aDuration, int aEUt, boolean hidden);
 
//Arc Furnace
GT_Values.RA.addArcFurnaceRecipe(ItemStack aInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt);
GT_Values.RA.addArcFurnaceRecipe(ItemStack aInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt, boolean hidden);
//Only simple Arc Furnace:
GT_Values.RA.addSimpleArcFurnaceRecipe(ItemStack aInput, FluidStack aFluidInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt);
//Only Plasma Arc Furnace:
GT_Values.RA.addPlasmaArcFurnaceRecipe(ItemStack aInput, FluidStack aFluidInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt);
GT_Values.RA.addPlasmaArcFurnaceRecipe(ItemStack aInput, FluidStack aFluidInput, ItemStack[] aOutputs, FluidStack aFluidOutput, int[] aChances, int aDuration, int aEUt);
 
//Assembling Machine
GT_Values.RA.addAssemblerRecipe(ItemStack aInput1, Object aOreDict,int aAmount, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt);
GT_Values.RA.addAssemblerRecipe(ItemStack[] aInputs, Object aOreDict, int aAmount, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt);
GT_Values.RA.addAssemblerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, int aDuration, int aEUt);
GT_Values.RA.addAssemblerRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt);
GT_Values.RA.addAssemblerRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt);
GT_Values.RA.addAssemblerRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addAssemblerRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addAssemblerRecipeNonOD(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput1, int aDuration, int aEUt, boolean aCleanroom);
 
//Assembly Line
GT_Values.RA.addAssemblylineRecipe(ItemStack aResearchItem, int aResearchTime, ItemStack[] aInputs, FluidStack[] aFluidInputs, ItemStack aOutput, int aDuration, int aEUt);
GT_Values.RA.addAssemblylineRecipe(ItemStack aResearchItem, int aResearchTime, Object[] aInputs, FluidStack[] aFluidInputs, ItemStack aOutput, int aDuration, int aEUt);
 
//Autoclave
GT_Values.RA.addAutoclaveRecipe(ItemStack aInput, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addAutoclaveRecipe(ItemStack aInput, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt);
GT_Values.RA.addAutoclaveRecipe(ItemStack aInput, ItemStack aCircuit, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt);
GT_Values.RA.addAutoclaveRecipe(ItemStack aInput, ItemStack aCircuit, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addAutoclaveSpaceRecipe(ItemStack aInput, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addAutoclaveSpaceRecipe(ItemStack aInput, ItemStack aCircuit, FluidStack aFluid, ItemStack aOutput, int aChance, int aDuration, int aEUt, boolean aCleanroom);
 
//Bending Machine
GT_Values.RA.addBenderRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt);
 
//Brewery
GT_Values.RA.addBrewingRecipe(ItemStack aIngredient, Fluid aInput, Fluid aOutput, int aDuration, int aEUt, boolean aHidden);
GT_Values.RA.addBrewingRecipe(ItemStack aIngredient, Fluid aInput, Fluid aOutput, boolean aHidden);
GT_Values.RA.addBrewingRecipeCustom(ItemStack aIngredient, FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt, boolean aHidden);
 
//Boxing Machine
GT_Values.RA.addBoxingRecipe(ItemStack aContainedItem, ItemStack aEmptyBox, ItemStack aFullBox, int aDuration, int aEUt);
 
//Canner
GT_Values.RA.addCannerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
 
//Centrifuge
GT_Values.RA.addCentrifugeRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int aDuration);
GT_Values.RA.addCentrifugeRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int aDuration, int aEUt);
GT_Values.RA.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);
GT_Values.RA.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);
 
//Chemical Bath
GT_Values.RA.addChemicalBathRecipe(ItemStack aInput, FluidStack aBathingFluid, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, int[] aChances, int aDuration, int aEUt);
 
//Chemical Reactor / Large Chemical Reactor
GT_Values.RA.addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput, int aDuration);
GT_Values.RA.addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput, int aDuration, int aEUt);
GT_Values.RA.addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration);
GT_Values.RA.addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, ItemStack aOutput2, int aDuration)
GT_Values.RA.addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration, int aEUTick)
GT_Values.RA.addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, ItemStack aOutput2, int aDuration, int aEUtick);
GT_Values.RA.addChemicalRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, ItemStack aOutput2, int aDuration, int aEUtick, boolean aCleanroom);
GT_Values.RA.addDefaultPolymerizationRecipes(Fluid aBasicMaterial, ItemStack aBasicMaterialCell, Fluid aPolymer);
//Only Large Chemical Reactor:
GT_Values.RA.addMultiblockChemicalRecipe(ItemStack[] aInputs, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, ItemStack[] aOutputs, int aDuration, int aEUtick);
//Only Single-Block Chemical Reactor:
GT_Values.RA.addChemicalRecipeForBasicMachineOnly(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, ItemStack aOutput2, int aDuration, int aEUtick);
 
//Circuit Assembling Machine
GT_Values.RA.addCircuitAssemblerRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput, int aDuration, int aEUt);
GT_Values.RA.addCircuitAssemblerRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addCircuitAssemblerRecipeNonOredicted(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput, int aDuration, int aEUt, boolean aCleanroom);
 
//Compressor
GT_Values.RA.addCompressorRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt);
 
//Cracking Unit
GT_Values.RA.addCrackingRecipe(int circuitConfig, FluidStack aInput, FluidStack aInput2, FluidStack aOutput, int aDuration, int aEUt);
 
//Cutting Machine
GT_Values.RA.addCutterRecipe(ItemStack aInput, FluidStack aLubricant, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
GT_Values.RA.addCutterRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addCutterRecipe(ItemStack aInput, int aCircuit, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
GT_Values.RA.addCutterRecipe(ItemStack aInput, int aCircuit, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addCutterRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
GT_Values.RA.addCutterRecipe(ItemStack aInput, ItemStack aCircuit, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
GT_Values.RA.addCutterRecipe(ItemStack aInput, ItemStack aCircuit, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addCutterRecipe(ItemStack[] aInputs, ItemStack[] aOutputs, int aDuration, int aEUt, boolean aCleanroom);
GT_Values.RA.addCutterRecipe(ItemStack[] aInputs, ItemStack[] aOutputs, int aDuration, int aEUt, int aSpecial);
 
//Distillation Tower / Distillery
GT_Values.RA.addUniversalDistillationRecipe(FluidStack aInput, FluidStack[] aOutputs, ItemStack aOutput2, int aDuration, int aEUt);
//Only Distillation Tower
GT_Values.RA.addDistillationTowerRecipe(FluidStack aInput, FluidStack[] aOutputs, ItemStack aOutput2, int aDuration, int aEUt);
//Only Single-Block Distillery
GT_Values.RA.addDistilleryRecipe(ItemStack aCircuit, FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt, boolean aHidden);
GT_Values.RA.addDistilleryRecipe(ItemStack aCircuit, FluidStack aInput, FluidStack aOutput, ItemStack aSolidOutput, int aDuration, int aEUt, boolean aHidden);
GT_Values.RA.addDistilleryRecipe(int circuitConfig, FluidStack aInput, FluidStack aOutput, ItemStack aSolidOutput, int aDuration, int aEUt, boolean aHidden);
GT_Values.RA.addDistilleryRecipe(int circuitConfig, FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt, boolean aHidden);
 
//Electric Blast Furnace
GT_Values.RA.addBlastRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, int aLevel);
GT_Values.RA.addBlastRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt, int aLevel);
 
//Electrolyzer
GT_Values.RA.addElectrolyzerRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int aDuration, int aEUt);
GT_Values.RA.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);
 
//Electromagnetic Separator
GT_Values.RA.addElectromagneticSeparatorRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, int[] aChances, int aDuration, int aEUt);
 
//Extractor
GT_Values.RA.addExtractorRecipe(ItemStack aInput, ItemStack aOutput, int aDuration, int aEUt);
 
//Extruder
GT_Values.RA.addExtruderRecipe(ItemStack aInput, ItemStack aShape, ItemStack aOutput, int aDuration, int aEUt);
 
//Fermenter
GT_Values.RA.addFermentingRecipe(FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt, boolean aHidden);
GT_Values.RA.addFermentingRecipe(FluidStack aInput, FluidStack aOutput, int aDuration, boolean aHidden);
 
//Fluid Canner
GT_Values.RA.addFluidCannerRecipe(ItemStack aInput, ItemStack aOutput, FluidStack aFluidInput, FluidStack aFluidOutput);
GT_Values.RA.addFluidCannerRecipe(ItemStack aInput, ItemStack aOutput, FluidStack aFluidInput, FluidStack aFluidOutput, int aDuration, int aEUt);
 
//Fluid Extractor
GT_Values.RA.addFluidExtractionRecipe(ItemStack aInput, ItemStack aRemains, FluidStack aOutput, int aChance, int aDuration, int aEUt);
 
//Fluid Heater
GT_Values.RA.addFluidHeaterRecipe(ItemStack aCircuit, FluidStack aInput, FluidStack aOutput, int aDuration, int aEUt);
 
//Fluid Smelter
GT_Values.RA.addFluidSmelterRecipe(ItemStack aInput, ItemStack aRemains, FluidStack aOutput, int aChance, int aDuration, int aEUt);
GT_Values.RA.addFluidSmelterRecipe(ItemStack aInput, ItemStack aRemains, FluidStack aOutput, int aChance, int aDuration, int aEUt, boolean hidden);
 
//Fluid Solidifier
GT_Values.RA.addFluidSolidifierRecipe(ItemStack aMold, FluidStack aInput, ItemStack aOutput, int aDuration, int aEUt);
 
//Forge Hammer
GT_Values.RA.addForgeHammerRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt);
 
//Forming Press
GT_Values.RA.addFormingPressRecipe(ItemStack aItemToImprint, ItemStack aForm, ItemStack aImprintedItem, int aDuration, int aEUt);
 
//Fusion Reactor
GT_Values.RA.addFusionReactorRecipe(FluidStack aInput1, FluidStack aInput2, FluidStack aOutput1, int aDuration, int aEUt, int aStartEU);
 
//Implosion Compressor
GT_Values.RA.addImplosionRecipe(ItemStack aInput1, int aInput2, ItemStack aOutput1, ItemStack aOutput2);
 
//Laser Engraver
GT_Values.RA.addLaserEngraverRecipe(ItemStack aItemToEngrave, ItemStack aLens, ItemStack aEngravedItem, int aDuration, int aEUt);
GT_Values.RA.addLaserEngraverRecipe(ItemStack aItemToEngrave, ItemStack aLens, ItemStack aEngravedItem, int aDuration, int aEUt, boolean aCleanroom);
 
//Lathe
GT_Values.RA.addLatheRecipe(ItemStack aInput1, ItemStack aOutput1, ItemStack aOutput2, int aDuration, int aEUt);
 
//Mixer
GT_Values.RA.addMixerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aInput3, ItemStack aInput4, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration, int aEUt);
GT_Values.RA.addMixerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aInput3, ItemStack aInput4, ItemStack aInput5, ItemStack aInput6, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput, int aDuration, int aEUt);
GT_Values.RA.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);
 
//Ore Washer
GT_Values.RA.addOreWasherRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, FluidStack aFluidInput, int aDuration, int aEUt);
 
//Polarizer
GT_Values.RA.addPolarizerRecipe(ItemStack aInput, ItemStack aOutput, int aDuration, int aEUt);
 
//Primitive Blast Furnace
GT_Values.RA.addPrimitiveBlastRecipe(ItemStack aInput1, ItemStack aInput2, int aCoalAmount, ItemStack aOutput1, ItemStack aOutput2, int aDuration);
 
//Printer
GT_Values.RA.addPrinterRecipe(ItemStack aInput, FluidStack aFluid, ItemStack aSpecialSlot, ItemStack aOutput, int aDuration, int aEUt);
 
//Pulverizer
GT_Values.RA.addPulveriserRecipe(ItemStack aInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt);
GT_Values.RA.addPulveriserRecipe(ItemStack aInput, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUt, boolean hidden);
 
//Pyrolyse Oven
GT_Values.RA.addPyrolyseRecipe(ItemStack aInput, FluidStack aFluidInput, int intCircuit, ItemStack aOutput, FluidStack aFluidOutput, int aDuration, int aEUt);
 
//Sifter
GT_Values.RA.addSifterRecipe(ItemStack aItemToSift, ItemStack[] aSiftedItems, int[] aChances, int aDuration, int aEUt);
 
//Slicer
GT_Values.RA.addSlicerRecipe(ItemStack aInput, ItemStack aShape, ItemStack aOutput, int aDuration, int aEUt);
 
//Thermal Centrifuge
GT_Values.RA.addThermalCentrifugeRecipe(ItemStack aInput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, int aDuration, int aEUt);
 
//Unboxing Machine
GT_Values.RA.addUnboxingRecipe(ItemStack aFullBox, ItemStack aContainedItem, ItemStack aEmptyBox, int aDuration, int aEUt);
 
//UUAmplifier
GT_Values.RA.addAmplifier(ItemStack aAmplifierItem, int aDuration, int aAmplifierAmountOutputted);
 
//Vacuum Freezer
GT_Values.RA.addVacuumFreezerRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt);
GT_Values.RA.addVacuumFreezerRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration);
 
//Wiremill
GT_Values.RA.addWiremillRecipe(ItemStack aInput, ItemStack aOutput, int aDuration, int aEUt);
 
</syntaxhighlight>
155

edits