I have a problem with the EntityDamageEvent... The EntityDamagebyEntityEvent is working fine... I created some messages i should receive everytime the event is fired, but it is not working... I'm not getting any error messages, i would be verry happy if you would help me :S Code: public class Damage implements Listener{ ItemStack Granate = new ItemStack(Material.EGG); ItemStack Shooter = new ItemStack(Material.NETHER_STAR); String game = "§3[Paintball]"; World Eggs; public Damage(Paintball pb){ pb.getServer().getPluginManager().registerEvents(this, pb); ItemMeta Granatem = Granate.getItemMeta(); Granatem.setDisplayName("§aGrenade"); Granatem.setLore(Arrays.asList("§8Exploding egg...")); Granate.setItemMeta(Granatem); ItemMeta Shooterm = Shooter.getItemMeta(); Shooterm.setDisplayName("§aPaintball Gun"); Shooterm.setLore(Arrays.asList("§8Magic...")); Shooter.setItemMeta(Shooterm); Eggs = pb.getServer().getWorld("Eggs"); } @EventHandler(priority = EventPriority.HIGH) public void onDamageEvent(EntityDamageEvent ev){ //Not even getting the message.... ((Player) ev.getEntity()).sendMessage("Test 1"); if(!(ev.getEntity().getWorld().equals(Eggs))) return; if(ev.getCause().equals(DamageCause.FIRE)){ ((Player) ev.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 50, 50)); ((Player) ev.getEntity()).sendMessage("Test2"); } if(ev.getCause().equals(DamageCause.FIRE_TICK)){ ((Player) ev.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 50, 50)); ((Player) ev.getEntity()).sendMessage("Test3"); } ((Player) ev.getEntity()).sendMessage("Test 4"); ev.setCancelled(true); } @EventHandler(priority = EventPriority.HIGHEST) public void onDamagebyEntityEvent(EntityDamageByEntityEvent ev){ if(!(ev.getEntity().getWorld().equals(Eggs))) return; if(!(ev.getCause().equals(DamageCause.PROJECTILE))) return; ev.setCancelled(false); Snowball pShooterSnowball = (Snowball)ev.getDamager(); Player pShooter = (Player) pShooterSnowball.getShooter(); Player p = (Player) ev.getEntity(); Location spawn = p.getWorld().getSpawnLocation(); if(p.getHealth() <= 1){ //Sterbe Prozess ev.setDamage(0); spawn.setY(spawn.getY() - 1); Dreierfeld(spawn); spawn.setY(spawn.getY() + 1); p.teleport(spawn); p.getInventory().clear(); p.getInventory().addItem(Shooter); p.getInventory().addItem(Granate); p.setFireTicks(0); p.setMaxHealth(10); p.setHealth(10); p.playSound(p.getLocation(), Sound.BLAZE_DEATH, 1, 1); //Nachricht for(Player player : Bukkit.getServer().getOnlinePlayers()){ if(player.getWorld().equals(Eggs)){ if(p.equals(pShooter)){ player.sendMessage(game + " §a" + p.getDisplayName() + " §8commited Suicide"); } else { player.sendMessage(game + " §a" + p.getDisplayName() + " §8has been killed by §a" + pShooter.getDisplayName() + "§8!"); } } } //pShooter Belohnungen if(p.equals(pShooter)) return; pShooter.playSound(p.getLocation(), Sound.WOLF_HOWL, 1, 1); pShooter.setMaxHealth(pShooter.getMaxHealth() + 2); return; } ev.setDamage(0); p.setHealth(p.getHealth() - 1); } }
You dont get the Blindness effect, so i created the Test 1, 2 ,3 ,4 messages, but you dont even get them (The whole Block is not working)
Something about this just does not seem like it would work. Cast a player first then send the message and see if that works. Keep it simple when debugging. Code: if(ev.getEntity() instanceof Player) { Player p = (Player) ev.getEntity(); p.sendMessage(<msg>); else // do a broadcast message or console message here