• 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!

Spigot Falsche Nachricht wird gesendet

realMaxW

Minecrafter
Gesperrt
Registriert
31 März 2019
Beiträge
16
Alter
25
Diamanten
302
Minecraft
DiesesForum
Hallo miteinander,

Ich bin gerade dabei ein Plugin zu schreiben und habe dort auch mehrere Argumente benutzt.
Hier mal der Code:

Plugin.java:
public class Plugin implements CommandExecutor {
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel, String[] args) {
        Player p = (Player) sender;
        if(cmd.getName().equalsIgnoreCase("pl")) {
            if(p.hasPermission("pl.perms.use") || p.isOp()) {
                p.playSound(p.getLocation(), Sound.EXPLODE, 3, 1);
                p.sendMessage("");
                p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                p.sendMessage("");
                p.sendMessage("§7/pl version | §cZeigt die Aktuelle Version an");
                p.sendMessage("§7/pl info player <Name> | §cZeige Informationen über einen Spieler an");
                p.sendMessage("");
                p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                if(args.length == 1) {
                    if(args[0].equalsIgnoreCase("version")) {
                        p.playSound(p.getLocation(), Sound.EXPLODE, 3, 1);
                        p.sendMessage("");
                        p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                        p.sendMessage("");
                        p.sendMessage("§7Aktuelle Version: §c1.0");
                        p.sendMessage("§7Entwickler: §crealMaxW (DiesesForum)");
                        p.sendMessage("§7Letztes Update: §c14.06.2019");
                        p.sendMessage("");
                        p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                    }else if(args[0].equalsIgnoreCase("info")) {
                        if(args[1].equalsIgnoreCase("player")) {
                                Player target = Bukkit.getPlayer(args[2]);
                                if(target != null) {
                                p.playSound(p.getLocation(), Sound.EXPLODE, 3, 1);
                                p.sendMessage("");
                                p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                                p.sendMessage("");
                                p.sendMessage("§7Benutzername: §c" + target.getName());
                                p.sendMessage("§7IP-Adresse: §c" + target.getAddress());
                                p.sendMessage("§7Rang: §cVerfügbar ab der Core-Version 1.1.2");
                                p.sendMessage("");
                                p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                                }
                                }
                                
                            }
                         }

                    }
                }
        return false;
    }

}

Wenn man "/pl" oder "/pl version" eingibt funktioniert es so wie es soll, allerdings wenn man z.b. "/pl info player realMaxW" eingibt, wird die Nachricht von "/pl" ausgegeben und nicht die die für "/pl info player realMaxW" vorgegeben ist.

Kann mir jemand helfen? :eek:

Beste Grüße,
Max W.
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
316
Minecraft
BloodSKreaper
Hallo miteinander,

Ich bin gerade dabei ein Plugin zu schreiben und habe dort auch mehrere Argumente benutzt.
Hier mal der Code:

Plugin.java:
public class Plugin implements CommandExecutor {
   
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel, String[] args) {
        Player p = (Player) sender;
        if(cmd.getName().equalsIgnoreCase("pl")) {
            if(p.hasPermission("pl.perms.use") || p.isOp()) {
                p.playSound(p.getLocation(), Sound.EXPLODE, 3, 1);
                p.sendMessage("");
                p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                p.sendMessage("");
                p.sendMessage("§7/pl version | §cZeigt die Aktuelle Version an");
                p.sendMessage("§7/pl info player <Name> | §cZeige Informationen über einen Spieler an");
                p.sendMessage("");
                p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                if(args.length == 1) {
                    if(args[0].equalsIgnoreCase("version")) {
                        p.playSound(p.getLocation(), Sound.EXPLODE, 3, 1);
                        p.sendMessage("");
                        p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                        p.sendMessage("");
                        p.sendMessage("§7Aktuelle Version: §c1.0");
                        p.sendMessage("§7Entwickler: §crealMaxW (DiesesForum)");
                        p.sendMessage("§7Letztes Update: §c14.06.2019");
                        p.sendMessage("");
                        p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                    }else if(args[0].equalsIgnoreCase("info")) {
                        if(args[1].equalsIgnoreCase("player")) {
                                Player target = Bukkit.getPlayer(args[2]);
                                if(target != null) {
                                p.playSound(p.getLocation(), Sound.EXPLODE, 3, 1);
                                p.sendMessage("");
                                p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                                p.sendMessage("");
                                p.sendMessage("§7Benutzername: §c" + target.getName());
                                p.sendMessage("§7IP-Adresse: §c" + target.getAddress());
                                p.sendMessage("§7Rang: §cVerfügbar ab der Core-Version 1.1.2");
                                p.sendMessage("");
                                p.sendMessage("§7§m------------§7[§c§lPlugin§7]§7§m------------");
                                }
                                }
                               
                            }
                         }

                    }
                }
        return false;
    }

}

Wenn man "/pl" oder "/pl version" eingibt funktioniert es so wie es soll, allerdings wenn man z.b. "/pl info player realMaxW" eingibt, wird die Nachricht von "/pl" ausgegeben und nicht die die für "/pl info player realMaxW" vorgegeben ist.

Kann mir jemand helfen? :eek:

Beste Grüße,
Max W.
Laut deinem Code soll doch genau das passieren.

Wenn command = "pl" und Spieler hat permission "pl.perms.use" dann: Routine für /pl

Du müsstest hier einen Check einfügen, ob NUR "pl" eingegeben wurde, also args.length = 0 ist.

Weiter in deinem Code prüfst du, ob args.length = 1 ist. Da dies bei dem Command "/pl info player realMaxW" nicht der Fall ist, wird deine verschachtelte Routine nicht ausgeführt.

Freundliche Grüße
BloodSKreaper
 

realMaxW

Minecrafter
Gesperrt
Registriert
31 März 2019
Beiträge
16
Alter
25
Diamanten
302
Minecraft
DiesesForum
Hallo @BloodSKreaper,


Vielen dank für deine Hilfe.
Ich habe jetzt einen Check eingefügt, ob nur /pl eingegeben wird, oder mit mehreren args z.b. "/pl info player realMaxW".
Allerdings wird jetzt bei /pl info... garkeine Nachricht ausgeführt aber die anderen Commands (/pl & /pl version) funktionieren.
Zudem wird in der Konsole auch keine Fehlermeldung gesendet.

Beste Grüße,
Max W.
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
316
Minecraft
BloodSKreaper
Hallo @BloodSKreaper,


Vielen dank für deine Hilfe.
Ich habe jetzt einen Check eingefügt, ob nur /pl eingegeben wird, oder mit mehreren args z.b. "/pl info player realMaxW".
Allerdings wird jetzt bei /pl info... garkeine Nachricht ausgeführt aber die anderen Commands (/pl & /pl version) funktionieren.
Zudem wird in der Konsole auch keine Fehlermeldung gesendet.

Beste Grüße,
Max W.
Wie bereits erwähnt prüfst du vor der Ausführung des "pl info" Befehls, ob die anzahl der übergebenen Argumente =1 ist. Da du bei "pl info play NAME" 3 Argumente hast, kann dein Befehl aus logischer Sicht nicht so ausgeführt werden, wie du willst. Dein Programm verzweigt also nicht, sondern geht einfach bis zum Ende der Methode. Das musst du noch abändern.

Freundliche Grüße
BloodSKreaper

Edit: dein aktueller Coder könnte hier hilfreich sein, wenn du noch Probleme hast
 
Oben