ServerPlugin NullPointerException? Wieso?

Dieses Thema im Forum "Programmierung" wurde erstellt von HeadiPlays, 14. August 2014.

  1. HeadiPlays
    Offline

    HeadiPlays

    Registriert seit:
    8. Februar 2014
    Beiträge:
    45
    Ort:
    Bayern
    Minecraft:
    HeadShotNoob
    Heyo,

    ich würde gerne wissen, wieso ich hier eine NullPointerException bekomme?

    Code (Text):
    1.     @EventHandler
    2.     public void on(ProjectileLaunchEvent e) {
    3.        
    4.         if(e.getEntity() instanceof Arrow) {
    5.             Arrow a = (Arrow) e.getEntity();
    6.             if(a.getShooter() instanceof Player) {
    7.                 Player p = (Player) a.getShooter();
    8.                 if(p.getItemInHand().getType() == Material.BOW) {
    9.                     if(p.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("SUPERBOW")) {
    10.                         p.setItemInHand(new ItemStack(Material.AIR));
    11.                     }
    12.                 }
    13.             }
    14.         }
    Freue mich über jede Hilfe! c:
     
    #1
  2. combo
    Offline

    combo

    Registriert seit:
    16. Juli 2012
    Beiträge:
    160
    Minecraft:
    combo5
    lass mal
    if(a.getShooter() instanceof Player)

    weg ist eh sinnlos da eine Konsole eh keine Pfeile schießen kann und das auch nicht passieren wird kannst du es einfach raus lassen.
    Tipp: NullPointerExceptions entstehen dadurch das etwas das du abfragst gar nicht vorhanden ist!
     
    #2
  3. HeadiPlays
    Offline

    HeadiPlays

    Registriert seit:
    8. Februar 2014
    Beiträge:
    45
    Ort:
    Bayern
    Minecraft:
    HeadShotNoob
    Also, ich habe keine Ahnung wie die NullPointer sich bildet, denn man bekommt einen normalen bogen, und wenn man mit dem schießt, dann haut er mir die exception aus, man kann aber einen bogen kaufen, der heißt superbow mit einem Schuss.
     
    #3
  4. combo
    Offline

    combo

    Registriert seit:
    16. Juli 2012
    Beiträge:
    160
    Minecraft:
    combo5
    Schick mal die ganze Fehler Meldung
     
    #4
  5. HeadiPlays
    Offline

    HeadiPlays

    Registriert seit:
    8. Februar 2014
    Beiträge:
    45
    Ort:
    Bayern
    Minecraft:
    HeadShotNoob
    Fehlermeldung:
    Code (Text):
    1.      at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:299) ~[spigot.jar:git-Spigot-1571]
    2.         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1571]
    3.         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-1571]
    4.         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-1571]
    5.         at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callProjectileLaunchEvent(CraftEventFactory.java:741) [spigot.jar:git-Spigot-1571]
    6.         at net.minecraft.server.v1_7_R4.World.addEntity(World.java:1100) [spigot.jar:git-Spigot-1571]
    7.         at net.minecraft.server.v1_7_R4.World.addEntity(World.java:1066) [spigot.jar:git-Spigot-1571]
    8.         at net.minecraft.server.v1_7_R4.ItemBow.a(ItemBow.java:68) [spigot.jar:git-Spigot-1571]
    9.         at net.minecraft.server.v1_7_R4.ItemStack.b(ItemStack.java:443) [spigot.jar:git-Spigot-1571]
    10.         at net.minecraft.server.v1_7_R4.EntityHuman.bA(EntityHuman.java:103) [spigot.jar:git-Spigot-1571]
    11.         at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:514) [spigot.jar:git-Spigot-1571]
    12.         at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.a(SourceFile:53) [spigot.jar:git-Spigot-1571]
    13.         at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.handle(SourceFile:8) [spigot.jar:git-Spigot-1571]
    14.         at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:184) [spigot.jar:git-Spigot-1571]
    15.         at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-Spigot-1571]
    16.         at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:731) [spigot.jar:git-Spigot-1571]
    17.         at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1571]
    18.         at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1571]
    19.         at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1571]
    20.         at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1571]
    21. Caused by: java.lang.NullPointerException
    22.         at me.headiplays.timv.events.CreeperArrows.on(CreeperArrows.java:29) ~[?:?]
    23.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_65]
    24.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_65]
    25.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_65]
    26.         at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_65]
    27.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296) ~[spigot.jar:git-Spigot-1571]
    28.         ... 19 more
    29.  
    Source:
    Code (Text):
    1.     @EventHandler
    2.     public void on(ProjectileLaunchEvent e) {
    3.  
    4.         if (e.getEntity() instanceof Arrow) {
    5.             Arrow a = (Arrow) e.getEntity();
    6.             Player p = (Player) a.getShooter();
    7.             if (p.getItemInHand().getType() == Material.BOW) {
    8.                 if (p.getItemInHand().getItemMeta().getDisplayName()
    9.                         .equals("SUPERBOW")) {
    10.                     p.setItemInHand(new ItemStack(Material.AIR));
    11.                 }
    12.             }
    13.         }
    ### EDIT

    Der Fehler ist angeblich in der Zeile, wo ich den Namen abfrage
     
    #5
  6. combo
    Offline

    combo

    Registriert seit:
    16. Juli 2012
    Beiträge:
    160
    Minecraft:
    combo5
    Ich habe mit deisen Item Metas selbst Probleme hätte dafür auch gern eine Lösung da ich auch etwas schreiben möchte was aus mehreren gleichen Items besteht aber zu der Lösung mach mal statt .equals("...") mal .equalsIgnoreCase("...")
     
    #6
  7. HeadiPlays
    Offline

    HeadiPlays

    Registriert seit:
    8. Februar 2014
    Beiträge:
    45
    Ort:
    Bayern
    Minecraft:
    HeadShotNoob
    Das habe ich ja schon versucht, siehst du im code, wo ich als erstes gepostet habe ^^, überall kommt dieser fehler. :c
     
    #7
  8. Kakifrucht
    Offline

    Kakifrucht

    Registriert seit:
    12. Dezember 2012
    Beiträge:
    30
    Bröckel den Code doch zum Debuggen noch etwas auf, damit man besser nachvollziehen kann, welche Methode genau auf ein Null zugreift.

    Ich würde vermuten, es ist das getDisplayName(). Das ist wenn ich mich nicht irre null, wenn es den Standard Namen hat. Lösung:
    ItemMeta item = p.getItemInHand().getItemMeta()
    if (item.hasDisplayName() && item.getDisplayName().equals("SUPERBOW"))
     
    #8