1. 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!

PlugIn 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
     
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.065
    Geschlecht:
    männlich
    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.
     
  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 ?
     
  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
     
  5. SasukeKawaii
    Offline

    SasukeKawaii Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    1.006
    Geschlecht:
    männlich
    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
     
  6. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.065
    Geschlecht:
    männlich
    " Player p = (Player)sender;" kann weg! Dann musst du die Methode "hasPermission()" über sender aufrufen: "sender.hasPermission("per.mission");
     
    • Gefällt mir Gefällt mir x 2
  7. SasukeKawaii
    Offline

    SasukeKawaii Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    1.006
    Geschlecht:
    männlich

    Kann nicht nur, sollte sogar. Den Player auf dei Konsole zu casten ist der Fehler. Für das nächste Mal :)
     
  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.
     
  9. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.065
    Geschlecht:
    männlich
    Bitte, bitte, poste doch deine komplette Fehlermeldung!
     
  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?
     
  11. schegar
    Offline

    schegar

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

    LRMedia

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