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.

123

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

ADS