Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

therimuru_

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

Пока что, я знаю два варианта.
1. Создавать шедулер, и высчитывать сколько времени осталось до назначенного с момента включения сервере
2. Зарепитить код, который будет проверять текущее время раз в секунду например.
 
Приветствую. Потребовался плагин, который будет выполнять определенные действия в определенное время (не через время, а именно в какое-то конкретное, например 16:00). Каким образом это можно реализовать?

Пока что, я знаю два варианта.
1. Создавать шедулер, и высчитывать сколько времени осталось до назначенного с момента включения сервере
2. Зарепитить код, который будет проверять текущее время раз в секунду например.
Лично я бы создал шедулер, который будет проверять текущее время через 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");
        }
    }
}
 
Последнее редактирование:
Лично я бы создал шедулер, который будет проверять текущее время через 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");
        }
    }
}

Мой второй вариант. Только я бы использовал LocalTime.now() для отслеживания текущего времени.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх