Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Creators
Details

History Stages is a global progression and gatekeeping mod built for modpack creators. Lock items, recipes, dimensions, mobs, and loot behind custom research-based eras — and let players work together to unlock them through the Research Pedestal.
Since stages unlock server-wide, it's perfect for collaborative survival packs where the whole group advances together.
✨ What makes History Stages different
Most progression mods track progress per player. History Stages does it differently — stages unlock for the entire server at once, which means your whole group experiences the same era together. No one sneaks ahead, no one gets left behind.
Advancing isn't just a command either. Players physically bring Research Scrolls to the Research Pedestal and spend time researching to unlock the next era — a tangible, in-world ritual that fits any modpack theme and gives progression real weight.
On top of that, almost everything can be locked — not just items, but recipes across every mod, dimensions, mob spawning, loot tables, armor stand displays, and more. And with the built-in in-game editor, you can build and tweak your entire stage setup without ever touching a config file.
If you're using FTB Quests, the integration goes even deeper — History Stages adds a native stage task type and stage reward type directly into the FTB Quests editor, so you can tie stage unlocks into your quest lines without any extra scripting.
🔒 What you can lock
- Items, Tags & entire Mods — lock individual items, item tags, or everything from a specific mod at once
- Recipes — hide crafting recipes by recipe ID from all crafting menus
- Dimensions — block access to the Nether, End, or any other dimension until players are ready
- Mobs — two modes: Attacklock (players can't hurt the mob) and Spawnlock (prevents spawning entirely, including spawners and commands). Spawnlocked mobs are also automatically attacklocked.
- Loot & Drops — locked items are removed or replaced in loot chests and mob drops
- Blocks — locked blocks resist breaking with a configurable slow-break multiplier
- Armor Stands & Item Frames — locked items displayed on armor stands or item frames (e.g. from world-generated structures) can't be taken or destroyed
🔬 The Research System
Players unlock stages by using Research Scrolls at the Research Pedestal. Each stage can have its own research time — or fall back to a global default in your config.
This mod intentionally ships without default recipes for the Pedestal and Scrolls, so you as a modpack creator can decide how players obtain them — whether that's through KubeJS, CraftTweaker, a datapack, or quest rewards. To give a specific scroll via command:
/give @s historystages:research_scroll{StageResearch:"YOUR_STAGE_NAME"}
📂 Creating Stages
The easiest way is the in-game stage editor (see below). If you prefer working with files, create .json files in config/historystages/ after running the game once:
Click to expand — JSON format
{
"display_name": "Bronze Age",
"research_time": 60,
"items": ["minecraft:iron_ingot"],
"tags": ["forge:ores/iron"],
"mods": ["mekanism"],
"recipes": ["minecraft:iron_pickaxe"],
"dimensions": ["minecraft:the_nether"],
"entities": {
"attacklock": ["minecraft:zombie"],
"spawnlock": ["minecraft:skeleton"]
}
}
Fields:
display_name— human-readable name shown in messages and tooltipsresearch_time— (optional) research duration in seconds; falls back to global default if omitted or 0items— list of item IDs to locktags— list of item tags to lockmods— list of mod IDs to lock all items fromrecipes— list of recipe IDs to hide from crafting menusdimensions— list of dimension IDs to block access toentities.attacklock— entities that cannot be attacked while the stage is lockedentities.spawnlock— entities prevented from spawning entirely (also automatically attacklocked)
Files starting with _ are ignored and can be used as templates.
🛠️ Tools for Pack Creators
In-Game Stage Editor (v3.x.x)
Create, edit, duplicate, and delete stages directly in-game — no file editing required. Features searchable lists for items, recipes, entities, dimensions, tags, and mods. You can also switch to Inventory mode to add items or mobs directly from your own inventory. Accessible via a button in the pause menu (OP required).
In-Game Config Editor (v3.x.x)
Tweak all mod settings without leaving the game, organized by category with a reset-to-defaults option. Accessible through the stage editor.
Debug Logging (v3.x.x)
Two-tier logging system: load-time diagnostic reports (debug-*.log) with config validation and registry checks, plus runtime event logs (runtime-*.log) tracking stage changes and blocked actions.
🎨 UI & Feedback
- Lock Icon Overlay — locked items show a padlock in inventories and JEI (auto-disabled with EMI)
- Toast Notifications — an advancement-style popup notifies all players when a stage unlocks
- JEI / EMI Integration — locked items are hidden or marked in recipe viewers
- Jade Integration — shows stage info as a tooltip on armor stands and item frames
- Actionbar & Chat Messages — configurable feedback when players try to access locked content
⌨️ Admin Commands
Click to expand — all commands require Permission Level 2 (OP)
/history unlock <stage>— unlocks a stage globally/history unlock *— unlocks all stages at once/history lock <stage>— relocks a specific stage/history lock *— resets everything/history list— lists all registered stages/history info <stage>— shows details for a stage/history reload— reloads all configs and syncs to all clients
🔧 For Developers & Script Authors
Click to expand — Forge Events for KubeJS, CraftTweaker & other mods
History Stages fires custom Forge events you can hook into from KubeJS, CraftTweaker, or other mods:
StageEvent.Unlocked— fired when a stage is unlocked (via command or Research Pedestal)StageEvent.Locked— fired when a stage is locked
Both events expose getStageId() and getDisplayName().
⚙️ Configuration
Everything is configurable via historystages-common.toml and historystages-client.toml, or through the in-game config editor (v3.x.x). You can control:
- Toast popups, achievement sounds, and actionbar messages
- Unlock message format with color codes
- Loot replacement behavior (replacement list, tag-based, or deletion)
- Lock icon overlays and tooltip display options
- Dimension and mob lock feedback
- Default research time as a global fallback
- Debug logging
📦 Dependencies
- Lootr — required
- JEI — optional
- EMI — optional
- FTB Quests — optional (adds custom stage task & reward types directly in the FTB Quests editor)
- Jade — optional (shows stage info on armor stands and item frames)
❓ FAQ
Can stages be unlocked per player instead of server-wide?
No — stages are always global by design. This is intentional: the entire recipe locking system works at the RecipeManager level, which makes per-player unlocking architecturally incompatible. The global approach also means your whole group progresses together, which is the point of a shared survival experience.
Do I need to add crafting recipes for the Research Pedestal and Scrolls myself?
Yes. The mod ships without default recipes on purpose so you have full control over how players obtain them. You can add recipes via KubeJS, CraftTweaker, or a datapack — or simply give scrolls to players as quest rewards using the /give command.
Is Lootr really required? Can I use the mod without it?
Yes, Lootr is a hard dependency. Loot chest filtering is built entirely around Lootr's container system and can't be made optional without a major rewrite. If you're not using loot locking, Lootr still needs to be present but won't get in the way.
Does it work with KubeJS or CraftTweaker?
Yes — History Stages fires StageEvent.Unlocked and StageEvent.Locked on the Forge event bus, which both KubeJS and CraftTweaker can listen to. You can use these to trigger custom logic when a stage changes.
Which Minecraft versions are supported?
- 1.20.1 — Forge
- 1.21 / 1.21.1 — NeoForge
- 1.19.2 — Forge
Do I need FTB Quests to use this mod?
No, FTB Quests is completely optional. The integration only activates when FTB Quests is present and adds a custom task type and reward type to the FTB Quests editor — but the mod works perfectly without it.
Found a bug or have a question? Feel free to open an issue on GitHub — we read everything! 🙂




