Give each player stages, and decide in datapack JSON what a player without a stage can't do: make certain items, use certain items, or open certain workstations.
It is a tool for pack and server makers who want progression — a profession, a tech tier, an unlock tree — without writing code. Stages are granted with a command, so a quest reward, an advancement function or any mod that can run commands can hand them out.
What a stage can lock
- craft — the item can't be taken out of an output slot: crafting table and inventory grid, furnaces, smithing table, stonecutter, loom, and modded workstations whose output slot refuses inserted items.
- use — the item can't be right-clicked, placed or used on entities.
- items — both
craftanduse. - blocks — right-clicking the block does nothing, so its screen doesn't open.
- menus — screens of these types close as soon as they open, however they were opened.
- JEI (optional) — locked items stay listed with an "Unlocks at" line in the tooltip (
"jei": "show", the default), or are hidden until unlocked ("hide").
Every list accepts item ids, tags (#c:ingots), all items of a mod (@modid) and * wildcards. Ids of mods that aren't installed are ignored, so one data set can serve several setups. A refused player always sees why on the action bar, for example "You can't use the Furnace yet. Unlocks at: Smelting".
Defining a stage
One file per stage, data/<namespace>/pack_stages/stages/<path>.json — stages/smith/apprentice.json is the stage smith.apprentice:
{
"display": "Smelting",
"blocks": ["minecraft:furnace", "minecraft:blast_furnace"],
"craft": ["minecraft:furnace"],
"jei": "show"
}
Commands
/pack_stages add|remove <players> <stage>, clear, list, has (returns 1 or 0, for execute store result), and stages (what the loaded data defines). Permission level 2. Stages are saved with the player and kept on death.
Limits
- Machines that work without a player taking the result — hoppers pulling from a furnace, the Crafter, automation mods — are not gated. Lock the machine block itself if that matters.
- Workstations whose output slot accepts inserted items need
blocksormenusto gate the whole station instead of single items. - Needed on both the server and the client.

Paid commissions for videos, streams and servers. Send me your idea: kuronami.mods@gmail.com

All Rights Reserved. Free to put in any modpack, on any platform, monetised or not - no permission needed, no credit required. Source is published so you can read exactly what it does. Bugs and questions: comment on the CurseForge page, or DM @kuronami333 on X. Source code: https://github.com/KURONAMI333/pack-stages


