promotional bannermobile promotional banner

History Stages

Guide your players through the ages. History Stages lets modpack creators lock items, recipes, dimensions, mobs, loot, and more behind custom research-based eras with full in-game tooling.
Back to Files

History Stages 6.0.0-1.21.1

File namehistorystages-6.0.0-1.21.1.jar
Uploader
BananemdnsaBananemdnsa
Uploaded
Sep 14, 2026
Downloads
59
Size
2.7 MB
Mod Loaders
NeoForge
File ID
8877902
Type
R
Release
Supported game versions
  • 1.21.1
  • 1.21

Curse Maven Snippet

NeoForge

implementation "curse.maven:history-stages-1473453:8877902"

Learn more about Curse Maven

What's new

Full Changelog: https://github.com/Flix100000/History-Stages/compare/5.6.1-1.21.1...6.0.0-1.21.1

One of the biggest updates for History Stages so far: three new lock categories, a real script integration for KubeJS and CraftTweaker, an addon surface other mods can build on, and a long list of fixes.

Before you update

Most of this migrates on its own, but a few things behave differently than they did in 5.x. Worth reading before 6.0.0 goes on an existing pack.

  • Server and client both have to be on 6.0.0. The stage sync is gzipped now and the payload version moved to 2, so a 6.0.0 client on a 5.x server gets the incompatible-mod screen instead of connecting. That is intended: the old format would have dropped the player mid-login with nothing in the log naming a cause.
  • Settings moved into historystages/settings/, split into visual and gameplay by what a setting does rather than by which file it happened to load from. Every pre-6.0 config path is mapped to where it lives now and the values are carried across on first load, so nothing is lost. The old files stop being read after that.
  • A spawn lock no longer implies an attack lock. Locking a creature's spawns used to make it unhittable as well, and that rule does not survive the new conditions — "zombies only at night" would have handed out invulnerable night zombies. A creature that should also be unhittable belongs in the attack list from now on. This change is a silent one: nothing errors, the mob simply becomes attackable.
  • trade is a new item action, and old files count it as locked. Stage files store the complement of an action list, so an action that no existing file mentions is gated in every one of them. An item somebody narrowed to "use only" gates trading as well from this version on.

New

  • Locks: Zones [BETA] — draw an area out of cuboids, spheres and cylinders, several shapes per zone, and hang it on a stage. A locked zone can push players back with a client-side barrier, show a force-field wall up close and an outline from a distance, and tint the screen from the inside.
  • Locks: Trades — hide single merchant offers behind a stage, per player, back the moment the stage unlocks. Three ways to say what is gated that do not overlap: a single offer, a profession (optionally only on some of its levels), or a merchant level. A locked offer is absent from the list rather than crossed out, so nobody loses a profession or stops levelling.
  • Locks: Fluids — gate a fluid through whatever carries it, vanilla buckets, modded buckets and tank items alike, without listing a single item id. Also covers the recipes a fluid produces or is consumed by, through an ingredient action that only this category has.
  • Spawn: A spawn-lock entry is a full rule now. It carries a phase, eight optional conditions (dimension, biome, sky, height, time of day, light, weather, moon phase) and biomes the creature additionally spawns in, all edited in one dialog with four tabs and a sentence underneath saying in plain words what the rule does. Stage files that use none of it stay byte-identical.
  • Scripts: KubeJS and CraftTweaker can read stage state, change it and ask whether something is gated, with four KubeJS events, two ZenScript event types and a hasStage expansion on the player. Naming a Java event class as a string was the only way in before, and a typo in that string failed silently. Scripts still cannot define what belongs to a stage — that stays with the editor, so the editor keeps showing what is actually locked.
  • Addons: Another mod can register its own lock categories, requirements, auto-triggers, per-stage settings and config sections, and each one gets a tab in the in-game editor that looks like the built-in ones. A packmaker configures it without writing a script. See the Addon Development wiki page.
  • Recipes: Recipe locks apply per player at the crafting table, the 2×2 grid, the stonecutter and the smithing table. Furnaces, brewing, the crafter block, hoppers and mod autocrafters have nobody standing there and stay global-only.
  • Dependencies: A deposit can ask for an item tag, and a requirement can demand an individual stage of the researcher alone.
  • Triggers: A stage can unlock itself from player and world state, without anyone touching a pedestal.
  • Graph: A stage can change the map background once it is unlocked. The base colour of the graph surface is canvas.backgroundColor in graph.toml now instead of being built in; the default is unchanged at #17171A.
  • Editor: The recipe picker is one panel and shows what a recipe is made of instead of its raw id, with fluids filed where the recipes are. The NBT editor is a list of criterion cards. The three entity tabs merged into one Entities tab with sections. Items a pack deleted stay out of the pickers.
  • Config: A pack can hide the editor button in the pause menu.
  • Config: Visual settings reach every player, not just the admin who edited them, and a player's own settings come back when they leave a server.

Fixes

  • Locks: Locking a recipe no longer takes down other recipes that share its ingredients, and the recipe list itself is gated rather than only the single lookup — machines that read the whole list instead of asking for one recipe were a hole. FastSuite answers those lookups itself and is covered now too (#121).
  • Locks: An entry's unlock_actions are honoured everywhere a gate asks, and an empty action list means nothing is locked instead of silently flipping to everything. A mod entry narrowed to recipe used to shut the whole mod (#117).
  • Locks: A container click is judged by what it takes out of foreign storage, not by what lies in the clicked slot. Sorting a locked item inside your own inventory, throwing it away and stacking onto it all work now, and number-key swaps and double-click gathering are checked at all, which they never were (#122).
  • Lootr: Loot is filtered as it is rolled rather than only when a window opens, so decorated pots and brushed suspicious blocks stop handing out locked items (#120, #124). The mob-drop path reads replacementTags again.
  • Recipes: A stage gating a recipe that is not loaded is reported at load time instead of failing silently, and the editor marks those rows red. Locking or unlocking refreshes the recipe book properly instead of leaving it blank until a rejoin.
  • Compat: A stage name with capitals no longer takes JEI or EMI down. JER pages never draw the locked overlay. Better Combat is accepted at any version.
  • Graph: A node whose requirements never arrived asks again instead of staying blank, and requirements are no longer served from the first time the node was opened.
  • Dependencies: Deposited progress is filed under a group's key rather than its position, so reordering groups no longer misfiles it. A stat requirement can be fulfilled at all now.
  • Tooltips: AND and OR are shown inside each group, where they apply.
  • Network: Large packs can log in again. The stage set travelled as one plain string and hit a fixed character cap, which threw while the login packet was being encoded and dropped the player. Both the login sync and the editor sync are gzipped now, and going over a limit names the field and both numbers instead of throwing from somewhere inside the encoder.
  • Editor: A warning before overwriting a stage file that changed on disk, error toasts that stay up twice as long, long suggestions that scroll, and a picker that no longer hits the row underneath it as it opens.
  • Config: Client-side settings were rebuilt from defaults on every start, because the client spec never saved. The key lists that had to be maintained by hand are gone as well — both specs are walked instead, so a new setting cannot be forgotten in three places.

Security and performance

  • Four packets carrying a block position handed it straight to getBlockEntity, which loads the chunk if it is not there, so sending coordinates was enough to make the server generate world on demand. All of them go through a reach check now.
  • Locked-item checks run through an index of what gates a subject instead of searching for it. Structure zones are derived once per structure start, pedestals check requirements every ten ticks rather than every tick, tooltips narrow through the relevance index instead of walking every stage, and the lock wall works out which cells are visible once per shape set instead of every frame.
  • Leaving a server used to keep its lock zones on screen until something synced over them.

Other

  • Dependencies moved to their newest 1.21.1 builds.
  • Thanks to @Tech3434 for a long run of reports and compatibility findings this cycle, and to everyone who filed the issues fixed above.

This mod has no additional files