Skip to main content

Wie erstelle ich einen Command

Beispiel Klasse komplett
package de.cj.core.paper.commands;

import de.cj.api.commands.BaseCommand;
import de.cj.api.commands.annotation.CommandAlias;
import de.cj.api.commands.annotation.Default;
import de.cj.api.commands.annotation.Description;
import de.cj.core.paper.language.Message;
import de.cj.core.paper.language.SendMsg;
import de.cj.core.paper.utils.Get;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

@SuppressWarnings("unused")
@CommandAlias("help|hilfe|?")
@Description("Befehlshilfe anzeigen")
public class HilfeCommand extends BaseCommand {

    /**
     * Help Command
     * @param sender executer
     */
    @Default
    public void onHilfe(CommandSender sender) {
        if (sender instanceof Player) {
            SendMsg.largeMessage(sender,
                    //Plugin Admin
                    (sender.hasPermission("junkiesys.admin") ? Message.Msg("Help.RunCommand", "jcore", "Hilfe zu den Core System Commands") : null),
                    //Team only Module
                    (Get.BaseCfg().isEnableRailway() && sender.hasPermission("junkiesys.railway") ? Message.Msg("Help.RunCommand", "rail", "Hilfe zum Schienensystem") : null),
                    (Get.BaseCfg().isEnableCommandSyncer() && sender.hasPermission("junkiesys.sync") ? Message.Msg("Help.RunCommand", "sync", "Hilfe zum Command Syncer") : null),
                    //Base Commands
                    Message.Msg("Help.RunCommand", "bans", "Link zur Banliste"),
                    Message.Msg("Help.RunCommand", "dc", "Link zum Discord Server"),
                    Message.Msg("Help.RunCommand", "handbuch", "Gibt dir eine Kopie des Spieler Handbuchs"),
                    Message.Msg("Help.RunCommand", "home", "Teleportiere dich zu deinem Homepunkt"),
                    Message.Msg("Help.RunCommand", "homepage", "Link zur Homepage"),
                    Message.Msg("Help.RunCommand", "livemaps", "Link zu den Livemaps"),
                    Message.Msg("Help.RunCommand", "regeln", "Link zur Regel Seite"),
                    Message.Msg("Help.RunCommand", "sethome", "Setze deinen Homepunkt"),
                    Message.Msg("Help.RunCommand", "spawn", "Teleportiere dich zum Spawn"),
                    Message.Msg("Help.RunCommand", "streamer", "Link zur Streamer Übersicht"),
                    Message.Msg("Help.RunCommand", "support", "Link zum Ticketsystem"),
                    Message.Msg("Help.RunCommand", "ts", "Link zum TeamSpeak Server"),
                    Message.Msg("Help.RunCommand", "voten", "Link zur Voting Seite"),

                    //Player Commands if Module enabled
                    (Get.BaseCfg().isEnableClaimSystem() ? Message.Msg("Help.RunCommand", "zz", "Hilfe zum Zonensystem") : null),
                    (Get.BaseCfg().isEnablePvpManager() ? Message.Msg("Help.RunCommand", "pvp", "Hilfe zum PvP System") : null)

            );
        } else SendMsg.PlayerOnly(sender);
    }
}

Erste Schritte (zwanghaft notwendig)

Eine Command Klasse muss immer den BaseCommand der API extenden:

public class CommandClasse extends BaseCommand {

Über der Klassen Definition muss der Hauptbefehl, Beschreibung und optional eine Berechtigung gesetzt werden:

@CommandAlias("jcore|jc|junkiecore")
@Description("Alle Befehle die mit dem Core System zutun haben.")
@CommandPermission("junkiesys.admin")
public class JunkieCoreCommand extends BaseCommand {

Annotations

@CommandAlias
@CommandAlias

Über diese Annotation ist es dir möglich den Hauptbefehl zu definieren. Als Beispiel wurde hierbei der Core Command vom Core System genommen welcher als "jcore", "jc" und "junkiecore" benutzt werden kann.

@CommandAlias("jcore|jc|junkiecore")
@Description
@Description

Diese Annotation gibt dir die Möglichkeit eine Beschreibung für deinen Command hinzuzufügen.  Als Beispiel wurde für den Core Command die Beschreibung "Alle Befehle die mit dem Core System zutun haben." gewählt.

@Description("Alle Befehle die mit dem Core System zutun haben.")
@CommandPermission
@CommandPermission

Mit dieser Annotation kannst du eine Berechtigung für deinen Command hinzufügen. Nur Spieler welche über diese Berechtigung verfügen sind in der Lage diesen Befehlt zu sehen und auszuführen. Als Beispiel wurde für den Core Command die Berechtigung "junkiesys.admin" gewählt.

@CommandPermission("junkiesys.admin")

Die oben aufgeführten Annotationen müssen oberhalb der Klassen Definition stehen!

Richtig:

@CommandAlias("jcore|jc|junkiecore")
@Description("Alle Befehle die mit dem Core System zutun haben.")
@CommandPermission("junkiesys.admin")
public class JunkieCoreCommand extends BaseCommand {

Falsch wäre zum Beispiel:

public class JunkieCoreCommand extends BaseCommand {
@CommandAlias("jcore|jc|junkiecore")
@Description("Alle Befehle die mit dem Core System zutun haben.")
@CommandPermission("junkiesys.admin")