Mineuniverse
Log in Register
Mods

SDM Recipe Machine Stages

The ultimate progression tool for tech-based modpacks. Lock machine recipes behind stages with seamless KubeJS and CraftTweaker integration.
by Sixik
Download Claim this project
55,109 downloads
0 likes
Updated Jul 6, 2026
0 hypes
CraftTweaker Create KubeJS Server Utility Utility & QoL

Recipe Machine Stage

This mod provides the ability to block recipes for mechanisms, similar to how it is implemented in Recipe Stages for the workbench.

⚠️ Update for 1.21.1+: A new method addRecipeByMachine has been added, and the syntax for both KubeJS and CraftTweaker has been significantly updated! Please see the 1.21+ Documentation section below.

What mods are supported?

The list of supported mods can be found here: GitHub

How to use it?

Everything works very simply. You only need to install the dependencies: (CraftTweaker AND Game Stages) OR KubeJS OR AStages.


📖 Documentation for 1.21.1+ (New Syntax)

⚠️ Important: Registration order matters! If a recipe is already restricted individually (via addRecipe), subsequent bulk restrictions (addRecipeByMod or addRecipeByMachine) will ignore it. This allows you to create exceptions (e.g., locking a specific recipe to stage "A", but locking the rest of the machine to stage "B"). Specific recipes must be declared before bulk ones!

KubeJS (1.21+)

// kubejs/server_scripts/rms_example.js
RMSEvents.register(event => {

    // --- Individual Restrictions ---
    // event.addRecipe(recipeType: string, recipe_id: string, stage: string)
    event.addRecipe('create:milling', 'create:milling/fern', 'two')

    // event.addRecipes(recipeType: string, recipe_ids: string[], stage: string)
    event.addRecipes('minecraft:smelting', ['minecraft:stone', 'minecraft:iron_ingot'], 'one')

    // --- Bulk Restrictions ---
    // event.addRecipeByMod(recipeType: string, modId: string, stage: string)
    event.addRecipeByMod('minecraft:smelting', 'create', 'create')

    // event.addRecipeByMods(recipeType: string, modIds: string[], stage: string)
    event.addRecipeByMods('minecraft:smelting', ['create', 'minecraft'], 'one')

    // --- NEW: Block entirely by machine ---
    // event.addRecipeByMachine(recipeType: string, stage: string)
    event.addRecipeByMachine('minecraft:smelting', 'one')
})

CraftTweaker (1.21+)

import mods.rms.RMS;

// Individual
RMS.addRecipe("minecraft:smelting", "minecraft:stone", "one");
RMS.addRecipe("minecraft:smelting", ["minecraft:stone", "minecraft:iron_ingot"], "one");

// Bulk
RMS.addRecipeByMod("minecraft:smelting", "minecraft", "one");
RMS.addRecipeByMod("minecraft:smelting", ["minecraft", "create"], "one");

// NEW: Block entirely by machine
RMS.addRecipeByMachine("minecraft:smelting", "one");

📖 Documentation for 1.20.1 and below (Legacy Syntax)

KubeJS (Server Scripts)

// kubejs/server_scripts/example.js

// RecipeMachineStage.addRecipe(String recipeType, String recipeID, String stage)
RecipeMachineStage.addRecipe('create:milling', 'create:milling/fern', 'two')
RecipeMachineStage.addRecipe("minecraft:smelting", "minecraft:stone", "one")

// RecipeMachineStage.addRecipes(String recipeType, String[] recipeIDs, String stage)
RecipeMachineStage.addRecipes("minecraft:smelting", ["minecraft:stone", "minecraft:iron_ingot"], "one")

CraftTweaker

import mods.recipemachinestage.RecipeMachineStage;

RecipeMachineStage.addRecipe(recipeType as string, recipeID as string, stage as string)
RecipeMachineStage.addRecipe(recipeType as string, recipeID as string[], stage as string)
RecipeMachineStage.addRecipeByMod(recipeType as string, modId as string, stage as string)
RecipeMachineStage.addRecipeByMod(recipeType as string, modId as string[], stage as string)

RecipeMachineStage.addRecipe(recipeType as RecypeType, recipeID as string, stage as string)
RecipeMachineStage.addRecipe(recipeType as RecypeType, recipeID as string[], stage as string)
RecipeMachineStage.addRecipeByMod(recipeType as RecypeType, modId as string, stage as string)
RecipeMachineStage.addRecipeByMod(recipeType as RecypeType, modId as string[], stage as string)

Example (1.20.1)

import mods.recipemachinestage.RecipeMachineStage;

RecipeMachineStage.addRecipe("minecraft:smelting", "minecraft:stone", "one");
RecipeMachineStage.addRecipe(<recypetype:minecraft:smelting>, "minecraft:stone", "one");

// Botania (Mana Infusion)
RecipeMachineStage.addRecipe("botania:mana_infusion", "botania:mana_infusion/mana_diamond", "two");

// Mekanism (Metallurgic Infusing)
RecipeMachineStage.addRecipe("mekanism:metallurgic_infusing", "mekanism:processing/iron/enriched", "three");

RecipeMachineStage.addRecipeByMod("minecraft:smelting", ["minecraft", "create"], "one");

Parameters Description

  • recipeType - Recipe Type. In CraftTweaker (<recypetype:minecraft:smelting>), you need to write it without the prefix: "minecraft:smelting".
  • recipeID - Recipe ID ("minecraft:iron_ingot_from_blasting_iron_ore", "mekanism:processing/iron/enriched", etc.).
  • stage - The stage required to unlock the recipe ("one", "two", etc.).

Links

recipemachinestage-1.20.1-2.4.0.jar
MC Client, 1.20.1, Forge, NeoForge, Server
Release 2026-06-23 Get
sdmrecipemachinestages-neoforge-1.2.0.jar
MC Client, 1.21.1, NeoForge, Server
Release 2026-03-31 Get
sdmrecipemachinestages-fabric-1.2.0.jar
MC Client, Fabric, 1.21.1, Server
Release 2026-03-31 Get

More from Sixik

SDM Engine Core
980,484
CraftTweaker Sixik Utils AOA3 (Nevermine) (Outdated)
9,537
CraftTweaker Sixik Utils Curios (Outdated)
9,455
SDM Loot Stages
8,665
SDM Market (Forge/Fabric)
773,883
Player Stages
67,409

You Might Also Like

APTweaks: Items (11.x Classic)
Item clustering (fallen blocks, experience orbs, ...) and garbage cleanup.
9,884,514
VanillaDeathChest (Fabric)
Places containers when players die that contain their items.
994,762
Styled Nicknames
Simple, but configurable nicknaming mod allowing your server's players (and admins) to change their nickname with full formatting support
989,499
Tiquality
Make server lag the problem of the source player.
99,489
Blame (Fabric)
Those gosh darn crashlogs not saying which worldgen feature is crashing!
99,012
Weathering with You
Forecast Minecraft weather with a radar or a hat!
98,579