ajdnikov Dashboard

AnziLifesteal Documentation

Platform Paper 1.21+Storage data.yml or MySQLNetwork MySQL

Welcome to the AnziLifesteal documentation! AnziLifesteal is a comprehensive, highly configurable plugin for Paper and Spigot servers running a Lifesteal SMP. It features cross-server synchronization, customizable recipes, an in-game recipe editor, rebirth mechanics, spawn-kill and alt protections, Discord webhook notifications, and more.

Overview

AnziLifesteal provides everything you need to run a professional Lifesteal SMP. Players steal hearts from each other on kill, are eliminated when they reach 0 hearts, and can be revived using craftable Revive Beacons. The plugin includes a rebirth prestige system, optional MySQL synchronization for proxy networks, optional Discord notifications, and extensive anti-exploit protections.

DetailValue
Current version1.3
PlatformPaper / Spigot, api-version: '1.20'
Soft dependenciesPlaceholderAPI (placeholders), Vault (rebirth money cost)
StorageLocal data.yml by default, optional MySQL

Features

  • Lifesteal Mechanics: Steal a heart from every player you kill, lose one when you die. Heart loss on non-player deaths is configurable.
  • Heart Items: Withdraw hearts into physical items and consume them later. A stolen heart is handed over as a physical Heart item when the killer is already at their personal maximum.
  • Eliminations & Reviving: Players reaching 0 hearts are banned for a progressively longer duration each time. They can be brought back with a craftable Revive Beacon.
  • Rebirth System: A prestige system that resets hearts in exchange for a permanently higher personal heart cap.
  • MySQL Synchronization: Sync hearts, elimination counts, rebirths, and toggle states across a proxy network.
  • Protections: Built-in anti-spawn-kill and anti-alt-farming.
  • Toggle System: Admins can temporarily or permanently exempt players from lifesteal.
  • Discord Webhooks: Optional embeds for withdrawals, kills, eliminations, revives, and rebirths.
  • PlaceholderAPI Integration: 17 placeholders for scoreboards, tab lists, and leaderboards.
  • Update Checker: Admins are notified in-game and in console when a new release is available.

Installation & License

  1. Download the latest AnziLifesteal release.
  2. Place the JAR in your Paper or Spigot plugins/ folder.
  3. Start the server once so the configuration files are generated.
  4. Open plugins/AnziLifesteal/config.yml and paste your license key.
  5. Restart the server and confirm the console reports a successful license check.

AnziLock License

AnziLifesteal is protected by AnziLock. License keys are issued through the Discord community — use the /claim command there to receive yours, then set it in config.yml:

license:
  key: "YOUR_LICENSE_KEY_HERE"

On startup the plugin verifies the key against license.ajdnikov-dev.com and then runs a low-frequency heartbeat in the background. The last signed verification is cached, so a short outage of the license server will not take your server down — the plugin continues on the cached result for the offline grace period. Console lines are prefixed with [AnziLock] and [AnziLS].

Generated Files

  • config.yml — license, heart rules, protections, rebirth, MySQL, recipes, GUI text, and messages
  • discord.yml — the webhook URL and per-event embeds
  • data.yml — local player data, used when MySQL is disabled

Commands & Permissions

Player Commands

CommandDescriptionPermission
/withdraw <amount>Withdraws the specified number of hearts into physical Heart items.None
/rebirthOpens the rebirth GUI to prestige.None

Admin Commands

Permission required: als.admin (except /lstoggle, which requires als.toggle).

CommandDescription
/als set_hearts <player> <amount>Sets a player's current hearts.
/als give <heart|revive_beacon> <player> [amount]Gives the specified custom item. Note the item type comes before the player name.
/als recipes <heart|revive_beacon>Opens the in-game Recipe Editor GUI for that recipe.
/als max_hearts <amount>Sets and saves the global maximum heart cap.
/als hearts_when_revived <amount>Sets how many hearts a revived player receives.
/als min_withdraw <amount>Sets the minimum hearts a player must retain when withdrawing.
/als ban_on_zero <true|false>Toggles whether players are banned at 0 hearts.
/als lose_on_non_player_death <true|false>Toggles losing hearts to PvE deaths.
/als anti_spawn_kill <true|false>Toggles spawn-kill protection.
/als anti_alt <true|false>Toggles alt-farming prevention.
/als link_alt <player1> <player2>Manually links two players as alts.
/als unlink_alt <player1> <player2>Removes a manual alt link.
/als toggle <player> <on|off> [time]Admin alias for changing a player's lifesteal state.
/als reloadReloads config.yml, recipes, and the Discord webhook config.
/lstoggle <player> <on|off> [time]Toggles lifesteal for a player — requires als.toggle.

Permissions

PermissionDescriptionDefault
als.adminAccess to all /als admin subcommands.OP
als.toggleAccess to /lstoggle.OP

Configuration Guide

Core Settings

  • starting-hearts: Hearts a new player starts with. Default 10.
  • max-hearts: The absolute maximum hearts a player can reach. Default 20.
  • min-withdraw-hearts: Prevents withdrawing if it would drop the player below this threshold.
  • lose-hearts-on-non-player-death: If true, dying to mobs, fall damage, or the void costs a heart.

Elimination Settings

  • ban-on-zero: If true, hitting 0 hearts eliminates (bans) the player. If false they stay at 1 heart but stop giving hearts on death.
  • ban-durations: A progressive list of ban lengths (for example 1h, 24h, 7d). The last value repeats once a player exceeds the list. -1 means a permanent ban, and an empty list means every elimination is permanent.
  • hearts-when-revived: Hearts given when a ban expires or a player is revived.
  • enable-revive-beacon: Enables or disables the Revive Beacon item and its recipe.

Applying Changes

Run /als reload after editing config.yml directly. The reload re-reads the config, reloads player data, re-registers recipes, and reloads discord.yml.

Protections

Anti-Spawn-Kill

anti-spawn-kill:
  enabled: true
  max-kills: 3       # max heart steals from the same victim per window
  time-window: 180   # window length in seconds
  spawn-radius: 10   # blocks from the victim's respawn point

When a kill is blocked, no hearts are transferred in either direction and both players are told why. Toggle at runtime with /als anti_spawn_kill.

Anti-Alt

anti-alt:
  enabled: false

Blocks heart transfers between accounts sharing an IP address, and between accounts an admin has manually linked with /als link_alt. Toggle at runtime with /als anti_alt.

Rebirth System

Rebirth is a prestige mechanic. Players who meet the heart, money, and XP requirements can reset their hearts in exchange for a permanently higher personal heart cap. The GUI opens with /rebirth and shows live progress against every requirement.

rebirth:
  hearts-after-rebirth: 10
  extra-max-hearts-per-rebirth: 1
  required-hearts-percentage: 50
  max-rebirths: -1
  cost-money: 0
  cost-money-multiplier: 1.0
  cost-xp-levels: 0
  • hearts-after-rebirth: Hearts the player is reset to.
  • extra-max-hearts-per-rebirth: Permanent increase to their personal heart cap.
  • required-hearts-percentage: Percentage of the range above starting hearts required to rebirth (0–100).
  • max-rebirths: Maximum number of rebirths. -1 is unlimited.
  • cost-money: Base money cost. Requires Vault and an economy plugin. Set to 0 to disable.
  • cost-money-multiplier: Scales the money cost per rebirth — 1.5 makes each rebirth 50% more expensive, 1.0 keeps it flat.
  • cost-xp-levels: XP levels required. Set to 0 to disable.

Formula: starting-hearts + (max-hearts - starting-hearts) × percentage

Example: starting = 10, max = 20, 50% → 10 + (20−10) × 0.5 = 15 hearts needed

Toggle System

Admins can exempt individual players from lifesteal entirely — useful for content creators, builders, or a temporary truce. While a player is toggled off they neither steal nor lose hearts, and other players cannot steal from them.

/lstoggle <player> off 1h    # disable for one hour
/lstoggle <player> off       # disable permanently
/lstoggle <player> on        # re-enable

Durations accept formats such as 10s, 34m, 4h, and 1d. Omitting the duration disables lifesteal until it is explicitly turned back on. Running /lstoggle <player> with no action reports the player's current state.

toggle:
  sync-interval-seconds: 30

When MySQL is enabled, toggle states are pulled from the database at this interval, so a toggle set on one backend takes effect network-wide. Affected players are notified when their state changes from another server.

MySQL & Syncing

MySQL is optional. With it disabled the plugin stores everything in a local data.yml. Enable it to share hearts, elimination counts, rebirths, and toggle states across a Velocity or BungeeCord network.

mysql:
  enabled: true
  host: "localhost"
  port: 3306
  database: "lifesteal"
  username: "root"
  password: ""
  pool-size: 10
  server-id: "server-1"

Point every backend server at the same database, and give each one a unique server-id.

Recipe System

Recipes are fully customizable in config.yml using a shape matrix, or in-game through the Recipe Editor GUI:

/als recipes heart
/als recipes revive_beacon

Changes made in the editor are saved back to config.yml and the recipes re-register immediately — no restart needed.

ItemDefault ingredients
HeartDiamond, Nether Star, Gold Ingot
Revive BeaconEnder Eye, Nether Star, Obsidian, Beacon

Each recipe has its own enabled flag, so you can remove one from the game entirely. The Revive Beacon also respects the global enable-revive-beacon setting.

Discord Webhooks

AnziLifesteal can post rich embeds to a Discord channel for every major lifesteal event. Configuration lives in its own file, plugins/AnziLifesteal/discord.yml.

# Master toggle - set to false to disable all Discord messages
enabled: false

# Your Discord webhook URL (Server Settings -> Integrations -> Webhooks)
webhook-url: "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL_HERE"

# Bot display name and avatar shown in Discord
bot-name: "Lifesteal"
bot-avatar-url: ""

Events

Each event can be toggled on or off individually and carries its own embed title, description, color (decimal), and footer.

EventFires whenPlaceholders
withdrawA player withdraws hearts into items{player}, {amount}, {hearts}
killA player kills another and steals a heart{killer}, {victim}, {killer_hearts}, {victim_hearts}
eliminationA player loses all hearts and is banned{player}, {duration}
reviveA Revive Beacon brings a player back{player}, {target}
rebirthA player successfully rebirths{player}, {rebirths}, {max_hearts}

Example event block:

events:
  kill:
    enabled: true
    title: "⚔ Player Killed"
    description: "**{killer}** killed **{victim}** and stole a heart!"
    color: 16711680
    footer: "Anzi Lifesteal"

Colors are decimal values — 16711680 red, 65280 green, 16776960 yellow, 16746496 orange, 0 black. Run /als reload after editing discord.yml.

PlaceholderAPI Integration

When PlaceholderAPI is installed, AnziLifesteal registers the lifesteal expansion automatically. It persists across /papi reload.

Hearts

PlaceholderReturns
%lifesteal_hearts%The player's current hearts
%lifesteal_max_hearts%Their personal maximum, including rebirth bonuses
%lifesteal_starting_hearts%The configured starting hearts
%lifesteal_hearts_display%Hearts drawn as icons, e.g. ❤❤❤
%lifesteal_hearts_fraction%Current over maximum, e.g. 8/20
%lifesteal_hearts_percent%Current hearts as a percentage, e.g. 40%

Rebirth

PlaceholderReturns
%lifesteal_rebirths%Total number of rebirths completed
%lifesteal_rebirth_bonus%Extra max hearts gained from rebirths
%lifesteal_can_rebirth%true / false — whether they meet the heart requirement

Status & Settings

PlaceholderReturns
%lifesteal_is_eliminated%true / false — whether the player is at 0 hearts
%lifesteal_ban_count%How many times the player has been eliminated
%lifesteal_ban_on_zero%true / false — whether elimination bans are enabled
%lifesteal_min_withdraw%Minimum hearts required when withdrawing
%lifesteal_hearts_when_revived%Hearts granted on revival
%lifesteal_revive_beacon_enabled%true / false — whether the Revive Beacon is enabled
%lifesteal_lose_on_non_player_death%true / false — whether PvE deaths cost a heart

Messages & GUI Text

Every GUI title, lore line, and chat message is fully customizable with standard Minecraft color codes (&) inside the gui-text and messages sections of config.yml.

GUI Text

The gui-text section covers the Recipe Editor, the Revive Beacon player picker, and the Rebirth GUI — including separate lore blocks for the ready, not-ready, and maxed-out rebirth states. Rebirth lore supports {hearts}, {required_hearts}, {max_hearts}, {player_money}, {cost_money}, {player_xp}, and {cost_xp}.

Messages

The messages section covers heart gains and losses, withdrawals, eliminations, revives, rebirths, config changes, protection blocks, and the full toggle-system message set (including notifications sent when a toggle is synced from another server).

Note: Run /als reload after making direct changes to config.yml.

Full config.yml

The default configuration, with the GUI text and message sections abbreviated:

# ══════════════════════════════════════════════
#         Anzi Lifesteal - Configuration
# ══════════════════════════════════════════════

# ─── ANZILOCK LICENSE ───────────────────────────
# Insert the license key you received via Discord here (see /claim).
license:
  key: ""

# Starting hearts for new players (1 heart = 1 full vanilla heart)
starting-hearts: 10

# Maximum hearts a player can have
max-hearts: 20

# Minimum hearts a player must be left with when withdrawing
min-withdraw-hearts: 1

# If true, players are banned when they reach 0 hearts
# If false, they stay at 1 heart but don't give hearts on death
ban-on-zero: true

# How long a player is banned each time they lose all hearts.
# Formats: 1m, 1h, 1d, etc. If a value is -1, it's a permanent ban.
# The last value is used if they exceed the list length.
ban-durations:
  - "1h"
  - "24h"
  - "7d"

# How many hearts players have when their ban expires or they are revived.
hearts-when-revived: 1

# If true, the revive beacon item can be used and its recipe works.
enable-revive-beacon: true

# If true, players lose a heart when dying to non-player causes (mobs, lava, etc.)
lose-hearts-on-non-player-death: true

# ─── ANTI SPAWN KILL ────────────────────────────
anti-spawn-kill:
  enabled: true
  max-kills: 3
  time-window: 180
  spawn-radius: 10

# ─── ALT DETECTION ──────────────────────────────
anti-alt:
  enabled: false

# ─── REBIRTH ────────────────────────────────────
rebirth:
  hearts-after-rebirth: 10
  extra-max-hearts-per-rebirth: 1
  required-hearts-percentage: 50
  max-rebirths: -1
  cost-money: 0
  cost-money-multiplier: 1.0
  cost-xp-levels: 0

# ─── MYSQL (Velocity Sync) ──────────────────────
mysql:
  enabled: false
  host: "localhost"
  port: 3306
  database: "lifesteal"
  username: "root"
  password: ""
  pool-size: 10
  server-id: "server-1"

# ─── TOGGLE SYSTEM ──────────────────────────────
toggle:
  sync-interval-seconds: 30

# ─── RECIPES ────────────────────────────────────
recipes:
  heart:
    enabled: true
    shape:
      - "DND"
      - "NGN"
      - "DND"
    ingredients:
      D: DIAMOND
      N: NETHER_STAR
      G: GOLD_INGOT

  revive_beacon:
    enabled: true
    shape:
      - "ENE"
      - "OBO"
      - "OOO"
    ingredients:
      E: ENDER_EYE
      N: NETHER_STAR
      O: OBSIDIAN
      B: BEACON

# ─── GUI TEXT ───────────────────────────────────
# All GUI titles and button labels are configurable here.
gui-text:
  recipe-editor-title: "&6&lRecipe Editor: &e{type}"
  revive-gui-title: "&b&lRevive Beacon - Select Player"
  rebirth-gui-title: "&c&lREBIRTH"
  # ... save/cancel buttons, revive lore, and the full rebirth lore blocks

# ─── MESSAGES ───────────────────────────────────
# All chat messages.
messages:
  heart-gained: "&a+1 ❤ You now have &e{hearts}&a hearts!"
  heart-lost: "&c-1 ❤ You now have &e{hearts}&c hearts!"
  heart-withdrawn: "&aWithdrawn &e{amount}&a heart(s)!"
  banned: "&cYou have lost all your hearts and have been eliminated!"
  revived: "&aYou have been revived with 1 heart!"
  spawn-kill-blocked: "&cSpawn kill protection! No hearts were transferred."
  alt-kill-blocked: "&cAlt account detected! No hearts were transferred."
  rebirth-success: "&a⭐ You have successfully rebirthed!"
  # ... plus the full toggle-system message set