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

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

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

  1. Автор темы
    Bars

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

    Баллы:
    173
    Долго гугля и листая бакит форум, нашел код, изменяющий скорость зомби посредством затрагивания его класса в NMS крафтбакита. Сейчас настал вопрос изменения поля зрения зомби, т.е. в радиусе скольки метров он замечает игроков. Так вот, как этот радиус увеличить до 70 блоков?
     
  2. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ты сам ответил на свой вопрос.
    Есть еще проблема что при таком увеличении могут перестать адекватно работать те элементы AI которые просчитывают путь...
    Но сначала бы увеличить)
    Еще на тему "Как"
    Создаешь класс CustomZombie, который наследует класс Zombie, регистрируешь его, и затем подменяешь обычных зомби на своих.
    Вся инфа есть на Bukkit.org
     
  3. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    AI, которое просчитывает путь хранится в NBT-теге зобми и максимальное 2048. В
    Attributes зобми нужно изменить атрибут generic.followRange, от которого зависит расстояние для преследования зобмями. При этом зобми прекрасно могут проходить лабиринты для достижения своей цели.
     
    fromgate и ql_Nik_lp нравится это.
  4. Автор темы
    Bars

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

    Баллы:
    173
    Я откопал там только единственную скорость, и то не сразу. Там один чел плагин написал опенсоурс, оттуда я и выдрал. А то, что есть на бакит форуме, вообще не работает. Я даже пробовал реализацию как в TMCz. И знаете? Она не работает. Вот и пришел к вам сюда :(

    Версия 1.5.2.
    И как его заменить?
    Код:
        @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();
            }
        }
     
    Последнее редактирование: 15 фев 2014
  5. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Точно, про NBT забыл.
    Я знаю что многие пытались, и у многих не вышло.
    А в 1.7 все просто
    Шах и мат, любители старья ;D
    Кстати, мувспид тоже можно заменить в NBT, как и урон, кол-во хп, и т.д
    Плагин NBTEditor умеет такое, он OpenSource, так что можно глянуть
     
  6. Автор темы
    Bars

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

    Баллы:
    173
    На 1.5.2 видел, как такое работает, поэтому и на нём можно это изменить. Сейчас посмотрю.
    Нет, там такого нет.
     
  7. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Где и какого?
    Если ты про 1.7.2, то могу сейчас поднять сервер, посмотришь
     
  8. Автор темы
    Bars

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

    Баллы:
    173
    В плагине NBTEditor нет настройки радиуса агрессивности зомби. Какой сервер? Что посмотрю? Так говорите, будто сейчас ради меня будете писать такой плагин для 1.7.2, чтобы мне его показать...
    Стандартный радиус 20. Мне нужно 70. Вот, до сих пор лежу и курю гугл по разным запросам с параметром "site:forums.bukkit.org" :confused:
     
  9. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Извиняюсь, перепутал
    В NBTEditor'e есть возможность настроить атрибут followRange, но это немного другое.
    Если найдете - буду благодарен если поделитесь :)
     
  10. Автор темы
    Bars

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

    Баллы:
    173
    Пока нашёл такой вариант: 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. Скорость работает, а вот агро-радиус зомби - нет. Подскажите, как это исправить?
     
    Последнее редактирование: 15 фев 2014
  11. FataLeeer

    FataLeeer Активный участник

    Баллы:
    63
    Имя в Minecraft:
    FataLeeer
    Актуально 1.8
     
  12. Автор темы
    Bars

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

    Баллы:
    173
    CustomEntitiesAPI1.8
     
  13. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Можете подсмотреть в плагине MythicMobs
     
  14. Автор темы
    Bars

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

    Баллы:
    173
    Я ответил. А можно спавнить через /summon
     

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