ServerPlugin Befehl per Konsole...

Dieses Thema im Forum "Programmierung" wurde erstellt von LRMedia, 24. März 2014.

  1. LRMedia
    Offline

    LRMedia

    Registriert seit:
    26. Januar 2014
    Beiträge:
    7
    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 (Text):
    1.  
    2.   public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    3.     Player p = (Player)sender;
    4.     if ((cmd.getName().equalsIgnoreCase("vote")) &&
    5.       (p.hasPermission("soi.vote")))
    6.     {
    7.       String link = getConfig().getString("Config.link");
    8.       String Servername = getConfig().getString("Config.servername");
    9.       String Award = getConfig().getString("Config.award");
    10.       p.sendMessage("§6--------------[§a " + Servername + " Vote §6]--------------");
    11.       p.sendMessage("");
    12.       p.sendMessage("§a1. §3Link:  §c" + link);
    13.       p.sendMessage("§a2. §3Öffne den Link im deinem Browser.");
    14.       p.sendMessage("§a3. §3Gebe den Sicherheits Code ein.");
    15.       p.sendMessage("§a4. §3Gebe deinen (Minecraft)Namen ein .");
    16.       p.sendMessage("§a5. §3Klicke auf Bewerten..");
    17.       p.sendMessage("§a6. §3Aktuelle Vote Belohnung: §a" + Award);
    18.       p.sendMessage("");
    19.       p.sendMessage("§6---------------[ §aDanke fürs Voten §6]---------------");
    20.     }
    21. return true;
    22.  
    MFG,
    LRMedia
     
    #1
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Du kannst die Methoden wie "sendMessage()" sofort über "sender" ausführen. Also "sender.sendMessage("Nachricht"); Dann ist es egal, ob der CommandSender ein Spieler oder die Konsole ist.
     
    #2
  3. schegar
    Offline

    schegar

    Registriert seit:
    3. Februar 2013
    Beiträge:
    26
    Minecraft:
    schegar10
    bekommst du eine fehlermeldung, wenn du versuchst den command über die konsole auszuführen ?
     
    #3
  4. LRMedia
    Offline

    LRMedia

    Registriert seit:
    26. Januar 2014
    Beiträge:
    7
    Also das der Code dann so aussieht oder?:

    Code (Text):
    1.  
    2.   public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    3.     Player p = (Player)sender;
    4.     if ((cmd.getName().equalsIgnoreCase("vote")) &&
    5.       (p.hasPermission("soi.vote")))
    6.     {
    7.       String link = getConfig().getString("Config.link");
    8.       String Servername = getConfig().getString("Config.servername");
    9.       String Award = getConfig().getString("Config.award");
    10.       sender.sendMessage("§6--------------[§a " + Servername + " Vote §6]--------------");
    11.       sender.sendMessage("");
    12.       sender.sendMessage("§a1. §3Link:  §c" + link);
    13.       sender.sendMessage("§a2. §3Öffne den Link im deinem Browser.");
    14.       sender.sendMessage("§a3. §3Gebe den Sicherheits Code ein.");
    15.       sender.sendMessage("§a4. §3Gebe deinen (Minecraft)Namen ein .");
    16.       sender.sendMessage("§a5. §3Klicke auf Bewerten..");
    17.       sender.sendMessage("§a6. §3Aktuelle Vote Belohnung: §a" + Award);
    18.       sender.sendMessage("");
    19.       sender.sendMessage("§6---------------[ §aDanke fürs Voten §6]---------------");
    20.     }
    21. return true;
    22.  
    - - - 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
     
    #4
  5. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    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
     
    #5
  6. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    " Player p = (Player)sender;" kann weg! Dann musst du die Methode "hasPermission()" über sender aufrufen: "sender.hasPermission("per.mission");
     
    #6
    2 Person(en) gefällt das.
  7. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938

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

    LRMedia

    Registriert seit:
    26. Januar 2014
    Beiträge:
    7
    Habe jetzt alle p. mit sender. ersetzt und Player p ... entfernt. Jetzt fragt die Konsole aber: (Is it up to date?) und meckert das es nicht aktiviert werden konnte.
     
    #8
  9. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Bitte, bitte, poste doch deine komplette Fehlermeldung!
     
    #9
  10. LRMedia
    Offline

    LRMedia

    Registriert seit:
    26. Januar 2014
    Beiträge:
    7
    Geht nun wieder...
    Bloß wenn ich jetzt den Spielernamen ausgeben möchte mache ich das ja per
    Code (Text):
    1. p.getName()
    aber ich sollte ja
    Code (Text):
    1. Player p = (Player) sender;
    löschen (damit es geht) aber wie kann ich nun den Spielernamen ausgeben?
     
    #10
  11. schegar
    Offline

    schegar

    Registriert seit:
    3. Februar 2013
    Beiträge:
    26
    Minecraft:
    schegar10
    Code (Text):
    1. sender.getName()
    das sollte funktionieren ;)
     
    #11
  12. LRMedia
    Offline

    LRMedia

    Registriert seit:
    26. Januar 2014
    Beiträge:
    7
    klar logisch! :)
    Danke!
     
    #12