# Compat

Note: EE does not come with any pre-configured compat, and therefore creation of material compat should be completely done by the modpack developer from scratch.

* Locate the <mark style="color:orange;">`emendatusenigmatica\compat`</mark> config folder inside the root config folder.
* Create a \*.json file inside this folder for each material compat you wish to add to the game.

Below you will find a more detailed break down of the Compat Data object, and a brief explanation of each data field. An example of a complete compat file can be found [here](https://emendatus-enigmatica.gitbook.io/emendatus-enigmatica-v2-wiki/examples#compats).

### Compat Core module:

{% code title="REQUIRED FIELD" %}

```json
"id": string // example: "id": "iridium"
```

{% endcode %}

> Used to identify the material for this compat file.

{% code title="REQUIRED FIELD" %}

```json
"recipes": [{ object }]
```

{% endcode %}

> This JSON list of objects houses the [Compat Recipes module](#compat-recipes-module).
>
> A single recipe list can hold multiple objects at once.

### Compat Recipes module:

{% code title="REQUIRED FIELD" %}

```json
"mod": string // example: "mod": "thermal"
```

{% endcode %}

> Used for identify the mod for this recipe object.
>
> Supported Mods:
>
> Thermal: <mark style="color:purple;">`thermal`</mark>
>
> Create: <mark style="color:purple;">`create`</mark>

{% code title="REQUIRED FIELD" %}

```json
"machine": string // example: "machine": "induction_smelter"
```

{% endcode %}

> Used for identify the machine for this recipe object.
>
> Supported Machines:
>
> Thermal Expansion: <mark style="color:purple;">`pulverizer`</mark> <mark style="color:purple;">`induction_smelter`</mark>
>
> Create: <mark style="color:purple;">`crushing_wheels`</mark> <mark style="color:purple;">`fan_washing`</mark>

{% code title="REQUIRED FIELD" %}

```json
"values": [{ object }]
```

{% endcode %}

> This JSON list of objects houses the [Recipe Values module](#recipe-values-module).
>
> A single value list can hold multiple objects at once.

### Recipe Values module:

```json
"type": string // example: "type": "ore"
```

> Used to identify the input type of the recipe.
>
> Supported Types:
>
> Thermal: <mark style="color:purple;">`ore`</mark> <mark style="color:purple;">`raw`</mark> <mark style="color:purple;">`alloy`</mark>
>
> Create: <mark style="color:purple;">`ore`</mark> <mark style="color:purple;">`crushed_ore`</mark>

```json
"input": [{ object }]
```

> This JSON list of objects houses the [Value Input module](#value-input-module).
>
> A single input list can hold multiple objects at once.
>
> **NOTE:** This list is currently only used for <mark style="color:purple;">`thermal`</mark> <mark style="color:purple;">`induction_smelter`</mark> <mark style="color:purple;">`alloy`</mark>.

```json
"output": [{ object }]
```

> This JSON list of objects houses the [Value Output module](#value-output-module).
>
> A single output list can hold multiple objects at once.

### Value Input module:

```json
"item": string // example: "item": "minecraft:apple"
```

> Used to identify an input item.

```json
"count": integer // example: "count": 3
```

> Used to identify an input item's count.

### Value Output module:

Almost all compat recipes have a default output, and this list is used to introduce additional outputs.&#x20;

For example crushing an Ore in the Create's Crushing Wheels will always give you 1x Crushed Ore if it doesn't have an output compat, and therefore this list should be used for additional outputs like extra Crushed Ores, Experience Nuggets, Cobblestone ..etc.

```json
"item": string // example: "item": "emendatusenigmatica:iridium_dust"
```

> Used to identify an output item.

```json
"count": integer // example: "count": 2
```

> Used to identify an output item's count.

```json
"chance": float // example: "chance": 0.65
```

> Used to identify an output item's chance.
