Datapack Support
Most of Ex Deorum is configurable through data packs.
Barrel Compost
A barrel compost recipe defines how much compost an item is worth when put into the barrel.
Recipe type: exdeorum:barrel_compost
| Property | Type | Description |
|---|---|---|
ingredient |
ingredient | The input to be turned into compost. |
amount |
integer | The compost filled by this item. 1000 compoost makes one dirt. |
Example recipe for composting leaves into 125 compost:
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"tag": "minecraft:leaves"
},
"volume": 125
}
Barrel Item Mixing
A barrel item mixing recipe allows crafting an item by putting an item into a barrel with some fluid in it.
Recipe type: exdeorum:barrel_mixing
| Property | Type | Description |
|---|---|---|
ingredient |
ingredient | The input ingredient for this recipe. |
fluid |
FluidStack | The fluid required for this recipe. |
result |
ItemStack | The item crafted by this recipe. |
Example recipe for mixing dust into water to create clay:
{
"type": "exdeorum:barrel_mixing",
"fluid": {
"amount": 1000,
"fluid": "minecraft:water"
},
"ingredient": {
"item": "exdeorum:dust"
},
"result": {
"count": 1,
"id": "minecraft:clay"
}
}
Barrel Fluid Mixing
A barrel fluid mixing allows crafting an item by combining two fluids using a barrel. An example of this is crafting Obsidian inside a barrel. Note that recipes which have hot base fluids can only be crafted inside fire resistant barrels, like Stone barrels or Warped/Crimson barrels.
Recipe type: exdeorum:barrel_fluid_mixing
| Property | Type | Description |
|---|---|---|
base_fluid |
SizedFluidIngredient | The amount of barrel fluid consumed for crafting. |
additive_fluid |
FluidIngredient | The fluid placed on top of the barrel. |
result |
ItemStack | The registry ID of the item crafted by this recipe. |
consumes_additive |
boolean | OPTIONAL: If the additive fluid is consumed. Default: true |
Example recipe for mixing water into lava to craft obsidian:
{
"type": "exdeorum:barrel_fluid_mixing",
"additive_fluid": {
"fluid": "minecraft:water"
},
"base_fluid": {
"amount": 1000,
"fluid": "minecraft:lava"
},
"result": {
"count": 1,
"id": "minecraft:obsidian"
}
}
Barrel Fluid Transformation
Barrel fluid transformation recipes allow transforming one fluid into another, 1000mB at a time, by filling a barrel placed on top of a catalyst block. A barrel can use up to nine catalyst blocks, detected below the barrel in a 3x3 range, which will cut the duration of the transformation by 9. For example, a barrel placed on top of a 3x3 of Mycelium will take 1700 / 9 = 189 ticks to transform instead of the base 1700 duration. The only usage of barrel fluid transformation recipes in base Ex Deorum is for converting Water into Witch Water.
Recipe type: exdeorum:barrel_fluid_transformation
| Property | Type | Description |
|---|---|---|
base_fluid |
FluidIngredient | The fluid inside the barrel used for crafting. |
byproducts |
weighted_list | The amount fluid inside the barrel used for crafting. |
catalyst |
block_predicate | The registry ID of the fluid placed on top of the barrel. |
duration |
integer | The base number of ticks taken to transform. Read above for details |
result_color |
integer | The color of the resultant fluid, used in the animation. |
result_fluid |
string | The registry ID of the fluid yielded by this recipe. |
Example recipe for converting Water into Witch Water when in a barrel placed ontop of Mycelium, with a chance to spawn mushrooms during the conversion:
{
"type": "exdeorum:barrel_fluid_transformation",
"base_fluid": {
"fluid": "minecraft:water"
},
"byproducts": [
{
"value": "minecraft:red_mushroom",
"weight": 50
},
{
"value": "minecraft:brown_mushroom",
"weight": 50
}
],
"catalyst": {
"block": "minecraft:mycelium"
},
"duration": 1700,
"result_color": 2822231,
"result_fluid": "exdeorum:witch_water"
}
Crucible Heat Source
A crucible heat source recipe defines the heat multiplier of a block when placed below a lava crucible.
Recipe type: exdeorum:crucible_heat_source
| Property | Type | Description |
|---|---|---|
block_predicate |
block_predicate | Specifies which blocks count as this heat source. |
heat_value |
integer | The heat multiplier for this heat source. |
Example recipe for giving lit campfires a heat multiplier of 2x:
{
"type": "exdeorum:crucible_heat_source",
"block_predicate": {
"block": "minecraft:campfire",
"state": {
"lit": "true"
}
},
"heat_value": 2
}
Crucible
A crucible recipe defines what fluid is produced by melting a certain block in a crucible. Ex Deorum uses two separate recipe types to distinguish between "water crucibles" (made of non-fireproof wood and usually produce water) and "lava crucibles" (made of fireproof materials and usually produce lava, affected by heat sources). Besides that, the recipe JSONs are written in exactly the same way.
Recipe type for Lava Crucible: exdeorum:lava_crucible
Recipe type for Water Crucible: exdeorum:water_crucible
| Property | Type | Description |
|---|---|---|
ingredient |
ingredient | The input to be melted into fluid. |
fluid |
FluidStack | The fluid resulting from melting the ingredient. |
Example Lava Crucible recipe for turning Netherrack into 500mb of Lava:
{
"type": "exdeorum:lava_crucible",
"fluid": {
"amount": 500,
"id": "minecraft:lava"
},
"ingredient": {
"tag": "c:netherracks"
}
}
Example Water Crucible recipe for turning Leaves into 250mb of Water:
{
"type": "exdeorum:water_crucible",
"fluid": {
"amount": 250,
"id": "minecraft:water"
},
"ingredient": {
"tag": "minecraft:leaves"
}
}
Crook
A crook recipe defines a single drop for a certain block when broken with a crook (any item in the tag #exdeorum:crooks).
Recipe type: exdeorum:crook
| Property | Type | Description |
|---|---|---|
block_predicate |
block_predicate | Specifies which blocks this item can drop from. |
chance |
float | The probability of this item dropping. |
result |
ItemStack | The item to drop. |
Example recipe for giving silkworms a 1% chance to drop from leaves:
{
"type": "exdeorum:crook",
"block_predicate": {
"block_tag": "minecraft:leaves"
},
"chance": 0.01,
"result": {
"count": 1,
"id": "exdeorum:silkworm"
}
}
Hammer
A hammer recipe defines a single drop for a certain block when broken with a hammer (any item in the tag #exdeorum:hammers) with the appropriate mining level.
Recipe type: exdeorum:hammer
| Property | Type | Description |
|---|---|---|
ingredient |
ingredient | Specifies which blocks this item can drop from. |
result |
string | The registry ID of the item to drop. |
result_amount |
number provider | The quantity dropped. See Minecraft Wiki for info. |
result_nbt |
string | OPTIONAL: The NBT data of the result, written like in /give. |
Example recipe for crushing Deepslate and Cobbled Deepslate into Crushed Deepslate:
{
"type": "exdeorum:hammer",
"ingredient": [
{
"item": "minecraft:deepslate"
},
{
"item": "minecraft:cobbled_deepslate"
}
],
"result": {
"count": 1,
"id": "exdeorum:crushed_deepslate"
},
"result_amount": 1.0
}
Sieve
A sieve recipe defines a single sieve drop for a certain block using a certain mesh.
Recipe type: exdeorum:sieve
| Property | Type | Description |
|---|---|---|
ingredient |
ingredient | The item to be sifted. |
mesh |
ingredient | The mesh item used for sifting. |
result |
ItemStack | The item dropped from this recipe. Count is ignored. |
result_amount |
number provider | The quantity dropped. See Minecraft Wiki for info. |
by_hand_only |
boolean | OPTIONAL: If true, this item will not drop from a Mechanical Sieve. Default: false |
Example recipe for giving Raw Gold an 8% chance of dropping from Red Sand using a Diamond Mesh:
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:red_sand"
},
"mesh": {
"item": "exdeorum:diamond_mesh"
},
"result": {
"count": 1,
"id": "minecraft:raw_gold"
},
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.08
}
}
Example recipe for always dropping an Iron Nugget from Crushed Deepslate using a Diamond Mesh:
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:crushed_deepslate"
},
"mesh": {
"item": "exdeorum:diamond_mesh"
},
"result": {
"count": 1,
"id": "minecraft:iron_nugget"
},
"result_amount": 1
}
Important Types
Types used in the JSON recipes are described here. This should help clarify how the recipes are made.
ingredient
An ingredient is a JSON type used in Vanilla Minecraft's crafting recipes. You can read about how it is used on the Minecraft Wiki. An ingredient is made up of "ingredient values". Values are JSON objects that can specify an "item" or "tag" property. Ingredients can be written either as an array of ingredient values or just as a single ingredient value.
Here are a few examples:
An ingredient matching one specific item, using one "item" value:
"ingredient": {
"item": "minecraft:cake"
}
An ingredient matching any item from a specific tag, using a "tag" value:
"ingredient": {
"tag": "minecraft:leaves"
}
An ingredient matching two possible items, using two "item" values (notice how an array is used this time):
"ingredient": [
{
"item": "minecraft:deepslate"
},
{
"item": "minecraft:cobbled_deepslate"
}
]
number provider
A number provider represents a number value that might be randomly chosen. In Vanilla Minecraft, they are used mostly in Loot Tables to determine how many items to drop. Although Ex Deorum adds additional functionality to them, most of the information about number providers can be found on the Minecraft Wiki.
In addition to the types of number providers used by Vanilla Minecraft, Ex Deorum adds a Summation provider, with the type exdeorum:summation. The summation provider uses one field, an array of number providers called "values". The random value chosen by a summation number provider is just the sum of random values chosen by the number providers in its values array. Here are a few examples of number providers:
A constant number provider of 1. No matter what, the result will always be one:
"result_amount": 1
A uniform number provider, giving values between 2 and 4 with equal likelihood:
"result_amount": {
"type": "minecraft:uniform",
"max": 4.0,
"min": 2.0
}
A binomial number provider, with a 70% chance of being 1, 30% chance of being 0:
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.7
}
A summation number provider, with a 40% chance of being 2, 60% chance of being 1:
"result_amount": {
"type": "exdeorum:summation",
"values": [
1,
{
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.4
}
]
}
block predicate
A block predicate is a type added by Ex Deorum that includes blocks matching certain conditions. A block predicate can either match a single block, a single block with specific block state properties (ex. a lit campfire), or any block belonging to a certain tag. Here are examples of each:
A block predicate only matching fire:
"block_predicate": {
"block": "minecraft:fire"
}
A block predicate only matching campfires when they are lit:
"block_predicate": {
"block": "minecraft:campfire",
"state": {
"lit": "true"
}
}
A block predicate matching any block in the minecraft:leaves tag:
"block_predicate": {
"block_tag": "minecraft:leaves"
}