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

Помогите [РЕШЕНО]ZombieMoveEvent - Как реализовать ?

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

Статус темы:
Закрыта.
  1. Автор темы
    capone641693

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

    Баллы:
    68
    Здравствуйте уважаемые разработчики. Как отследить передвижение моба и совершать манипуляции именно с этим мобом (к примеру зомби)?

    Я так понимаю (возможно ошибаюсь) необходимо создать новое унаследованное событие от какого то другого, но не знаю с чего начать.

    Код:
    @EventHandler
    public void onZombieMoveEvent(ZombieMoveEvent e)
    {
    
    Zobie zzz=(Zombie)e.getEntity();
    ...тут начинаем уже работать с этим зомби
    }
    (Думаю создавать массив мобов при спавне, а потом отслеживать их локации в цикле не самое верное решение, должно же быть более рациональное решение).
     
    Последнее редактирование: 29 дек 2014
  2. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    У мобов вроде бы есть уникальный id.
     
  3. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Если нужно отслеживать небольшое кол-во зомби, то вполне можно шедулером следить за их локациями и бросать эвент.
     
  4. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    а какие проблемы возникнут при большом¿
     
  5. Автор темы
    capone641693

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

    Баллы:
    68

    Решил данный вопрос через таймер, в таймере вызываю свою функцию, в ней получаю список мобов в нужном мире, потом прохожусь циклом по мобам

    Код:
    for(Entity zz: Bukkit.getServer().getWorld("world").getEntities()){}
    Маленький вопрос - можно ли получить список не всех Entities, а список монстров не проверяя каждого Entity принадлежит ли он к монстрам (типа getMonsters для своего рода оптимизации нагрузки) ?
     
  6. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Какая разница, проверка будет внутри или ты ее сам сделаешь?
     
  7. Автор темы
    capone641693

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

    Баллы:
    68
    Сам могу кривее сделать чем уже реализованная внутри
     
  8. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Есть такой метод, но внутри он делает то же самое что вы предположили, дергает все энтити и сверяет типы.
    Вот и получается что эффективно сделать такой эвент можно только напрямую взаимодействуя с сервером, например сохраняя айди нужных мобов, и каждый тик дёргать внутреннюю id->entity map.
     
  9. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ну под большим я подразумевал несколько тысяч, когда уже начнется увеличиваться нагрузка.
     
  10. Автор темы
    capone641693

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

    Баллы:
    68
    Всем спасибо за ответы, думаю тему можно закрывать. (Перебираю энтити и сверяю типы, в дальнейшем возможно буду работать уже с id мобов)
     
Статус темы:
Закрыта.

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