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

Помогите Изменение поведения зомби (NMS)

Bars

Старожил
Девелопер
Пользователь
Баллы
173
Долго гугля и листая бакит форум, нашел код, изменяющий скорость зомби посредством затрагивания его класса в NMS крафтбакита. Сейчас настал вопрос изменения поля зрения зомби, т.е. в радиусе скольки метров он замечает игроков. Так вот, как этот радиус увеличить до 70 блоков?
 
Долго гугля и листая бакит форум, нашел код, изменяющий скорость зомби посредством затрагивания его класса в NMS крафтбакита. Сейчас настал вопрос изменения поля зрения зомби, т.е. в радиусе скольки метров он замечает игроков. Так вот, как этот радиус увеличить до 70 блоков?
Ты сам ответил на свой вопрос.
Есть еще проблема что при таком увеличении могут перестать адекватно работать те элементы AI которые просчитывают путь...
Но сначала бы увеличить)
Еще на тему "Как"
Создаешь класс CustomZombie, который наследует класс Zombie, регистрируешь его, и затем подменяешь обычных зомби на своих.
Вся инфа есть на Bukkit.org
 
Ты сам ответил на свой вопрос.
Есть еще проблема что при таком увеличении могут перестать адекватно работать те элементы AI которые просчитывают путь...
Но сначала бы увеличить)
AI, которое просчитывает путь хранится в NBT-теге зобми и максимальное 2048. В
Attributes зобми нужно изменить атрибут generic.followRange, от которого зависит расстояние для преследования зобмями. При этом зобми прекрасно могут проходить лабиринты для достижения своей цели.
 
Ты сам ответил на свой вопрос.
Есть еще проблема что при таком увеличении могут перестать адекватно работать те элементы AI которые просчитывают путь...
Но сначала бы увеличить)
Еще на тему "Как"
Создаешь класс CustomZombie, который наследует класс Zombie, регистрируешь его, и затем подменяешь обычных зомби на своих.
Вся инфа есть на Bukkit.org
Я откопал там только единственную скорость, и то не сразу. Там один чел плагин написал опенсоурс, оттуда я и выдрал. А то, что есть на бакит форуме, вообще не работает. Я даже пробовал реализацию как в TMCz. И знаете? Она не работает. Вот и пришел к вам сюда :(

Версия 1.5.2.
AI, которое просчитывает путь хранится в NBT-теге зобми и максимальное 2048. В
Attributes зобми нужно изменить атрибут generic.followRange, от которого зависит расстояние для преследования зобмями. При этом зобми прекрасно могут проходить лабиринты для достижения своей цели.
И как его заменить?
Java:
    @EventHandler
    private void onEntityTarget(EntityTargetEvent e) {
        if (!(e.getTarget() instanceof Player) || !(e.getEntity() instanceof Zombie)) return;
        Player p = (Player) e.getTarget();
        Zombie z = (Zombie) e.getEntity();
        double d = p.getLocation().distance(z.getLocation());
        if (d > ((int) (p.getExp() * 72))) {
            e.setCancelled(true);
            return;
        }

        makeFaster(z, 0.39F);
    }

    public void makeFaster(Zombie z, float speed) {
        EntityZombie zombie = ((CraftZombie) z).getHandle();
        Field fGoalSelector;
        try {
            fGoalSelector = EntityLiving.class.getDeclaredField("goalSelector");
            fGoalSelector.setAccessible(true);
            PathfinderGoalSelector gs = new PathfinderGoalSelector(((CraftWorld) z.getWorld()).getHandle() != null && ((CraftWorld) z.getWorld()).getHandle().methodProfiler != null ? ((CraftWorld) z.getWorld()).getHandle().methodProfiler : null);
            gs.a(0, new PathfinderGoalFloat(zombie));
            gs.a(1, new PathfinderGoalBreakDoor(zombie));
            gs.a(2, new PathfinderGoalMeleeAttack(zombie, EntityHuman.class, speed, false));
            gs.a(3, new PathfinderGoalMeleeAttack(zombie, EntityVillager.class, speed, true));
            gs.a(4, new PathfinderGoalMoveTowardsRestriction(zombie, speed));
            gs.a(5, new PathfinderGoalMoveThroughVillage(zombie, speed, false));
            gs.a(6, new PathfinderGoalRandomStroll(zombie, speed));
            gs.a(7, new PathfinderGoalLookAtPlayer(zombie, EntityHuman.class, 4.0F));
            gs.a(7, new PathfinderGoalRandomLookaround(zombie));
            fGoalSelector.set(zombie, gs);
        } catch (NoSuchFieldException ex) {
            ex.printStackTrace();
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
        }
    }
 
Последнее редактирование:
Точно, про NBT забыл.
Я знаю что многие пытались, и у многих не вышло.
А в 1.7 все просто
Шах и мат, любители старья ;D
Кстати, мувспид тоже можно заменить в NBT, как и урон, кол-во хп, и т.д
Плагин NBTEditor умеет такое, он OpenSource, так что можно глянуть
 
Точно, про NBT забыл.
Я знаю что многие пытались, и у многих не вышло.
А в 1.7 все просто
Шах и мат, любители старья ;D
Кстати, мувспид тоже можно заменить в NBT, как и урон, кол-во хп, и т.д
Плагин NBTEditor умеет такое, он OpenSource, так что можно глянуть
На 1.5.2 видел, как такое работает, поэтому и на нём можно это изменить. Сейчас посмотрю.
Нет, там такого нет.
 
Где и какого?
Если ты про 1.7.2, то могу сейчас поднять сервер, посмотришь
В плагине NBTEditor нет настройки радиуса агрессивности зомби. Какой сервер? Что посмотрю? Так говорите, будто сейчас ради меня будете писать такой плагин для 1.7.2, чтобы мне его показать...
Стандартный радиус 20. Мне нужно 70. Вот, до сих пор лежу и курю гугл по разным запросам с параметром "site:forums.bukkit.org" :confused:
 
В плагине NBTEditor нет настройки радиуса агрессивности зомби
Извиняюсь, перепутал
В NBTEditor'e есть возможность настроить атрибут followRange, но это немного другое.
Если найдете - буду благодарен если поделитесь :)
 
Пока нашёл такой вариант: http://forums.bukkit.org/threads/li...-1-6-4-1-7-2-compatible-partly-broken.110304/
1.5.2: http://mineblown.com:8080/job/RemoteEntities/81/ (СТОП! А где загрузка?)

Вроде хорош, да не то... Ибо сторонняя библиотека. Думаю использовать её для чего-нибудь другого в будущем.
Есть вариант под 1.6.2: https://forums.bukkit.org/threads/tutorial-increasing-pathfinding-range-of-an-entity.177678/
Актуально.
Скорость зомби я изменил (да я и раньше её в принципе изменял, пока не решил создать класс нового зомби). Так как zombie.setTarget(player) не работает на больших дистанциях, мне нужно просто увеличить радиус, в котором зомби будут видеть игроков и агриться на них.

Вот моя тема с кодом: http://forums.bukkit.org/threads/nm...-target-radius-and-speed.233605/#post-2265178. Скорость работает, а вот агро-радиус зомби - нет. Подскажите, как это исправить?
 
Последнее редактирование:
Я ответил. А можно спавнить через /summon
 

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

Назад
Верх