Ascension Protocol
Configuration

Gates Configuration

plugins/AscensionGates/config.yml and gates.yml

config.yml — Spawning (spawning)

KeyDefaultDescription
enabledtrueMaster auto-spawn switch
broadcast-on-auto-spawntrueChat announce wild/zone spawns
check-interval-ticks20Timer tick rate
persist-manual-gatestrueSave /gates admin spawn gates

Wild spawns (spawning.wild)

KeyDefaultDescription
enabledtrueNear-player spawning
interval-seconds1800Try every 30 min
max-active5Max wild gates at once
player-radius500Within blocks of a player
min-player-distance48Min distance from player
tiersE:30 … MONARCH:1Weighted tier pool (omit a tier = 0% chance)

Weights ship with all ranks including S / SS / NATIONAL / MONARCH (rare). Omitting a key or setting weight 0 excludes that tier.

Restrictions (spawning.restrictions)

  • block-near-server-spawn + server-spawn-radius
  • block-near-world-spawn + world-spawn-radius
  • require-surface-and-sky — land surface only for wild spawns
  • apply-to-manual — apply restrictions to /gates admin spawn

Integrations

  • spawning.towny — block in towns
  • spawning.worldguard — block in regions
  • spawning.land-claims — block in player land claims
  • spawning.allowed-worlds / blocked-worlds

Player land claims (spawning.land-claims)

Keeps wild gates out of bases players have claimed. Without this a gate can paste its structure straight into someone's build, so it is on by default.

KeyDefaultEffect
enabledtrueBind to any supported claim plugin that is installed
block-in-claimstrueRefuse gate spawns inside a claim
buffer-blocks16Also keep the anchor this far clear of a claim edge (0 = anchor block only)
providers.<id>truePer-plugin toggle — see below

Supported providers ids: griefprevention, lands, griefdefender, residence, redprotect.

Every provider is a soft dependency bound by reflection, so leaving them all true is safe — a provider whose plugin is not installed does nothing. If a claim plugin is installed but its API cannot be bound, Gates logs a warning at startup rather than failing silently, because a hook that quietly does nothing means gates spawn inside player bases.

Admin spawn zones/points and /gates admin spawn bypass the claim check, the same way they bypass the Towny check. buffer-blocks matters because a gate pastes a structure around its anchor — an anchor just outside a claim can still drop blocks inside it.

Towny is handled separately by spawning.towny (towns, not claims).

PlotSquared needs no hook: plot worlds are kept gate-free by leaving them out of spawning.allowed-worlds.

WorldGuard region flag

spawning.worldguard registers an optional custom region flag (default name ascension-gate-spawn, default value allow). To forbid all gate spawns inside a region — wild, admin zone/point, and manual — a region admin runs:

/rg flag <region> ascension-gate-spawn deny
KeyDefaultEffect
worldguard.flag-enabledtrueHonour the deny flag when WorldGuard is installed
worldguard.register-flagtrueRegister the flag on load (needed once, before WorldGuard enables)
worldguard.flag-nameascension-gate-spawnFlag id used with /rg flag
worldguard.block-in-any-regionfalseBlock inside any region (aggressive)
worldguard.blocked-region-ids[]Block only these named regions

The ascension-gate-spawn deny flag overrides everything — it even blocks spawn zones and points, which otherwise bypass global restrictions. See Spawns.

Animation (animation)

KeyDescription
tick-intervalVisual update rate
particle-density0.0–1.0 particle multiplier
particle-tick-divisorSkip particle ticks

gates.yml

Large file — tier timings, bosses, loot tables, instance generation, mob density, mana crystals, dungeon break, modifiers.

Key sections:

  • tiers.<RANK> — charge/open/collapse seconds, entry fee
  • dungeon-familiesthemed dungeons (mob pools, bosses, block palettes per theme)
  • instances — dungeon layout, mobs, crystals, procedural generation
  • bosses — per-tier fallback boss stats (themed bosses use family boss-archetype)
  • loot — drop tables, custom items, armor sets / armor-models, weapon-effect dungeon weapons, treasure chests
  • dungeon-break — overworld spillover settings

Themed dungeon families (dungeon-families)

When a player enters a gate, one family matching the gate tier is chosen at random. The family drives:

FieldEffect
display-nameChat message on entry ([Gate] Theme: …)
tiersWhich gate ranks can roll this family
boss-archetypeWild boss in the arena (archetype id from Shadows)
mob-archetypesMob pool for tunnels/rooms
themeGeneration theme — room shape + props (goblin_camp, ant_nest, mine, crypt, nest, …)
materialsProcedural palette (walls, floor, accent, …)
schematicsOptional .schem names when instances.use-schematics: true

19 bundled families include Goblin Camp, Ant Tunnel/Nest/Colony/Kingdom, Stone Caverns, Ancient Mine, Beast Den, Drake Nest, Infernal Fortress, Necromancer's Crypt, Crystal Forest, Storm Citadel, Demon Fortress, Dragon Nest, Necropolis, Void Gate, Dragonkin Fortress, and Monarch gates.

Requires instances.mobs.spawn-wild-archetypes: true and AscensionShadows for ModelEngine wild mobs.

Full reference: Dungeon families — complete family table, loot weapons, force-theme command.

Procedural generation (instances.procedural)

style: v3 (default) is the themed generator: a long snaking main path (entry → combat rooms → guard anteroom → boss at the far end), plus branch wings, dead-end side rooms, and treasure vaults with boosted mana crystals / gemstone ores. Room shape and decorations follow the dungeon family's theme.

KeyDescription
main-path-rooms-min/maxRooms on the entry→boss path (traversal length)
branch-rooms-min/maxExtra combat rooms hanging off the main path
side-room-chance / treasure-room-chanceDead-end reward rooms
guard-roomElite anteroom before the boss corridor (default true)
room-size-min/max, corridor-length-min/max, boss-arena-size/height, build-radiusFootprint scaling
tier-overrides.<RANK>Per-rank overrides — every value scales up steeply from E to MONARCH

Higher ranks are much bigger: an E gate runs ~10 rooms in a 190-block area; a MONARCH gate runs ~35+ rooms in a 350-block area with a boss ~17 rooms deep. instances.instance-spacing (default 400) must exceed the largest footprint. clear-band-below/above limit the Y range wiped when an instance closes.

Instance mobs (instances.mobs)

KeyDefaultDescription
spawn-wild-archetypestrueSpawn Shadow wild mobs (family pool) instead of vanilla
vanilla-fallbackfalseUse vanilla entities when Shadows is missing
per-room-count-min/max1–3Mobs per combat room
mob-rank-window1Rank variance for spawned mobs

Room-type spawning (instances.mobs.room-type)

v3 themed dungeons already place more spawn points in GUARD rooms (8) than COMBAT (4) / SIDE (3) / TREASURE (1). These per-type settings scale the mob count on top of that per point, and can restrict a room's mob ranks.

Room typecount-multipliereliteFeel
GUARD1.25trueDense elite gauntlet guarding the boss corridor — ranks locked to the gate tier
COMBAT1.0Standard fights
SIDE0.75Lighter branch rooms
TREASURE0.5Light guard on reward rooms

elite: true passes only the gate tier as the allowed mob rank (no lower-rank fill). v1 room dungeons tag rooms by type too; v2 caves treat every point as COMBAT.

Locked boss door (instances.boss-door)

When a v3 layout has a GUARD anteroom, the corridor into the boss arena is sealed with a block wall until every guard mob is cleared — a mid-run gate on the boss fight. Players are never soft-locked: the door also opens immediately if no guard mobs spawn (Shadows off / wild spawning disabled) and always opens after the failsafe timer. The seal is protected like every other dungeon block.

KeyDefaultDescription
enabledtrueBuild the seal when a GUARD room exists (v3 only)
fallback-open-seconds300Timed failsafe that opens the door if still sealed
opened-messageseal shattersBroadcast to hunters when the door opens
sealed-hintclear the guard roomOne-time hint shown near the closed door

Boss guidance (instances.boss-guidance)

Helps hunters find the boss chamber: a floating Boss Chamber label above the seal (or boss spawn), ambient portal particles, and a periodic action-bar bearing (ahead / left / …). Disable any piece with the toggles below. The action-bar bearing yields to the Hunter Compass when that item is held.

KeyDefaultDescription
enabledtrueMaster toggle
particlestruePortal/witch particles at the seal
action-bar-bearingtruePeriodic direction + distance
label§5§l◆ BOSS CHAMBER ◆TextDisplay above the seal

Dungeon timers

KeyDefaultDescription
tiers.<RANK>.open-seconds2700 (45m)Overworld gate entry window
instances.inside-clear-deadline-seconds2700Default in-dungeon boss-clear (Dungeon Break) timer
instances.inside-clear-deadline-seconds-by-tierE 2250 … MONARCH 6300Per-tier override of the clear timer

Hunter Compass (loot.items.hunter_compass)

Sold in /ascshop (economy.shops.hunter-compass, $2,500). Hold it in a gate — the vanilla compass needle tracks the nearest wild mob or boss in that instance. Outside dungeons it does nothing.

Dungeon modifiers (dungeon-modifiers)

Each instance rolls one weighted modifier when it generates. loot-multiplier grants bonus loot rolls (mobs and boss); the mob/boss multipliers scale combat.

KeyEffect
loot-multiplierExtra full loot rolls (2.0 = double drops)
mob-health-multiplier / mob-damage-multiplierWild mob HP / damage scale
mob-count-multiplierWild mob spawn count scale
boss-health-multiplier / boss-damage-multiplierBoss HP / damage scale

Bundled: Standard, Double Loot, Cursed (richer loot, deadlier foes), Swarm (60% more mobs), Elite (fewer, far stronger mobs — rich loot). The active modifier shows in the entry chat line and dungeon HUD.

Boss party scaling (bosses.scaling)

Boss stats scale with the group entering: each party member beyond the first adds health-per-extra-player (default +35% HP) and damage-per-extra-player (default +10% damage). Solo hunters keep the base fight.

Boss phases (bosses.phases)

One add-wave and one enrage fire once as the boss's HP crosses a threshold — for both themed and vanilla-fallback bosses.

KeyDefaultDescription
minions.at-health0.5HP fraction that summons minions
minions.count3Wild mobs summoned at the boss (scaled like room mobs)
enrage.at-health0.25HP fraction that enrages the boss
enrage.damage-multiplier1.3Attack-damage boost on enrage
enrage.speed-amplifier0Infinite Speed level added on enrage (0 = Speed I)

Each phase triggers only once (a heal back above the threshold won't re-fire it). Toggle globally with bosses.phases.enabled or per phase with minions.enabled / enrage.enabled.

Combat & boss VFX (vfx)

Data-driven particle effects for dungeon mobs and bosses, played through the shared VFX engine. The master on/off (vfx.enabled) and global density (vfx.density) live in AscensionCore config.yml; the keys below (in gates.yml) control the gate-specific combat effects and hold the effect catalog itself.

KeyDefaultDescription
vfx.mob-combat.enabledtrueThemed impact when a dungeon mob hits a player + a dissolve burst when it dies (by family element)
vfx.boss-telegraphs.enabledtrue1-second wind-up telegraph before a boss add-wave / enrage, its payoff burst, and the ambient enrage aura
vfx.boss-telegraphs.windup-ticks20Length of the wind-up telegraph in ticks (20 = 1s)
vfx.tier-scale.<RANK>0.61.5Per-tier particle-count multiplier so higher-rank gates feel weightier

vfx.weapon.* / vfx.tool.* / vfx.mob.* / vfx.boss.* are the effect catalog — one entry per effect with particle layers (particle, count, offset, shape, dust-color, …) and an optional sound. Editing counts/colors there re-themes an effect without touching code. Element colors come from the shared palette (frost, void, storm, demon, crystal, undead, soul, dragon, earth, rift, arcane, nature), so the same element looks identical whether a shadow, a weapon, or a mob produced it.

Speed-clear bonus (rewards.speed-clear)

The boss-clear deadline normally only punishes slow runs; this rewards fast ones with bonus clear XP. Thresholds are fractions of that deadline (instances.*clear-deadline); when the deadline system is off there is no bonus.

KeyDefaultDescription
fast-fraction / fast-bonus0.35 / 0.5Clear within 35% of the deadline → +50% clear XP
quick-fraction / quick-bonus0.6 / 0.25Clear within 60% of the deadline → +25% clear XP
fast-label / quick-label⚡ Blazing / SwiftSuffix appended to the clear message when a bonus lands

Negative config values are clamped to zero — a bad value never penalises the clear.

Armor sets & 3D worn pieces (loot.armor-sets / loot.armor-models)

Full-set potion bonuses live under loot.armor-sets. Dragon Monarch helmet + chestplate use real cube item models shown via ItemDisplays while worn (loot.armor-modelspieces, scale: 1.0). The helmet display is hidden from the wearer (FPV-safe). Rebuild with python tools/build_dragon_monarch_3d_armor.py. See Armor Sets.

Dungeon loot weapons (loot.items)

Items with weapon-effect apply server-side on-hit effects (ice slow, bleed, cleave, etc.). AoE splash and bleed ticks are secondary damage and do not re-trigger the weapon effect. Custom models use custom-model-data in the merged Ascension resource pack.

Charged use-ability items. An item with a uses value becomes a right-click ability item with a durability bar showing remaining charges; it breaks when the last charge is spent. Configure with:

KeyNotes
usesNumber of charges (durability bar segments). 0 = not a charged item
use-effectAbility id. Supported: invisibility (alias vanish)
use-duration-secondsEffect duration per use (default 30)

The Shadow Ring (shadow_ring) uses this: right-click to trigger Shadow Veil — the wielder turns invisible to both players and mobs for 30 seconds (mobs cannot target them for the duration), with 3 uses before the ring is consumed.

Dungeon loot chests (loot.chests)

Rare treasure chests (Dungeon Caches) that spawn inside every dungeon. Each chest rolls a handful of common loot (vanilla materials + custom materials) and has a small, tier-scaled chance to also contain a single legendary weapon or tool. Chests are placed on valid floor tiles (preferring TREASURE rooms) and are wiped automatically when the instance closes — they cannot be broken by players. Every non-exam dungeon always gets at least one filled cache (min-per-dungeon is clamped to ≥1; empty inventories are refilled with staple loot as a safety net).

KeyDefaultNotes
enabledtrueMaster toggle for chest spawning
min-per-dungeon / max-per-dungeon1 / 2Chests spawned per dungeon (inclusive range; min is never below 1)
prefer-treasure-roomstruePlace chests in TREASURE rooms first, fall back to other rooms
min-spacing6Minimum blocks between two chests in the same dungeon
chest-name§6§lDungeon CacheOptional custom name shown on the chest
tiers.<RANK>.common-rolls-min/maxvariesHow many common items each chest rolls
tiers.<RANK>.common[]variesWeighted common pool — material: <BUKKIT_MATERIAL> or item: <loot id> with weight, amount-min/max
tiers.<RANK>.legendary-chance0.00.15Per-chest chance (0–1) to also roll one legendary
tiers.<RANK>.legendary[]variesWeighted legendary pool (item + weight); stronger items use lower weights

Legendaries are gated by rank: low-rank gates (E–B) roll no special gear, gear can appear at A but is extremely rare (~1.5% per chest), and the strongest blades/pickaxes only appear in S/SS and above. Because there are only 1–2 chests per run and the roll is a low percentage, legendary finds stay rare. Everything is data-driven — set enabled: false to turn chests off entirely, adjust min/max-per-dungeon, edit the common[] pool, or tune legendary-chance and the per-tier legendary[] pool to add/remove items and change drop rarity. Changes reload with /asc reload.

Mining & sell prices (instances.* / loot.items)

KeyDefaultNotes
gemstone-ores.spawn-per-chamber-min/max0 / 1Default chamber ore count (combat/treasure rooms)
gemstone-ores.tier-overrides.<RANK>Per-rank chamber ore overrides (e.g. D: 23)
loot.items.mana_crystal_fragment.sell-price25Common crystal sell
loot.items.green_gemstone.sell-price10Common gem sell

monarch_artifact (Monarch's Artifact) drops only from MONARCH-rank bosses/mobs. Right-click Monarch's Dominion (90s cooldown): pull foes in, slam them outward, then Strength/Speed/Resistance/Absorption. Monarch-Rank only to activate; anyone may sell it ($50,000). S guaranteed boss loot: mana_crystal_core + dragon_scale.

Red gates (red-gates)

A high-risk / high-reward variant rolled per gate at spawn. A red gate seals the entry — the entry-room exit portal is never placed, so the only way out is to defeat the boss (or die, which respawns you outside). Rewards are boosted and a broadcast announces the spawn.

KeyDefaultDescription
enabledtrueMaster toggle for the red-gate roll
broadcasttrueServer-wide announcement when a red gate opens
reward-multiplier1.5Clear-XP multiplier for red gates; the boss table also rolls one extra guaranteed time
max-duration-minutes45Hard safety timeout — the sealed instance collapses and evicts hunters safely (dungeon break)
chance-percent.<RANK>E/D 0, scaling to MONARCH 20Per-tier spawn chance (percent)

Crash safety: hunters who log in inside a dungeon world that no longer has a live instance are returned to spawn automatically.

World events (world-events)

Config-driven scheduled boss gates. When an event fires, a boss gate of the configured tier spawns either near players (wild) or in a spawn zone, and the first guild to clear earns a broadcast and bonus guild XP.

world-events:
  enabled: false
  events:
    s-rank-surge:
      schedule: "SAT 20:00"          # "DAY HH:mm" (server timezone) or "every 6h" / "every 90m"
      tier: S
      announce-minutes-before: [30, 5]
      reward-multiplier: 2.0         # stacks on the clear reward path
      guild-xp-bonus: 500            # first guild to clear
      location: wild                 # or zone:<zone-id>
KeyDescription
schedule"SAT 20:00" (weekly clock) or "every 6h" / "every 90m" (fixed interval)
tierGate rank spawned when the event fires
announce-minutes-beforeBroadcast reminders at each threshold
reward-multiplierExtra clear-reward multiplier for the event gate
guild-xp-bonusGuild XP awarded to the first guild that clears
locationwild (near players, same rules as spawning.wild) or zone:<zone-id>

Next-fire times persist to world-event-state.yml, so a restart between an announcement and the spawn never double-spawns. Fires missed while the server was offline are rescheduled to the next occurrence rather than firing late.

On this page