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 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
🔬 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 · Beta)
Create, edit, duplicate, and delete stages directly in-game — no file editing required. Features searchable lists for items, recipes, entities, dimensions, tags, and mods. Accessible via a button in the pause menu (OP required). Currently in beta — bugs may occur. Please report any issues!
In-Game Config Editor (v3.x.x · Beta)
Tweak all mod settings without leaving the game, organized by category with a reset-to-defaults option. Accessible through the stage editor.
Debug Logging
Configurable debug output to help you track down config validation and stage loading issues.
🎨 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
- 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
Found a bug or have a question? Feel free to open an issue on GitHub — we read everything! 🙂




