EzLifesteal 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.
Highlights
Works with Paper 1.21.10 (Java 21) and stays friendly with Paper, Spigot, Folia, and Bukkit. The jar includes the `folia-supported` marker.
Saves player data asynchronously to YAML files or MySQL so leaderboards, profiles, and shutdown saves stay smooth.
Control hearts per world: set default, minimum, and maximum hearts, adjust kill rewards and death penalties, pick zero-heart behaviour, allow or block worlds, make per-world overrides, and let mobs drop hearts with per-entity permissions.
Optional kill streak rewards can hand out money, run console commands, give items, and broadcast wins when players hit streak milestones, with Vault support for economy payouts.
Built-in overlays show action-bar or boss-bar updates. `/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.
Season scheduling handles heart resets automatically. Use a timer or set start and end dates, repeat seasons if you want, and send reminder broadcasts. `/lifesteal season` shows the countdown.
Smurf detection watches for players farming the same target or rotating killers, keeps history GUIs ready, and only alerts trusted staff.
`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.
Translate player messages quickly with built-in English and Dutch files, and add your own flavour through `messages.yml` overrides.
`/lifesteal` staff commands make it easy to add, remove, reset, revive, or reset all hearts without touching storage files.
Storage & reliability
Storage tasks run on their own thread so slow disks or databases never freeze the main server.
YAML mode saves each player to `plugins/EzLifesteal/data/players/<uuid>.yml` and upgrades old `players.yml` data the first time it loads.
MySQL mode creates its table on startup (`uuid`/`hearts`) and uses `ON DUPLICATE KEY UPDATE` so repeat saves stay safe.
Use `/lifesteal reload` to refresh configuration, messages, admin rules, storage backends, overlays, and PlaceholderAPI hooks without restarting.
Season cadence & smurf defence
Set a season length with `length-days` or choose exact `start` and `end` times. Turn on `recurring` to loop the schedule automatically.
Send reminder broadcasts before resets and show the remaining time with `/lifesteal season`.
Smurf detection logs kills per killer and victim, watches for rotating killer rings, saves alert and kill history, and lets you exempt trusted players.
Give moderators `lifesteal.alert` and edit `smurf.yml` to tweak thresholds or exempt trusted UUIDs.
Requirements
Java 21 runtime (matches current Paper 1.21.10 requirements).
Paper, Spigot, Folia, or Bukkit 1.21.10 or newer.
Optional: PlaceholderAPI for placeholders, MySQL 8+ for database storage.
Optional: Vault plus an economy provider for kill streak currency rewards.
Quick start
Place the jar in your server's `plugins` folder and restart the server.
Choose `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 or seasons in `features.yml`.
Review `admin.yml` to decide who counts as staff, whether they bypass heart gain or loss, and who receives smurf alerts.
Use `/lifesteal reload` after configuration changes and give your staff the permissions listed below.
Run `/lifesteal test <kill|death>` on a staging server to check kill and death flows before you go live.
Commands & permissions
Command
Description
Permission
/lifesteal
Show your stored heart total (players) or run sub-commands.
lifesteal.command.base
/lifesteal hearts <player>
View any player's saved hearts, even if they are offline.
lifesteal.manage.view
/lifesteal set <player> <hearts>
Force a player's heart total within the configured bounds.
lifesteal.manage.modify
/lifesteal add <player> <hearts>
Give a player extra hearts without exceeding the configured maximum.
lifesteal.manage.modify
/lifesteal remove <player> <hearts>
Remove hearts while respecting the configured minimum floor.
lifesteal.manage.modify
/lifesteal reset <player>
Restore a player's hearts to the configured default.
lifesteal.manage.modify
/lifesteal revive <player>
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 <player> <amount>
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.
Staff listed in `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.
Switch those values to `false` (or remove yourself from the admin list) before testing lifesteal flows, or kill/death simulations, duels, and streak rewards will skip admins.
Turn the bypass back on after testing so daily staff checks keep working without unwanted penalties.
Casual SMP: 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.
Competitive season: Built for organised leagues. Enables the season scheduler, lowers the max heart cap, and speeds up reminders as the reset gets closer.
Hardcore grind: 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.