-
Notifications
You must be signed in to change notification settings - Fork 18
Reactions
Max M edited this page May 12, 2025
·
3 revisions
All Alchemy reactions are defined by JSON recipes, and can be added, modified, or removed through datapacks.
The following JSON format is used for Alchemy Recipes: Anything prefaced by // is a comment, and should not be in a real JSON
{
"type": "crossroads:alchemy", //Tells Minecraft this is an alchemy recipe
"group": <group>, //Optional, same purpose as vanilla
"category": <normal/precise/destructive/elemental/elemental_destructive>, //Optional, defaults to "normal". Destructive and elemental_destructive recipes explode (with strength controlled by data), and precise recipes break the chamber if the inputs weren't perfectly balanced. Elemental and elemental_destructive recipes require specifying an alignment with "beam_element" (new style) or "data" (old style), and will ignore reactants, occurring if the mix of phel., aeth., and adam. matches the alignment.
"min_temp": <number>, //Optional, defaults to absolute zero. Sets a minimum temperature for this reaction (celsius)
"max_temp": <number>, //Optional, defaults to an unreachable high value. Sets a maximum temperature for this reaction (celsius)
"heat": <number>, //Optional, defaults to zero. Controls how much heat this reaction releases/absorbs. Negative numbers are exothermic, positive endothermic
"catalyst": <string reagent ID or "NONE">, //Optional, defaults to "NONE". Sets a required catalyst to reagent ID if set to something other than NONE.
"charged": <true or false>, //Optional, defaults to false. If true, the reaction chamber needs to be charged
"data": <number/string alignment name>, //Optional, defaults to 0. Used by destructive type for controlling blast strength (see gunpowder for reference), expects a number
"beam_element": <string alignment name>, //Optional, defaults to no_match. Used by elemental type reactions, which expect this to be the string name of an alignment.
"active": <true or false>, //Optional, defaults to true. If false, this recipe will not be added! This is for making it easier to remove reactions through datapacks (to remove a reaction, override it with a version with active=false)
//FOR ONE REAGENT
"reagents": {
"type": <string reagent ID>, //Sets a required reagent to the reagent ID
"qty": <integer> //Optional, defaults to 1. Sets the amount of this reactant for one reaction
}
//OR
//FOR MULTIPLE REAGENTS
"reagents": [
{ //Specifies the first reagent
"type": <string reagent ID>, //Sets a required reagent to the reagent ID
"qty": <integer> //Optional, defaults to 1. Sets the amount of this reactant for one reaction
},
//... As many reagents can be specified as desired
]
//FOR ONE PRODUCT
"products": {
"type": <string reagent ID>, //Sets a required reagent to the reagent ID
"qty": <integer> //Optional, defaults to 1. Sets the amount of this product producted in one reaction
}
//OR
//FOR MULTIPLE PRODUCTS (or zero)
//If you want zero products, use this method and put nothing in the square brackets
"products": [
{ //Specifies the first product
"type": <string reagent ID>, //Sets a required reagent to the reagent ID
"qty": <integer> //Optional, defaults to 1. Sets the amount of this product producted in one reaction
},
//... As many reagents can be specified as desired
]
}