Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Хил игрока

MrQuest

Активный участник
Пользователь
Баллы
78
Имя в Minecraft
MrQuest
Проблема с мини-игрой, нужно, чтобы после убийства излечился убийца. Как излечить именно его?
 
Слушай эвент убийства и лечи.
В чём проблема?
 
Проблема с мини-игрой, нужно, чтобы после убийства излечился убийца. Как излечить именно его?
Поймать эвент смерти игрока, узнать от чего он умер, если от плеера, узнать его имя и вылечить.
Точно не помню. Можно так же через EntityDamageEvent сделать.
 
Поймать эвент смерти игрока, узнать от чего он умер, если от плеера, узнать его имя и вылечить.
Точно не помню. Можно так же через EntityDamageEvent сделать.
Нужно не умершего хилить а того кто убил
Слушай эвент убийства и лечи.
В чём проблема?
Проблема в том, что я только учу методы и не знаю название метода убийства... Буду благодарен за подсказку =)
 
Поймать эвент смерти игрока, узнать от чего он умер, если от плеера, узнать его(убийцы) имя и вылечить.
Точно не помню. Можно так же через EntityDamageEvent сделать.
Так понятнее?
 
А смотреть все доступные методы, смотреть те которые возвращают Player?..
 
Player killer = event.getEnity().getKiller();
if(killer.getHealth() != 20 && infalaceon(забыл как пишется:D) Player){
killer.setHealth(killer.getHealth() + 2)
}
Вообще наугад написал))
 
@Rider3217, поправил:
Java:
  @EventHandler
    public void onDeath(PlayerDeathEvent e) {
        if (!(e.getEntity().getKiller() instanceof Player)) {
            return;
        }
        Player killer = e.getEntity().getKiller();
        if (killer.getHealth() < 20) {
        killer.setHealth(killer.getHealth() + 2);
        }

    }
 
Java:
int regen = сколько хп нужно отрегенить
if (event.getEntity().getLastDamageCause() instanceof EntityDamageByEntityEvent){
                EntityDamageByEntityEvent dEvent = (EntityDamageByEntityEvent) event.getEntity().getLastDamageCause();
                Player killer = null;
                if (dEvent.getDamager() instanceof Player){
                    killer = (Player) dEvent.getDamager();   
                } else 
                if (dEvent.getDamager() instanceof Arrow){
                    if (((Arrow) dEvent.getDamager()).getShooter() instanceof Player){
                        killer = (Player) ((Arrow) dEvent.getDamager()).getShooter();
                    }
                }
                if (killer != null){
                    if (killer.getHealth() + regen <= killer.getMaxHealth()){
                        killer.setHealth(killer.getHealth() + regen);
                    } else killer.setHealth(killer.getMaxHealth());
                }
}
Тут еще не рассмотрен случай, когда игрок убийца ударил игрока, а игрок упал в бездну или разбился, но для этого нужно еще вводить HashMap, в котором запоминать последнего дамагера игрока для каждой жертвы игрока.
 
@Rider3217, поправил:
Java:
  @EventHandler
    public void onDeath(PlayerDeathEvent e) {
        if (!(e.getEntity().getKiller() instanceof Player)) {
            return;
        }
        Player killer = e.getEntity().getKiller();
        if (killer.getHealth() < 20) {
        killer.setHealth(killer.getHealth() + 2);
        }

    }
Спасибо, просто с утра с телефона писал:D
 

Поделиться этой страницей

Назад
Верх