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

Помогите (РЕШЕНО)Как изменять скорость Entity

Тема в разделе "Разработка плагинов для новичков", создана пользователем Mukiroku, 25 дек 2017.

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

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Здравствуйте я сделал жителя(Villager villager = (Villager)loc.getWorld().spawnEntity(loc, EntityType.VILLAGER);)
    Но не знаю как сделать что бы он не двигался и что бы на него не не действовал огонь.

    Подскажите метод чтобы остановить жителя, и сделать его не уязвимым.
     
  2. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Нахрена столько скобок и кастов?
     
  3. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Скобок не так уж и много, сколько нужно.
    Villager villager = (Villager) loc.getWorld().spawnEntity(loc, EntityType.VILLAGER);
    И попробуй без кастов.
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
  5. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Как зачем?
    Без ИИ он передвигаться не будет, это же очевидно. По поводу урона не уверен. Возможно придётся обрабатывать EntityDamageEvent
     
  7. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Можно юзать просто метод spawn, там дженерики все за тебя сделают
     
  8. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    setInvulnerable(boolean flag)
    У себя делал, хотел чтобы житель смотрел на игрока (с noAI он тупо стоит), пытался с setCollideable(), но сломались стрелы. Сделал через Runnable телепортацию если его сдвинули.
     
  9. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    А нахрена стоящему жителю стрелы?
     
  10. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Игрокам надо, всю суть мини-игры сломалась
     
  11. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Извини, но почему при попытке ввесnи .setAI(true);
    .setAI - этого метода нет. Версия Spigot 1.8
    Как я сделал:
    LivingEntity villager= (LivingEntity) loc.getWorld().spawnEntity(loc, EntityType.VILLAGER);
    villager.setAI(false);
     
  12. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ну все - выбрасывай, динозаврам надо в nbt лезь
     
  13. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Ставь атрибут на скорость 0, но толкать его смогут.
     
  14. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    По идеи можно сделать кастомного ентити и оверайднуть ему метод collide
     
  15. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Ради одного отключения движения - слишком много кода и геморроя с версиями. Проще noAI через nbt поставить
     
    Последнее редактирование: 27 дек 2017
  16. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Villager villager = world.spawn(loc,Villager.class);
     
  17. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну, в таком случае, мои соболезнования.
    Нужно меньше сидеть на старых версиях.
    Хотя как раз в 1.8 появился nbt-тег noAI. Но я даже не уверен, что его можно использовать без нмс. Возможно протоколлиб поможет, возможно ещё какой-то плагин. Ну, либо используй НМС, привязывайся к конкретно версии 1.8 и обновляй плагин руками в случае чего
     
  18. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Спасибо за помощь.
    Вот моё решение:

    public static void NoAI(Entity ent) {
    net.minecraft.server.v1_8_R3.Entity nmsEntity = ((CraftEntity) ent).getHandle();
    NBTTagCompound tag = nmsEntity.getNBTTag();

    if(tag == null){
    tag = new NBTTagCompound();
    }
    nmsEntity.c(tag);
    tag.setInt("NoAI", 1);
    nmsEntity.f(tag);

    }
     
Статус темы:
Закрыта.

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