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

Помогите NMS Сделать что бы мобы шли до цели и по пути били игроков

Метки:
Теги Теги
nms

digitalEugene

Активный участник
Баллы
61
Здравствуйте! Нужна для мини игры вот такая система мобов(крипов). Сначала центр граблей в моем мозгу придумал телепортировать мобов в шедулере на маленькое расстояние по направлению к цели, и если рядом есть игрок, то перестать их телепортировать и дать мобам его спокойно атаковать, но через 3 секунды когда очередная порция кислорода подошла, стало понятно что это будет выглядеть ужасно. Спросил тут о том как назначить локацию назначения.
Вышло как-то так:
Код:
public class LightCreep
{
    public Location spawnLocation  = new Location(Bukkit.getWorld("server"), 185, 55, 76);
    public LivingEntity zombie = null;

    public void spawn()
    {
        World world = spawnLocation.getWorld();
        zombie = (LivingEntity)world.spawnEntity(spawnLocation.add(
                Math.random()*2, 0, Math.random()*2
        ), EntityType.ZOMBIE);
    }

    public void followLoc(Location loc, float d)
    {
        final LivingEntity e = zombie;
        ((EntityInsentient) ((CraftEntity) e).getHandle()).getNavigation().a(loc.getX(), loc.getY(), loc.getZ(), (float) d);
    }
}

Но это не работает. Когда еще одна порция кислорода попала в мозг, я понял, что эта штука перекрывается дефолтными PathFinder'ами. Как их очистить я не понял, информации об этом совсем нет.

Помогите, как такое реализовать?
 
Вроде эта штука перекрывается не пачфиндерами, а ЭнтитиТаргетЭвентом
В каком смысле шли до цели и били игроков? Тебе надо чтобы все время шли или останавливались и били игрока пока кто-то не умрет?
 
Вроде эта штука перекрывается не пачфиндерами, а ЭнтитиТаргетЭвентом
В каком смысле шли до цели и били игроков? Тебе надо чтобы все время шли или останавливались и били игрока пока кто-то не умрет?
Ну вот идут они, рядом оказался игрок, они перестают идти, начинают его бить пока он не уйдет из зоны видимости или не умрет. Потом идут дальше к цели. Нужно что бы они еще и били мобов другой команды(но мб это можно реализовать просто той же целью что и с игроками, просто для мобов другой команды другого моба ставить)
 
Надо просто проверять: если у твоего LivingEntity, getTarget равен null тогда выполнять followLoc, иначе return.
 
Надо просто проверять: если у твоего LivingEntity, getTarget равен null тогда выполнять followLoc, иначе return.
followLoc не работает вовсе. Я уверен что в этом виновен стандартный AI, и его нужно очистить (каким то образом). Но как?
 
followLoc не работает вовсе. Я уверен что в этом виновен стандартный AI, и его нужно очистить (каким то образом). Но как?
Должно работать, попробуй в рунейбл засунуть, переназначать АИ гораздо сложнее.
 
Должно работать, попробуй в рунейбл засунуть, переназначать АИ гораздо сложнее.
А в чем проблема переназначения движения по таймеру?
По памяти, но как то так
Код:
new BukkitRunnable(){
            @Override
            public void run() {
              ((EntityCreature) ((CraftEntity) e).getHandle()).getNavigation().a(22, 87, 12, 1D);
               }
            }.runTaskTimer(this, 5);
 
Реализовал через getNearbyEntities и раннейбл, заработало. Остался последний вопрос: Как добавить что бы зомби могли атаковать кадавров и наоборот?
 

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

Назад
Верх