> For the complete documentation index, see [llms.txt](https://emendatus-enigmatica.gitbook.io/emendatus-enigmatica-v2-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://emendatus-enigmatica.gitbook.io/emendatus-enigmatica-v2-wiki/materials.md).

# Materials

EE does not come with any pre-configured materials. Therefore the creation of any materials will need to be done entirely by the modpack developer.

To create a new material:

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

The file you have just created represents a Material Data Object. Below you will find a more detailed breakdown of a Material Data Object showing what is required for each material and giving a brief explanation of each module and data field. All Data Generation will be done by the mod the next time you run your game.\
An example of a complete material file can be found [here](/emendatus-enigmatica-v2-wiki/examples.md#materials).

**Note:** The mod is capable of using the material color data in this file to create tint-based textures for your materials, however, should you prefer a more artistic option you can provide your own textures through a custom Resource Pack. More information on how to set up your own EE Resource Pack and a set of available textures and texture templates are available [here](/emendatus-enigmatica-v2-wiki/resources.md). If no texture is provided via a resource pack the mod will automatically generate textures the next time the game is run.

## Material JSON file content:

### Material Core module:

{% code title="REQUIRED FIELD" %}

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

{% endcode %}

> Used for all registry naming conventions, note: this must be a unique identifier for each material.

{% code title="REQUIRED FIELD" %}

```json
"source": string // example: "source": "modded"
```

{% endcode %}

> Identifies whether the material added is <mark style="color:orange;">`vanilla`</mark>, or <mark style="color:orange;">`modded`</mark>. This field affects recipes, and other data generation.

{% code title="REQUIRED FIELD" %}

```json
"localizedName": string // example: "localizedName": "Iridium"
```

{% endcode %}

> Used for the generation of the lang (en\_us) entries of the material. This is the name you will see in game and in JEI.

{% code title="REQUIRED FIELD" %}

```json
"processedTypes": [ string ] // example: "processedTypes": ["storage_block", "ingot", "ore", "gear"]
```

{% endcode %}

> A list object which contains a list of strings of supported types. A complete list of supported Processed Types can be found [here](#list-of-currently-available-processed-types).

```json
"disableDefaultOre": boolean // example: "disableDefaultOre": false
```

> This field only affects <mark style="color:orange;">`"source": "vanilla"`</mark> materials, and if set to <mark style="color:orange;">`true`</mark>, it will disable the ore generation of these materials. This includes the standard Vanilla Ores and the large Ore Veins of Copper and Iron.

```json
"properties": { object } 
```

> This JSON object houses the [Material Properties module](#material-properties-module).

```json
"oreDrop": { object }
```

> This JSON object houses the [Material Ore Drop module](#material-ore-drop-module).

```json
"tools": { object }
```

> This JSON object houses the [Material Tools module](#material-tools-module).

```json
"armor": { object }
```

> This JSON object houses the [Material Armor module](#material-armor-module).

```json
"colors": { object }
```

> This JSON object houses the [Material Color module](#material-color-module).

```json
"gas": { object }
```

> This JSON object houses the [Material Gas module](#material-gas-module).

```json
"compat": { object }
```

> This JSON object houses the [Material Compat module](#material-compat-module).

### Material Properties module:

{% code title="REQUIRED FIELD" %}

```json
"materialType": string // example: "materialType": "metal"
```

{% endcode %}

> Identifies whether the material is <mark style="color:orange;">`metal`</mark>, <mark style="color:orange;">`gem`</mark>, or <mark style="color:orange;">`alloy`</mark> based.

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

> Determines the harvest level requirement of the appropriate tool. Only Vanilla tiers are accepted, and they are the following:
>
> <mark style="color:green;">`0: Wood/Gold`</mark> <mark style="color:green;">`1: Stone`</mark> <mark style="color:green;">`2: Iron`</mark> <mark style="color:green;">`3: Diamond`</mark> <mark style="color:green;">`4: Netherite`</mark>

```json
"hasParticles": boolean // example: "hasParticles": true
```

> If set to <mark style="color:orange;">`true`</mark>, the Ore block of this material will have particles.
>
> You can set your particles color in the Material Color module.

```json
"hasOxidization": boolean // example: "hasOxidization": true
```

> If set to <mark style="color:orange;">`true`</mark>, the Storage Block of this material will undergo 4 stages of oxidization when exposed to air. The oxidization can be scrapped off with an axe, or waxed with a Honeycomb similar to Vanilla Copper Blocks.
>
> You can set your oxidization color in the Material Color module.

<figure><img src="https://1270912062-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhSOyNZaWVbO9C0yOJ8dM%2Fuploads%2FbBQIqVpfnZJPZLeV9g28%2Foxidization.png?alt=media&amp;token=314cb005-e1c5-4df9-9d37-29e6a1f0f683" alt=""><figcaption><p>Oxidization Stages with a Patina Green set as the oxidizationColor</p></figcaption></figure>

```json
"isEmissive": boolean // example: "isEmissive": true
```

> If set to <mark style="color:orange;">`true`</mark>, the Ore block of this material will glow in the dark.

<figure><img src="https://1270912062-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhSOyNZaWVbO9C0yOJ8dM%2Fuploads%2F2RdC0qi9nBblV8Hto4LH%2Femissive.png?alt=media&amp;token=3b739b38-43f9-44ee-8def-94c60da8b2cb" alt=""><figcaption><p>Emissive Ores</p></figcaption></figure>

```json
"isBurnable": boolean // example: "isBurnable": true
```

> If set to <mark style="color:orange;">`true`</mark>, all Processed Types of this material will have a burn time associated with them, marking them as a valid furnace fuel.

```json
"burnTime": integer // example: "burnTime": 3600
```

> Determines the efficiency of the Material as a burnable fuel. The default should be `1600` which is similar to Vanilla Coal, and can smelt 8 items.

```json
"blockRecipeType": integer // example: "blockRecipeType": 4
```

> If the material has both <mark style="color:orange;">`gem`</mark> and <mark style="color:orange;">`storage_block`</mark> as processed types, this field can be used to determine whether the block recipe is 9x or 4x gems per block.

```json
"gemTexture": integer // example: "gemTexture": 8
```

> If the material has <mark style="color:orange;">`gem`</mark> as a processed type, and is a tint-based material, you can specify a texture to be used out of 10 available templates.

### Material Ore Drop module:

\[Required if the Material has <mark style="color:orange;">`ore`</mark>, but no <mark style="color:orange;">`gem`</mark> or <mark style="color:orange;">`raw`</mark> as a Processed Type, or if you want to specify a Min/Max drop count]

```json
"drop": string // example: "drop": "minecraft:lapis_lazuli"
```

> If the material has no <mark style="color:orange;">`gem`</mark> as a processed type, but it is a <mark style="color:orange;">`gem`</mark> material type, this field can be used to determine the dropped item.

```json
"min": integer // example: "min": 4
```

> Determines the minimum number of drops when mining the ore.

```json
"max": integer // example: "max": 9
```

> Determines the maximum number of drops when mining the ore.

```json
"uniformCount": boolean // example: "uniformCount": true
```

> Forces the drop to use a Uniformed Count similar to Vanilla Redstone instead of a standard range like Vanilla Lapis Lazuli.
>
> If left undefined it defaults to `false`

<figure><img src="https://1270912062-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhSOyNZaWVbO9C0yOJ8dM%2Fuploads%2FandE9lKvmkeohBJIEygb%2Ftools_and_armor.png?alt=media&amp;token=7dd8d8b1-aeb0-4815-9907-653078c88410" alt=""><figcaption><p>Tools and Armor</p></figcaption></figure>

### Material Tools module:

\[Required if the Material has <mark style="color:orange;">`sword`</mark>, <mark style="color:orange;">`pickaxe`</mark>, <mark style="color:orange;">`axe`</mark>, <mark style="color:orange;">`shovel`</mark>, <mark style="color:orange;">`hoe`</mark>, or <mark style="color:orange;">`paxel`</mark> as a Processed Type]

```json
"attackDamage": float // example: "attackDamage": 4.0
```

> Determines the Base Attack Damage of all tools.

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

> Determines the Harvest Level of all tools. This mainly affects Pickaxes and Paxels against Stone-based blocks.

```json
"enchantability": integer // example: "enchantability": 750
```

> Determines the Enchantability factor of all tools.

```json
"efficiency": float // example: "efficiency": 3.0
```

> Determines the Base Efficiency of all tools.

{% code overflow="wrap" %}

```json
"tools": { object } 
// example: 
// "sword": { "damage": 3.2, "speed":  -2.4, "durability": 512 }
// "pickaxe": { "damage": 1.3, "speed":  -3.5, "durability": 1024 }
```

{% endcode %}

{% hint style="info" %}
a TOOL object should be created for each tool type.&#x20;

Currently supported tools are: "sword", "pickaxe", "axe", "shovel", "hoe", and "paxel"
{% endhint %}

> <mark style="color:purple;">`"damage": float`</mark> - Determines the Damage Modifier of the tool.
>
> *<mark style="color:blue;">Formula: Base Damage + Damage Modifier + 1 (unarmed damage)</mark>*
>
> <mark style="color:purple;">`"speed": float`</mark> - Determines the Speed Modifier of the tool.
>
> *<mark style="color:blue;">Formula: Base Efficiency + Speed Modifier</mark>*
>
> <mark style="color:purple;">`"durability": integer`</mark> - Determines the Durability of the tool.

### Material Armor module:

\[Required if the Material has <mark style="color:orange;">`helmet`</mark>, <mark style="color:orange;">`chestplate`</mark>, <mark style="color:orange;">`leggings`</mark>, <mark style="color:orange;">`boots`</mark>, or <mark style="color:orange;">`shield`</mark> as a Processed Type]

```json
"setArmor": boolean // example: "setArmor": true
```

> Determines whether wearing a full set of armor should provide the wearer with a set bonus.

{% code overflow="wrap" %}

```json
"effects": { object }
// example:
// { "effect": "minecraft:night_vision", "level": 1, "showParticles": false, "showIcon": true }
```

{% endcode %}

> This JSON object houses a list of effects which activates once a full set is worn.
>
> The list of effects can be a mix of both Vanilla and Modded effects.
>
> <mark style="color:purple;">`"effect": string`</mark> - Determines the effect of the set bonus.
>
> <mark style="color:purple;">`"level": integer`</mark> - Determines the level of the effect.
>
> <mark style="color:purple;">`"showParticles": boolean`</mark> - Determines whether the effect spawns particles around the player when the set bonus is active.
>
> <mark style="color:purple;">`"showIcon": boolean`</mark> - Determines whether the effect icon is visible in the HUD when the set bonus in active.

```json
"setName": string // example: "setName": "Ember Bulwark"
```

> Determines the name of the set.

{% code overflow="wrap" %}

```json
"setDesc": string // example: "setDesc": "Forged by the flames of the nether to protect its wearer from external heat sources"
```

{% endcode %}

> Provides the set a bit of a flavor text, describing the set bonus.

<figure><img src="https://1270912062-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhSOyNZaWVbO9C0yOJ8dM%2Fuploads%2FaVfdAItEx7O2ujO4g3Su%2Farmor_set.png?alt=media&amp;token=e828f3b6-86f6-4bf3-b97e-010e1315670c" alt=""><figcaption><p>Example of Armor Set</p></figcaption></figure>

```json
"toughness": float // example: "toughness": 3.0
```

> Determines the Base Armor Toughness value of all armor pieces.

```json
"enchantability": integer // example: "enchantability": 1250
```

> Determines the Enchantability factor of all armor pieces.

```json
"knockback": float // example: "knockback": 0.3
```

> Determines the Knockback Resistance value of all armor pieces.

{% code overflow="wrap" %}

```json
"ARMOR": { object } 
// example: 
// "helmet": { "protection": 4, "durability": 330 }
// "shield": { "durability": 675 }
```

{% endcode %}

{% hint style="info" %}
a ARMOR object should be created for each armor piece.&#x20;

Currently supported armor pieces are: "helmet", "chestplate", "leggings", "boots", and "shield"
{% endhint %}

> <mark style="color:purple;">`"protection": integer`</mark> - Determines the Protection of the armor piece.
>
> <mark style="color:purple;">`"durability": integer`</mark> - Determines the Durability of the armor piece.

### Material Color module:

\[All colors should be <mark style="color:orange;">Hexadecimal</mark> values without <mark style="color:orange;">#</mark>]

```json
"fluidColor": string // example: "fluidColor": "0099ff"
```

> Used to tint the Fluid and Fluid Bucket of the Material.

```json
"particlesColor": string // example: "particlesColor": "c5dbed"
```

> Used for the particles of the Material Ores if <mark style="color:orange;">`hasParticles`</mark> is set to <mark style="color:orange;">`true`</mark>.

```json
"oxidizationColor": string // example: "oxidizationColor": "c5dbed"
```

> Used for the oxidization effect on the Storage Blocks if <mark style="color:orange;">`hasOxidization`</mark> is set to <mark style="color:orange;">`true`</mark>.

```json
"materialColor": string // example: "materialColor": "b5a642"
```

> Used to tint textures if no actual texture is provided through a Resource Pack.

```json
"gasColor": string // example: "gasColor": "dd3e29"
```

> Used to tint the <mark style="color:orange;">`infuse_type`</mark>, <mark style="color:orange;">`slurry`</mark> and <mark style="color:orange;">`gas`</mark> of the Material.
>
> **NOTE:** This is only applicable if you are also using the Mekanism Addon

### Material Gas module:

\[Required if the material has <mark style="color:orange;">`gas`</mark> as a processed type]

```json
"isBurnable": boolen // exmple: "isBurnable": true
```

> Determines whether this gas can be used as a Fuel.

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

> Determines the burn ticks of this Fuel.

```json
"energyDensity": long // example: "energyDensity": 200
```

> Determines the amount of energy produced per tick of this Fuel.

```json
"isRadioactive": boolean // example: "isRadioactive": true
```

> Determines whether this gas is Radioactive.

```json
"radioactivity": double // example: "radioactivity": 0.9
```

> Determines the Radioactivity of this gas in Sv/h.

```json
"isCoolant": boolean // example: "isCoolant": true
```

> Determines whether this gas can be used as a Coolant.

```json
"coolantType": string // example: "coolantType": "cooled"
```

> Determines the type of the Coolant whether it is <mark style="color:blue;">`cooled`</mark> or <mark style="color:red;">`heated`</mark>.

```json
"thermalEnthalpy": double // example: "thermalEnthalpy": 0.2
```

> Determines the Thermal Enthalpy of this Coolant. Thermal Enthalpy defines how much energy one mB of the chemical can store.

```json
"conductivity": double // example: "conductivity": 0.4
```

> Determines the Conductivity of this Coolant. 'Conductivity' defines the proportion of a reactor's available heat that can be used at an instant to convert this coolant's cool variant to its heated variant.

### Material Compat module:

This section is used to determine whether this specific material should/shouldn't have default modded compat recipes.&#x20;

Some recipes require additional information (i.e. secondary output, chance of output ..etc.) which can be specified in a custom JSON file for each material. Information on how to set up these files can be found in the [Compat](/emendatus-enigmatica-v2-wiki/compat.md) section.

By default, all compat recipes generation is set to <mark style="color:orange;">`true`</mark>;  to disable the generation of a specific mod you should simply provide the `id` and the set the boolean value to <mark style="color:orange;">`false`</mark>.

**Note:** If a mod you want EE to compat with is not included in the list below, you can either request it on [Github](https://github.com/Ridanisaurus/EmendatusEnigmatica/issues), or create your own recipe through other means like [KubeJS](https://www.curseforge.com/minecraft/mc-mods/kubejs) for example.

Below is a list of all supported mods, which will be updated whenever a new mod compat is added;

* Mekanism:&#x20;

{% hint style="info" %}

```
ID: mekanism
```

```
Recipes: Ore 2x/3x/4x/5x, Enriching, and Infusion Conversion
```

{% endhint %}

```json
// example
"compat": {
    "mekanism": false
}
```

* Thermal Expansion:

{% hint style="info" %}

```
ID: thermal
```

```
Recipes: Pulverizer, Induction Smelter, and Multiservo Press
```

{% endhint %}

```json
// example
"compat": {
    "thermal": false
}
```

* Create:

{% hint style="info" %}

```
ID: create
```

```
Recipes: Crushing Wheel, and Washing
```

{% endhint %}

```json
// example
"compat": {
    "create": false
}
```

* Ars Nouveau:

{% hint style="info" %}

```
ID: ars_nouveau
```

```
Recipes: Crushing Spell
```

{% endhint %}

```json
// example
"compat": {
    "ars_nouveau": false
}
```

* Occultism:

{% hint style="info" %}

```
ID: occultism
```

```
Recipes: Crusher Spirits
```

{% endhint %}

```json
// example
"compat": {
    "occultism": false
}
```

### List of currently available Processed Types:

General: <mark style="color:orange;">`storage_block`</mark> <mark style="color:orange;">`ingot`</mark> <mark style="color:orange;">`gem`</mark> <mark style="color:orange;">`ore`</mark> <mark style="color:orange;">`raw`</mark> <mark style="color:orange;">`nugget`</mark> <mark style="color:orange;">`dust`</mark> <mark style="color:orange;">`plate`</mark> <mark style="color:orange;">`gear`</mark> <mark style="color:orange;">`rod`</mark> <mark style="color:orange;">`fluid`</mark> <mark style="color:orange;">`cluster`</mark> <mark style="color:orange;">`sword`</mark> <mark style="color:orange;">`pickaxe`</mark> <mark style="color:orange;">`axe`</mark> <mark style="color:orange;">`shovel`</mark> <mark style="color:orange;">`hoe`</mark> <mark style="color:orange;">`paxel`</mark> <mark style="color:orange;">`helmet`</mark> <mark style="color:orange;">`chestplate`</mark> <mark style="color:orange;">`leggings`</mark> <mark style="color:orange;">`boots`</mark> <mark style="color:orange;">`shield`</mark>

Mekanism: <mark style="color:orange;">`infuse_type`</mark> <mark style="color:orange;">`gas`</mark> <mark style="color:orange;">`slurry`</mark> <mark style="color:orange;">`crystal`</mark> <mark style="color:orange;">`shard`</mark> <mark style="color:orange;">`clump`</mark> <mark style="color:orange;">`dirty_dust`</mark>

Create: <mark style="color:orange;">`crushed_ore`</mark>
