what problem this code ? Code:java @EventHandlerpublic void EntityDamage(EntityDamageEvent event) {Entity ent = event.getEntity();Player player = (Player)ent;if(player.getLastDamageCause().getCause().equals(DamageCause.LAVA) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " die by lava");} if(player.getLastDamageCause().getCause().equals(DamageCause.FIRE) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " die burning ");} if(player.getLastDamageCause().getCause().equals(DamageCause.FIRE_TICK) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " die buring haha ;d ");}if(player.getLastDamageCause().getCause().equals(DamageCause.FALL) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " falling from cloud 9 ...."); } if(player.getLastDamageCause().getCause().equals(DamageCause.ENTITY_EXPLOSION) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " bum!");} if(player.getLastDamageCause().getCause().equals(DamageCause.BLOCK_EXPLOSION) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " bumm");} if(player.getLastDamageCause().getCause().equals(DamageCause.SUFFOCATION) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " die by suffocation");}if(player.getLastDamageCause().getCause().equals(DamageCause.DROWNING) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " die by drowning");} if(player.getLastDamageCause().getCause().equals(DamageCause.SUICIDE) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " suicede ;( ");} if(player.getLastDamageCause().getCause().equals(DamageCause.CONTACT) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " die by Contact ");} if(player.getLastDamageCause().getCause().equals(DamageCause.STARVATION) && player.isDead()){Bukkit.broadcastMessage(ChatColor.AQUA + player.getName() + " die by Starvation "); }} when i die show this erros Code: 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 net.minecraft.server.v1_5_R1.EntityLiving.x(EntityLiving.java:357) at net.minecraft.server.v1_5_R1.Entity.l_(Entity.java:248) at net.minecraft.server.v1_5_R1.EntityLiving.l_(EntityLiving.java:515) at net.minecraft.server.v1_5_R1.EntityHuman.l_(EntityHuman.java:158) at net.minecraft.server.v1_5_R1.EntityPlayer.g(EntityPlayer.java:216) at net.minecraft.server.v1_5_R1.PlayerConnection.a(PlayerConnection.java:352) at net.minecraft.server.v1_5_R1.Packet10Flying.handle(SourceFile:136) at net.minecraft.server.v1_5_R1.NetworkManager.b(NetworkManager.java:292) at net.minecraft.server.v1_5_R1.PlayerConnection.d(PlayerConnection.java:113) at net.minecraft.server.v1_5_R1.ServerConnection.b(SourceFile:35) at net.minecraft.server.v1_5_R1.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_5_R1.MinecraftServer.r(MinecraftServer.java:580) at net.minecraft.server.v1_5_R1.DedicatedServer.r(DedicatedServer.java:225) at net.minecraft.server.v1_5_R1.MinecraftServer.q(MinecraftServer.java:476) at net.minecraft.server.v1_5_R1.MinecraftServer.run(MinecraftServer.java:409) at net.minecraft.server.v1_5_R1.ThreadServerApplication.run(SourceFile:573) Caused by: java.lang.NullPointerException at myPlugin.game.Main.EntityDamageEvent(Main.java:1340) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.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:425) ... 19 more Line 1340 Code:java if(player.getLastDamageCause().getCause().equals(DamageCause.LAVA) && player.isDead()){
First of all, you really should be checking if the entity is a Player by using entity instanceof Player, also player.getLastDamageCause() can be null
I try this Code:java Player p =event.getEntity();Entity ent = event.getEntity();Player player = (Player)ent;if(player instanceof Player)if(player.getLastDamageCause() != null)if(player.getLastDamageCause().................................... But not working...
Code: Player p = event.getEntity(); DamageCause cause = p.getLastDamageCause().getCause(); if(cause == DamageCause.LAVA) { Bukkit.broadcastMessage(ChatColor.AQUA + p.getDisplayName() + ChatColor.RED + " died due to Lava."); } Using that, when someone dies by Lava this will trigger... You really need to work on your english, and decently present your problem. Anyway, try that. If someone dies by lava that should trigger unless some other plugin is turning that cause a null.
You should be using instanceof to check if it is safe to cast it to player. therefore checking instanceof after is pointless as you have already done the cast.
I did the code below in the forum editor so may have mistakes, but that should give you an idea of what to do if you're doing death messages. Code:java @EventHandlerpublic void playerDeath (PlayerDeathEvent e) { Player player = e.getPlayer(); switch(e.getCause()) { case Fire: e.setDeathMessage(player.getDisplayName() + " has burned to ashes!"); break; case Drowning: break; }} Note since this is the death event you use the event's set death message or whatever, because if you broadcast then you'll get two messages. And yea, should put the check before the cast. Code:java Entity ent = event.getEntity();if(!(ent instanceof Player)) return; Player player = (Player) ent; switch(event.getCause()) {case FIRE://Do stuffbreak;} EDIT by Moderator: merged posts, please use the edit button instead of double posting.
Ok i from brazil and i try speak better =( i try make u say but show this erros Code: 2013-03-28 15:37:32 [SEVERE] Could not pass event PlayerDeathEvent to MyPlugin v1.0 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_R1.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:335) at net.minecraft.server.v1_5_R1.EntityPlayer.die(EntityPlayer.java:285) at net.minecraft.server.v1_5_R1.EntityLiving.damageEntity(EntityLiving.java:765) at net.minecraft.server.v1_5_R1.EntityHuman.damageEntity(EntityHuman.java:683) at net.minecraft.server.v1_5_R1.EntityPlayer.damageEntity(EntityPlayer.java:350) at org.bukkit.craftbukkit.v1_5_R1.entity.CraftLivingEntity.damage(CraftLivingEntity.java:190) at org.bukkit.craftbukkit.v1_5_R1.entity.CraftLivingEntity.damage(CraftLivingEntity.java:175) at myPlugin.game.Main.GodMode(Main.java:1312) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.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:425) 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 net.minecraft.server.v1_5_R1.EntityLiving.a(EntityLiving.java:975) at net.minecraft.server.v1_5_R1.EntityHuman.a(EntityHuman.java:1275) at net.minecraft.server.v1_5_R1.Entity.a(Entity.java:779) at net.minecraft.server.v1_5_R1.EntityLiving.a(EntityLiving.java:242) at net.minecraft.server.v1_5_R1.EntityPlayer.b(EntityPlayer.java:455) at net.minecraft.server.v1_5_R1.PlayerConnection.a(PlayerConnection.java:428) at net.minecraft.server.v1_5_R1.Packet10Flying.handle(SourceFile:136) at net.minecraft.server.v1_5_R1.NetworkManager.b(NetworkManager.java:292) at net.minecraft.server.v1_5_R1.PlayerConnection.d(PlayerConnection.java:113) at net.minecraft.server.v1_5_R1.ServerConnection.b(SourceFile:35) at net.minecraft.server.v1_5_R1.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_5_R1.MinecraftServer.r(MinecraftServer.java:580) at net.minecraft.server.v1_5_R1.DedicatedServer.r(DedicatedServer.java:225) at net.minecraft.server.v1_5_R1.MinecraftServer.q(MinecraftServer.java:476) at net.minecraft.server.v1_5_R1.MinecraftServer.run(MinecraftServer.java:409) at net.minecraft.server.v1_5_R1.ThreadServerApplication.run(SourceFile:573) Caused by: java.lang.NullPointerException at myPlugin.Main.onPlayerDeath(Main.java:1970) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.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:425) ... 35 more i try this Code:java @EventHandlerpublic void onPlayerDeath(PlayerDeathEvent event) {Entity ent = event.getEntity();Player player = (Player) ent;if(!(ent instanceof Player)) return; switch(player.getLastDamageCause().getCause()) {case FALL:event.setDeathMessage(ChatColor.AQUA + player.getName() + " die by fall"); break;}} Working but say this erros in console =(
The PlayerDeathEvent has the function event.getPlayer() instead of Entity, beacuse of this there is no casting required, you simply get the player. If you looked at the code I posted above, then you could do something like that. Code:java @EventHandlerpublic void playerDeath (PlayerDeathEvent e) {Player player = e.getPlayer();switch(e.getCause()) {case Fire:e.setDeathMessage(player.getDisplayName() + " has burned to ashes!");break;case Drowning:break;}}
Ah yea, but if you look the getEntity returns a player object, so use the above code and simply replace getPlayer with getEntity and it will work fine without casting.