1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите getDamage и getDamager

Тема в разделе "Разработка плагинов для новичков", создана пользователем GodlikE, 14 мар 2014.

  1. Автор темы
    GodlikE

    GodlikE Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Как можно совместить getDamager() и getDamage, если они находятся в разных событиях?=) Если у кого-нибудь найдется минутка, напишите пожалуйста код-связку=)
    Или хотя бы подскажите событие, когда игрок бьет другого игрока=) буду благодарен
     
    eleon нравится это.
  2. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Событие: EntityDamageByEntityEvent, пример:
    PHP:
    @EventHandler
    public void OnEntityDamage (EntityDamageByEntityEvent event) {
            if (
    event.getDamager() instanceof Player && event.getEntity instanceof Player) {
            
    Player player = (Playerevent.getDamager();
            
    Player player2 = (Playerevent.getEntity(); 
            
    player.sendMessage("lol TEST");
            
    player2.sendMessage("Вас ударил: " player.getName());   
    }
            }
     
    eleon и GodlikE нравится это.
  3. Автор темы
    GodlikE

    GodlikE Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Спасибо=) Эта строчка: if(event.getDamager() instanceof Player) расшифровывается, как "Если атакующий является игроком"?=)
     
    eleon нравится это.
  4. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Да, но как помню можно использовать так:

    PHP:
    if(event.getDamager().getType() == EntityType.PLAYER){
    //Код
    }
     
  5. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    И так будет оптимизированнее
     
    eleon и GodlikE нравится это.
  6. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Оператор instanceof вернет true если объект произошел от указанного класса.

    т.е. если object - игрок
    object instanceof Player => True
    object instanceof EntityLiving => True
    object instanceof Sheep => False

    Но как уже сказали выше - есть способ лучше
     
    eleon и GodlikE нравится это.
  7. Автор темы
    GodlikE

    GodlikE Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Всем спасибо=)
    Подскажите еще, как называется событие поджигания игрока?=)
     
    eleon нравится это.
  8. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Вроде это событие ловится через EntityDamageByEntityEvent (Ну или EntityDamageEvent) , а поджиг через getCause().
     
    Последнее редактирование: 15 мар 2014
    eleon и GodlikE нравится это.
  9. Автор темы
    GodlikE

    GodlikE Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Спасибо=)
     
    eleon нравится это.
  10. AdMiRaLL

    AdMiRaLL Активный участник Пользователь

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Код:
    public void onEntityDamage(EntityDamageEvent event){
            if(event.getCause() == DamageCause.FIRE_TICK){
                event.setCancelled(true);
                return;
            }
    }
    Отловит любую горящую единицу на сервере и потушит её
     
    eleon и GodlikE нравится это.
  11. Автор темы
    GodlikE

    GodlikE Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Спасибо=)
     
    eleon нравится это.

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