Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
В этом ивенте нет такого метода=) Поэтому я и спрашиваю=)e.getPlayer().getKiller();
public Entity getKiller(EntityDeathEvent event) {
EntityDamageEvent entityDamageEvent = event.getEntity()
.getLastDamageCause();
if ((entityDamageEvent != null) && !entityDamageEvent.isCancelled()
&& (entityDamageEvent instanceof EntityDamageByEntityEvent)) {
Entity damager = ((EntityDamageByEntityEvent) entityDamageEvent)
.getDamager();
if (damager instanceof Projectile) {
LivingEntity shooter = ((Projectile) damager).getShooter();
if (shooter != null)
return shooter;
}
return damager;
}
return null;
}
Спасибо=) Но Эклипс ругается на строчку LivingEntity shooter = ((Projectile) damager).getShooter();Использую такой костыльКод:public Entity getKiller(EntityDeathEvent event) { EntityDamageEvent entityDamageEvent = event.getEntity() .getLastDamageCause(); if ((entityDamageEvent != null) && !entityDamageEvent.isCancelled() && (entityDamageEvent instanceof EntityDamageByEntityEvent)) { Entity damager = ((EntityDamageByEntityEvent) entityDamageEvent) .getDamager(); if (damager instanceof Projectile) { LivingEntity shooter = ((Projectile) damager).getShooter(); if (shooter != null) return shooter; } return damager; } return null; }
Ну значит он для новых версий не подойдётСпасибо=) Но Эклипс ругается на строчку LivingEntity shooter = ((Projectile) damager).getShooter();
Текст ошибки: Type mismatch: cannot convert from ProjectileSource to LivingEntity.
Жаль=(Ну значит он для новых версий не подойдёт
@EventHandler
public void onDeath(PlayerDeathEvent e){
if(e.getEntity() instanceof Player){
Player player = (Player) e.getEntity();
if(e.getEntity().getKiller() instanceof Player){
e.setDeathMessage(null);
Bukkit.broadcastMessage(" " + ChatColor.BLUE + ChatColor.ITALIC.toString() + plugin.getConfigHandler().getPrefix() + ChatColor.DARK_GRAY + "> " + ChatColor.BLUE + e.getEntity().getName() + ChatColor.GRAY + " was killed by " + ChatColor.BLUE + e.getEntity().getKiller().getName());
plugin.sendMessage(player, "Your enemy has only " + ChatColor.RED + (int)e.getEntity().getKiller().getHealth()/2 + "❤ " + ChatColor.GRAY + "to kill him.");
}else{
e.setDeathMessage(null);
Bukkit.broadcastMessage(" " + ChatColor.BLUE + ChatColor.ITALIC.toString() + plugin.getConfigHandler().getPrefix() + ChatColor.DARK_GRAY + "> " + ChatColor.BLUE + e.getEntity().getName() + ChatColor.GRAY + " has died!");
plugin.sendMessage(player, "Cause of Death: " + ChatColor.BLUE + player.getLastDamageCause().getCause().toString().replace("_", " ").toLowerCase() + ChatColor.GRAY + " took " + ChatColor.BLUE + player.getLastDamage() + " hearts!");
}
}
}
А что у вас находится в переменной plugin?=))Не совсем правильно ты сформулировал мысль: PlayerDeathEvent будет вызываться в любом случае, не только если игрока убьет игрок, из самого названия понятно же.. И там вроде бы не getPlayer(), а getEntity()..
Вот кусочек моего кода:
Так что не надо мне тут бла-бла ;PКод:@EventHandler public void onDeath(PlayerDeathEvent e){ if(e.getEntity() instanceof Player){ Player player = (Player) e.getEntity(); if(e.getEntity().getKiller() instanceof Player){ e.setDeathMessage(null); Bukkit.broadcastMessage(" " + ChatColor.BLUE + ChatColor.ITALIC.toString() + plugin.getConfigHandler().getPrefix() + ChatColor.DARK_GRAY + "> " + ChatColor.BLUE + e.getEntity().getName() + ChatColor.GRAY + " was killed by " + ChatColor.BLUE + e.getEntity().getKiller().getName()); plugin.sendMessage(player, "Your enemy has only " + ChatColor.RED + (int)e.getEntity().getKiller().getHealth()/2 + "❤ " + ChatColor.GRAY + "to kill him."); }else{ e.setDeathMessage(null); Bukkit.broadcastMessage(" " + ChatColor.BLUE + ChatColor.ITALIC.toString() + plugin.getConfigHandler().getPrefix() + ChatColor.DARK_GRAY + "> " + ChatColor.BLUE + e.getEntity().getName() + ChatColor.GRAY + " has died!"); plugin.sendMessage(player, "Cause of Death: " + ChatColor.BLUE + player.getLastDamageCause().getCause().toString().replace("_", " ").toLowerCase() + ChatColor.GRAY + " took " + ChatColor.BLUE + player.getLastDamage() + " hearts!"); } } }
Делайте просто player.sendMessage().А что у вас находится в переменной plugin?=))
@EventHandler
public void OnEntityDamage (EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Player && event.getEntity() instanceof Player) {
Player player = (Player) event.getDamager();
Player player2 = (Player) event.getEntity();
health = player2.getHealth();
player.damage(10);
player.sendMessage("Вы ударили " + player2.getName());
player2.sendMessage("Вас ударил " + player.getName());
health = player2.getHealth();
kill = 0;
if (health == kill)
{
Bukkit.broadcastMessage(player.getName() + " замочил игрока " + player2.getName());
}
}
}
Куда же может адресовать переменная с таким неочевидным названием?А что у вас находится в переменной plugin?=))