This plugin adds a complete Lifesteal progression system to Minecraft, making player-versus-player combat directly affect maximum health. Players start with 10 hearts, can gain hearts by defeating other players, and can turn their own hearts into physical Heart items for trading or later use.
Every player starts with 10 hearts. Each heart represents 2 maximum health points.
When a player genuinely kills another player:
The killer gains 1 maximum heart.
The victim loses 1 maximum heart.
Heart changes are permanently saved.
Players can have between 1 and 40 hearts.
Only an actual player kill triggers Lifesteal. Damaging another player is not enough.
Deaths caused by mobs or the environment do not transfer hearts, including:
Zombies
Skeletons
Creepers
Other mobs
Fall damage
Fire
Lava
Drowning
Void damage
Other environmental damage
Commands or plugin deaths
Self-deaths
This keeps heart progression focused on genuine PvP victories.
The plugin adds a special physical item called Heart.
Heart items are clearly identifiable and are specially marked so normal items cannot accidentally be recognized as Lifesteal Hearts.
Players can freely:
Drop Hearts
Pick Hearts up
Give Hearts to other players
Store Hearts in chests
Trade Hearts
Move Hearts through their inventory
Hearts are not soulbound, allowing them to become a useful player-traded resource.
A player holding a valid Heart can left-click to use it.
When used successfully:
The Heart item is consumed.
The player's maximum health increases by 2 HP.
Their heart count increases by 1.
The new heart amount is permanently saved.
For example, a player with 8 hearts can use one Heart item and become a 9-heart player.
Players who already have 40 hearts cannot use another Heart, preventing the maximum from being exceeded.
Players can convert one of their maximum hearts into a physical Heart item with:
/withdraw heart
No special permission is required.
For example:
10 hearts → /withdraw heart → 9 hearts + 1 Heart item
The withdrawn heart is actually removed from the player's maximum health rather than simply creating an item.
Players cannot withdraw their final heart. Someone with only 1 heart remains at 1 heart and receives no Heart item.
The withdrawal system also protects against full inventories. If the Heart cannot safely be given to the player, the transaction does not permanently remove their heart.
When a player is already at 1 heart and is killed by another player, their final heart is protected.
Instead of losing their final heart, they receive a random negative curse effect.
Possible curses include:
Slowness
Weakness
Mining Fatigue
Blindness
Hunger
Glowing
The curse is stored as a persistent plugin state, meaning it does not simply disappear when the player reconnects or when the server restarts.
This gives players at 1 heart a new objective: obtain a Heart to recover.
A cursed player can escape their curse by obtaining and using a Heart.
When the Heart is used:
The player gains 1 maximum heart.
The Heart is consumed.
The curse state is removed.
The active curse effects are removed.
The updated heart count is saved.
For example:
1 heart + cursed → use Heart → 2 hearts + curse removed
This makes physical Hearts valuable not only for gaining health, but also for recovering from the most dangerous stage of the Lifesteal system.
Player progression is stored using UUIDs rather than usernames.
The plugin saves:
Player UUID
Current heart count
Curse state
This information remains available after:
Server restarts
Player disconnects
Player reconnects
Plugin reloads where supported
Players therefore keep their progression instead of having their heart count reset.
The main Lifesteal settings can be configured:
starting-hearts: 10
minimum-hearts: 1
maximum-hearts: 40
Curse behavior can also be configured where supported, including curse duration and available effects.
The plugin changes the consequences of combat without unnecessarily changing normal Minecraft gameplay.
A player who wins PvP encounters becomes stronger. A player who loses fights becomes weaker. Physical Hearts create opportunities to trade and recover lost health, while the final-heart curse gives players a way to remain involved even after reaching the lowest possible heart count.
The result is a simple but strategic gameplay loop:
Fight → Gain or Lose Hearts → Trade Hearts → Recover → Fight Again
10 starting hearts
1–40 maximum heart range
Player-kill Lifesteal
Physical Heart items
Tradeable Hearts
Left-click Heart usage
/withdraw heart
Final-heart protection
Persistent curses
Random negative curse effects
Heart-based curse removal
UUID-based data storage
Persistent progression
Inventory-safe withdrawals
Mob deaths excluded
Environmental deaths excluded
Configurable heart limits
No special permission required for /withdraw heart