Home›Java›Mods›SDM Recipe Machine Stages
SDM Recipe Machine Stages
ModsJava

SDM Recipe Machine Stages

Java mod listed for Minecraft 1.19–1.21. Downloads from the MC Java Mods app on Android.

by Sixik · on CurseForge

The ultimate progression tool for tech-based modpacks. Lock machine recipes behind stages with seamless KubeJS and CraftTweaker integration.

Which build do you need?

This mod ships a separate file for every mod loader and every version of the game. Pick both, then download — the wrong build installs fine and then does nothing in the game.

Mod loader

Minecraft version

⬇ Download for 1.21.1 · NeoForge⬇ Download for 1.20.1 · NeoForge⬇ Download for 1.21.1 · Fabric⬇ Download for 1.20.1 · Forge⬇ Download for 1.19.2 · Forge
I don't know my version or loader
Open the Minecraft launcher and look at the profile you play on — it names both, like fabric-loader-1.21.4. The version also shows in the bottom-right corner of the game's main menu.
No loader in the profile name? Then it's plain Minecraft, and these mods won't run — you need Fabric or NeoForge installed first.

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

Links

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

File checked by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more