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

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

Статус
Закрыто для дальнейших ответов.

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
 
Для начала, это все можно сделать 1 таймером в onEnable().
Куча синхронных таймеров с общим функционалом, бе.
 
Для начала, это все можно сделать 1 таймером в onEnable().
Куча синхронных таймеров с общим функционалом, бе.
Для начала, у меня всего-лишь 2 голема спавнятся каждые 4 часа (и удаляются через 20 минут) и когда их убивают, то таймер удаляется.
 
Код:
for(Entity entity : golem.getNearbyEntities(32, 32, 32)) {
    Creature creature = (Creature) entity;
    creature.setTarget(entity);
}
 
Код:
for(Entity entity : golem.getNearbyEntities(32, 32, 32)) {
    Creature creature = (Creature) entity;
    creature.setTarget(entity);
}
Чел, прошу прощения, но к чему ты это пишешь?
Ты поднял старую тему, так ещё и отвечаешь неправильно)

Если что, мой код атакует ближайшего игрока, у тебя же всех игроков в радиусе 32, 32, 32.
 
Чел, прошу прощения, но к чему ты это пишешь?
Ты поднял старую тему, так ещё и отвечаешь неправильно)

Если что, мой код атакует ближайшего игрока, у тебя же всех игроков в радиусе 32, 32, 32.
Вообще-то он всё правильно написал, просто ты динозавр. Темы поднимаются из-за таких как ты, которые не могут нажать галочку «закрыто» и поставить префикс «решено»
 
Вообще-то он всё правильно написал, просто ты динозавр. Темы поднимаются из-за таких как ты, которые не могут нажать галочку «закрыто» и поставить префикс «решено»
Так в том то и дело, что не решено. Но решение уже не нужно, месяц прошёл. Спасибо.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх