Here is my code: Code:java @EventHandler public void onFireArmour(EntityDamageByEntityEvent evt){ Player player = (Player) evt.getEntity(); if(player.getInventory().getChestplate().getType() == Material.GOLD_CHESTPLATE){ Player targetPlayer = player.getServer().getPlayerExact(getName()); if (evt.getDamager() instanceof Player) { if(targetPlayer.getLastDamageCause().equals(player)){ targetPlayer.setFireTicks(0); } } } } 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
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?
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.
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
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.