Spigot Plugin

LifeStealPlugin

Create a Minecraft Paper plugin for the latest version (1.21.x) called "LifeSteal". Features: 1. Hardcore World - The server must run in hardcore mode. - When a player dies, they are automatically permanently banned. - The ban message should say: "You have died. You can only return if another player revives you." 2. Player Head Drop - When a player dies, they drop their own player head. - The head must preserve the player's skin. - Only one head should drop per death. 3. Revival System - A banned player can be revived using their own player head. - Add the command: /revive <player>

Read the full description

- The command can only be used if the command executor has the correct player's head in their inventory. - When the command is executed: - Remove one player head from the inventory. - Unban the player. - Broadcast: "<player> has been revived!" - The revived player can join the server again. 4. Permissions - lifesteal.revive 5. Config Allow changing: - Ban message - Broadcast messages - Whether heads drop - Whether revival consumes the head 6. Compatibility - Paper 1.21.x - Java 21 - No external dependencies. - Clean, optimized, and well-commented code.

src/main/java/eu/codexe/lifestealplugin/LifeStealPlugin.java
package eu.codexe.lifestealplugin;

import eu.codexe.lifestealplugin.commands.ReviveCommand;
import eu.codexe.lifestealplugin.listeners.PlayerDeathListener;
import eu.codexe.lifestealplugin.managers.RevivalManager;
import eu.codexe.lifestealplugin.managers.SettingsManager;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;

public final class LifeStealPlugin extends JavaPlugin {

    private SettingsManager settingsManager;
    private RevivalManager revivalManager;

    @Override
    public void onEnable() {
        saveDefaultConfig();

        this.settingsManager = new SettingsManager(this);
        this.revivalManager = new RevivalManager(this, settingsManager);

        if (settingsManager.isHardcoreEnabled()) {
            getServer().setHardcore(true);
        }

        Bukkit.getPluginManager().registerEvents(new PlayerDeathListener(this, settingsManager, revivalManager), this);

        ReviveCommand reviveCommand = new ReviveCommand(this, settingsManager, revivalManager);
        PluginCommand command = getCommand("revive");
        if (command != null) {
            command.setExecutor(reviveCommand);
            command.setTabCompleter(reviveCommand);
        }

        getLogger().info("LifeSteal has been enabled.");
    }

    @Override
    public void onDisable() {
        getLogger().info("LifeSteal has been disabled.");
    }
}