Damage Cause issue

Discussion in 'Plugin Development' started by dibujaron, Nov 27, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    dibujaron

    I recently recieved 2 error reports from users of my plugin More Mobs. They both reported a strange problem where they recieved the following error message:
    Code:
    2012-11-17 15:51:28 [SEVERE] Could not pass event EntityDeathEvent to More-Mobs v1.1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:299)
        at net.minecraft.server.EntitySquid.dropDeathLoot(EntitySquid.java:62)
        at net.minecraft.server.EntityLiving.die(EntityLiving.java:850)
        at net.minecraft.server.EntityLiving.damageEntity(EntityLiving.java:730)
        at net.minecraft.server.EntityWaterAnimal.y(SourceFile:59)
        at net.minecraft.server.Entity.j_(Entity.java:230)
        at net.minecraft.server.EntityLiving.j_(EntityLiving.java:482)
        at net.minecraft.server.World.entityJoinedWorld(World.java:1333)
        at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:546)
        at net.minecraft.server.World.playerJoinedWorld(World.java:1315)
        at net.minecraft.server.World.tickEntities(World.java:1193)
        at net.minecraft.server.WorldServer.tickEntities(WorldServer.java:444)
        at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:577)
        at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:222)
        at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:493)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:426)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:856)
    Caused by: java.lang.NullPointerException
        at com.dibujaron.MoreMobs.MoreMobs.onMobDeath(MoreMobs.java:132)
        at sun.reflect.GeneratedMethodAccessor163.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339)
        ... 20 more
    Now, I think I can read the error report well enough to know that this was caused by a squid dying and it caused a null pointer in my code at line 132. line 132 is the line "DamageCause dc = ede.getCause() in the following code snippet:
    Code:
     @EventHandler
        public void onMobDeath(EntityDeathEvent event4){
            EntityDamageEvent ede = event4.getEntity().getLastDamageCause();
            DamageCause dc = ede.getCause();
            if (event4.getEntity().getType() == EntityType.GIANT && dc == DamageCause.ENTITY_ATTACK){
                ItemStack itemstack = new ItemStack(Material.DIAMOND, 5);
                ItemStack itemstack2 = new ItemStack(Material.EMERALD, 5);
                event4.getDrops().add(itemstack);
                event4.getDrops().add(itemstack2);
                event4.setDroppedExp(100);
            }
        }
    If anyone can shed some light on this error that would be great! I am lost.
     
  2. Offline

    CeramicTitan

    Add some debug messages?

    try this:
    Code:
     @EventHandler
        public void onMobDeath(EntityDeathEvent event4){
            EntityDamageEvent ede = event4.getEntity().getLastDamageCause();
            DamageCause dc = ede.getCause();
            if(dc != null){
            System.out.println(dc);
            //Prints cause if not null.
            }
            if(dc == null){
            System.out.println("null!");
             //prints "null" if null.
             }
            if (event4.getEntity().getType() == EntityType.GIANT && dc == DamageCause.ENTITY_ATTACK){
                ItemStack itemstack = new ItemStack(Material.DIAMOND, 5);
                ItemStack itemstack2 = new ItemStack(Material.EMERALD, 5);
                event4.getDrops().add(itemstack);
                event4.getDrops().add(itemstack2);
                event4.setDroppedExp(100);
            }
        }
     
Thread Status:
Not open for further replies.

Share This Page