API Overview
API generation 6 · Requires History Stages 6.0.0+ on NeoForge 1.21. The addon platform does not exist on Fabric or Forge 1.20 yet.
These pages are for people writing a mod. If you are building a pack, you want the Wiki instead — nothing here is needed to make stages, and an addon is never required to gate content that History Stages already knows about.
Which half do you need?
Almost every mod that touches History Stages needs only the first one.
| "My mod needs to know what a player has unlocked." | Read stage state, change it, and react when it changes. A plain API surface, no registration, no events to subscribe to at load time. → Stage State & Events |
| "My mod adds something History Stages should be able to gate." | Register your own lock category, requirement, auto-trigger, stage settings or config section — each with a native tab in the in-game editor. → Addon Development |
The second one builds on the first: an addon still reads stage state the same way anybody else does.
The extension points
| Page | Answers |
|---|---|
| Lock Categories | What can be gated? The sixteen built-in kinds are registered through this same path. |
| Requirements | What must a player do before the stage opens? |
| Auto-Triggers | What unlocks a stage by itself, with no pedestal and no command? |
| Stage Settings | Your own settings on every stage, stored in the stage file. |
| Config Sections | Your own rows in the config screen, stored in your own config. |
The editor toolkit
An addon's tab looks like a built-in tab because it is made of the same widgets. How much of it you write is a choice, and the cheapest tier is "none at all".
| Page | Covers |
|---|---|
| Editor Toolkit | The three tiers, and how a tab is registered in the first place. |
| Editor Widgets | The row widget, pickers, right-click menus — the reference catalogue. |
| Editor Screens | The lifecycle a tab may override, and the one hook that is easy to forget. |
Versioning
The API generation equals the mod's major version: 6.x is generation 6, and a breaking change to
anything in the API waits for 7.0. Declaring versionRange="[6.0,7.0)" in your mod metadata is
therefore the whole compatibility check, and the loader performs it before any addon code runs. →
Adding the dependency
Unlike the wiki, these pages are not versioned — they describe the current generation only.