ServerPlugin Problem mit meinem TestPlugin

Dieses Thema im Forum "Programmierung" wurde erstellt von Icetea0401, 1. März 2015.

  1. Icetea0401
    Offline

    Icetea0401

    Registriert seit:
    19. Januar 2013
    Beiträge:
    2
    Moinsen,
    Ich habe da mal ein kleines Problem mit meinem Plugin (bewege mich noch auf relativen Neuland).
    Und zwar habe ich in Eclipse keine sichtbaren Fehler, und in der Konsole steht auch das das Plugin erfolgreich geladen wurde, jedoch probiere ich den Command aus und nichts tut sich.

    [​IMG]

    Bei /plugins wird mir das Plugin auch angezeigt.

    Code:


    1. package me.icetea0401.TestPlugin;


    2. import org.bukkit.command.Command;
    3. import org.bukkit.entity.Player;
    4. import org.bukkit.plugin.java.JavaPlugin;

    5. public class TestPlugin extends JavaPlugin {

    6. @Override
    7. public void onDisable() {
    8. System.out.println("Das Plugin wurde deaktiviert");
    9. }
    10. @Override
    11. public void onEnable() {
    12. System.out.println("Das Plugin wurde aktiviert");
    13. }
    14. public boolean onCommand(Command sender, Command cmd, String cmdLabel, String [] args){
    15. Player p = (Player)sender;
    16. if(cmd.getName().equalsIgnoreCase("test")){
    17. if(args.length == 0){
    18. p.sendMessage("Dies ist der Befehl Test");
    19. }
    20. }
    21. return true;




    22. }




    23. }


    plugin.yml:

    1. name: TestPlugin
    2. author: Iceteat0401
    3. version: 0.1

    4. main: me.icetea0401.TestPlugin.TestPlugin

    5. commands:
    6. test:
    7. description: Eine Beschreibung


    Wäre sehr nett wenn mir da jemand weiterhelfen könnte. :)

    Achja und das Plugin ist für die Version 1.8 gedacht.

    MFG Icetea.
     
    #1
  2. Dir ist schon bewusst, dass YML eingerückt werden muss? Ansonsten werden diese nicht erkannt (Sind keine Kinder von commands).
     
    #2
  3. Boeckiwissen
    Offline

    Boeckiwissen

    Registriert seit:
    23. Dezember 2014
    Beiträge:
    33
    Außerdem müsste das doch heißen:

    Code (Text):
    1.  public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String [] args){
     
    #3
  4. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    Ich denk das war das Forum, denn das Plugin wird ja laut Log korrekt geladen.

    @Icetea0401 Pack das ganze nochmal in ordentliche Code Tags.
     
    #4
  5. Boeckiwissen
    Offline

    Boeckiwissen

    Registriert seit:
    23. Dezember 2014
    Beiträge:
    33
    @SpiritWalker Seid wann braucht man für Commands einen EventHandler oder Listener?
     
    #5
  6. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    Stimmt, man kann es ja auch direkt in die Pluginklasse schreiben. Mein Fehler. Habs editiert
     
    #6
  7. Kronos197
    Offline

    Kronos197

    Registriert seit:
    20. Dezember 2013
    Beiträge:
    153
    Ort:
    Frankfurt
    Minecraft:
    Kronos197
    Du hast einfach vergessen den Command zu laden! (in der void onEnable())
     
    #7
  8. Icetea0401
    Offline

    Icetea0401

    Registriert seit:
    19. Januar 2013
    Beiträge:
    2
    Alles klar, ich danke vielmals :)

    MFG Icetea
     
    #8
  9. pasce1998
    Offline

    pasce1998

    Registriert seit:
    20. April 2014
    Beiträge:
    21
    Ort:
    Hessen
    Minecraft:
    pasce1998
    Falsch! Commands die in der Hauptklasse sind müssen nicht geladen werden, das werden sie automatisch ;)

    @Icetea0401

    Code (Text):
    1.  
    2.     @Override
    3.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    4.         if(command.getName().equalsIgnoreCase("test")){
    5.             if(!(sender instanceof Player)){
    6.                 sender.sendMessage("Du musst ein Spieler sein!");
    7.                 return true;
    8.             }
    9.             Player p = (Player)sender;
    10.             if(args.length == 0){
    11.                 p.sendMessage("Dies ist der Befehl Test");
    12.                 return true;
    13.             }
    14.             return false;
    15.         }
    16.         return false;
    17.     }
    18.  
    Du hast zum einen das "@Override" vergessen. Zum anderen solltest du nicht einfach den CommandSender zu einem Spieler casten, statdessen zuerst abfragen, ob der CommandSender überhaupt ein Spieler ist.
    Zum anderen darfst du keine Argumente in Minecraft eingeben, da du ja überprüfst, ob die Argumentenlänge 0 ist
     
    #9