Помогите Как получить убийцу игрока

Статус
Закрыто для дальнейших ответов.

_MCMaster_

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
DragOn4ik
Hi. Мне надо выполнять какое-то действие при убийстве игрока. То есть, если игрок умер, мне нужно получить его убийцу, и прибавить ему боевой рейтинг. Как это сделать?
В PlayerDeathEvent нету метода для получения киллера. Есть только getEntity(), который возвращает игрока, который умер.
 
Код:
public void onEntityDeath(EntityDeathEvent event) {
        Entity killedE = event.getEntity();
        if (killedE instanceof Player) {
            Player killed = (Player) killedE;
            String dead = killed.getDisplayName();
            String killer = killed.getKiller().getDisplayName();
            Bukkit.broadcastMessage(ChatColor.GOLD + " " + dead + " " + ChatColor.GREEN + "was killed by" + ChatColor.GOLD + " " + killer);
            killed.kickPlayer("You have been killed and you cannot rejoin untill the current game is over.");
        }
    }
 
Hi. Мне надо выполнять какое-то действие при убийстве игрока. То есть, если игрок умер, мне нужно получить его убийцу, и прибавить ему боевой рейтинг. Как это сделать?
В PlayerDeathEvent нету метода для получения киллера. Есть только getEntity(), который возвращает игрока, который умер.
Легко. Сам писал только вот-вот:
Код:
@EventHandler
    public void kill2(PlayerDeathEvent e) {
        Entity en = e.getEntity().getKiller();
        if(en.getType() == EntityType.PLAYER) {
            ItemStack item = new ItemStack(Material.GOLDEN_APPLE);
            item.setAmount(5);
            ((HumanEntity) en).getInventory().addItem(item);
        }
    }
Данный код выдаёт убийце 5 золотых яблок
 
Код:
public void onEntityDeath(EntityDeathEvent event) {
        Entity killedE = event.getEntity();
        if (killedE instanceof Player) {
            Player killed = (Player) killedE;
            String dead = killed.getDisplayName();
            String killer = killed.getKiller().getDisplayName();
            Bukkit.broadcastMessage(ChatColor.GOLD + " " + dead + " " + ChatColor.GREEN + "was killed by" + ChatColor.GOLD + " " + killer);
            killed.kickPlayer("You have been killed and you cannot rejoin untill the current game is over.");
        }
    }
и получишь NPE в е6ало

Легко. Сам писал только вот-вот:
Код:
@EventHandler
    public void kill2(PlayerDeathEvent e) {
        Entity en = e.getEntity().getKiller();
        if(en.getType() == EntityType.PLAYER) {
            ItemStack item = new ItemStack(Material.GOLDEN_APPLE);
            item.setAmount(5);
            ((HumanEntity) en).getInventory().addItem(item);
        }
    }
Данный код выдаёт убийце 5 золотых яблок
пи3дец
 
и получишь NPE в е6ало


пи3дец
Может предложишь лучше? Ты ж тут 6лять такой пи3дец умный на словах... Не ну давай будет всё через мат писать, так-же веселее. И если честно, у создателя темы руки кривые, мне хватило 10 секунд поиска, что-бы найти код
 
PHP:
@EventHandler
public void death(final PlayerDeathEvent event) {
    final Player player = event.getEntity();
    final Player killer = player.getKiller();
    if (killer != null) { //причиной смерти игрока не всегда может быть другой игрок.
        //todo with killer
    }
}
 
Легко. Сам писал только вот-вот:
Код:
@EventHandler
    public void kill2(PlayerDeathEvent e) {
        Entity en = e.getEntity().getKiller();
        if(en.getType() == EntityType.PLAYER) {
            ItemStack item = new ItemStack(Material.GOLDEN_APPLE);
            item.setAmount(5);
            ((HumanEntity) en).getInventory().addItem(item);
        }
    }
Данный код выдаёт убийце 5 золотых яблок
Почитай мой ответ выше.
 
Может предложишь лучше?
а мне че, больше всех надо чтоли?
Ты ж тут 6лять такой пи3дец умный на словах...
явно умнее, чем ты.
Не ну давай будет всё через мат писать, так-же веселее.
сначала литературный русский язык выучи, хотя для таких, как ты, это непостижимая задача.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх