Heartbound
A Paper plugin for Minecraft 1.21.x that implements a shared health pool across all players with automatic world reset on death. Includes a full speedrun timer and scoreboard system.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
Heartbound
Heartbound
A Paper plugin for Minecraft 1.21.x that implements a shared health pool across all players with automatic world reset on death. Includes a full speedrun timer and scoreboard system.
Features
- Configurable: All players share a single health pool. When any player takes damage, it affects the global health. - Configurable: Food and saturation are synced across all players. Hunger depletion and eating benefits apply to everyone equally. - Configurable: Healing is applied to the shared pool and divided by player count to prevent multiplication exploits. - Configurable: When the shared health reaches 0, the world automatically resets after a configurable delay. - Configurable: Live timer tracks the duration of each attempt. - Configurable: Main goal is defeating the Ender Dragon — timer stops when the dragon is killed. - Configurable: Automatically saves your best dragon kill time. - Configurable: Keeps track of your last 3 attempts with times and outcomes. - Configurable: Always-visible sidebar showing: - Current timer (updates live every second) - Attempt number - Best time (if dragon was killed) - Last 3 attempt times with success/fail indicators - Configurable: Players are safely teleported to a void world during reset. - Configurable: Configurable radius of chunks to preload around spawn for smoother starts. - Configurable: All settings can be customized via config file.
Commands
All commands require OP. Use `/heartbound` or `/hb`:
| Command | Description | |---------|-------------| | `/hb trigger` | Manually trigger a world reset | | `/hb attempts` | Show current attempt count | | `/hb reset-counter` | Reset attempt counter to 0 (clears history and best time) | | `/hb set-counter <value>` | Set counter to specific value | | `/hb health` | Show current global health | | `/hb sethealth <amount>` | Set global health | | `/hb status` | Show full status (timer, health, attempts, best time, reset status) | | `/hb timer` | Show current timer status | | `/hb timer-start` | Manually start/restart the timer | | `/hb timer-stop` | Manually stop the timer | | `/hb best` | Show best dragon kill time | | `/hb history` | Show last 3 attempt times | | `/hb reload` | Reload configuration |
Scoreboard Display
The sidebar scoreboard displays:
``` Speedrun ⏱ 12:34 <- Current timer (updates live)
Attempt #5 <- Current attempt number Best: 45:23.456 <- Best dragon kill time
Last Attempts: <- History of last 3 attempts ✓ #4 45:23 <- Green checkmark = dragon killed ✗ #3 23:45 <- Red X = failed attempt ✗ #2 12:34 ```
Configuration
Config file is located at `plugins/Heartbound/config.yml`:
```yaml
Reset delay in milliseconds after death
reset-delay-ms: 3000
Seed mode: "random" or "fixed"
seed-mode: random
Fixed seed to use when seed-mode is "fixed"
fixed-seed: 12345
Enable limbo world during reset
limbo-enabled: true
Maximum shared health
max-health: 20.0
Which dimensions to reset
reset-overworld: true reset-nether: true reset-end: true
Spawn chunk preloading (overworld only)
Radius in chunks around spawn to preload and keep loaded
A radius of 3 = 7x7 = 49 chunks, radius of 5 = 11x11 = 121 chunks
spawn-preload-radius: 3
Messages (supports & color codes)
messages: prefix: "&c[Heartbound]&r " death: "&4All players have fallen! Resetting world in {delay} seconds..." reset-start: "&6World reset in progress... Please wait." reset-complete: "&aWorld reset complete! Attempt #{attempt} begins!" limbo: "&7You are in limbo while the world resets..."
Silent mode - disable all messages
silent-mode: false
Show speedrun scoreboard on sidebar
show-attempts-sidebar: true ```
Installation
1. Install Paper 1.21.x server 2. Place the plugin JAR in the server's `plugins/` folder 3. Start the server 4. (Optional) Edit `plugins/Heartbound/config.yml` and restart
How It Works
1. Reset Sequence: Timer begins when the server starts or after each reset. 2. Reset Sequence: The plugin creates separate `game_world`, `game_nether`, and `game_end` worlds for gameplay. 3. Reset Sequence: All player damage is routed through a shared health pool. 4. Reset Sequence: Food level, saturation, and exhaustion are synced across all players every tick. 5. Reset Sequence: Healing is divided by player count so multiple players regenerating health doesn't multiply the effect. 6. Reset Sequence: Individual player deaths are prevented; only global death triggers reset. 7. Reset Sequence: When the Ender Dragon is killed in `game_end`, the timer stops with success. 8. Reset Sequence: - Timer is stopped and attempt is recorded - Players teleported to limbo world (set to spectator mode) - Game worlds are unloaded and deleted - New worlds are created with a new seed - Spawn chunks are preloaded - Players returned to new spawn (set to survival mode) - Health and hunger reset to full - Attempt counter incremented - Timer starts for new attempt
Data Storage
Attempt data is saved to `plugins/Heartbound/attempts.yml` and includes: - Total attempt count - Last 3 attempt records (time, success/fail, timestamp) - Best dragon kill time