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

/NMS/ Как заставить моба атаковать?

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

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

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

    Баллы:
    66
    Такое дело. Есть один зомби, как заставить его атаковать другого моба (например, скелета)?
    Порылся в исходниках ядра, нашёл в EntityInsentient.java метод setGoalTarget(). Но работает он как-то неправильно. Вызываю его на зомби:
    Код:
    net.minecraft.server.v1_11_R1.EntityZombie zombie = ...;
    net.minecraft.server.v1_11_R1.EntitySkeleton nearby = ...;
    
    zombie.setGoalTarget(nearby, TargetReason.CUSTOM, true);
    После чего зомби словно начинает атаковать невидимая сила, в результате чего он в итоге умирает; скелет тем временем просто стоит на месте. Ошибок в консоли нет.

    Что я делаю не так и как заставить этот код работать правильно? Хотелось бы, чтобы зомби начал атаковать скелета так же, как если бы скелет случайно выстрелил в него.
     
    Последнее редактирование: 31 мар 2017
  2. alexandrage

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

    Баллы:
    173
    targetSelector не?
     
  3. Автор темы
    molor

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

    Баллы:
    66
    хм, Ладно, но.. как с ним работать?
    Ведь его изменение повлияет на поведение всех зомби, а не только того, которого мне нужно?
    Так это возможно?!
     
  4. alexandrage

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

    Баллы:
    173
    Тебе видимо нет.
     
  5. Автор темы
    molor

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

    Баллы:
    66
    Видимо, нет, Вы ведь показать пример кода опять не можете, а только мнение высказываете.
    Реализовал желаемое через setGoalTarget(). Причиной того, почему зомби атаковала неизвестная сила, была моя ошибка (умудрился заставить entity атаковать самого себя, игнорируя аргумент nearby; забавно, что ядро не посчитало это ошибкой и не выбросило исключение). Закрываю, всем спасибо за ничего.
     
Статус темы:
Закрыта.

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