SDM Recipe Machine Stages: Lock Machines by Game Stage

Download SDM Recipe Machine Stages for Minecraft to lock machine recipes by game stage with KubeJS or CraftTweaker. Simple setup, deep progression control.

SDM Recipe Machine Stages

Progression modding in Minecraft often hits a wall when players can simply bypass the workbench. You gate a crafting recipe, but they just walk over to a Create mixer or a Mekanism infuser and make the same item anyway. SDM Recipe Machine Stages closes that gap entirely. This add-on extends the familiar Recipe Stages concept to every supported machine, letting you lock smelting, milling, infusing, and more behind your own custom game stages. It is a straightforward tool for pack developers who want meaningful progression without constant loopholes.

Why Lock Machine Recipes?

In a standard modpack, players rush to automation. If you restrict a recipe on the crafting table but leave the equivalent machine recipe open, the restriction is pointless. With SDM Recipe Machine Stages for Minecraft, you can apply the same stage gating to any machine recipe type. That means a player must reach stage "two" before they can use a Create mill on a specific item, or stage "three" before Mekanism metallurgic infusing becomes available. The result is a cleaner, more deliberate progression curve.

Supported Mods and Loaders

The add-on supports a wide range of popular tech and magic mods. The full list is maintained on the official GitHub repository, but you can expect compatibility with Create, Mekanism, Botania, and many others. It works on both the Forge and NeoForge loaders, with versions available for Minecraft 1.20.1 and below, as well as the updated 1.21.1+ releases. Always check the specific file for your loader and version before you download.

How to Install SDM Recipe Machine Stages

Installing the add-on is simple. First, you need to have a stage mod installed. The dependencies are flexible: you can use CraftTweaker alongside Game Stages, or you can use KubeJS on its own, or even AStages. Once those are in place, drop the SDM Recipe Machine Stages jar file into your mods folder and restart the game. For a faster setup, the foxygame.net launcher offers a one-click install for SDM Recipe Machine Stages, which automatically handles the correct Minecraft version and loader compatibility for you.

Understanding the New Syntax for 1.21.1+

If you are playing on Minecraft 1.21.1 or newer, pay attention to the updated syntax. The developers have significantly reworked how scripts work. A new method, addRecipeByMachine, has been added, and the existing syntax for both KubeJS and CraftTweaker has changed. The most important rule to remember is that registration order matters. If you lock a specific recipe individually using addRecipe, any bulk restrictions you add later for the same machine will ignore that recipe. This is actually a powerful feature, as it lets you create exceptions. For example, you can lock a specific recipe to stage "A" while locking the rest of the machine's recipes to stage "B". Just remember to declare the specific recipes before the bulk ones.

KubeJS Example for 1.21+

Using KubeJS, you write your restrictions in a server script. Here is a quick look at the new format:

RMSEvents.register(event => {
  // Individual Restrictions
  event.addRecipe('create:milling', 'create:milling/fern', 'two')
  event.addRecipes('minecraft:smelting', ['minecraft:stone', 'minecraft:iron_ingot'], 'one')

  // Bulk Restrictions
  event.addRecipeByMod('minecraft:smelting', 'create', 'create')
  event.addRecipeByMods('minecraft:smelting', ['create', 'minecraft'], 'one')

  // Block entire machine type
  event.addRecipeByMachine('minecraft:smelting', 'one')
})

CraftTweaker Example for 1.21+

CraftTweaker users will see a similar shift. The import statement has changed, and you now use the RMS class directly:

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");

// Block entire machine
RMS.addRecipeByMachine("minecraft:smelting", "one");

Legacy Syntax for 1.20.1 and Below

For those staying on older versions, the legacy syntax remains unchanged. In KubeJS, you call RecipeMachineStage.addRecipe directly. In CraftTweaker, you use mods.recipemachinestage.RecipeMachineStage. The parameters are the same: recipe type, recipe ID, and the stage required. You can also use the <recipetype:minecraft:smelting> bracket handler in CraftTweaker for better type safety.

Practical Examples for Your Pack

Let us look at a few real-world scenarios. If you want to gate Botania's mana infusion, you can write:

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

Or, to lock all Mekanism processing recipes from a specific mod, use the bulk method:

RecipeMachineStage.addRecipeByMod("mekanism:metallurgic_infusing", "mekanism", "three");

These commands give you granular control. You can lock a single item, a list of items, or an entire mod's output. When you download SDM Recipe Machine Stages, you get all these options in one package.

Final Thoughts on Progression Control

If you are tired of players skipping your carefully designed progression, this add-on is the answer. It is easy to learn, works with the most popular scripting mods, and covers a wide range of machines. Whether you are using the new 1.21+ syntax or the legacy 1.20.1 methods, the logic is consistent and powerful. The foxygame.net launcher also keeps the add-on updated automatically, so you always have the latest version of SDM Recipe Machine Stages without manual checks. Take control of your machines and make every recipe count.