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

Помогите Путаница с эвентами

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

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

    EnderChiken Старожил

    Баллы:
    103
    Skype:
    EnderChiken
    Имя в Minecraft:
    EnderChiken
    В общем, вопрос к разработчикам.
    Если эвенты:
    OnDamage - Когда игрок получает урон
    OnJump - когда игрок прыгает
    и когда игрок бьет другого игрока.

    Если есть скажите пожалуйста packag'и, заранее спасибо.
     
  2. gamelax

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

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    EntityDamageEvent (org.bukkit.event.entity)
    PlayerMoveEvent (org.bukkit.event.player)
     
  3. Автор темы
    EnderChiken

    EnderChiken Старожил

    Баллы:
    103
    Skype:
    EnderChiken
    Имя в Minecraft:
    EnderChiken
    Это разве пременимо к игроку? К тому же такого packag'a не существует
     
    NoNaMeHaCkEr2002 и Сникерсни нравится это.
  4. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
  5. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Код:
    public class MelonPVPListener implements Listener  {
     
        //Листенер который слушает урон одной ентити по другой
        @EventHandler
        public void DamageListener(EntityDamageByEntityEvent event) {
     
            /*По скольку Listener у нас void (Не возвращает ничего, то при любом ретурне он сразу завершает свою работу*/
     
            /*Проверяем наследует ли наша ентити класс игрока.
            !!! Обязательное действие!!!
            Иначе при нанесении человеку урона скажем стрелой или мобом в консоль полетит ексепшн*/
            if(!(event.getEntity() instanceof Player))
                return;
     
            /*Аналогично тому что написанно выше, но для игрока который бил*/
            if(!(event.getDamager() instanceof Player))
                return;
     
            /*Теперь, когда мы проверили что обе ентити являются игроками, мы можем заявить об этом серверу, мол "Вот! Это игрок! Обращайся с ним как игроком." Если бы мы не сделали проверку ранее, а нас бы ударил скелет, то сервер попробовал бы обращаться со скелетом как с игроком, что как я уже и сказал вывело бы Ексепшн
     
                /*Говорим серверу что под словом target мы будем иметь ввиду event.getEntity() которая к тому же и Player*/
            Player target = (Player) event.getEntity();
            /*Аналогично тому что выше, только для ентити которая нанесла удар*/
            Player damager = (Player) event.getDamager();
     
            /*Дальше идет твой код*/
     
        }
     
    }

    Вроде бы все расписал, код должен быть рабочий, но 100% гарантию не дам, так как брал из своего плагина, и много вырезал лишнего, мб зацепил что.
    Но в любом случае там есть проверки и все что надо.

    Если помог - не забудь туцнуть лайк :)
     
  6. Автор темы
    EnderChiken

    EnderChiken Старожил

    Баллы:
    103
    Skype:
    EnderChiken
    Имя в Minecraft:
    EnderChiken
    Я сам разобрался, но за помощь спасибо!
     
  7. gamelax

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

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    @EnderChiken, не забудьте только проверить entity (getDamager) помимо Player, на такие объекты как стрела, снежок и зелье (возможно еще что-то было добавлено в новых версиях, но я не слежу за ними и работаю с 1.2.5).
     
  8. Автор темы
    EnderChiken

    EnderChiken Старожил

    Баллы:
    103
    Skype:
    EnderChiken
    Имя в Minecraft:
    EnderChiken
    1.2.5 самая четкая :D
     

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