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

[Решено] Таймеры в Java Bukkit

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

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

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

    Баллы:
    66
    Я уже хорошо делаю плагины но меня интересует момент с таймерами.

    Мне нужно что бы кто-то помог с кодом.

    Смысл кода: При запуске плагина должен начинаться таймер который выполнять действия.
    Я не понимаю как это сделать помогите пожалуйста.

    Буду очень благодарен!
     
  2. __Void__

    __Void__ Участник Пользователь

    Баллы:
    36
    Для этого в Bukkit присутствует Scheduler.
    Код:
    Bukkit.getScheduler().scheduleSyncRepeatingTask(
            PLUGIN_INSTANCE,
            () -> Bukkit.broadcastMessage("Hello!"),
            0L, 400L
    );
    
    • PLUGIN_INSTANCE - это ссылка на главный класс вашго плагина
    • () -> Bukkit.broadcastMessage("Hello!") - это действие, которое будет выполнять Scheduler (реализация интерфейса Runnable из Java)
    • 0L - это задержка, которую должен выждать Scheduler перед первым запуском (в тиках)
    • 400L - это задержка между каждым вызовом метода (действия), тоже в тиках
    В общем, приведенный выше код запланирует цикличный вызов Bukkit.broadcastMessage("Hello!") каждые 20 секунд (400 тиков)

    Более подробное описание работы с Scheduler (в том числе различные варианты планировки, вроде выполнения один раз или асинхронных вызовов) находится тут: https://bukkit.fandom.com/wiki/Scheduler_Programming
     
  3. Автор темы
    FortiStrike

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

    Баллы:
    66
    Оно выводит привет в консоль каждое то время?
     
  4. __Void__

    __Void__ Участник Пользователь

    Баллы:
    36
    Каждые 20 секунд будет говорить всем "Hello"
     
  5. __Void__

    __Void__ Участник Пользователь

    Баллы:
    36
    Если вам нужно, допустим, подождать минуту после запуска плагина и сказать "Hello" всего 1 раз, то вот:
    Код:
    Bukkit.getScheduler().runTaskLater(
            PLUGIN_INSTANCE,
            () -> Bukkit.broadcastMessage("Hello!"),
            1200L
    );
    
     
Статус темы:
Закрыта.

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