Description
This mod provides universal cutting recipes for all matching items.
This mod is an util separated from another mod named Convenient Storage by Admsgenter.
FUNCTION
Adds universal cutting recipes for items missing appropriate recipes.
For example, items of wood has no recipes for cutting, we added for them.

Completes direct recipes for items can be crafted through multiple recipes.
For example, Stone can be cut into Cobblestone, Cobblestone can be cut into Cobblestone Stairs, a cutting recipe from Stone to Cobblestone Stairs will be added if absent.

- Note: Cutting Recipe from Stone to Cobblestone is not present in Minecraft 1.20, it is added by this mod.
DATAPACK
The rule for this mod can be modified in datapack or kjs.
Structure
The structure of the datapack should be like:
data/<namespace>/
├ universal_ingredient/
│ └ <ingredient_file_name>.json
└ universal_recipe/
└ <recipe_file_name>.json
JSON
Universal Ingredient
We add cutting recipes for items by matching their ids.
We use '*' as wildcard for matching.
For example, "minecraft:oak_log", "minecraft:birch_log", … matches "*_log".
The structure of the json should be like:
JSON
├ <ingredient_0>: [<rule_0>, <rule_1>, ...]
├ <ingredient_1>: [<rule_0>, <rule_1>, ...]
...
For example, part of data/universal_cutting_recipe/universal_ingredient/default.json:
{
"boat": ["*_boat"],
"bricks": ["*_bricks"],
"button": ["*_button"],
"door": ["*_door"],
"fence": ["*_fence"],
"fence_gate": ["*_fence_gate"],
"log": ["*_log", "*_stem"],
"planks": ["*_planks"],
"stripped_log": ["stripped_*_log", "stripped_*_stem"],
"stripped_wood": ["stripped_*_wood", "stripped_*_hyphae"],
"trapdoor": ["*_trapdoor"],
"wood": ["*_wood", "*_hyphae"]
}
- Note: A standalone "*" can't be a rule.
Universal Recipe
The structure of the json should be like:
JSON
├ <input_ingredient_0>: {
│ <output_ingredient_0>: <count_0>,
│ <output_ingredient_1>: <count_1>,
│ ...
│ }
├ <input_ingredient_1>: {
│ ...
│ }
...
For example, part of data/universal_cutting_recipe/universal_recipe/default.json:
{
"*": {
"bricks": 1,
"button": 1,
"fence": 1,
"fence_gate": 1,
"slab": 2,
"stairs": 1
},
"log": {
"stripped_log": 1
},
"planks": {
"button": 1,
"door": 1,
"fence": 1,
"fence_gate": 1,
"minecraft:ladder": 2,
"minecraft:stick": 3,
"sign": 1,
"slab": 2,
"stairs": 1,
"trapdoor": 1
},
"stripped_log": {
"boat": 1,
"minecraft:barrel": 1,
"minecraft:chest": 1,
"minecraft:composter": 2,
"minecraft:crafting_table": 1,
"planks": 4
},
"stripped_wood": {
"stripped_log": 1
},
"wood": {
"log": 1,
"stripped_wood": 1
}
}
- Note: A standalone "*" can be a input_ingredient.
Then recipes will be added if the * of input and output are same.
MISC
Can I use this mod in modpacks?
Yes.
