Hello everybody, i want to give a messsage out if an entity die by a player but my code didn't work. Maybe anyone of you can help me? Here my code: Code:java @EventHandler public void onKillEntity(EntityDeathEvent event){ Entity killer = event.getEntity().getKiller(); LivingEntity deathEntity= event.getEntity(); if(killer instanceof Player){ Player killerp = (Player) killer; String playername = killerp.getName(); System.out.print(playername); The Event is registered! I don't know why it doens't use the if clause.... Hope someone can help me !
Why do you make the "killer" and "deathEntity" twice? PHP: public void onKill(EntityDeathEvent event) {if (event.getEntity().getKiller() instanceof Player && event.getEntity instanceof Entity) { Player killer = (Player) event.getEntity().getKiller(); Entity victim = event.getEntity(); bukkit.broadcastMessage(killer.getName() + " has killed " + victim.getName());}}
When i write: Code:java if (event.getEntity().getKiller() instanceof Player && event.getEntity() instanceof Entity) { Player killer = (Player) event.getEntity().getKiller(); Entity victim = event.getEntity(); double live= ((LivingEntity) victim).getMaxHealth(); String playername = killer.getName(); System.out.print(playername);.... it doens't go into the if clause when i write: Code:java Player killer = (Player) event.getEntity().getKiller(); Entity victim = event.getEntity(); double live= ((LivingEntity) victim).getMaxHealth(); String playername = killer.getName(); System.out.print(playername); i go following error: Code:java Caused by: java.lang.NullPointerException at com.faldoria.rpg.listener.RPGListener.onKillEntity(RPGListener.java:142) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_17] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_17] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_17] at java.lang.reflect.Method.invoke(Method.java:601) ~[?:1.7.0_17] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:318) ~[spigot(1).jar:git-Spigot-1322] line 142 is: String playername = killer.getName(); why? :O
Rather use != null instead of instanceof Player. Also getEntity() will always return an Entity, so that instanceof check is kinda useless
When i write it like you say it doens't go into if clause... if (event.getEntity().getKiller() != null && event.getEntity() != null) { Player killer = (Player) event.getEntity().getKiller(); Entity victim = event.getEntity(); double live= ((LivingEntity) victim).getMaxHealth(); String playername = killer.getName(); System.out.print(playername);
Oops, was meant to be Mob not Entity. As it will also trigger when player kills player, as overall it's Entity death AFAIK.