Community listing page, reviews may not be monitored by the author.
CYE: Recipe Control
No reviews yet
Change, add and disable any recipe or item with one JSON config — applied after datapacks, KubeJS and generated recipes, so your changes always win.
Community voices
Reviews
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
Resources
External Links
About
Description
CYE: Recipe Control
Change, add and disable any recipe — and have the last word over datapacks, KubeJS and mods that generate their own recipes.
⚠️ Early development (beta). The mod is still being developed and has so far been tested only on dedicated servers — singleplayer and most game versions have not been tested in game yet. It is not recommended for important worlds or public modpacks yet. Back up your world before using it, and please report any problems.
❗ Fabric / Quilt: Fabric API is required. Without it the mod does not load. (On Quilt, QFAPI works too.) Forge and NeoForge need nothing else.
One small jar for Fabric, Quilt, Forge and NeoForge. No scripting, no datapack per world: you describe the changes in one JSON file and the mod applies them directly to the game's recipe manager every time data is loaded.
Made for CYELauncher (its visual recipe editor writes the config for you), but works on its own on any client or server — the config is plain JSON.
Why
Datapacks are loaded together with everything else, so a mod or a KubeJS script can override them. Some mods (for example GregTech CEu) don't ship recipe files at all — they generate tens of thousands of recipes while the game loads, so there is nothing for a datapack to override.
CYE: Recipe Control runs after the recipe manager has been filled — after vanilla, datapacks, KubeJS scripts and generated recipes — and edits the final result. The changed recipes are then sent to players as usual, so recipe viewers that read the server's recipes (JEI / EMI / REI, the recipe book) should show them too — this part has not been tested in game yet.
Features
- Replace any recipe by its id — vanilla, modded or generated at runtime.
- Add new recipes.
- Disable recipes.
- Disable items: removes every recipe that produces the item. Optionally also removes recipes where the item is the
only way to satisfy an ingredient. Tags are expanded, so disabling
minecraft:stickalso removes recipes that use#c:rods/wooden(if sticks are the only thing in it), but disabling one kind of planks does not break every#minecraft:planksrecipe. - A bad recipe doesn't stop loading: a recipe that fails to parse is skipped and reported.
- Report after every load and
/reload—config/cye-recipe-control.report.txtsays what was changed, added, removed and what failed and why, plus a self-check that the changes really are in the recipe manager. - Full recipe list —
config/cye-recipe-control/recipes.txt(id<TAB>typeof every recipe in the game, including generated ones). Handy for finding the id of a recipe you want to replace.
Supported versions
Tested on dedicated servers (✅) — replacing, adding, disabling recipes, disabling items, /reload:
| Loader | Minecraft | Status |
|---|---|---|
| Forge | 1.20.1 | ✅ (also with GregTech CEu 7.5 and KubeJS 6) |
| NeoForge | 1.21.1 | ✅ |
| NeoForge | 26.1 | ✅ |
| Fabric / Quilt | 1.21.1 | ✅ |
| Fabric / Quilt | 1.21.4 | ✅ |
| Fabric / Quilt | 1.21.2 | ✅ |
| Fabric / Quilt | all other releases 1.20.1 – 1.21.11 | should work (name tables included), not tested in game |
| NeoForge | 1.20.5 – 1.21.x | should work, not tested in game |
- Fabric / Quilt — Fabric API is required (on Quilt — Fabric API or QFAPI).
- Java 17+.
- Older versions (1.19 and below) are not supported.
Installation
- Server: put the jar in
mods/(on Fabric / Quilt — together with Fabric API) and the config inconfig/cye-recipe-control.json. Players don't need the mod. - Singleplayer: put it in the client's
mods/(the integrated server does the work). - CYELauncher: nothing to do — the launcher downloads the latest compatible file from this project, keeps it updated and writes the config when you launch an instance that has recipe changes.
- Modpacks: you may include the mod in your modpack — while it is in beta, test it with your pack first.
Config — config/cye-recipe-control.json
{
"recipes": {
"minecraft:iron_pickaxe": {
"status": "edited",
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": ["ADA", " B ", " B "],
"key": {
"A": { "item": "minecraft:iron_ingot" },
"D": { "item": "minecraft:diamond" },
"B": { "item": "minecraft:stick" }
},
"result": { "id": "minecraft:iron_pickaxe", "count": 1 }
}
},
"mypack:sand_to_glass": {
"status": "new",
"recipe": {
"type": "minecraft:smelting",
"ingredient": { "item": "minecraft:sand" },
"experience": 0.1,
"cookingtime": 100,
"result": { "id": "minecraft:glass", "count": 4 }
}
},
"minecraft:golden_apple": { "status": "disabled" }
},
"disabled_items": {
"minecraft:tnt": { "ingredients": true },
"minecraft:diamond_sword": { "ingredients": false }
}
}
recipes— key is the recipe id.status:edited/new—recipeis the recipe JSON, exactly as in a datapack for your Minecraft version (the format changed in 1.20.5 and 1.21.2), including mod recipe types such asgtceu:macerator.status:disabled— the recipe is removed.
disabled_items— item id →{ "ingredients": true | false }.falseremoves the recipes that produce the item;truealso removes recipes that can no longer be crafted without it. Recipes listed inrecipesare never touched bydisabled_items.
Changes are applied at world/server start and on every /reload.
Report — config/cye-recipe-control.report.txt
# CYE: Recipe Control — 2026-10-21T18:24:11
changed 2, added 1, removed 329, errors 0, verified 4/4 (recipes before 39613, after 39285; reload)
N mypack:sand_to_glass
E minecraft:iron_pickaxe
- minecraft:golden_apple
x minecraft:stick — recipes removed: 327 (result and ingredient)
! mypack:broken — JsonParseException: Pattern references symbol 'X' but it's not defined in the key
(The report text is in Ukrainian in this version.)
Limitations
- Items are not removed from the game registry (that would break worlds) — a disabled item simply can't be crafted. It can still appear in loot, creative tabs, JEI's item list, etc.
- Mods that keep their own copy of recipes outside the vanilla recipe manager may still use the original recipe in their machines. Crafting-table / furnace / smithing / stonecutter recipes are always affected.
- On 1.20.1, machine recipes of mods like GregTech CEu can be disabled by id, but "disable item" can't detect their outputs (there is no recipe codec in 1.20.1).
- Recipe JSON must match the format of your Minecraft version — the mod does not convert between versions.
How it works (for the curious)
The mod has no compile-time dependency on Minecraft. It finds the game's classes by their official (Mojang) names via reflection; for environments with different runtime names (Fabric intermediary before 1.21.11, Forge 1.20.1 SRG) the jar contains small lookup tables generated from the official mappings. Hooks:
- Forge / NeoForge — a reload listener registered with the lowest priority, which runs after the recipe manager.
- Fabric / Quilt — Fabric API server lifecycle events (
SERVER_STARTING,END_DATA_PACK_RELOAD), then the recipes are re-sent to players.
Credits
- Name lookup tables are generated from Mojang's official mappings, Fabric Intermediary and Forge MCPConfig; only the few dozen names the mod uses are included.
License
MIT.
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Get it on
Available Platforms
On ModDex
Community snapshot
By the numbers
Statistics
Resources