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

Помогите Футбол в майнкрафте

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    Опишу вкратце, нужно создать что-то наподобие футбола в майнкрафте, знаю, что есть такой плагин, но он не подходит по другим критериям. Допустим используем слайма в качестве мяча. Меня интересует как его перемещать от удара игроком, при этом он двигаться не будет и отслеживать попадание в ворота?
     
  2. alexandrage

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

    Баллы:
    173
    Говно идея.
     
  3. Автор темы
    Spsiska_13

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    Не моя идея, таков заказ, нужно выполнять)
     
  4. Kurumi

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

    Баллы:
    76
    Как двигать:
    Чекаешь что ударяет игрок. Если слайм, тогда пполучаешь direction игрока и в этом direction, через N блоков спавнишь новый слайм, а старый делитаешь.

    Отслеживать ворота:
    Когда переместил слайм, проверяй кубоид. Если сходится с кубоидом ворот == гол

    Изи же
     
  5. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Не знаю будет ли работать, но с помощью PlayerPickupItemEvent , получать айтем, если это слайм то, присваивать ему вектор.
     
  6. Автор темы
    Spsiska_13

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    При такой работе он будет телепортироваться, а если делать плавное перемещение? Ну и в случае с твой идей можно просто слайм тепать, так как у него есть такая функция, старый даже удалять не придётся. Но я всё же хочу сделать это не как мгновенное перемещение, а плавное.
     
  7. Автор темы
    Spsiska_13

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    Не понял, к чему PickUpItem? Я имел ввиду моба, а не айтем
     
  8. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Попробуй мой метод, если сработает то он должен лететь , например, как стрела
     
  9. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Прошу прощения, подумал, о слаймболе, но без разницы, проверяй значит какой энтити получил дамаг, если слайм, то присваивай ему вектор, чтобы усилить/уменьшить дальность полета, используй дистанцию от энтити к плееру

    UPD если будет улетать далека из-за того , что часто бьется ставь больше setNoDamageTicks, setMaximumNoDamageTick
     
  10. Автор темы
    Spsiska_13

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    Пытался использовать setVelocity() и как вектор пытался использовать как положения игрока, так и направление его глаз. В обоих случаях моб просто исчезал.
     
  11. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Слишком большие значения значит ставил.
    Используй метод который я нашел на просторах
    Код:
         public void pullEntityToLocation(final Entity e, final Location loc) {
             final Location entityLoc = e.getLocation();
             entityLoc.setY(entityLoc.getY() + 0.1);
             e.teleport(entityLoc);
             entityLoc.setX(Math.round(entityLoc.getX()));
             entityLoc.setY(Math.round(entityLoc.getY()));
             entityLoc.setZ(Math.round(entityLoc.getZ()));
             final double g = -0.08;
             final double t = Math.round(loc.distance(entityLoc));
             final double v_x = (0.3 + 0.07 * t) * (Math.round(loc.getX()) - entityLoc.getX()) / t;
             final double v_y = (0.2 + 0.03 * t) * (Math.round(loc.getY()) - entityLoc.getY()) / t - 0.5 * g * t;
             final double v_z = (0.3 + 0.07 * t) * (Math.round(loc.getZ()) - entityLoc.getZ()) / t;
             final Vector v = e.getVelocity();
             v.setX(v_x);
             v.setY(v_y);
             v.setZ(v_z);
             e.setVelocity(v);
         }
    Поиграй со значениями, если не понимаешь, что там что. На практике разберешься.
    Но этот метод будет притягивать моба к тебе например, чтобы сработало от тебя используй в качестве энтити моба, а в качестве локации, локацию игрока, и умножай это *e.setVelocity(v);* на -1
     
  12. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    UPD в качестве ворот можешь использовать портал, и соответственно EntityPortalEvent
     
  13. Kurumi

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

    Баллы:
    76
    Окей
    Стенд + шедулер
     
  14. Автор темы
    Spsiska_13

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    Подробнее плз, не понял вообще)
     
  15. Kurumi

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

    Баллы:
    76
    Спавнишь армор стенд, ставишь ему слайма, вертешь как надо и через шедулер тпхаешь каждую сек. Таким образом, запусканшь стенд в нужном тебе направлении и он летит плавно
     
  16. PhantomPaw

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

    Баллы:
    66
    Этот не лучше ли установить?
     

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