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

Помогите Снег из частиц

Тема в разделе "Разработка плагинов для новичков", создана пользователем Kurumi, 3 дек 2019 в 20:04.

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

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

    Баллы:
    76
    Имя в Minecraft:
    Kurumi
    Всем привет.
    Недавно заметил на ваймворолде идущий снег из частиц в лобби. То есть, частицы "снега" (на самом деле, вроде, фейерверка) медленно падают с неба.

    Не понимаю способ реализации.
    Пните идейкой ^_^
     
  2. alexandrage

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

    Баллы:
    173
    spawnParticle Particle.FIREWORKS_SPARK с большим радиусом.
     
    Последнее редактирование: 3 дек 2019 в 20:42
  3. Автор темы
    Kurumi

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

    Баллы:
    76
    Имя в Minecraft:
    Kurumi
    Хм, эффект не такой, как хотелось бы...
    Частицы появляются резко, еще и резковато летают влево-вправо...

    Нужно, чтобы они появлялись плавно, можно сказать незаметно, что они просто так вот резко из воздуха появляются. Также нужно, чтобы они просто летели сверху вниз, без всяких движение влево-вправо..
    Вроде порылся в доках, но, похоже, что я что-то не так понял или не понял вообще

    Код:
        @Override
        public void onEnable() {
            Bukkit.getScheduler().runTaskTimer(this, () ->  {
                for(Player player : Bukkit.getOnlinePlayers()) {
                    if(player.getWorld().getName().equals(Bukkit.getWorlds().get(0).getName())) {
                        player.getWorld().spawnParticle(Particle.FIREWORKS_SPARK, player.getLocation(), 500, 20, 40, 20);
                    }
                }
            }, 20L, 20L);
        }
    
    Что не так?
     
  4. alexandrage

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

    Баллы:
    173
    Скорость установи в 0.
     
  5. Автор темы
    Kurumi

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

    Баллы:
    76
    Имя в Minecraft:
    Kurumi
    Точно! Спасибо, вроде, все как надо!
    Только у меня встает вопрос нагрузки..
    Думаю, серверу не очень понравится спавн 500+ частиц каждую секунду, для каждого игрока...
    Еще у player есть свой спавн партикл. Как я понял, данные партиклы будут видны только для этого игрока? Возможно, стоит использовать этот метод?
     
  6. dimkaS

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

    Баллы:
    76
    Имя в Minecraft:
    dimkaS
    Делай асинхронный рунейбл в нем проход по онлайн игрокам и спавн частиц, партиклы нормально спавнит.
     
  7. Dymeth

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

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    С чего ты взял, что на каждого игрока спаунится по 500+ частиц?
    Начнем с того, что на сервере частицы вообще не спаунятся, потому что это клиентская фишка.
    Единственная задача сервера - отправить пакеты спауна частиц.
    И этих пакетов не 500 на игрока, как ты думаешь.
    А ровно по одному на игрока, потому что в одном пакете может быть указано произвольное количество частиц.
    Т.е. для каждой частицы не создается отдельный пакет в твоём случае.
    Более того, как ты отметил, можно пакеты отправлять только тому игроку, вокруг которого эти частицы должны отображаться.
    А раз в секунду всем игрокам отправлять по одному легенькому пакету - это мизерная нагрузка.
    Единственное, где может лагать - это клиент.
    Но, как показывает практика, 500 частиц для клиента - это тоже практически ничто с текущим уровнем оптимизаций.
    Короче говоря, не парься, пока не начнутся проблемы (а из-за этих частиц они вряд ли начнутся).
    Особого смысла нет для такой легкой задачи. Можно даже хуже сделать - асинхронность тоже не бесплатная )
     
    Последнее редактирование: 4 дек 2019 в 01:32
  8. Автор темы
    Kurumi

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

    Баллы:
    76
    Имя в Minecraft:
    Kurumi
    Спасибо!
     
Статус темы:
Закрыта.

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