[Java] Bukkit Plugin -> [args] Problem

08/18/2012 16:22 Temphis#1
Naja , ich habe einen Kick-Befehl programmiert , und wenn man ihn dann ausführt , soll eine Broadcast-Message gesendet werden , wo auch der Grund des Kicks steht.

Das Problem ist jetzt: Er nimmt nur 1 Wort als Grund an.

Wie kann ich das erweitern, das ich mehrere Wörter als Grund angeben kann?

[Only registered and activated users can see links. Click Here To Register...]
08/18/2012 16:39 SmackJew#2
1. Du testest auf genau zwei Fälle, Fall 1 ist die richtige Anzahl and Argumenten und Fall 2 sind gar keine Argumente. Wenn jemand nun nur ein Argument übergibt bekommt er keine "Too few arguments" Nachricht.

2. Dein Problem rührt daher, dass Argumente bei der Übergabe durch Leerzeichen getrennt werden. Versuche es 'mal mit

Code:
java Kick Blubuser123 'Player is griefing'
oder

Code:
java Kick Blubuser123 "Player is griefing"
08/18/2012 16:55 Temphis#3
Geht immernoch nicht...

Kann mir wer bitte helfen?!
08/18/2012 17:01 xKoKSii#4
Quote:
Originally Posted by xWeedy View Post
Naja , ich habe einen Kick-Befehl programmiert , und wenn man ihn dann ausführt , soll eine Broadcast-Message gesendet werden , wo auch der Grund des Kicks steht.

Das Problem ist jetzt: Er nimmt nur 1 Wort als Grund an.

Wie kann ich das erweitern, das ich mehrere Wörter als Grund angeben kann?

[Only registered and activated users can see links. Click Here To Register...]
Ok also das alles ist einfach :)

Code:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
 if (cmd.getName().equalsIgnoreCase("cmd") && args.length == 0) {
            if (sender.isOp() || sender.hasPermission(sender, "lalalal.llalalal")) {
                sendHelp(sender);
            } else
                sender.sendMessage(ChatColor.RED + "Du hast dafür keine Rechte!");
        } else if (cmd.getName().equalsIgnoreCase("cmd") && args.length == 1) {
            if (sender.isOp() || sender.hasPermission(sender, "lalalal.llalalal")) {
                sendHelp(sender);
            } else
                sender.sendMessage(ChatColor.RED + "Du hast dafür keine Rechte!");
        } else if (cmd.getName().equalsIgnoreCase("cmd") && args.length > 2 || args.length == 2) {
            if (sender.isOp() || sender.hasPermission(sender, "lalalal.llalalal")) {
                Player zkp = bukkit.getServer().getPlayer(args[0]);

                String grund = args[1] + " ";

                for (int i = 2; i < args.length; i++) {
                    grund = grund+ args[i] + " ";
                }

                sender.sendMessage(ChatColor.GRAY + "Der Spieler " + zkp .getName() + "wurde gekickt! Grund: " + grund);

            } else
                sender.sendMessage(ChatColor.RED + "Du hast dafür keine Rechte!");
        }
08/18/2012 17:03 SmackJew#5
Quote:
Originally Posted by xWeedy View Post
Geht immernoch nicht...

Kann mir wer bitte helfen?!
Dann setze halt die Worte zusammen. Sei 'mal ein bisschen kreativ.

Code:
if(args.length > 1) {
    
    String sentence = "";
    for(int i = 1; i < args.length; i++) {
        sentence += args[i];
        sentence += " ";  
    }
}
08/18/2012 17:10 xKoKSii#6
Ja das wäre ne einfachere Variante gewesen als den ganzen Code zu schreiben :D
08/18/2012 17:19 Temphis#7
Gut , denn Snippet , den du mir geschickt hast , verstehe ich.

Was ich jetzt aber nicht verstehe: Wie ich ihn genau einfüge. Bin noch relativ neu in Java , also bitte nicht so streng :)