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

Befehl per Konsole...

LRMedia

Minecrafter
Registriert
26 Januar 2014
Beiträge
7
Diamanten
0
Hey,

Ich fange nun nach einer sehr langen Pause wieder damit an Bukkit Plugins zu programmieren.
Leider habe ich einiges wieder vergessen... :(
Nun meine Frage: Wie schaffe ich es das ein Command für einen Spieler und für die Konsole ausführbar ist?

Hier mein erster Command: (vielleicht könnt ihrs ja mal als Beispiel so umwandeln das der Command für die Konsole und die Spieler verfügbar ist...)

Code:
  public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    Player p = (Player)sender;
    if ((cmd.getName().equalsIgnoreCase("vote")) && 
      (p.hasPermission("soi.vote")))
    {
      String link = getConfig().getString("Config.link");
      String Servername = getConfig().getString("Config.servername");
      String Award = getConfig().getString("Config.award");
      p.sendMessage("§6--------------[§a " + Servername + " Vote §6]--------------");
      p.sendMessage("");
      p.sendMessage("§a1. §3Link:  §c" + link);
      p.sendMessage("§a2. §3Öffne den Link im deinem Browser.");
      p.sendMessage("§a3. §3Gebe den Sicherheits Code ein.");
      p.sendMessage("§a4. §3Gebe deinen (Minecraft)Namen ein .");
      p.sendMessage("§a5. §3Klicke auf Bewerten..");
      p.sendMessage("§a6. §3Aktuelle Vote Belohnung: §a" + Award);
      p.sendMessage("");
      p.sendMessage("§6---------------[ §aDanke fürs Voten §6]---------------");
    }
return true;

MFG,
LRMedia
 

LRMedia

Minecrafter
Registriert
26 Januar 2014
Beiträge
7
Diamanten
0
Also das der Code dann so aussieht oder?:

Code:
  public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    Player p = (Player)sender;
    if ((cmd.getName().equalsIgnoreCase("vote")) && 
      (p.hasPermission("soi.vote")))
    {
      String link = getConfig().getString("Config.link");
      String Servername = getConfig().getString("Config.servername");
      String Award = getConfig().getString("Config.award");
      sender.sendMessage("§6--------------[§a " + Servername + " Vote §6]--------------");
      sender.sendMessage("");
      sender.sendMessage("§a1. §3Link:  §c" + link);
      sender.sendMessage("§a2. §3Öffne den Link im deinem Browser.");
      sender.sendMessage("§a3. §3Gebe den Sicherheits Code ein.");
      sender.sendMessage("§a4. §3Gebe deinen (Minecraft)Namen ein .");
      sender.sendMessage("§a5. §3Klicke auf Bewerten..");
      sender.sendMessage("§a6. §3Aktuelle Vote Belohnung: §a" + Award);
      sender.sendMessage("");
      sender.sendMessage("§6---------------[ §aDanke fürs Voten §6]---------------");
    }
return true;

- - - Aktualisiert - - -

@schegar

Ja. Das kommt als Fehlermeldung:
java.lang.ClassCastException: org.bukkit.craftbukkit.v1_7_R1.command.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player
 

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
Ich wuerde einfach erst pruefen, ob der sender eine Instanz von der Player Klasse ist und dann die Permissions ueberpruefen. Ansonsten (wenns net die konsole ist isses n player) dann ueberpruefst du die perms. Also der Konsole brauchst(solltest) du keine perms abfragen.

Daher dein error
 

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
" Player p = (Player)sender;" kann weg! Dann musst du die Methode "hasPermission()" über sender aufrufen: "sender.hasPermission("per.mission");


Kann nicht nur, sollte sogar. Den Player auf dei Konsole zu casten ist der Fehler. Für das nächste Mal :)
 

LRMedia

Minecrafter
Registriert
26 Januar 2014
Beiträge
7
Diamanten
0
Geht nun wieder...
Bloß wenn ich jetzt den Spielernamen ausgeben möchte mache ich das ja per
Code:
p.getName()
aber ich sollte ja
Code:
Player p = (Player) sender;
löschen (damit es geht) aber wie kann ich nun den Spielernamen ausgeben?
 
Oben