ProgressiveStages 3.0.2
Curse Maven Snippet
What's new
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.
This mod has no additional files

