What it does
In worlds you mark as vanilla-cap (hub, duels, survival, dungeons, whatever you configure), players get capped to 10 hearts for display and combat. Their LifeStealZ stored hearts are locked when they enter those worlds and restored if they die there, so duels deaths and combat-log kills don’t permanently strip hearts.
In lifesteal worlds, WHG gets out of the way. LifeStealZ runs normally. When someone comes back from duels, WHG reapplies their locked heart count instead of whatever broken snapshot got saved.
Also handles
- Blocking LifeStealZ heart items from spawning or being picked up in protected worlds
- CombatLogX disconnects keeping the heart lock alive
- Optional hooks for Duels match start/end and WorldGuard region flags (
whg-cap-health, whg-protect-storage, whg-block-heart-items)
Requirements
- Paper or Purpur 1.21.x (tested on 1.21.11)
- Java 21
- LifeStealZ if you want storage protection and re-apply on world change (soft depend)
Commands
/whg reload — reload config
/whg inspect [player] — see world mode, stored hearts, active lock
/whg unlock <player> — clear a stuck lock (admin)
Config
Per-world modes in config.yml: LIFESTEAL or VANILLA_CAP, with optional max hearts, storage protection, and heart-item blocking per world. Old v1 configs upgrade automatically on first boot.
Made for inkwell.net.au. If you run a similar setup (LifeStealZ + MV + duels), it should save you the same headaches.
Issues and source on GitHub. Don’t expect support for every plugin combo under the sun — test on a staging server first.