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.
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.");
}
}