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

Помогите Выполнение задачи в определенное время

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Приветствую. Потребовался плагин, который будет выполнять определенные действия в определенное время (не через время, а именно в какое-то конкретное, например 16:00). Каким образом это можно реализовать?

    Пока что, я знаю два варианта.
    1. Создавать шедулер, и высчитывать сколько времени осталось до назначенного с момента включения сервере
    2. Зарепитить код, который будет проверять текущее время раз в секунду например.
     
  2. BetterLex

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

    Баллы:
    76
    Лично я бы создал шедулер, который будет проверять текущее время через Calendar, а уже потом бы выполнял какие-либо методы сравнивая время (не уверен, что это работает, но должно). Например:
    Код:
    public final class Testss extends JavaPlugin {
    
        @Override
        public void onEnable() {
            timeChecker();
        }
    
        private void timeChecker() {
            getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
                @Override
                public void run() {
    
                    Calendar calendar = Calendar.getInstance();
                    int hour = calendar.get(Calendar.HOUR_OF_DAY);
                    int minutes = calendar.get(Calendar.MINUTE);
    
                    if (hour == 16 && minutes == 0) {
                        method1();
    
                    } else if (hour == 18 && minutes == 0) {
                        // второй метод
    
                    }
                }
            }, 0, 60);
        }
    
        private void method1() {
            for (Player player : Bukkit.getOnlinePlayers()) {
                player.sendMessage("Сейчас 16:00");
            }
        }
    }
     
    Последнее редактирование: 15 июл 2024
  3. Автор темы
    therimuru_

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

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Мой второй вариант. Только я бы использовал LocalTime.now() для отслеживания текущего времени.
     
  4. BetterLex

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

    Баллы:
    76
    Хм, да, он даже удобнее будет, на самом деле.
     
Статус темы:
Закрыта.

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