Steal hearts from other players with leaderboard, auto-ban and more tools for competitive Minecraft Lifesteal servers
EzLifesteal is a configurable Lifesteal plugin for Paper, Spigot, Folia, and Bukkit servers. It ships with flexible heart rules, fast storage, hologram/scoreboard overlays, PlaceholderAPI hooks, and built-in smurf protection.
/lifesteal top leaderboards, the hologram, and PlaceholderAPI placeholders share live standings anywhere./lifesteal hologram place drops a self-updating leaderboard that survives restarts and can be cleared with one command. The scoreboard wildcard (lifesteal.scoreboard.*) makes it easy to hand out place/remove access.admin.yml lists staff by ops, permission nodes, UUIDs, or names, chooses if admins bypass heart gain or loss, and decides whether smurf alerts stay admin-only.messages.yml overrides./lifesteal staff commands make it easy to add, remove, reset, revive, or reset all hearts without touching storage files.plugins/EzLifesteal/data/players/<uuid>.yml and upgrades old players.yml data the first time it loads.uuid/hearts) and uses ON DUPLICATE KEY UPDATE so repeat saves stay safe./lifesteal reload to refresh configuration, messages, admin rules, storage backends, overlays, and PlaceholderAPI hooks without restarting.
length-days or pick exact start/end timestamps, including optional recurring windows./season from the EzSeasons plugin while EzLifesteal handles smurf protection and automatically resets hearts when the season rolls over.lifesteal.alert and edit smurf.yml to tweak thresholds or exempt trusted UUIDs.plugins folder and restart the server.YAML (default) or MYSQL storage in storage.yml. Set the default language in config.yml. Adjust heart and world rules in lifesteal.yml and tweak overlays in features.yml. Install EzSeasons if you want scheduled resets.admin.yml to decide who counts as staff, whether they bypass heart gain or loss, and who receives smurf alerts./lifesteal reload after configuration changes and give your staff the permissions listed below./lifesteal test <kill|death> on a staging server to check kill and death flows before you go live.| Command | Description | Permission |
|---|---|---|
| /lifesteal | Show your stored heart total (players) or run sub-commands. | lifesteal.command.base |
| /lifesteal hearts | View any player's saved hearts, even if they are offline. | lifesteal.manage.view |
| /lifesteal set | Force a player's heart total within the configured bounds. | lifesteal.manage.modify |
| /lifesteal add | Give a player extra hearts without exceeding the configured maximum. | lifesteal.manage.modify |
| /lifesteal remove | Remove hearts while respecting the configured minimum floor. | lifesteal.manage.modify |
| /lifesteal reset | Restore a player's hearts to the configured default. | lifesteal.manage.modify |
| /lifesteal revive | Restore default hearts and pardon any bans for the player. | lifesteal.manage.modify |
| /lifesteal resetall | Reset every stored profile to the default hearts asynchronously. | lifesteal.manage.resetall |
| /lifesteal transfer | Send hearts to another player while respecting the minimum heart safety floor. | lifesteal.transfer |
| /lifesteal top [page] | Display the hearts leaderboard with pagination and PlaceholderAPI support. | lifesteal.top |
| /lifesteal hologram <place|remove> | Place or remove the auto-updating hologram leaderboard at your location. | lifesteal.scoreboard.place / lifesteal.scoreboard.remove |
| /lifesteal smurf | Open the smurf-farming investigation GUI with recent alerts and kill history. | lifesteal.smurf.manage |
| /lifesteal reload | Reload configuration, messages, admin rules, storage backends, and overlays. | lifesteal.reload |
| /lifesteal test <kill|death> | Simulate kills or deaths to validate lifesteal settings on a staging server. | lifesteal.test |
Shortcut bundles: give
lifesteal.playerfor normal play, addlifesteal.modfor moderation tools (alerts, GUI, scoreboard wildcard), and finish withlifesteal.adminfor full control.
Give staff the optional
lifesteal.alertpermission for live smurf alerts. Pair it withrestrict-smurf-alerts-to-admins: trueinadmin.ymlso only verified admins get pinged.
# config.yml
# Supported languages: "en", "nl"
language: en
# storage.yml
type: YAML
mysql:
host: localhost
port: 3306
database: lifesteal
username: root
password: password
use-ssl: false
table: lifesteal_players
# lifesteal.yml
global-enabled: true
default-hearts: 10.0
min-hearts: 1.0
max-hearts: 40.0
apply-health-scale: false
health-scale: 20.0
hearts-per-kill: 1.0
hearts-lost-on-death: 1.0
ban-when-zero-hearts: false
zero-heart-ban-message: "You have run out of hearts."
zero-heart-kick-message: "You have run out of hearts."
combat-logout-protection:
enabled: false
tag-duration-seconds: 15.0
enabled-worlds: []
disabled-worlds: []
world-overrides: {}
mob-rewards: {}
kill-streaks:
enabled: false
reset-on-death: true
rewards: {}
# features.yml
action-bar:
enabled: true
mode: ACTION_BAR
update-interval-ticks: 40
message: "&c❤ %hearts% &7hearts"
enabled-worlds: []
disabled-worlds: []
boss-bar:
color: RED
overlay: PROGRESS
hologram:
update-interval-ticks: 600
max-entries: 10
location: {}
admin.yml)enabled: true
treat-ops-as-admin: true
permission-node: lifesteal.admin
allowed-uuids: []
allowed-names: []
bypass-heart-loss: true
bypass-heart-gain: true
restrict-smurf-alerts-to-admins: false
admin.yml skip heart gains and losses when bypass-heart-gain and bypass-heart-loss stay enabled, so moderators can watch gameplay without losing progress.false (or remove yourself from the admin list) before testing lifesteal flows, or kill/death simulations, duels, and streak rewards will skip admins.smurf.yml)enabled: true
same-victim-threshold: 3
time-window-minutes: 15
notify-permission: lifesteal.alert
history-limit: 50
kill-history-limit: 120
exempted-players: []
Keeps fights exciting without scaring casual players. Raises the minimum hearts, gives one heart per kill, and disables zero-heart bans so everyone can keep playing.
# lifesteal.yml
default-hearts: 12.0
min-hearts: 6.0
max-hearts: 30.0
hearts-per-kill: 1.0
hearts-lost-on-death: 1.0
ban-when-zero-hearts: false
# features.yml
action-bar:
enabled: true
Pair EzLifesteal with EzSeasons, lower the max heart cap, and speed up reminders as the reset gets closer.
# lifesteal.yml
default-hearts: 10.0
min-hearts: 4.0
max-hearts: 24.0
hearts-per-kill: 1.0
hearts-lost-on-death: 1.0
ban-when-zero-hearts: true
# ezseasons config.yml
season:
enabled: true
length-days: 14
reminder-minutes: [1440, 60, 15, 5, 1]
broadcast-message: "&eSeason reset! Hearts are refreshed for everyone."
Every fight is dangerous. Players lose two hearts on death, gain half a heart on kills, and get banned at zero hearts, so teams must play carefully.
# lifesteal.yml
default-hearts: 8.0
min-hearts: 1.0
max-hearts: 16.0
hearts-per-kill: 0.5
hearts-lost-on-death: 2.0
ban-when-zero-hearts: true
world-overrides:
world_nether:
hearts-per-kill: 0.25
hearts-lost-on-death: 3.0
%ezlifesteal_hearts% / %ezlifesteal_current_hearts% (stored hearts), %ezlifesteal_default_hearts%, %ezlifesteal_min_hearts%, and %ezlifesteal_max_hearts%.%ezlifesteal_top_<position>_hearts%, %ezlifesteal_top_<position>_current_hearts%, %ezlifesteal_top_<position>_name%, and %ezlifesteal_top_<position>_uuid%.Need support or want a new feature? Join our discord server tell us what to add next!