⚔ ProgressionWaveArena
ProgressionWaveArena drops each player into their own isolated arena instance and throws increasingly difficult mob waves at them. Every run is unique: the arena is chosen randomly from your schematic pool, mobs scale in count and spawn speed as waves climb, and every 10th wave grants a 30-second anvil break to gear up before the pressure mounts again. Runs are fully self-contained — players enter via a pressure plate, fight solo, and are returned to the main world on death or when they quit. All progress is saved automatically.
🔥 Why You'll Love It
- No downtime filler. Players are in combat almost immediately. Short configurable breaks keep the rhythm tight.
- Genuinely endless. Waves scale indefinitely — mob counts and spawn intervals tighten with every wave, so there's always a new personal best to chase.
- Arena variety out of the box. Ship as many schematic arenas as you want (dungeon, colosseum, nether, forest, void, and more). The plugin rotates them randomly with an anti-repeat guard.
- Gear progression mid-run. Loot chests (Rare → Epic → Legendary tiers) and food supply drops spawn between waves at fixed markers inside the arena. Players manage their loadout, not just their health bar.
- Seasonal identity. Monthly titles (❄ Frostlord, 🔥 SummerWarlord, …) update automatically — leaderboard entries always feel current.
✅ Features
- Instanced arenas — each player gets their own copy of the arena in a dedicated void world; no interference between concurrent runs
- Random arena selection from a configurable schematic pool (WorldEdit .schem format), with priority weighting and anti-repeat logic
- Endless wave scaling — mob count and spawn interval both scale per wave via configurable base and minimum values
- Boss waves at defined milestones with server-wide broadcast Anvil break every 10 waves — a configurable 30-second pause where a temporary anvil spawns so players can enchant mid-run
- Tiered loot chests (Rare / Epic / Legendary) placed on arena markers; random enchanted gear drawn from weighted loot tables defined in loot.yml
- Food supply drops between waves at dedicated arena markers
- Coin rewards scaling per milestone wave via economy integration (Vault-compatible through ProgressionAPI)
- Persistent leaderboard hologram (top 10, configurable update interval) via ProgressionHolographicDisplays
- Seasonal monthly titles — automatically cycle through Winter / Spring / Summer / Autumn labels or set a fixed title
- Personal stats — /wavearena stats shows your personal best wave
- Admin tools — /wavearena setwave
to start a run at any wave for testing - AFK timeout (configurable, default 180 s) to auto-eject idle players and free up instances
- Fully configurable via config.yml and loot.yml — no hardcoded values
🛠 Setup
- Drop ProgressionWaveArena.jar into your plugins/ folder.
- Start the server once to generate the default config.
- Create your arena schematics in WorldEdit (.schem files) and place them in the plugin folder.
- Register each schematic under arenas.list in config.yml with a name, filename, and priority.
- Inside each schematic, place marker blocks at the correct positions:
- WAXED_OXIDIZED_COPPER_GRATE → player spawn point
- WAXED_OXIDIZED_CHISELED_COPPER → mob spawn points
- MAGENTA_WOOL → loot chest markers
- BLACK_WOOL → anvil markers
- BLUE_WOOL → supply drop points
- Place a pressure plate in your lobby world — right-click it to register it as the arena entry plate via /wavearena admin.
- Adjust break-between-waves, anvil-break-duration, max-concurrent-mobs, and reward values to taste.
- Reload or restart — players can now step on the plate and fight.
🔌 Compatibility
Requirement Details
Server Paper 1.21.x (or forks)
Java 21+
WorldEdit Required — used for schematic loading
ProgressionAPI Soft dependency — economy and shared player data
ProgressionHolographicDisplays Soft dependency — leaderboard holograms
ProgressionRanks Soft dependency — monthly title integration
