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

Помогите Установить цель голему

Тема в разделе "Разработка плагинов для новичков", создана пользователем WhileInside, 13 июн 2020.

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

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Как мне установить цель голему? Я пробывал создавать голема с кастомным AI, но он почему-то был невидимый (на сервере он был, а на клиенте его нет), пробывал менять AI через рефлексию уже существующему голему, но это почему-то слетало после того, как голем меня убьёт. Сейчас пробую перебирать всех игроков вблизи 32 блоков до голема и устанавливать цель, но это не работает. Ещё как вариант можно наносить 0 урона от игрока, но тогда будет анимация и звук.

    Вот код, который есть сейчас:


    Код:
                IronGolem entity = world.spawn(entityLocation, IronGolem.class);
                entity.setRemoveWhenFarAway(false);
                entity.setPlayerCreated(false);
    
                golems.put(entity, runTimer(() -> {
                    entity.getWorld().getPlayers().stream()
                            .filter(player -> player.getGameMode() == GameMode.SURVIVAL) // скипаем спектаторов и игроков в креативе
                            .map(player -> new DistancedEntity(player, entity.getLocation()))
                            .filter(distEntity -> distEntity.getDistance() < 32) // в пределах 2 чанков
                            .min(Comparator.naturalOrder())
                            .map(DistancedEntity::getEntity)
                            .ifPresent(entity::setTarget);
                }, 5, 5));
    ЗЫ: Версия 1.12.2
     
  2. BestKVanT

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

    Баллы:
    76
    Для начала, это все можно сделать 1 таймером в onEnable().
    Куча синхронных таймеров с общим функционалом, бе.
     
  3. Автор темы
    WhileInside

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Для начала, у меня всего-лишь 2 голема спавнятся каждые 4 часа (и удаляются через 20 минут) и когда их убивают, то таймер удаляется.
     
  4. nutrolshok

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

    Баллы:
    76
    Код:
    Creature creature = (Creature) entity;
    creature.setTarget(livingEntity);
     
  5. Автор темы
    WhileInside

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    upload_2020-7-5_19-31-19.png
     
  6. nutrolshok

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

    Баллы:
    76
    Код:
    for(Entity entity : golem.getNearbyEntities(32, 32, 32)) {
        Creature creature = (Creature) entity;
        creature.setTarget(entity);
    }
     
  7. Автор темы
    WhileInside

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Чел, прошу прощения, но к чему ты это пишешь?
    Ты поднял старую тему, так ещё и отвечаешь неправильно)

    Если что, мой код атакует ближайшего игрока, у тебя же всех игроков в радиусе 32, 32, 32.
     
  8. kefavova

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

    Баллы:
    76
    Имя в Minecraft:
    Afek
    Вообще-то он всё правильно написал, просто ты динозавр. Темы поднимаются из-за таких как ты, которые не могут нажать галочку «закрыто» и поставить префикс «решено»
     
  9. Автор темы
    WhileInside

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Так в том то и дело, что не решено. Но решение уже не нужно, месяц прошёл. Спасибо.
     
Статус темы:
Закрыта.

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