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

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

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

capone641693

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

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

JavaScript:
@EventHandler
public void onZombieMoveEvent(ZombieMoveEvent e)
{

Zobie zzz=(Zombie)e.getEntity();
...тут начинаем уже работать с этим зомби
}

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

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

JavaScript:
@EventHandler
public void onZombieMoveEvent(final ZombieMoveEvent e)
{

Zobie zzz=(Zombie)e.getEntity();
...тут начинаем уже работать с этим зомби
}

(Думаю создавать массив мобов при спавне, а потом отслеживать их локации в цикле не самое верное решение, должно же быть более рациональное решение).
У мобов вроде бы есть уникальный id.
 
Здравствуйте уважаемые разработчики. Как отследить передвижение моба и совершать манипуляции именно с этим мобом (к примеру зомби)?

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

JavaScript:
@EventHandler
public void onZombieMoveEvent(ZombieMoveEvent e)
{

Zobie zzz=(Zombie)e.getEntity();
...тут начинаем уже работать с этим зомби
}

(Думаю создавать массив мобов при спавне, а потом отслеживать их локации в цикле не самое верное решение, должно же быть более рациональное решение).
Если нужно отслеживать небольшое кол-во зомби, то вполне можно шедулером следить за их локациями и бросать эвент.
 
Если нужно отслеживать небольшое кол-во зомби, то вполне можно шедулером следить за их локациями и бросать эвент.
а какие проблемы возникнут при большом¿
 

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

JavaScript:
for(Entity zz: Bukkit.getServer().getWorld("world").getEntities()){}

Маленький вопрос - можно ли получить список не всех Entities, а список монстров не проверяя каждого Entity принадлежит ли он к монстрам (типа getMonsters для своего рода оптимизации нагрузки) ?
 


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

JavaScript:
for(Entity zz: Bukkit.getServer().getWorld("world").getEntities()){}

Маленький вопрос - можно ли получить список не всех Entities, а список монстров не проверяя каждого Entity принадлежит ли он к монстрам (типа getMonsters для своего рода оптимизации нагрузки) ?
Какая разница, проверка будет внутри или ты ее сам сделаешь?
 
Есть такой метод, но внутри он делает то же самое что вы предположили, дергает все энтити и сверяет типы.
Вот и получается что эффективно сделать такой эвент можно только напрямую взаимодействуя с сервером, например сохраняя айди нужных мобов, и каждый тик дёргать внутреннюю id->entity map.
 
Всем спасибо за ответы, думаю тему можно закрывать. (Перебираю энтити и сверяю типы, в дальнейшем возможно буду работать уже с id мобов)
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх