A hardcore Lifesteal SMP plugin for Paper 1.21+ — the most-played survival genre of 2025. Kill a player, steal a heart. Hit zero hearts, you're eliminated. Hearts are a tradable item economy, and admins can revive the fallen.
Drop the .jar into your server's plugins/ folder and restart. Requires Paper 1.21+ (Java 21).
- Heart transfer on kill — the killer gains a heart (up to a cap), the victim loses one
- Elimination at zero hearts —
ban(blocked from rejoining) orspectatormode, your choice - Heart items — withdraw a heart into a tradable item (
/withdraw), right-click to consume one; craftable too - Revives —
/lifesteal revive <player>restores an eliminated player, even offline - Persistent per-player hearts in SQLite, applied via the
MAX_HEALTHattribute - Player-kill only — no farming mobs or suicides for free hearts
| Command | Description | Permission |
|---|---|---|
/hearts |
Show your heart count | everyone |
/withdraw |
Withdraw a heart as an item | lifesteal.withdraw (default: all) |
/lifesteal reload |
Reload config | lifesteal.admin (op) |
/lifesteal sethearts <player> <n> |
Set a player's hearts | lifesteal.admin |
/lifesteal revive <player> |
Revive an eliminated player | lifesteal.admin |
starting-hearts: 10
max-hearts: 20
min-hearts: 1 # elimination triggers below this
elimination: ban # ban | spectator
drop-heart-on-elimination: true- Hearts are cached in memory (
HeartManager) so combat math is instant; the database is updated asynchronously off the main thread. - Items are identified by a PersistentDataContainer tag, not their name — players can't forge a Heart by renaming a Nether Star.
- Elimination runs one tick after the death event, since the player is mid-death when the kill is processed.
JDK 21 + Maven. mvn clean package → target/lifesteal-1.0.0.jar.