• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Wie findet man heraus ob das nöchste Argument verwendet/benutzt wird?

Minecraft Version
Java

GrafDev

Minecrafter
Registriert
1 Januar 2021
Beiträge
1
Diamanten
50
Mein Problem ist, dass logischer weise, wenn ich dispatchCommand benutze und folgendes schreibe:
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), args[2] + " " + args[3] + " ");
und nur 2 argumente benutze eine Fehlermeldung kommt, weil er ja gerne auch das 3 arg benutzen will.

Ich habe folgenden Code:
Wie kann ich jetzt gucken ob das nächste argument benutzt wird?:
public class executeAsConsole implements CommandExecutor{
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
       
        if (sender instanceof Player)  
            if (args.length != 0){
                if (args[0].equals("exec") || args[0].equals("execute") ){
                    if (args[1].equals("asconsole") ){
                        try {
                //Also: /server exec asconsole ban blabla hacking
                //                               Hier ein argument, da eins
                       
                       
                        } catch (Exception e){
                            p.sendMessage("Ein Fehler ist aufgetreten!");
                        }
                    }
                }
            } else {
               
               
            }
        } else {
            sender.sendMessage("Dieser Befehl kann nur von einem Spieler ausgeführt werden!");
       
        }
       
    }
    return false;
}
 

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
134
Alter
29
Diamanten
121
Minecraft
Avankziar
Wenn ich das richtig lese, gibt die Methode Bukkit.dispatchCommand einen Boolen zurück.
Bedeutet, man könnte immer abfragen ob der zurockgegebene Boolean true oder false ist.
Falls der false ist, hängt man ein weiteres argument dran.
 

Malfrador

Threadripper
Registriert
16 Juni 2013
Beiträge
1.473
Diamanten
296
Minecraft
Malfrador
Du kannst mit args.length schauen, wieviel Argumente angegeben wurden. Und ein nicht angegebenes Argument wird null sein, du kannst also einfach überprüfen ob args[x] == null ist.

Du hast den Try-Block zwar auskommentiert, aber ich bin mir sehr sicher, das er unnötig ist. Try/Catch-Statements sind sehr unschön und sollten wenn möglich vermieden werden. Es gibt valide Nutzungsszenarien, aber in den meisten Fällen ist mit deiner Coe-Logik irgendetwas falsch, wenn ein try/catch benötigt wird.

Ansonsten empfiehlt es sich, einen CommandExecutor pro Command zu registrieren, anstatt im CommandExecutor den Befehl abzufragen (Zeile 6 bei dir). Damit lassen sich dann auch leicht Aliases etc. festlegen. Dein aktueller Code funktioniert im Zweifel noch, ist aber schon seit Ewigkeiten nicht mehr die von der Bukkit-API vorgesehene Nutzung.
 
Oben