Suche Script fehler

Dieses Thema im Forum "Programmierung" wurde erstellt von MackerBaron, 23. Dezember 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. MackerBaron
    Offline

    MackerBaron

    Registriert seit:
    22. November 2011
    Beiträge:
    18
    Hei Leute ich such nen fehler im script bitte guckt mal drüber.

    script:

    Code (Text):
    1. public Map<Player, Player> teleport = new HashMap<Player, Player>();
    2.  
    3. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    4. if (cmd.getName().equalsIgnoreCase("tpa")){
    5.     Player player = (Player) sender;
    6.     Player player1 = Bukkit.getPlayer(args[1]);
    7.     teleport.put(player, player1);
    8.     }
    9.    
    10.     if (cmd.getName().equalsIgnoreCase("tpaccept")){
    11.     Player player = (Player) sender;
    12.     if(teleport.containsValue(player)){
    13.     Player player1 = teleport.get(player);
    14.     player1.teleport(player);
    15.     }
    16.     }
    17. }
     
    #1
  2. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    onCommand(bla bla bla) ist dein problem
     
    #2
  3. MackerBaron
    Offline

    MackerBaron

    Registriert seit:
    22. November 2011
    Beiträge:
    18
    bearbeitet und bla bla bla stand da nur weil ich jetzt keinen bock hatte es zu kopieren
     
    #3
  4. 1. Du hast keine Abfrage ob es wirklich ein Spieler oder die Console ist.
    2. Du überprüfst nicht ob Player1 != null ist, wenn ein solcher Spieler nicht existiert.
    3. NEVER EVER PUT PLAYER INTO A HASHMAP. -> Es ist schlecht Player-Objecte zu speichern.
    4. Ansonsten: Wo ist dein Problem? Fehlermeldungen?...
     
    #4
  5. MackerBaron
    Offline

    MackerBaron

    Registriert seit:
    22. November 2011
    Beiträge:
    18
    Fehler:

    Code (Text):
    1. 2012-12-23 10:57:25 [SEVERE] null
    2. org.bukkit.command.CommandException: Unhandled exception executing command 'tpaccept' in plugin UltimateCommands v1.0
    3.     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
    4.     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186)
    5.     at org.bukkit.craftbukkit.v1_4_6.CraftServer.dispatchCommand(CraftServer.java:510)
    6.     at net.minecraft.server.v1_4_6.PlayerConnection.handleCommand(PlayerConnection.java:980)
    7.     at net.minecraft.server.v1_4_6.PlayerConnection.chat(PlayerConnection.java:898)
    8.     at net.minecraft.server.v1_4_6.PlayerConnection.a(PlayerConnection.java:853)
    9.     at net.minecraft.server.v1_4_6.Packet3Chat.handle(Packet3Chat.java:44)
    10.     at net.minecraft.server.v1_4_6.NetworkManager.b(NetworkManager.java:290)
    11.     at net.minecraft.server.v1_4_6.PlayerConnection.d(PlayerConnection.java:112)
    12.     at net.minecraft.server.v1_4_6.ServerConnection.b(SourceFile:39)
    13.     at net.minecraft.server.v1_4_6.DedicatedServerConnection.b(SourceFile:30)
    14.     at net.minecraft.server.v1_4_6.MinecraftServer.r(MinecraftServer.java:598)
    15.     at net.minecraft.server.v1_4_6.DedicatedServer.r(DedicatedServer.java:224)
    16.     at net.minecraft.server.v1_4_6.MinecraftServer.q(MinecraftServer.java:494)
    17.     at net.minecraft.server.v1_4_6.MinecraftServer.run(MinecraftServer.java:427)
    18.     at net.minecraft.server.v1_4_6.ThreadServerApplication.run(SourceFile:849)
    19. Caused by: java.lang.NullPointerException
    20.     at me.Mackerbaron.UC.main.onCommand(main.java:234)
    21.     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    22.     ... 15 more
     
    #5
  6. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Wenn ich mich recht entsinne, hast du gleich am Anfang die Methode void statt boolean verwendet.
    Und ohne Fehlermeldungen, bzw. Hinweise, was daran nicht geht, können wir dir schwer weiterhelfen.
     
    #6
  7. MackerBaron
    Offline

    MackerBaron

    Registriert seit:
    22. November 2011
    Beiträge:
    18
    oh fail falsch abgeschrieben natürlich boolean ich edite es
     
    #7
  8. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Die Fehlermeldung kommt bei /tpa oder /tpaccept? ^^

    Ist der Spieler online, dem du eine Anfrage schickst, bzw. die Anfrage annimmst?
     
    #8
  9. MackerBaron
    Offline

    MackerBaron

    Registriert seit:
    22. November 2011
    Beiträge:
    18
    ja der spieler ist online und beim command /tpaccept
     
    #9
  10. Dein Code ist unübersichtlich...

    BTW:

    containsValue => Überprüft ob ein Wert xy ist, aber
    get(ZZZ) => Hohlt den Wert, der den key ZZZ hat!

    es kann garnicht funktionieren.
     
    #10
  11. MackerBaron
    Offline

    MackerBaron

    Registriert seit:
    22. November 2011
    Beiträge:
    18
    dann gib mir doch bitte einen überarbeiteten code
     
    #11
  12. Wir sind hier im Programmierungs Forum. Du hast einige Tipps bekommen und dein Fehler dort ist entweder ein Flüchtigkeitsfehler oder ein Fehler aus fehlender Kompetenz. Flüchtigkeitsfehler kannst du selber einfach beheben. Fehler aus fehlender Kompetenz sind bei einem solchem Standard Fall total unnötig. Da kannst du auch mal ganz einfach Java lernen, bevor du sowas machst.
     
    #12
  13. MackerBaron
    Offline

    MackerBaron

    Registriert seit:
    22. November 2011
    Beiträge:
    18
    okay ich teste es einfach mal und es war ein flüchtigkeits fehler

    - - - Aktualisiert - - -

    so manf ich bin meinen script code nochmal durch gegeangen da ist vom getten her nichts falsch
     
    #13
  14. Du fragst einmal nach ob der WERT vorhanden ist und dann fragst du nach ob der KEY vorhanden ist. Das sind 2 verschiedene Dinge.
     
    #14
  15. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Der Code mal etwas übersichtlicher gestaltet und verbessert (Abfrage ob Spieler online, args[1] ist NICHT das erste Argument!), aber nicht getestet:
    Code (Text):
    1.  
    2.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
    3.     {
    4.         if (cmd.getName().equalsIgnoreCase("tpa"))
    5.         {
    6.             Player player = (Player) sender;
    7.             try
    8.             {
    9.                 Player player1 = Bukkit.getPlayer(args[0]);
    10.             } catch (Exception e)
    11.             {
    12.                 player.sendMessage("Spieler " + args[0] + " ist nicht online!");
    13.             }
    14.             teleport.put(player, player1);
    15.         }
    16.         if (cmd.getName().equalsIgnoreCase("tpaccept"))
    17.         {
    18.             Player player1 = (Player) sender;
    19.             try
    20.             {
    21.                 Player player = Bukkit.getPlayer(teleport.get(player));
    22.                 player1.teleport(player);
    23.             } catch (Exception e)
    24.             {
    25.                 player1.sendMessage("Der Spieler ist nicht online!");
    26.             }            
    27.         }
    28.     }
    29.  
     
    #15
    1 Person gefällt das.
  16. Gleydar
    Offline

    Gleydar Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    443
    Ort:
    player.getHome()
    Minecraft:
    Gleydar
    Oder nimm einfach Essentials, das funktioniert ganz bestimmt.
     
    #16
Status des Themas:
Es sind keine weiteren Antworten möglich.