⚡ P-LifeSteal | 1.21.11 SUPPORT | UPDATED (All 1.21.x versions supported) icon

⚡ P-LifeSteal | 1.21.11 SUPPORT | UPDATED (All 1.21.x versions supported) -----

Fork of original P-Lifesteal plugin updated to work with latest versions of minecraft




P-LifeSteal v2.0.0 — Complete Changelog

pom.xml
Build Configuration
Plugin version bumped from 1.9.6 → 2.0.0
Java version updated from 17 → 21
Maven Compiler source updated from 17 → 21
Maven Compiler target updated from 17 → 21
Server API changed from org.spigotmc:spigot-api:1.21.1-R0.1-SNAPSHOT → io.papermc.paper :paper-api:1.21.4-R0.1-SNAPSHOT
CommandAPI changed from dev.jorel:commandapi-bukkit-shade:9.5.3 (compile) → dev.jorel:commandapi-paper-core:11.0.0 (provided)
PlaceholderAPI version updated from 2.11.3 → 2.11.6
PlaceholderAPI repository URL fixed from https://repo.extendedclip.com/content/repositories/placeholderapi/https://repo.extendedclip.com/releases/
Sonatype repository replaced with PaperMC repository ( https://repo.papermc.io/repository/maven-public/)
maven-shade-plugin entirely removed (CommandAPI no longer shaded into JAR)
maven-jar-plugin outputDirectory fixed from hardcoded Windows path F:\newplugtesting\P-LifeSteal\target → platform-independent ${project.build.directory}

plugin.yml
Plugin Metadata
api-version updated from 1.18 → 1.21
Added softdepend: [PlaceholderAPI, CommandAPI]
Removed the old multi-line softdepend block for PlaceholderAPI

CommandAPIDependency.java
New File
New class eu.vibemc.lifesteal.other.CommandAPIDependency created
Checks if CommandAPI plugin is already installed on the server
If not found, auto-downloads CommandAPI-11.0.0-Paper.jar from GitHub releases
Provides clear restart instructions in the console if download was needed
Shows manual download URL if auto download fails

Main.java
Plugin Main Class
Removed import dev.jorel.commandapi.CommandAPIBukkitConfig
Removed import dev.jorel.commandapi.CommandAPIConfig
Removed CommandAPI.onLoad(new CommandAPIBukkitConfig(this).silentLogs(false)) from onLoad()
Added commandApiAvailable boolean field to track CommandAPI status
Added CommandAPIDependency.ensureInstalled() check in onLoad() triggers auto-download if needed
Added early return in onLoad() if CommandAPI is not available
Added graceful disable in onEnable() if CommandAPI is not loaded (shows restart message)
Added guard in onDisable() to skip recipe cleanup if CommandAPI wasn't available
Changed loadCommands() to use fully qualified class name to avoid ClassNotFoundError when CommandAPI isn't loaded

HeartsCommands.java
Heart Management Commands
Removed import dev.jorel.commandapi.arguments.PlayerArgument
Added import dev.jorel.commandapi.arguments.PlayerProfileArgument
Added import org.bukkit.profile.PlayerProfile
Added import java.util.List

add command: PlayerArgument("player") → PlayerProfileArgument("player")

add command: (Player) args.get("player")→ Bukkit.getPlayer(profiles.getFirst().getUniqueId())

set command: PlayerArgument("player") → PlayerProfileArgument("player")

set command: (Player) args.get("player")→ Bukkit.getPlayer(profiles.getFirst().getUniqueId())

remove command: PlayerArgument("player") → PlayerProfileArgument("player")

remove command: (Player) args.get("player")→ Bukkit.getPlayer(profiles.getFirst().getUniqueId())
check command: PlayerArgument("player") → PlayerProfileArgument("player")
check command: (Player) args.get("player")→ Bukkit.getPlayer(profiles.getFirst().getUniqueId())

ItemsCommands.java
Item Give Commands
Removed import dev.jorel.commandapi.arguments.PlayerArgument
Added import dev.jorel.commandapi.arguments.PlayerProfileArgument
Added import org.bukkit.profile.PlayerProfile
Added import java.util.List

extra_heart command: PlayerArgument("player") → PlayerProfileArgument("player")
extra_heart command: (Player) args.get("player")→ Bukkit.getPlayer(profiles.getFirst().getUniqueId())
revive_book command: PlayerArgument("player") → PlayerProfileArgument("player")
revive_book command: (Player) args.get("player") → Bukkit.getPlayer(profiles.getFirst().getUniqueId())

BansCommands.java
Ban Management Commands
Removed import dev.jorel.commandapi.arguments.OfflinePlayerArgument
Added import dev.jorel.commandapi.arguments.PlayerProfileArgument
Added import org.bukkit.Bukkit
Added import org.bukkit.profile.PlayerProfile
Added import java.util.List

remove command: OfflinePlayerArgument("player") → PlayerProfileArgument("player")

remove command: (OfflinePlayer) args.get("player") → Bukkit.getOfflinePlayer(profile.getUniqueId())

Attribute Renaming (MC 1.21.3+ API Change)
Attribute.GENERIC_MAX_HEALTH → Attribute.MAX_HEALTH
----------, Mar 20, 2026

Resource Information
Author:
----------
Total Downloads: 2,195
First Release: Sep 8, 2024
Last Update: Mar 20, 2026
Category: ---------------
All-Time Rating:
1 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings