Gates Configuration
plugins/AscensionGates/config.yml and gates.yml
config.yml — Spawning (spawning)
| Key | Default | Description |
|---|---|---|
enabled | true | Master auto-spawn switch |
broadcast-on-auto-spawn | true | Chat announce wild/zone spawns |
check-interval-ticks | 20 | Timer tick rate |
persist-manual-gates | true | Save /gates admin spawn gates |
Wild spawns (spawning.wild)
| Key | Default | Description |
|---|---|---|
enabled | true | Near-player spawning |
interval-seconds | 1800 | Try every 30 min |
max-active | 5 | Max wild gates at once |
player-radius | 500 | Within blocks of a player |
min-player-distance | 48 | Min distance from player |
tiers | E:30 … MONARCH:1 | Weighted 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-radiusblock-near-world-spawn+world-spawn-radiusrequire-surface-and-sky— land surface only for wild spawnsapply-to-manual— apply restrictions to/gates admin spawn
Integrations
spawning.towny— block in townsspawning.worldguard— block in regionsspawning.land-claims— block in player land claimsspawning.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.
| Key | Default | Effect |
|---|---|---|
enabled | true | Bind to any supported claim plugin that is installed |
block-in-claims | true | Refuse gate spawns inside a claim |
buffer-blocks | 16 | Also keep the anchor this far clear of a claim edge (0 = anchor block only) |
providers.<id> | true | Per-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| Key | Default | Effect |
|---|---|---|
worldguard.flag-enabled | true | Honour the deny flag when WorldGuard is installed |
worldguard.register-flag | true | Register the flag on load (needed once, before WorldGuard enables) |
worldguard.flag-name | ascension-gate-spawn | Flag id used with /rg flag |
worldguard.block-in-any-region | false | Block 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)
| Key | Description |
|---|---|
tick-interval | Visual update rate |
particle-density | 0.0–1.0 particle multiplier |
particle-tick-divisor | Skip 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 feedungeon-families— themed dungeons (mob pools, bosses, block palettes per theme)instances— dungeon layout, mobs, crystals, procedural generationbosses— per-tier fallback boss stats (themed bosses use familyboss-archetype)loot— drop tables, custom items, armor sets / armor-models,weapon-effectdungeon weapons, treasurechestsdungeon-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:
| Field | Effect |
|---|---|
display-name | Chat message on entry ([Gate] Theme: …) |
tiers | Which gate ranks can roll this family |
boss-archetype | Wild boss in the arena (archetype id from Shadows) |
mob-archetypes | Mob pool for tunnels/rooms |
theme | Generation theme — room shape + props (goblin_camp, ant_nest, mine, crypt, nest, …) |
materials | Procedural palette (walls, floor, accent, …) |
schematics | Optional .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.
| Key | Description |
|---|---|
main-path-rooms-min/max | Rooms on the entry→boss path (traversal length) |
branch-rooms-min/max | Extra combat rooms hanging off the main path |
side-room-chance / treasure-room-chance | Dead-end reward rooms |
guard-room | Elite anteroom before the boss corridor (default true) |
room-size-min/max, corridor-length-min/max, boss-arena-size/height, build-radius | Footprint 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)
| Key | Default | Description |
|---|---|---|
spawn-wild-archetypes | true | Spawn Shadow wild mobs (family pool) instead of vanilla |
vanilla-fallback | false | Use vanilla entities when Shadows is missing |
per-room-count-min/max | 1–3 | Mobs per combat room |
mob-rank-window | 1 | Rank 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 type | count-multiplier | elite | Feel |
|---|---|---|---|
GUARD | 1.25 | true | Dense elite gauntlet guarding the boss corridor — ranks locked to the gate tier |
COMBAT | 1.0 | — | Standard fights |
SIDE | 0.75 | — | Lighter branch rooms |
TREASURE | 0.5 | — | Light 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.
| Key | Default | Description |
|---|---|---|
enabled | true | Build the seal when a GUARD room exists (v3 only) |
fallback-open-seconds | 300 | Timed failsafe that opens the door if still sealed |
opened-message | seal shatters | Broadcast to hunters when the door opens |
sealed-hint | clear the guard room | One-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.
| Key | Default | Description |
|---|---|---|
enabled | true | Master toggle |
particles | true | Portal/witch particles at the seal |
action-bar-bearing | true | Periodic direction + distance |
label | §5§l◆ BOSS CHAMBER ◆ | TextDisplay above the seal |
Dungeon timers
| Key | Default | Description |
|---|---|---|
tiers.<RANK>.open-seconds | 2700 (45m) | Overworld gate entry window |
instances.inside-clear-deadline-seconds | 2700 | Default in-dungeon boss-clear (Dungeon Break) timer |
instances.inside-clear-deadline-seconds-by-tier | E 2250 … MONARCH 6300 | Per-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.
| Key | Effect |
|---|---|
loot-multiplier | Extra full loot rolls (2.0 = double drops) |
mob-health-multiplier / mob-damage-multiplier | Wild mob HP / damage scale |
mob-count-multiplier | Wild mob spawn count scale |
boss-health-multiplier / boss-damage-multiplier | Boss 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.
| Key | Default | Description |
|---|---|---|
minions.at-health | 0.5 | HP fraction that summons minions |
minions.count | 3 | Wild mobs summoned at the boss (scaled like room mobs) |
enrage.at-health | 0.25 | HP fraction that enrages the boss |
enrage.damage-multiplier | 1.3 | Attack-damage boost on enrage |
enrage.speed-amplifier | 0 | Infinite 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.
| Key | Default | Description |
|---|---|---|
vfx.mob-combat.enabled | true | Themed impact when a dungeon mob hits a player + a dissolve burst when it dies (by family element) |
vfx.boss-telegraphs.enabled | true | 1-second wind-up telegraph before a boss add-wave / enrage, its payoff burst, and the ambient enrage aura |
vfx.boss-telegraphs.windup-ticks | 20 | Length of the wind-up telegraph in ticks (20 = 1s) |
vfx.tier-scale.<RANK> | 0.6→1.5 | Per-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.
| Key | Default | Description |
|---|---|---|
fast-fraction / fast-bonus | 0.35 / 0.5 | Clear within 35% of the deadline → +50% clear XP |
quick-fraction / quick-bonus | 0.6 / 0.25 | Clear within 60% of the deadline → +25% clear XP |
fast-label / quick-label | ⚡ Blazing / Swift | Suffix 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-models → pieces,
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:
| Key | Notes |
|---|---|
uses | Number of charges (durability bar segments). 0 = not a charged item |
use-effect | Ability id. Supported: invisibility (alias vanish) |
use-duration-seconds | Effect 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).
| Key | Default | Notes |
|---|---|---|
enabled | true | Master toggle for chest spawning |
min-per-dungeon / max-per-dungeon | 1 / 2 | Chests spawned per dungeon (inclusive range; min is never below 1) |
prefer-treasure-rooms | true | Place chests in TREASURE rooms first, fall back to other rooms |
min-spacing | 6 | Minimum blocks between two chests in the same dungeon |
chest-name | §6§lDungeon Cache | Optional custom name shown on the chest |
tiers.<RANK>.common-rolls-min/max | varies | How many common items each chest rolls |
tiers.<RANK>.common[] | varies | Weighted common pool — material: <BUKKIT_MATERIAL> or item: <loot id> with weight, amount-min/max |
tiers.<RANK>.legendary-chance | 0.0–0.15 | Per-chest chance (0–1) to also roll one legendary |
tiers.<RANK>.legendary[] | varies | Weighted 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)
| Key | Default | Notes |
|---|---|---|
gemstone-ores.spawn-per-chamber-min/max | 0 / 1 | Default chamber ore count (combat/treasure rooms) |
gemstone-ores.tier-overrides.<RANK> | — | Per-rank chamber ore overrides (e.g. D: 2–3) |
loot.items.mana_crystal_fragment.sell-price | 25 | Common crystal sell |
loot.items.green_gemstone.sell-price | 10 | Common 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.
| Key | Default | Description |
|---|---|---|
enabled | true | Master toggle for the red-gate roll |
broadcast | true | Server-wide announcement when a red gate opens |
reward-multiplier | 1.5 | Clear-XP multiplier for red gates; the boss table also rolls one extra guaranteed time |
max-duration-minutes | 45 | Hard safety timeout — the sealed instance collapses and evicts hunters safely (dungeon break) |
chance-percent.<RANK> | E/D 0, scaling to MONARCH 20 | Per-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>| Key | Description |
|---|---|
schedule | "SAT 20:00" (weekly clock) or "every 6h" / "every 90m" (fixed interval) |
tier | Gate rank spawned when the event fires |
announce-minutes-before | Broadcast reminders at each threshold |
reward-multiplier | Extra clear-reward multiplier for the event gate |
guild-xp-bonus | Guild XP awarded to the first guild that clears |
location | wild (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.