Creators
Details
3.0.2
Compatibility
Changes
ProgressiveStages — Full Changelog (2.0 → 3.0.2)
Everything since the 2.0 rewrite, version by version. All of it is additive and config-driven; old TOML keeps working.
3.0.2. Editor access and inventory button controls
/pstages editornow opens correctly for permission level 3 operators in integrated single-player worlds as well as dedicated servers.- Authenticated loopback access remains private. Remote hosts, origins, ports, and incorrect session secrets are rejected.
- The editor now uses a simpler dark gray and gold stage-first layout with less visual clutter.
- The survival inventory progression button can be removed with
client.show_inventory_button = false. client.inventory_button_xandclient.inventory_button_ymove the button relative to the inventory.client.inventory_button_width,client.inventory_button_height, andclient.inventory_button_icon_sizecontrol its size and centered lock icon.- Commands and the optional keybind continue to open the progression map when the inventory button is hidden.
3.0.1. Schema 4 and authoring rehaul
- Three file stage packages with
stage.toml,rules.toml, andprogression.toml, while untouched one file stages remain compatible. - A private dedicated server editor opened by
/pstages editor. The operator client hosts a temporary authenticated loopback page, so the server exposes no web port. - Server authoritative registry, tag, recipe, advancement, loot resource, stage, KubeJS, and extension autocomplete with paging and revision safety.
- Deterministic per entry priority, local exclusions, global allows, condition driven temporary rules, and independent EMI and JEI presentation.
- One condition language for grant, revoke, temporary locks, modifiers, challenges, and simulation.
- Persistent rolling health, damage, death, hit, lifecycle, temporary rule, challenge, variable, state, and history data.
- Contextual equipment modifiers, affinity and proficiency profiles, variables, formulas, templates, multi state stages, atomic action pipelines, and generic challenge budgets.
- Revisioned compressed compiled client snapshots for connected and future clients.
- Expanded
/pstages, Java, and KubeJS APIs with explain, simulation, history, lifecycle, challenge, migration, catalog, editor metadata, and rollback surfaces. - The stage screen now includes the why panel, active challenges, equipment preview, and progress history while retaining advancement style drag and scroll behavior.
- A packaged Preact and TypeScript editor shell, seven compiled example packages, comprehensive schema 4 guide, migration flow, and release verification records.
🧱 2.0 / 2.0.1 — The rewrite
The foundation everything else builds on.
- Per-team stage storage (FTB Teams or solo) — stages are a team property, not per-player.
- Unified prefix lock system — one syntax everywhere:
id:/mod:/tag:(#) /name:patterns, plusminecraft = truefor the whole vanilla namespace. - Multi-stage gating — a single thing can require several stages at once (AND), enabling true dependency graphs.
- Lock surfaces: items, blocks, fluids, entities, enchants, crops, screens/GUIs, loot, trades, pets (taming/breeding/commanding/riding), mob spawns + dynamic replacements, recipes (by id or by output), dimensions,
[[regions]](3D boxes with flags),[[interactions]](item-on-block/entity). - Ore-spoof masquerade — locked ores render + drop as a decoy block until unlocked (chunk-packet rewrite, break-speed/harvest sync).
- Transitive & automated crafting gating — block crafting with locked ingredients; gate vanilla Crafters via a nearest-player check.
- Recipe-viewer integration — EMI/JEI hide locked items/recipes; per-stage
[unlocks]carve-outs;always_unlockedwhitelists. - Soft-dep compat — FTB Quests/Teams, Curios (per-slot gating), Lootr (per-player chests), Nature's Compass, Mekanism.
- Fully
&-color-configurable messages; reveal-locked-names-to-ops; creative-bypass warning.
🎯 2.3 — Per-stage triggers, GUI codex, fine-grained enforcement
- Per-stage
[[triggers]]— auto-grant a stage when conditions are met, declared right in the stage file (replaces the old global triggers.toml). Rules OR together; conditions combine bymode(all_of/any_of). Counters read vanilla stats, so they're retroactive and restart-proof. - Triggers respect dependencies — won't fire until prerequisites are owned (omit the dependency to let them fire freely).
- In-game GUI codex — view-only stage tree: icons, descriptions, "Requires ALL of", "Leads to" branches, % to unlock with a live condition breakdown, and an "Unlocks" item grid. Handles linear / branching / multi-dependency / parallel trees.
- Per-stage
[enforcement]overrides — flip any global enforcement toggle for the resources one stage gates. - Per-stage
[display]— mask locked item names (???), obscure icons (?), toggle tooltips/description per stage. /stage progress(+next/all) — per-trigger progress breakdown. EMI whitelist fix (whitelisted Create items now show).
🧬 2.4 — Power-ups, skill tree, juice
[attribute]— modify player attributes (max health, speed, scale, anything) while a stage is owned.[revoke]/ regression — lose a stageon_death, or hold it only whilexp_belowa threshold; optionalcascadeto dependents.- Temporary stages —
duration = "30m": real-time expiry that counts down even while offline. - Server-wide stages —
scope = "server": the first team to earn it unlocks it for everyone. - Skill-tree
[cost]— make a stage buyable from the tree withxp_levelsand/oritems; server-validated + consumed; optionalbypass_requirementsto pay-to-skip the grind. - Unlock juice (all optional) —
[unlock]toast / title / subtitle / sound / particles, 50/75/90% progress nudges, and a custom blue HUD progress bar above the XP bar (not the boss bar). [abilities]— gateelytragliding behind a stage.- 7 new triggers:
effect,breed,day_count,weather,enter_structure,tame,kill_with.
🔒 2.5 — More gating surfaces + deep KubeJS
[professions]— gate a villager's whole trade GUI by its profession.[advancements]— hide locked advancements from the advancements screen entirely (server-side); they reappear when the stage is gained.[structures]improvements — auto-sized bounding boxes,entry_paddingbuffer, and bounce-back to your last safe spot.- Deep KubeJS — a
ProgressiveStagesscript object:onGranted/onRevoked(fire on every engine grant),condition(id, predicate)for customscripttriggers, andhas/grant/revoke/list/percent. - Datapack-loaded stages — ship stage TOML inside a datapack (
data/<ns>/progressivestages/stages/*.toml); config files override on conflict. [stage]metadata in the GUI —hidden/color(#RRGGBB) /categorynow actually drive the tree.- Deeper
/stage validate— detects full multi-node dependency cycles, unreachable stages, and dead trigger/dependency targets. - More triggers:
world_time, per-species/#tagbreed,#tag-victimkill_with, andscript. Attribute modifiers re-applied on respawn.
🚀 3.0 — The big expansion
-
Jade and WTHIT overlays — looking at a locked block or mob shows "🔒 Requires: <stage>". Both pulled from the Modrinth Maven (not bundled jars). Entity locks are now synced to the client.
-
6 new triggers —
reach_y,fish,sleep,ride,biome_time, andstage_held_for(time-since-grant, for time-gated chains). -
[rewards]on grant — items / status effects / commands / teleport / xp the moment a stage unlocks (the companion to[cost]). Applied once to the player who earned it. -
Stage tags + bulk ops —
[stage] tags = [...]+/stage tag grant|revoke|list <players> <tag>. -
[cost]cooldown + refund — per-player purchase rate-limit;refund_percentreturns part of the cost on revoke (only for stages actually purchased). -
Ability expansion —
[abilities]now also gatessprint,swim,climb. -
Authoring tools —
/stage simulate(dry-run: what's next and exactly which conditions are short),/stage new(scaffold a stage file),/stage export(markdown progression guide). -
Encrypted-block visual —
[display].encrypt_blocksmasquerades a stage's locked blocks as a placeholder until owned (per-stage on/off). -
Comprehensive reference — the default
diamond_age.tomlnow has a worked example for every trigger type and every feature. -
Vanilla advancement-style progression map — framed nodes, dependency connectors, tiled/custom backgrounds, drag + wheel + keyboard panning, rich hover cards, search/filtering, pinned details, and purchases.
-
Per-stage map authoring —
[display]now acceptsx,y,frame,background,reveal, andsort_order, with automatic DAG layout when coordinates are omitted. -
Named custom counters — declarative
custom_countertriggers, command management, and KubeJS counter helpers. -
Commands and scripting expanded — public
/stage//stages//psmap aliases; actual-change script results; toggle, availability, dependency, tag, counter, evaluation, and GUI helpers. -
Engine repair pass — correct per-stage exemptions/carve-outs, multistage secondary gates, mixed server/team scope, lifecycle cleanup, exact biome timing, and dedicated-client block/fluid/mod synchronization.
-
Build health — optional APIs now resolve from publisher Maven repositories and unit tests run in the standard build.
🧭 3.0.1 — Exact structure sessions and contextual rules
- Generic provider API — companion mods register exact structure assignment providers through a one-way dependency. ProgressiveStages core imports no companion API.
- Exact-instance arbitration — static gates remain authoritative; provider denial wins; permits cannot bypass a missing normal stage; cached claimed bounds fail closed on provider errors.
- Committed sessions — debounced enters and exits, stable visit sequences, idempotent completion, immutable events, and typed incomplete/completed/death/teleport/dimension/disconnect/recovery outcomes.
- Team-safe leases — in-progress stages grant on the first lease, survive additional participants, revoke on the final release only when the lease introduced them, and preserve pre-owned stages.
- Contextual active locks —
[active_locks]uses the unified item selector grammar and opposite present-in-context polarity, affecting item use only inside a matching structure session. - Event-driven
leave_structuretrigger — exact structure or tag, optional provider and session-stage filters, typed outcomes, and repeatable visits without permanent one-shot storage. - Java and operator tooling — structure registration/completion/reconciliation APIs, detailed item-use decisions, four lifecycle events, three structure stage causes, and
/pstages structurediagnostics.
Old TOML files are forward-compatible across all of the above — every addition is opt-in.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:rY4mdP4Q:bIke0m0V"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:rY4mdP4Q:bIke0m0V"
}

