# Custom Recipes

## Introduction

This file is the README of Applied Energistics 2 for Custom Recipes. Applied Energistics 2 is extremely configurable and supports 100% customize-able recipes if desired. This page will direct you on how to get started. The entry file for the recipe system is `index.recipe`.

## Auto-Generation

AE2 will generate 2 folders in your AE2 configuration folder `config/AppliedEneristics2/`. One is `generated-recipes/` and the other is `user-recipes/`. Recipes will be automatically exported from AE2 into `generated-recipes/` on every start-up containing always the latest valid recipes.

> You require file system permissions to generate the folders. Recipes will be loaded directly from AE2 if user has no permissions.

## Recipe Modification

You can modify the recipes by copying over the recipes from `generated-recipes/` into `user-recipes/`. You do not need to copy over all files, but the ones you will be changing. AE2 will prefer loading a user recipe if one would replace a generated recipe.

That way changed recipes by us are not overwriting your modified files.

### Item References

In Minecraft each item is referenced by a namespace and a name, for example all of minecrafts items use the namespace `minecraft`. A glass block would be `minecraft:glass`.

The recipe system also exposes access to the oredictionary via a namespace, so you can use `oredictionary:glass` to use any type of glass.

### Recipe Types

Different recipe types are there to interface with specific machines or mods. Use a `,` to add a new row to the recipe.

#### Shapeless

- crafted in a minecraft crafting table
- can take any shape as long as the inputs are correct
- takes up to 9 items as input
- outputs a single item as output, optionally with quantity
- Example: `Log -> Planks` recipe
- AE2:
  `shapeless = minecraft:log -> 4 minecraft:planks`

#### Shaped

- crafted in a minecraft crafting table
- requires the specific shape
- takes up to 9 items as input
- outputs a single item as output, optionally with quantity
- Example: `8 Cobblestone -> Furnace` recipe
- AE2:

      shaped =
          minecraft:cobblestone minecraft:cobblestone minecraft:cobblestone,
          minecraft:cobblestone _                     minecraft:cobblestone,
          minecraft:cobblestone minecraft:cobblestone minecraft:cobblestone
          -> minecraft:furnace

#### Smelt

- items to be burned in furnaces
- takes 1 item as input
- takes 1 item as output, optionally with quantity
- Example: `Log -> Charcoal` recipe
- AE2:
  `smelt = minecraft:log -> minecraft:coal:1`

#### Grind

- items to be grinded in the grindstone
- takes 1 item as input
- takes 1 item as output, optionally with quantity
- Example: `Gravel -> Flint` recipe
- AE2:
  `grind = minecraft:gravel -> minecraft:flint`

#### Grindfz

Same as `grind` for Factorization Grinder

#### Mekcrusher

Same as `grind` for Mekanism Crusher

#### Mekechamber

Same as `grind` for Mekanism Enrichment Chamber

#### Hccrusher

Same as `grind` for HydrauliCraft Crusher

#### Crusher

Same as `grind` for RailCraft Crusher

#### Macerator

Same as `grind` for IndustrialCraft Macerator

#### Pulverizer

Same as `grind` for Thermal Expansion Pulverizer

#### Inscribe

- used in the AE2 Inscriber
- takes 2 or 3 items as input, first item is the center item
- takes 1 item as output, optionally with quantity
- center item is consumed
- Example: duplicate logic processor plate
  `Iron Block + Logic Processor Plate -> Logic Processor Plate`
- AE2:

      inscribe =
          minecraft:iron_block
          appliedenergistics2:ItemMaterial.LogicProcessorPress
          -> appliedenergistics2:ItemMaterial.LogicProcessorPress

#### Press

- used in the AE2 Inscriber
- takes 2 or 3 items as input, first item is the center item
- takes 1 item as output, optionally with quantity
- all items are consumed
- Example: create logic processor
  `Redstone + logic processor print + silicon print -> logic processor`
- AE2:

      press =
          minecraft:redstone
          appliedenergistics2:ItemMaterial.LogicProcessorPrint
          appliedenergistics2:ItemMaterial.SiliconPrint
          -> appliedenergistics2:ItemMaterial.LogicProcessor

### Recipe Function

Adds convenience for easier recipe management.

#### Alias

- creates a shorthand for a longer value
- AE2: alias `appliedenergistics2` to `ae2`
  `alias = ae2 -> appliedenergistics2`
- `appliedenergistics2:ItemMaterial.LogicProcessorPrint` could be aliased to `ae2:ItemMaterial.LogicProcessorPrint`

#### Ore

- lets you add items into an ore dictionary value.
- AE2: add minecraft wool to OreDictionary as `blockWool`
  `ore = minecraft:wool:* -> blockWool`
- oredictioned items can be accessed as `oredictionary:blockWool` for example

#### Group

- lets you create a item group for 1 or more inputs
- Example: define a common group for both different AE2 interfaces
  `Block Interface + Part Interface = Interface`
- AE2:
  `group = ae2:BlockInterface ae2:ItemPart.Interface -> interface`
- This also enables shortening annoying names for example
  `group = ae2:ToolNetherQuartzWrench -> wrench`

#### Import

- lets you load an additional recipe file
- this works with subdirectories, but the path needs to be always a relative path to the root recipe directory
- AE2: import all recipes for stairs
  `import = stairs.recipe`
- Any knowledge through `alias, ore, group` are carried over to the imported file