Why this error?

Discussion in 'Plugin Development' started by DatCookiez, Apr 4, 2013.

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

    DatCookiez

    Here is my code:

    Code:java
    1.  
    2. @EventHandler
    3. public void onFireArmour(EntityDamageByEntityEvent evt){
    4. Player player = (Player) evt.getEntity();
    5. if(player.getInventory().getChestplate().getType() == Material.GOLD_CHESTPLATE){
    6. Player targetPlayer = player.getServer().getPlayerExact(getName());
    7. if (evt.getDamager() instanceof Player) {
    8. if(targetPlayer.getLastDamageCause().equals(player)){
    9. targetPlayer.setFireTicks(0);
    10. }
    11. }
    12. }
    13. }


    Here is error:
    21:29:14 [SEVERE] Could not pass event EntityDamageByEntityEvent to CustomCTF v1.8.6
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
    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.v1_5_R2.event.CraftEventFactory.callEvent(CraftEventFactory.java:84)
    at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:372)
    at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:396)
    at net.minecraft.server.v1_5_R2.EntityLiving.damageEntity(EntityLiving.java:694)
    at net.minecraft.server.v1_5_R2.EntityHuman.damageEntity(EntityHuman.java:683)
    at net.minecraft.server.v1_5_R2.EntityPlayer.damageEntity(EntityPlayer.java:350)
    at net.minecraft.server.v1_5_R2.EntityHuman.attack(EntityHuman.java:854)
    at net.minecraft.server.v1_5_R2.PlayerConnection.a(PlayerConnection.java:1102)
    at net.minecraft.server.v1_5_R2.Packet7UseEntity.handle(SourceFile:36)
    at net.minecraft.server.v1_5_R2.NetworkManager.b(NetworkManager.java:292)
    at net.minecraft.server.v1_5_R2.PlayerConnection.d(PlayerConnection.java:110)
    at net.minecraft.server.v1_5_R2.ServerConnection.b(SourceFile:35)
    at net.minecraft.server.v1_5_R2.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:578)
    at net.minecraft.server.v1_5_R2.DedicatedServer.r(DedicatedServer.java:225)
    at net.minecraft.server.v1_5_R2.MinecraftServer.q(MinecraftServer.java:474)
    at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:407)
    at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573)
    Caused by: java.lang.NullPointerException
    at me.realiez.ctf.ClassHandler.onFireArmour(ClassHandler.java:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    ... 21 more
     
  2. Offline

    Terradominik

    Player player = (Player) evt.getEntity();
    You cast an Entity to a Player gegardless if its a Player or something else.

    Player targetPlayer = player.getServer().getPlayerExact(getName());
    You try to find a Player wich is called like .getName() what does .getName() return?
     
  3. Offline

    DatCookiez

    How could i fix the first one?
     
  4. Offline

    zajacmp3

    Give me the line 43 and I will try help you.

    Code:
    Caused by: java.lang.NullPointerException
    at me.realiez.ctf.ClassHandler.onFireArmour(ClassHandler.java:43)
    Basically at some point you are operating on null data on what you can't operate.
     
  5. Offline

    DatCookiez

    if(targetPlayer.getLastDamageCause().equals(player)){
     
  6. Offline

    molenzwiebel

    You are using player.getLastDamageCause() which will return a EntityDamageEvent, and then you are comparing this event to a player? Try using evt.getCause() if you want to cancel fire damage
     
    Terradominik likes this.
  7. Offline

    zajacmp3

    getLastDamageCause()

    There is no last damage cause I think.
    You need to code your way around it by making an exception handler.

    try{
    //write to something you wish - I don't know what it returns - probably String
    targetPlayer.getLastDamageCause();
    }
    catch(NullPointerExeption e){

    }
    Finally{
    Do something if there is an error here
    }

    EDIT:

    Why there is nodamagecause you might ask. There is none cause the player just logged in for example and was not hit by anything.
     
Thread Status:
Not open for further replies.

Share This Page