Spigot Plugin

HeldenHearts

Erstelle ein Minecraft Paper 1.21.11 Plugin namens HeldenHearts. Herzen-System: Über der Hotbar sollen genau 3 hellblaue Herzen wie auf dem beigefügten Bild angezeigt werden. Die normalen Minecraft-Herzen bleiben unverändert sichtbar. Die Anzeige soll optisch möglichst exakt wie auf dem Bild aussehen. /helden hearts give <spieler> <anzahl> gibt dem Spieler die angegebene Anzahl Herzen. /helden hearts give all <anzahl> gibt allen Spielern die angegebene Anzahl Herzen. /helden hearts check <spieler> zeigt, wie viele Herzen der Spieler besitzt.

Read the full description

/helden hearts check all zeigt eine Liste aller Spieler und wie viele Herzen jeder besitzt. Die Anzahl der Herzen muss gespeichert werden und nach einem Serverneustart erhalten bleiben. Kopfgeld-System: Oberhalb der Herzen soll ein schwarzes Feld mit ? angezeigt werden, solange kein Kopfgeld aktiv ist. /helden kopfgeld reroll startet eine neue Kopfgeld-Zuweisung. Jeder Spieler bekommt genau einen anderen Spieler als Kopfgeldziel. Die Kopfgelder müssen gegenseitig als Paare funktionieren: Wenn Spieler A Spieler B als Ziel bekommt, muss Spieler B automatisch Spieler A als Ziel bekommen. Beispiel: Wenn Rynex mein Kopfgeldziel ist, muss ich gleichzeitig Rynex' Kopfgeldziel sein. Kein Spieler darf sich selbst als Ziel bekommen. Oberhalb der Herzen wird nach dem Reroll das Minecraft-Skin-Kopf-Icon des jeweiligen Kopfgeldziels angezeigt, nicht mehr das ?. Jeder Spieler soll dabei seinen eigenen Ziel-Spielerkopf sehen. /helden kopfgeld end beendet/pausiert die aktuelle Kopfgeld-Runde und setzt die Anzeige wieder auf ?. Die Kopfgeld-Ziele müssen gespeichert werden. Wichtig: Paper 1.21.11, vollständiges funktionierendes Plugin, keine Platzhalter und keine Mockup-Funktionen. Gib das fertige Projekt so aus, dass es direkt zu einer .jar gebaut werden kann.

src/main/java/eu/codexe/heldenhearts/HeldenHeartsPlugin.java
package eu.codexe.heldenhearts;

import eu.codexe.heldenhearts.commands.HeldenCommand;
import eu.codexe.heldenhearts.hud.HudManager;
import eu.codexe.heldenhearts.listeners.PlayerListener;
import eu.codexe.heldenhearts.storage.SQLiteStorage;
import eu.codexe.heldenhearts.storage.StorageManager;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;

public final class HeldenHeartsPlugin extends JavaPlugin {

    private StorageManager storage;
    private HudManager hudManager;

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

        storage = new SQLiteStorage(this);
        storage.initialize();

        hudManager = new HudManager(this, storage);
        hudManager.start();

        getServer().getPluginManager().registerEvents(
                new PlayerListener(this, storage, hudManager),
                this
        );

        PluginCommand command = getCommand("helden");
        if (command != null) {
            HeldenCommand heldenCommand = new HeldenCommand(this, storage, hudManager);
            command.setExecutor(heldenCommand);
            command.setTabCompleter(heldenCommand);
        }

        getLogger().info("HeldenHearts wurde aktiviert.");
    }

    @Override
    public void onDisable() {
        if (hudManager != null) {
            hudManager.stop();
        }
        if (storage != null) {
            storage.close();
        }
        getLogger().info("HeldenHearts wurde deaktiviert.");
    }

    public StorageManager getStorage() {
        return storage;
    }

    public HudManager getHudManager() {
        return hudManager;
    }
}