EzLifestealСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (11)
release
EzLifesteal 1.2.0
1.2.014 июл. 2026 г.944Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur, spigot
Что нового
### Added
- Added adapter resolution support for the MC 26.2 line and Spigot runtime IDs (`spigot.26.2.x`) so runtime adapter selection remains deterministic on newer server versions.
- Added/updated compatibility tests around adapter ID resolution and scheduler fallback behavior for mixed Paper/Folia/Spigot execution environments.
### Changed
- Bumped plugin/module version to `1.2.0`.
- Updated CI/test workflows to use the valid MockBukkit branch `upgrade/v26.2` for local MockBukkit publishing in Java 25 / Paper 26.2 lanes.
- Kept local default MockBukkit coordinates aligned with currently publishable local artifacts to avoid local package resolution failures while preserving CI lane overrides.
### Fixed
- Fixed runtime version-line normalization for Bukkit strings like `1.26.x` so they map to the 26.2 adapter family instead of producing `1.26.x` adapter IDs.
- Fixed scheduler compatibility tests that were relying on typed Folia scheduler stubs and could fail with Mockito return-type mismatches.
release
EzLifesteal 1.1.2
1.1.231 мая 2026 г.282Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
### Added
- **Hologram orphan cleanup command**: `/lifesteal hologram cleanup [radius]` (player-only, requires `lifesteal.scoreboard.remove` or `lifesteal.hologram` or `lifesteal.admin`). Scans nearby entities within the given radius (default 10, clamped to 1–64) and removes armor stands that look like EzLifesteal hologram lines but are no longer tracked by the manager. Useful after unexpected server crashes that leave ghost stands in the world.
- **PersistentDataContainer tagging** — every armor stand spawned by `TopHologramManager` is now tagged with a `NamespacedKey("hologram_line")` PDC entry. This makes orphan detection reliable across server restarts. Pre-existing untagged stands are identified via a heuristic (marker, invisible, no gravity, small, custom-name-visible, no base-plate, no arms).
- Language keys `hologram-cleanup-removed` and `hologram-cleanup-none` added to all 8 locale files (en, de, es, fr, nl, pt, ru, zh).
- **EzCountdown 2.0.1: richer countdown configuration** — bumped the EzCountdown dependency to 2.0.1 and exposed six new `CountdownBuilder` fields through `revive-beacon.yml` under `spawn.countdown`:
- `start-message`: server-wide broadcast sent when the countdown starts (leave blank to disable).
- `end-message`: server-wide broadcast sent when the countdown ends (leave blank to disable).
- `end-commands`: list of console commands dispatched when the countdown ends; supports `{name}` placeholder for the countdown ID.
- `update-interval-seconds`: how often EzCountdown refreshes the display in seconds (default `1`; increase to reduce load on high-player-count servers).
- `visibility-permission`: permission node required to see the countdown overlay; leave blank to show to all players.
- `ephemeral`: when `true` (default) the countdown lives only in memory and is never written to EzCountdown's `countdowns.yml`, preventing orphaned entries after a server restart.
### Changed
- `EzCountdownBeaconHook` now catches `DuplicateCountdownException` separately (reuses an existing countdown by name rather than silently dropping it) and catches the base `EzCountdownException` for all other EzCountdown errors, with distinct log messages for easier diagnosis.
---
release
EzLifesteal 1.1.1
1.1.124 мая 2026 г.218Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2paper, purpur
Что нового
### Added
- Bumped project version to 1.1.1.
- Short-term fix for team-bank persistence: perform a compensating rollback of a player's profile when a subsequent team-bank save fails, preventing inconsistent state between player hearts and the team bank.
- Added focused unit tests that exercise team-bank rollback and atomicity paths to address patch-level coverage requirements; JaCoCo checks pass locally.
### Changed
- Bumped dependency versions (WorldEdit, WorldGuard, [EzCountdown](https://modrinth.com/plugin/ezcountdown), Testcontainers, JUnit, Awaitility, SLF4J and others) per dependabot updates.
### Fixed
- Resolved a patch-coverage failure by adding targeted tests for `TeamBankService` and `TeamBankAdminService`; coverage for modified lines now meets project rules.
---
release
EzLifesteal 1.1.0
1.1.017 мая 2026 г.87Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2paper, purpur
Что нового
> **What's new in 1.1.0:** shared Team Heart Bank (requires TeamsAPI), automated revive beacon
> placement with scheduling and random regions, WorldGuard protection for auto-spawned beacons,
> EzCountdown support for beacon warm-up timers, and an expanded interactive beacon GUI.
> Several bug fixes for bans, beacons, and the team bank.
### Added
#### Team Heart Bank *(requires [TeamsAPI](https://modrinth.com/plugin/teams-api))*
Teams can now pool hearts into a shared bank. Players deposit and withdraw hearts; admins can
inspect or adjust any team's balance directly from the console or in-game.
**Player commands:**
| Command | Permission |
|---|---|
| `/lifesteal teambank balance` | `lifesteal.teambank.balance` |
| `/lifesteal teambank deposit <amount>` | `lifesteal.teambank.deposit` |
| `/lifesteal teambank withdraw <amount>` | `lifesteal.teambank.withdraw` |
**Admin commands** — operate on any team by name or UUID:
| Command | Permission |
|---|---|
| `/lifesteal teambank admin balance <team>` | `lifesteal.teambank.admin.balance` |
| `/lifesteal teambank admin deposit <team> <amount>` | `lifesteal.teambank.admin.deposit` |
| `/lifesteal teambank admin withdraw <team> <amount>` | `lifesteal.teambank.admin.withdraw` |
| `/lifesteal teambank admin reset <team>` | `lifesteal.teambank.admin.reset` |
| `/lifesteal teambank admin transfer <from> <to> <amount>` | `lifesteal.teambank.admin.transfer` |
The bank uses YAML or MySQL storage, matching your existing storage setting.
**New `lifesteal-core.yml` keys:**
```yaml
team-bank:
enabled: true
max-hearts: 100 # global cap on a team bank balance
per-team-overrides: # optional per-team cap (overrides max-hearts for that team)
MyTeam: 50 # key: team name or UUID
```
**Team-kill bypass** — heart transfers are skipped when killer and victim share a team.
Replaces the old flat `team-kill-bypass-with-teams-api` boolean with a richer section
(old key still works as a fallback — see [Migration notes](#migration-notes) below):
```yaml
team-kill-bypass:
enabled: true
exempt-worlds: # worlds where the bypass does NOT apply
- pvp-arena
min-team-size: 2 # bypass only activates when the team has at least N members
```
#### Beacon Auto-Spawn
The plugin can now place revive beacons in the world automatically — on a recurring timer,
on demand via command, or at a random location within a configured bounding box or weighted
region list.
**[EzCountdown](https://modrinth.com/plugin/ezcountdown) Bossbar countdown**

**Warming up time**

**Player selection**

**New `/beacon` command** — top-level alias for `/lifesteal beacon` — with three new subcommands:
| Command | Description |
|---|---|
| `/beacon spawn [world x y z]` | Place a beacon at explicit coordinates, or a random location |
| `/beacon despawn <id\|all>` | Remove one or all active plugin-spawned beacons |
| `/beacon spawns` | List all active plugin-spawned beacons and their status |
**New `revive-beacon.yml` keys under `spawn`:**
```yaml
spawn:
max-concurrent: 1 # maximum simultaneously active plugin-spawned beacons
expiry-minutes: 60 # auto-remove after N minutes (0 = never expire)
cooldown-minutes: 30 # minimum time between consecutive spawns (0 = no cooldown)
schedule:
interval-minutes: 120 # auto-spawn every N minutes (0 = disabled)
random-spawn:
world: world
min-x: -1000
max-x: 1000
min-z: -1000
max-z: 1000
min-y: 0 # 0 = use world surface height (getHighestBlockY)
max-y: 0
random-spawn-regions: # optional: named weighted regions replace the single bounding box
spawn-area:
weight: 3
min-x: -200
max-x: 200
min-z: -200
max-z: 200
availability-event: # announcements/effects when beacon becomes usable
broadcast: true
title: true
particles: true
fireworks: true
countdown:
name-prefix: "beacon-" # EzCountdown timer name prefix
per-type-messages: {} # per-display-type message overrides
```
#### WorldGuard integration *(optional)*
A WorldGuard region is automatically created around each plugin-spawned beacon to prevent
players from breaking or tampering with it. The region is removed when the beacon despawns.
Configurable radius and flag overrides: `deny-build`, `deny-pvp`, `deny-mob-damage`,
`deny-explosions`. Silently skipped when WorldGuard is not installed.
#### EzCountdown integration *(optional)*
An EzCountdown timer is shown while a beacon warms up before becoming available. Supports
`ACTION_BAR`, `BOSS_BAR`, `CHAT`, `TITLE`, and `SCOREBOARD` display types. Falls back to
an internal timer when EzCountdown is not installed.
#### Soft dependencies
`WorldGuard`, `EzCountdown`, and `TeamsAPI` are now listed as `softdepend` in `plugin.yml`.
The plugin loads and works fully without any of them — each integration is silently skipped
when its dependency is absent.
#### Translations
All new messages (team bank player/admin commands, beacon auto-spawn announcements) are
translated in all eight bundled locales: `en`, `de`, `es`, `fr`, `nl`, `pt`, `ru`, `zh`.
### Fixed
- **Players were not banned at zero hearts when using the default `min-hearts` setting** —
the zero-heart ban check ran against an already-floored value, so players reaching zero
hearts were never banned under the default `min-hearts: 1.0`. Ban now fires correctly.
- **`/pardon <player>` was reversed on server restart** — manually pardoning a player (via
`/pardon` or by editing `banned-players.json`) was undone the next time the server started,
because the plugin re-applied the stored ban. Bukkit's ban list is now treated as
authoritative: if a ban is missing there, it is removed from storage too.
- **Crash on Paper 26.1.2 when banning players** — an incompatibility with the Paper 26.1.2
ban API caused a `ClassCastException` whenever the plugin tried to issue a ban. Fixed.
- **Revive beacon GUI opened when holding a revive voucher** — right-clicking a beacon with a
valid voucher in hand should trigger a revive, not open the info GUI. The GUI was opening
anyway due to listener priority ordering. Fixed.
- **Beacon availability broadcast and effects not fired for instant-availability beacons** —
beacons with no countdown (immediate availability) skipped the availability event entirely,
so no server broadcast, title overlay, particles, or fireworks were shown. Fixed.
- **Team bank returned "invalid amount" instead of "feature disabled"** — when the team bank
was turned off, `deposit`/`withdraw` validated the heart amount before checking whether the
feature was enabled, returning a misleading error. Corrected to check enabled-state first.
- **Overflow heart items dropped at the victim's respawn point instead of the kill location**
— when a killer's inventory was full, the extra heart item spawned at the victim's new
respawn position rather than at the kill site. Now dropped at the killer's location.
- **Team-bank messages missing from non-English locales** — `de`, `es`, `fr`, `nl`, `pt`,
`ru`, and `zh` locale files were missing the team-bank message keys introduced in earlier
builds. All locale files are now complete.
### Changed
- **Beacon info GUI** expanded from 27 to 54 slots: rows 4–5 now list eliminated players
(click to select a revive target); row 6 has pagination and a direct "Use Beacon" button
— players no longer need to close and reopen the beacon to perform a revive.
- **`team-kill-bypass-with-teams-api`** flat key superseded by the new `team-kill-bypass`
section (see Added above). The old flat key is still read as a fallback — no immediate
action required.
### Migration notes
No breaking changes. Existing configs continue to work without modification.
One key is superseded but remains backward-compatible:
| Old key (`lifesteal-core.yml`) | Replacement | Notes |
|---|---|---|
| `team-kill-bypass-with-teams-api: true/false` | `team-kill-bypass.enabled: true/false` | Old key still works as a fallback |
### Developer API
Four Bukkit events are fired during the plugin-spawned beacon lifecycle
(package `com.skyblockexp.ezlifesteal.api.event`):
| Event | Cancellable | Fires when |
|---|---|---|
| `BeaconSpawnEvent` | ✓ | Before the beacon block is placed in the world |
| `BeaconAvailableEvent` | | Beacon transitions from warm-up to available |
| `BeaconUsedEvent` | | A player successfully uses a beacon to revive someone |
| `BeaconExpiredEvent` | | Beacon expires naturally or is forcibly despawned |
beta
EzLifesteal 1.1.0-nightly.20260513
1.1.0-nightly.2026051313 мая 2026 г.26Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2paper, purpur
Что нового
### Added
### Changed
### Fixed
### Removed
---
#### Notes
> 🌙 Automated nightly beta build (May 13, 2026).
>
> Built from [`78cbbc3`](https://github.com/ez-plugins/EzLifesteal/commit/78cbbc3d8a95ba090463b819762c68ae56840f62)
release
EzLifesteal 1.0.1
1.0.120 апр. 2026 г.103Minecraft: 26.1, 26.1.1, 26.1.2bukkit, paper, purpur, spigot
Что нового
Thank you for checking out the latest 26.1 release of EzLifesteal. Please follow the project to keep up-to-date. If you have any feature requests or run into a bug please let us know in the Discord server!
## What changed?
- Published Github source code on Github: https://github.com/ez-plugins/EzLifesteal
- Added online documentation: https://ez-plugins.github.io/EzLifesteal/
- Rewritten Markdown topic
- Rewritten bbcode topic
- Added unit test CI
- Added unit tests
- Added feature test CI
- Added feature tests
- Added test coverage CI
- Rewritten main plugin class
- Made EzSeasons integration optional
- Refactored integration to use new EzSeasons 1.0.0 `SeasonResetEvent`
- Split the `lifesteal.yml` configuration file
- Added `lifesteal-killstreak.yml` configuration file
- Added `lifesteal-core.yml` configuration file
- Added `lifesteal-drops.yml` configuration file
- Added `lifesteal-worlds.yml` configuration file
- Removed `messages.yml`, all configurable messages are now in `languages/*.yml`
- Added craftable recipes for existing vouchers in EzLifesteal
```yaml
# Optional craftable recipes. Define recipes under the `recipes` section using the heart id as the key.
# Supported types: "shaped" and "shapeless".
# Shaped recipe example:
# recipes:
# gold:
# type: shaped
# amount: 1
# pattern:
# - "ABA"
# - "BCB"
# - "ABA"
# ingredients:
# A: GOLD_INGOT
# B: NETHER_STAR
# C: DIAMOND
# Shapeless recipe example:
# basic:
# type: shapeless
# amount: 1
# ingredients:
# - IRON_INGOT
# - NETHER_STAR
```
- Added `%ezlifesteal_is_banned%` placeholder in EzLifesteal
- Added `%ezlifesteal_is_banned_<player>%` placeholder (returns `true` or `false`)
- Added storage for ban information besides default Bukkit ban storage
- Added profile information to storage
- Added `LifestealPlayer` POJO
- Refactored all subcommands to a file per subcommand structure
- Improved performance for large-scale data handling (large amounts of players)
- Added local data caching through `LifestealPlayer` POJO to prevent database calls where possible
- Added `/lifesteal help` subcommand
- Routed `/lifesteal` to `/lifesteal help`
- Added `/lifesteal info` subcommand
- Added beacon revive feature
- Added `/lifesteal beacon add`
- Added `/lifesteal beacon clear`
- Added `/lifesteal beacon list`
- Added `/lifesteal beacon remove`
release
EzLifesteal 0.4.4
0.4.416 февр. 2026 г.1,5 тыс.Minecraft: 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 1.7.7, 1.7.8, 1.7.9, 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
- Added option to prevent losing hearts from deaths by mobs
```yaml
dont-remove-hearts-from-mobs: true
```
- Added option to set mimimum hearts required to lose 1 heart when killed by a mob. `-1` can be used to disable.
```yaml
mob-remove-hearts-greater-than: -1
```
- Fixed issue in heart vouchers not being dropped on death
- Fixed pojectile deaths losing hearths, ignoring the settings
release
EzLifesteal 0.4.3
0.4.33 февр. 2026 г.92Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
- Improved the `/lifesteal giveheart` subcommand autocomplete
- Improved the lores of the Heart Vouchers
- Fixed redeeming Heart Vouchers
- Removed NBT data debug from the heart vouchers
release
EzLifesteal 0.4.2
0.4.21 февр. 2026 г.51Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
- Added option to enable/disable losing hearts when players get killed by mobs. Default this is set to `true` when not configured in the `lifesteal.yml`
```yaml
dont-remove-hearts-from-mobs: true
```
- Improved autocomplete of the `/lifesteal` command on Paper servers
- Fixed issue causing the `/lifesteal` command to show usage message
release
EzLifesteal 0.4.1
0.4.131 янв. 2026 г.42Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
- Fixed issue loading `plugin.yml` on Paper servers
release
EzLifesteal 0.3.1
0.3.124 янв. 2026 г.61Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
- Split season basics to a new "EzSeasons" plugin.
- Folia fixes in the task handlers to make them compatible.