Skip to main content
Version: 5.6.x

Stage Graph

The Stage Graph is a player-facing, interactive node graph of a modpack's progression. It shows stages as nodes connected by dependency edges, so players can see what they've unlocked, what's next, and how everything connects — without spoiling content they haven't reached yet.

It is separate from the read-only Dependency Graph in the In-Game Editor, which is an OP-only authoring tool. The Stage Graph is meant to be shown to every player.

Enabling It

The Stage Graph is off by default. A modpack creator enables it by setting enabled = true under [general] in graph.toml, either by hand or through the Graph tab of the in-game Config Editor. Once enabled, a "Stage Graph" button appears on the vanilla pause menu for every player, next to the (still OP-only) editor button.

The screen title defaults to a translation key (graph.historystages.title) but can be set to custom rich text — including &-style color codes — via the same rich-text dialog used elsewhere in the editor.

Visibility Modes

[visibility].mode controls which stages a player sees, from least to most restrictive:

ModeBehaviour
ALLEvery stage is shown, regardless of progress.
PROGRESSIVE (default)Unlocked stages, their direct dependency neighbours in both directions, and anything currently researchable anywhere — including free-standing roots of untouched branches.
PROGRESSIVE_STRICTSame neighbour ring around unlocked stages, but drops researchable stages that aren't connected to anything the player has already unlocked (no "floating" roots). A researchable stage that is a neighbour of something unlocked still shows.
UNLOCKED_ONLYOnly stages the player has already unlocked.

A stage hidden by the current mode also hides its edges — there is no placeholder or "???" node. This is a display filter only: it improves readability and avoids spoilers, but it is not a security boundary, since stage data is already present on the client.

Two related toggles: respectHiddenDisplay (default true) applies each stage's Hidden Display settings inside the graph too, and showIndividualStages (default true) controls whether individual stages appear alongside global ones.

Layout and Appearance

[canvas] controls the graph surface itself: background style (GRID, SOLID, or TEXTURE with a configurable texture), grid size, initial/min/max zoom, whether the view auto-fits on open, and whether node/edge animations are enabled.

[edges] controls how dependency lines are drawn: separate colors and line styles (SOLID/DASHED) for met vs. open dependencies, line width, routing (STRAIGHT, ORTHOGONAL, or CURVED), arrowheads, and the style used for "OR" dependency groups (dashed by default — this is the sole visual signal that a group is an OR rather than an AND).

[panel] controls which sections appear in a stage's detail window: stage dependencies, items, XP, advancements, kills, stats, scoreboard, triggers, unlocks, and description — each independently toggleable.

Node Styling

[style.global.<state>] and [style.individual.<state>] (six blocks total, one per stage type × lock state — unlocked, reachable, locked) control the default look of every node: shape (RECT, ROUNDED, CIRCLE, DIAMOND, HEXAGON), size, border color/width, fill color/opacity, label mode (NONE, ID, DISPLAY_NAME), label color, and whether a checkmark is shown. Global stages default to rounded rectangles, individual stages to diamonds, so the two are visually distinct at a glance.

Per-Stage Overrides

Beyond the graph-wide defaults, individual stages can have their own style, optionally varying by lock state. This is stored per-modpack in settings/graph_stages.json and is normally edited from the graph screen itself (accessible to OPs) rather than by hand. Each overridden stage can set:

  • A description (literal text or a translation key) shown in its detail window.
  • A base style applied in every lock state.
  • Per-state style overrides (unlocked / reachable / locked) layered on top of the base style.

Overridable fields are the same set as the TOML style blocks (shape, size, border, fill, label, checkmark, etc.). Resolution order is: built-in default → graph.toml defaults → the stage's own base style → the stage's per-state override. This lets a modpack creator make a single milestone stage look distinct (a hexagon, a unique color) without changing the graph's overall theme.

Configuring In-Game

graph.toml can be edited entirely in-game via the Graph tab of the Config Editor, alongside the existing Client and Common tabs. Changes save immediately and sync to connected clients, same as the other config tabs.

Something wrong or missing here? Ask on Discord · Open an issue