Paper plugin that makes the Ender Dragon progressively harder and more rewarding with each defeat.
Every Ender Dragon kill spawns a stronger dragon next time, with loot and rewards that scale up alongside it.
EnderDragonProgressive tracks a dragon level that increases each time the Ender Dragon is killed. Higher levels mean more health, more damage, more XP, extra abilities during the fight, and better loot on death, including Dragon Hearts that give players permanent extra hearts. The level and per-player health bonuses are stored in config.yml and persist across restarts.
- Dragon health scales up per level (roughly +7.5% per level for levels 1-20, +1% per level after that), up to the Minecraft attribute maximum
- Dragon damage scales up per level (roughly +2% per level for levels 1-20, +0.5% per level after that)
- XP awarded on kill scales up with a configurable factor
- Extra fight abilities: endermite swarms, a roar that weakens and slows nearby players, and area damage from dragon breath
- Loot scales with level: guaranteed elytra, more totems of undying and spawners at higher levels, diamonds/emeralds/max-enchant books on early levels (1-20), random high-tier loot rolls (netherite blocks, beacons, nether stars, sponges) past level 20
- Dragon Hearts drop periodically and can be consumed for 2 permanent hearts, up to a configurable cap
- Admin command to reset, force a level, spawn, or clear dragons
flowchart TD
A[Ender Dragon Spawned] --> B[Read Current Dragon Level from Config]
B --> C[Scale Attributes: Health, Damage, Abilities]
C --> D[Boss Battle: Endermite Swarms + Roar Debuff + Area Breath]
D --> E[Dragon Defeated]
E --> F[Calculate Progressive Loot Drop]
F --> G[Roll Dragon Heart: +2 Permanent Player Hearts]
F --> H[Tier Loot: Elytra, Netherite, Totems, Beacons]
E --> I[Increment Next Dragon Level & Save State]
| Command | Description | Permission |
|---|---|---|
/dragon reset |
Resets the next dragon's level back to 1 | enderdragon.admin |
/dragon setlevel <level> |
Sets the level of the next dragon to spawn | enderdragon.admin |
/dragon kill |
Removes all Ender Dragons currently in the End | enderdragon.admin |
/dragon spawn |
Spawns a new dragon in the End | enderdragon.admin |
| Permission | Default | Description |
|---|---|---|
enderdragon.admin |
op | Access to all /dragon subcommands |
Key options in config.yml:
next-dragon-level- the level of the dragon that will spawn next- Dragon levels are limited to 1000 to keep scaling and loot generation bounded
respawn-delay- seconds before a new dragon can respawn (default 600)health-scaling-low/health-scaling-high- health multiplier per level, for levels 1-20 and 21+damage-scaling-low/damage-scaling-high- damage multiplier per level, for levels 1-20 and 21+xp-scaling-factor- extra XP awarded per level, as a fraction of base XPmax-player-health-cap- maximum bonus HP a player can gain from Dragon Hearts (default 100.0, meaning 50 hearts)player-health-bonuses- per-player stored HP bonus, keyed by UUID, managed automatically
- A Spigot or Paper server on Minecraft 1.21 (get Paper at https://papermc.io/downloads; vanilla Minecraft and Realms don't work)
- Java 21 (get it from https://adoptium.net; check your version with
java -version) - Maven (for building from source; check with
mvn -version)
Download the jar:
- Go to the v1.2 release and download
EnderDragonProgressive-1.2.jar. - Drop it in your server's
plugins/folder and skip to "Start the server" below.
Build from source:
- Clone the repo:
(No git? Click the green "Code" button on GitHub, download the ZIP, unzip it, and open a terminal in that folder.)
git clone https://github.com/KitsuneTech1/EnderDragonProgressive.git cd EnderDragonProgressive - Build with Maven:
The jar lands at
mvn clean packagetarget/EnderDragonProgressive-1.2.jar. - Drop it in your server's
plugins/folder.
- Restart the server. A full restart is required (not
/reload);config.ymlis created on first load. - Verify it worked: check the console for errors, then run
/dragon resetin-game or console. If the command works (responds instead of saying "Unknown command"), the plugin loaded successfully.
UnsupportedClassVersionError: Your server is running Java 17 or older. This plugin needs Java 21. Check withjava -versionand update if needed.- Plugin fails to load or API version warning: Your server isn't on Minecraft 1.21. Update to a 1.21 Paper or Spigot build.
/dragoncommands do nothing or dragon never scales: The plugin tracks level inconfig.yml. Make sure the server has fully restarted (not just reloaded) since install, and verify you're fighting the dragon in The End (not a copy from another plugin).
MIT. Copyright (c) 2026 Kitsune Technologies LLC. Do what you like with it, commercially or otherwise, just keep the copyright notice. Full text in LICENSE.
Part of Buildtober 2026: 31 open source projects in 31 days. Built by Kitsune Technologies. More at github.com/KitsuneTech1.