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

Помогите Спавн партиклов

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    Вопроса два, как можно заспавнить партиклы вокруг игрока, как бы окружающий его щит, имея только локацию игрока. И второй вопрос, как поджигать игроков, которые будут в кругу этих партиклов, кроме игрока?
     
  2. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Player.getWorld().spigot().playEffect();
    Там указывается форма партиклов основываясь на координатах, от этого ищешь игроков на нужном расстоянии от центра формы и поджигаешь их
     
  3. Автор темы
    Spsiska_13

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    Окей, попробую. Вопрос ещё один, как можно создавать как бы волну, спавнить партиклы туда, куда игрок смотрит, и с каждым блоком вперёд расширять её на 1 по краям
     
  4. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Ищем блок на который смотрит игрок (вычеркивая воздух)
    Код:
    Block b = p.getTargetBlock((HashSet<Byte>)null, N);
    Где N - максимальная дальность блока, на который смотрит игрок

    Пример моего кода спауна партиклов
    Код:
    p.getWorld().spigot().playEffect(p.getLocation(), Effect.TILE_BREAK, id, 0, 3.5f, 0.2f, 3.5f, 10.0f, 4000, 18);
    (спаунит частицы копания блока, айди блока, субайди, 3.5 протяженность по Х, 0.2 (Y), 3.5 (Z), скорость частиц, количество частиц, радиус)


    Уже не помню, как соотносятся координаты и радиус, сам потестишь узнаешь.
    В итоге тебе надо найти дистанцию Player.getlocation().distance(Block.getlocation())
    И приплюсовывать дистанцию к радиусу частиц полагаю
     
  5. Energy warrior

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

    Баллы:
    76
    Во-первых, там уже не байт, а материал, в0-вторых, точно не помню, но он NPE может кинуть, потому что воздух прозрачный и он его не берёт, в-третьих лучше использовать getTargetBlockExact он ничего, вроде, не игнорит. Тут надо обычным матаном. В гугле полно туторов по созданию кругов. Там единственное надо, не помню точно, sin(radius), cos(radius). Потом синус прибавляешь к x, косинус к z, оборачиваешь в цикл и получаешь круг. Потом проверяешь дистанцию между игроками и если она окажется меньше радиуса(твоего щита), то поджечь.
    Тут не эксперт, но, скорее всего, берёшь x и y и пускаешь по ним синусоиду. Чтобы увеличить ширину по краям - коэффициенты. Ну, а куда смотрит - банальный рейкаст.
     
    Последнее редактирование: 18 апр 2020
  6. Автор темы
    Spsiska_13

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

    Баллы:
    66
    Имя в Minecraft:
    Yura2108
    Можно пример в коде, а то я тупенький, ничего не понял...
     
  7. Lemar98

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

    Баллы:
    76
    Math + google
     
  8. Energy warrior

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

    Баллы:
    76
    y = sin(x)
     

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