Development

From GT New Horizons
(Redirected from Developement)
Jump to navigation Jump to search

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.

Code Editors
Integrated Development Enviroments
Image Editors
Modeling
Animation
Miscellaneous

Setting up a Development Environment

From Scratch

  1. Create a new GitHub repository and clone it
  2. Download the Forge Src (build 1614!) and extract the contents of the ZIP-archive into the directory, where you cloned your repository to.
  3. Open ./gradle/wrapper/gradle-wrapper.properties with your favorite text editor and change distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip to distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip.
  4. Open ./build.gradle with your favorite text editor and replace the buildscript { ... } part with this.
  5. Edit your project details (name, version, dependecies, etc.) in the build.gradle file.
  6. Open the command prompt in your workspace directory and execute gradlew wrapper --gradle-version=5.6.4.
  7. In Eclipse / IntelliJ IDEA, import your workspace as Gradle project.
  8. Done.

From an existing Repository

  1. Clone the repository
  2. If you want to use Eclipse, download the Forge Src (build 1614!) and copy the eclipse folder into your workspace directory.
  3. In Eclipse / IntelliJ IDEA, import your workspace as Gradle project.
  4. Done.

Maven/Jenkins Selection

URL Mods
http://files.minecraftforge.net/maven Biomes O' Plenty, HelpFixer, MalisisCore, MalisisDoors, Mixin, IronChest, ...
http://chickenbones.net/maven/ CodeChickenCore, CodeChickenLib, EnderStorage, NotEnoughItems, Translocator, WR-CBE, ...
http://maven.ic2.player.to/ IndustrialCraft, Forestry, ...
http://maven.tterrag.com EnderIO, EnderCore, EnderZoo, Chisel, ...
http://dvs1.progwml6.com/files/maven IguanaTinkerTweaks, HungerOverhaul, Mantle, Natura, TinkersConstruct, ...
http://www.ryanliptak.com/maven/ AppleCore
http://jenkins.usrv.eu:8081/nexus/content/repositories/releases/ YAMCore
http://jenkins.usrv.eu:8081/nexus/content/repositories/thirdparty/ Baubles, TicTooltips
http://jenkins.usrv.eu:8080/ Various
http://downloads.gtnewhorizons.com/Mods_for_Jenkins/ Various
https://gregtech.overminddl1.com/ Various
http://files.projectredwiki.com/maven MrTJPCore, ForgeRelocation, ProjectRed
http://maven.cil.li/ OpenComputers, ...
http://mobiusstrip.eu/maven JABBA, WAILA, ...
http://www.mod-buildcraft.com/releases/BuildCraft/ Buildcraft
https://files.vexatos.com AsieLib, BuildcraftOilTweak, TGregworks, ...
https://jenkins.bdew.net/maven AE2Stuff, BDLib, Gendustry, ...
https://www.cursemaven.com Any CurseForge file
https://repo.spongepowered.org/maven/ Mixin, ...
http://maven.k-4u.nl/ InGameWiki, ...
https://minecraft.curseforge.com/api/maven/ Any CurseForge file
https://jitpack.io/ Any GitHub project
https://maven.covers1624.net/
https://maven.mcmoddev.com Baubles, Thaumcraft, ...
https://jenkins.ironhide.de/ Open Modular Turrets, Floodlights, ...

Code Style

  • Keep your added variables either private or constant unless absolutely necessary
  • Don't touch existing public variables' implementation, as this can break code using those variables.
  • Use thread-safe collections where you can, to make future multithreading possible
  • Comment your code, especially Javadoc-ing your methods and classes, if able
  • Try not to make one method do too much. Add helper methods if you need
  • Use the @Override annotation when overriding methods.
  • Please do semantic versioning.

Wikis

Not every wiki listed here contains information about Minecraft version 1.7.10 but some topics haven't changed much and often the general methodology is the same. The newer the version, the less comparable the inner workings of Minecraft/Forge are to 1.7.10.

You can look at the source-code of most mods included in GTNH here.

This list will be sufficient for most basic use cases.

URL Versions Topics (including, but often not limited to)
https://minecraft.gamepedia.com/Minecraft_Wiki All Everything related to vanilla Minecraft, though there is information about mods aswell
https://wiki.vg/Main_Page All? Protocols, Authentification, NBT, etc.
https://forums.minecraftforge.net/ All Everything related to Forge modding. This is a forum, not a wiki but you may still find information in old threads. Be aware that 1.7.10 is not supported anymore, so you'll likely receive no answer if you ask something related to 1.7.10 there.
https://www.khronos.org/opengl/wiki/Main_Page * OpenGL
https://mcforge.readthedocs.io/en/latest/

(https://mcforge.readthedocs.io/en/latest/legacy/ for legacy versions)

1.12+ Getting started, Concepts, Blocks, Items, TileEntities, Rendering, Events, Networking, ..
https://greyminecraftcoder.blogspot.com/ 1.6 - 1.7, 1.14+ Concepts, Blocks, Items, Rendering, User Input, Packets, Entities, GUIs, Containers, Tools, Restone, ...
https://0fps.net/ * Collision Detection, Geometry, Mathematics, Voxels, Shape Modeling, Ambient Occlusion, ...
https://www.redblobgames.com/ * Path Finding, Graph Theory, Map Generation, Procedural Generation
https://www.wikipedia.org/ * More than you can think of (but not everything)
#knowledgebase (Minecraft Pack Developement Discord) All Various bits of information on Mod(pack) Developement
#resources (Blockbench Discord) All Modeling, Textures, Animation
https://docs.google.com/spreadsheets/d/1dxmloJUSox8xdMtHZCZAqeLQgG9Yb6sLYyviOyNcwck/ 1.7-1.12 Concepts and Tips & Tricks for Modpack developement
https://docs.oracle.com/javase/tutorial/ * Java Documentation
https://github.com/Ladysnake/Satin/wiki/Data-driven-shaders 1.7+ Post Process Shaders
https://github.com/MinecraftModDevelopment/Modding-Resources All Blocks, Commands, Entities, Fluids, Items, Rendering, ...
https://ftbwiki.org/Feed_The_Beast_Wiki All Information on many Mods
https://ftb.gamepedia.com/FTB_Wiki All Information on many Mods
https://ae-mod.info/ 1.7+ Applied Energistics
https://wiki.industrial-craft.net/index.php?title=Main_Page Beta 1.3+ Industrial Craft
http://minetweaker3.powerofbytes.com/wiki/Main_Page

https://docs.blamejared.com/

1.6.4, 1.7

1.12, 1.14+

MineTweaker / CraftTweaker
https://docs.google.com/spreadsheets/d/1Rsz0rH9tIVJxr18b1Z6-QxOSaEKssxF7u2naQTq2Mqg/ 1.7.10 GTNH Spreadsheet
https://git-scm.com/docs * Git
https://skmedix.github.io/ForgeJavaDocs/javadoc/forge/1.7.10-10.13.4.1614/ 1.7.10 Forge 10.13.4.1614 JavaDocs
https://blockbench.net/2019/10/02/minecraft-modeling-texturing-tips/ All Modeling and Texturing tips
https://visualvm.github.io/documentation.html * VisualVM
https://web.archive.org/web/20200614093742/https://bedrockminer.jimdofree.com/modding-tutorials/ 1.7, 1.8 Getting started, Concepts, Blocks, Items, Tools, Armor, Food, Recipes, ...
https://github.com/SpongePowered/Mixin/wiki All? Mixin
https://docs.gradle.org/current/userguide/userguide.html * Gradle Documentation

* This wiki does not (mainly) cover specifics of Minecraft/Forge but some concepts described here apply in Minecraft aswell.

Help

Miscellaneous

All GregTech methods are taken from its sourcecode, version 5.09.34.15 (12th of March, 2021).

How to...

...get...

...an Item
import cpw.mods.fml.common.registry.GameRegistry;
GameRegistry.findItem(String modId, String name);

Vanilla Items are located in net.minecraft.init.Items.

...a Block
import cpw.mods.fml.common.registry.GameRegistry;
GameRegistry.findBlock(String modId, String name);

Vanilla Blocks are located in net.minecraft.init.Blocks.

...a Fluid
import net.minecraftforge.fluids.FluidRegistry;
FluidRegistry.getFluid(String fluidName);

Vanilla Fluids are located in net.minecraftforge.fluids.FluidRegistry.

...an ItemStack
import cpw.mods.fml.common.registry.GameRegistry;
GameRegistry.findItemStack(String modId, String name, int stackSize);

If you want to change the meta-data, do

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); // Items.apple can be any instance of net.minecraft.item.Item
...a FluidStack
import net.minecraftforge.fluids.FluidRegistry;
FluidRegistry.getFluidStack(String fluidName, int amount);
...a GregTech Integrated Circuit
import gregtech.api.util.GT_Utility;
GT_Utility.getIntegratedCircuit(int config);

...add...

...a Shaped Recipe
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.ItemStack;
GameRegistry.addShapedRecipe(ItemStack output, Object... params);
...a Shapeless Recipe
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.ItemStack;
GameRegistry.addShapelessRecipe(ItemStack output, Object... params);
...a Shaped OreDict Recipe
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));
...a Shapeless OreDict Recipe
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));
...a Smelting Recipe
import cpw.mods.fml.common.registry.GameRegsitry;
import net.minecraft.item.ItemStack;
GameRegistry.addSmelting(ItemStack input, ItemStack output, float xp);
...a GregTech Fuel
import gregtech.api.enums.GT_Values;
import net.minecraft.item.ItemStack;
GT_Values.RA.addFuel(ItemStack aInput1, ItemStack aOutput1, int aEU, int aType);
...a GregTech Sonictron Sound
import gregtech.api.enums.GT_Values;
import net.minecraft.item.ItemStack;
GT_Values.RA.addSonictronSound(ItemStack aItemStack, String aSoundName);
...a GregTech Recipe
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);