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

Помогите Как реализовать таймер

Тема в разделе "Разработка плагинов для новичков", создана пользователем Aviloo, 21 июл 2022.

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

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

    Баллы:
    61
    Имя в Minecraft:
    Aviloo
    Всем привет. Недавно , я столкнулся с проблемой и прошу вас помочь мне. Я хочу реализовать таймер ,что-то на примере подобного :
    Код:
    p.sendMessage("Ты получил эффект");
    // Тут должен быть сам таймер
    p.setScoreboard(scoreboardsNull);
    Иными словами, это таймер между двумя действиями . Т.е после отправки сообщения ,например , в течении 5 секунд ничего не происходит , а по прошествии этого времени - устанавливается скорборд .
    Пытался использовать стандартный способ ,через TimeUnit.SECONDS.sleep(5) , но оно и не удивительно ,что не сработало , вернее сработало , но не так как задумывалось . Он действительно сделал паузу между действиями , но просадил тпс на 4- 6 единиц и создавал паузу не только между этими действиями , а буквально в работе сервера . Пытался найти ,что-то иное по схожим запросам , но вероятно я плохо искал ,раз в результате ничего подходящего не наше . Прошу помочь , заранее спасибо .
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Потому что это останавливает весь поток - т.е. весь сервер буквально замирает на эти самые 5 секунд на этой строке кода. Чтобы откладывать действия, следует использовать шедулер.
    PHP:
    Plugin plugin// Экземпляр твоего плагина
    long ticks 40// На сколько тиков отложить выполнение
    p.sendMessage("Ты получил эффект");
    Bukkit.getScheduler().runTaskLater(plugin, () -> {
        
    p.setScoreboard(scoreboardsNull);
        
    // TODO Остальной код, если требуется
    }, ticks);
     
  3. Автор темы
    Aviloo

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

    Баллы:
    61
    Имя в Minecraft:
    Aviloo
    Спасибо БОЛЬШОЕ , помогло .


    Тема закрыта!
     
Статус темы:
Закрыта.

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