• 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!

NullPointerException? Wieso?

HeadiPlays

Redstoneengineer
Registriert
8 Februar 2014
Beiträge
45
Diamanten
0
Minecraft
HeadShotNoob
Heyo,

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

Code:
    @EventHandler
    public void on(ProjectileLaunchEvent e) {
       
        if(e.getEntity() instanceof Arrow) {
            Arrow a = (Arrow) e.getEntity();
            if(a.getShooter() instanceof Player) {
                Player p = (Player) a.getShooter();
                if(p.getItemInHand().getType() == Material.BOW) {
                    if(p.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("SUPERBOW")) {
                        p.setItemInHand(new ItemStack(Material.AIR));
                    }
                }
            }
        }

Freue mich über jede Hilfe! c:
 

combo

Miner
Registriert
16 Juli 2012
Beiträge
175
Diamanten
0
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!
 

HeadiPlays

Redstoneengineer
Registriert
8 Februar 2014
Beiträge
45
Diamanten
0
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.
 

HeadiPlays

Redstoneengineer
Registriert
8 Februar 2014
Beiträge
45
Diamanten
0
Minecraft
HeadShotNoob
Fehlermeldung:
Code:
     at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:299) ~[spigot.jar:git-Spigot-1571]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1571]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-1571]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-1571]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callProjectileLaunchEvent(CraftEventFactory.java:741) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.World.addEntity(World.java:1100) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.World.addEntity(World.java:1066) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.ItemBow.a(ItemBow.java:68) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.ItemStack.b(ItemStack.java:443) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.EntityHuman.bA(EntityHuman.java:103) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:514) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.a(SourceFile:53) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.handle(SourceFile:8) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:184) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:731) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1571]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1571]
Caused by: java.lang.NullPointerException
        at me.headiplays.timv.events.CreeperArrows.on(CreeperArrows.java:29) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_65]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_65]
        at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_65]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296) ~[spigot.jar:git-Spigot-1571]
        ... 19 more
Source:
Code:
    @EventHandler
    public void on(ProjectileLaunchEvent e) {

        if (e.getEntity() instanceof Arrow) {
            Arrow a = (Arrow) e.getEntity();
            Player p = (Player) a.getShooter();
            if (p.getItemInHand().getType() == Material.BOW) {
                if (p.getItemInHand().getItemMeta().getDisplayName()
                        .equals("SUPERBOW")) {
                    p.setItemInHand(new ItemStack(Material.AIR));
                }
            }
        }

### EDIT

Der Fehler ist angeblich in der Zeile, wo ich den Namen abfrage
 

combo

Miner
Registriert
16 Juli 2012
Beiträge
175
Diamanten
0
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("...")
 

Kakifrucht

Redstoneengineer
Registriert
12 Dezember 2012
Beiträge
30
Diamanten
0
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"))
 
Oben