> *"Every heart stolen. Every life lost. Every revival earned."*
</div>
---
## License
> **This plugin requires a valid license key to run.** > Without a valid key, the plugin will refuse to enable.
``` License Key: 25Z8VM-UGXHD5 ```
Enter your key in `config.yml` under `license.key` before starting your server. To purchase additional license keys, visit **[dxlifesteal.dev](https://dxlifesteal.dev)**.
---
## ✨ What is DxLifeStealCore?
**DxLifeStealCore** is a feature-rich, SMP-ready LifeSteal plugin built for competitive Minecraft servers. It goes far beyond basic heart stealing — with tiered heart items, cinematic elimination effects, a full revive system, server events, Discord webhook integration, kill streaks, and a paginated revive GUI.
Whether you're running a public LifeSteal SMP or a private friend group server, DxLifeStealCore gives you complete control over every mechanic.
---
## Core Features
### ❤ Heart System - Players start with a **configurable number of hearts** (default: 10) - Killing a player **steals hearts** from the victim and gives them to the killer - Hearts have a **configurable minimum and maximum** — players can grow up to 20 hearts! - **Steal chance** is configurable — make it 100% or add RNG - Optional **heart loss on mob death** or **natural death** - **Per-world heart settings** support — different heart caps per world - **Heart economy**: withdraw hearts to items, deposit items back, pay hearts to other players
### Tiered Heart Items
Three tiers of craftable heart consumables, each with unique designs, lore, and effects:
| Item | Tier | Hearts | Rarity | Recipe Center | |------|------|--------|--------|---------------| | ❤ Heart Shard | Tier I | +1 ❤ | Common | Nether Star + Golden Swords | | Heart Crystal | Tier II | +2 ❤❤ | Rare | Diamond Blocks + End Crystal | | ✦ Heart Gem | Tier III | +3 ❤❤❤ | Legendary | Emerald Blocks + Netherite Block |
Plus the classic **Stolen Heart** (craftable with Gold Blocks, Nether Stars & Beacon) and the **Heart Shield** (Totem of Undying + Ghast Tears + Diamond Block) that blocks **one heart loss on death**.
### ⚰ Elimination System
When a player's hearts reach zero, they are **eliminated**. Choose from four elimination modes:
- **BAN** — Temporarily bans the player for a configurable duration (e.g. `3d`, `12h`) - **SPECTATOR** — Converts the player to spectator mode - **KICK** — Kicks the player from the server - **COMMAND** — Executes a custom console command on elimination
Elimination comes with **cinematic effects** — a dark particle tornado, lava drips, skull cracks, wither sounds, and a dramatic death firework. The killer gets a golden sparkle celebration with victory fireworks and sounds.
### Revive System
Eliminated players can be brought back by spending hearts:
- Configurable **cost in hearts** to revive (default: 5) - Works for **online and offline** players - **Revive immunity** after being revived — brief grace period - **Revive Book** — craftable item (Emerald Blocks + Totems + Written Book) - **Paginated Revive GUI** — browse up to 45 eliminated players per page with skull heads, status info, and one-click reviving - Global toggle to **enable/disable revives** without restarting - Server-wide **broadcast** on successful revive - **Discord webhook** notification on revive
### Kill Streak Bonuses
Players on a killing streak earn **bonus hearts**:
Streak thresholds and rewards are fully configurable.
### Server Events
Activate limited-time events with a single command:
- **Double Hearts Event** — All heart gains are multiplied. Comes with a live **BossBar countdown** visible to all players. - **Heart Rain Event** — All online players receive free hearts at a set interval for the event duration.
Events are started/stopped with `/dxlifesteal event` and run on a background task ticker.
### Leaderboards
Full leaderboard support with `/dxlifesteal top`:
- Sort by **hearts**, **kills**, **deaths**, or **eliminations** - Configurable **leaderboard size** - Auto-refresh interval for live ranking updates
### Discord Webhook Integration
Get notified in your Discord server for key events:
- Player **killed** (heart stolen) - Player **death** - Player **eliminated** - Player **revived**
Enable and configure via `config.yml` — just plug in your webhook URL.
### PlaceholderAPI Support
Full PAPI integration with the `%dxls_<placeholder>%` prefix:
| Command | Description | Permission | |---------|-------------|------------| | `/dxlifesteal help` | Show help menu | — | | `/dxlifesteal status [player]` | View heart stats | `dxlifesteal.status` | | `/dxlifesteal top [type]` | View leaderboard | `dxlifesteal.top` | | `/dxlifesteal withdraw <amount>` | Withdraw hearts to item | `dxlifesteal.withdraw` | | `/dxlifesteal deposit` | Deposit heart items | `dxlifesteal.deposit` | | `/dxlifesteal pay <player> <amount>` | Pay hearts to player | `dxlifesteal.pay` | | `/dxlifesteal streak [player]` | View kill streak | `dxlifesteal.streak` | | `/dxlifesteal revive <player>` | Revive eliminated player | `dxlifesteal.revive` | | `/dxlifesteal set <player> <amount>` | Set player hearts | `dxlifesteal.set` | | `/dxlifesteal add <player> <amount>` | Add hearts to player | `dxlifesteal.add` | | `/dxlifesteal remove <player> <amount>` | Remove hearts | `dxlifesteal.remove` | | `/dxlifesteal eliminate <player>` | Force eliminate player | `dxlifesteal.eliminate` | | `/dxlifesteal freeze <player>` | Freeze/unfreeze player | `dxlifesteal.freeze` | | `/dxlifesteal giveitem <player> <item> <amount>` | Give heart item | `dxlifesteal.giveitem` | | `/dxlifesteal event <type> <duration>` | Start/stop events | `dxlifesteal.event` | | `/dxlifesteal reload` | Reload plugin | `dxlifesteal.reload` | | `/dxlifesteal backup` | Backup player data | `dxlifesteal.backup` | | `/dxlifesteal inspect <player>` | Inspect player data | `dxlifesteal.inspect` |
**Aliases:** `/dxls`, `/lsc`, `/lifesteal`
---
## Permissions
| Permission | Default | Description | |------------|---------|-------------| | `dxlifesteal.admin` | OP | Full admin access (inherits all below) | | `dxlifesteal.status` | All | Check heart status | | `dxlifesteal.withdraw` | All | Withdraw hearts | | `dxlifesteal.deposit` | All | Deposit heart items | | `dxlifesteal.pay` | All | Pay hearts to others | | `dxlifesteal.top` | All | View leaderboards | | `dxlifesteal.streak` | All | View kill streaks | | `dxlifesteal.recipes` | All | View recipes GUI | | `dxlifesteal.bypass` | OP | Bypass heart steal | | `dxlifesteal.multiplier.2x` | false | 2x heart steal (VIP) | | `dxlifesteal.multiplier.3x` | false | 3x heart steal (VIP) | | `dxlifesteal.maxhearts.bonus` | false | Bonus max hearts (VIP) |
---
## ⚙ Configuration Highlights
```yaml hearts: starting: 10 # Starting hearts for new players minimum: 2 # Can never go below this maximum: 20 # Cap on max hearts steal-amount: 1 # Hearts stolen per kill steal-chance: 100 # % chance to steal (RNG support) pvp-only: true # Only steal in PvP kills
elimination: mode: BAN # BAN / SPECTATOR / KICK / COMMAND ban-duration: "3d" # Supports d, h, m
1. Drop `DxLifeStealCore.jar` into your `/plugins` folder 2. Start the server once to generate `config.yml` 3. Open `config.yml` and set your license key: ```yaml license: key: "25Z8VM-UGXHD5" ``` 4. Configure hearts, elimination mode, revive settings, and Discord webhook as desired 5. Restart the server — you're good to go!
- **YML-based** per-player data storage — no database setup required - Auto-save every minute (configurable) - Full **backup** and **export** command support - Kill, death, steal, elimination, and revive **history logging** per player