Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Запуск действия по таймеру

Тема в разделе "Разработка плагинов для новичков", создана пользователем Korvinius, 25 фев 2016.

  1. Автор темы
    Korvinius

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

    Баллы:
    88
    Здравствуйте, подскажите, мне нужно выполнять определенное действие каждый час, я знаю, сейчас вы мне скажете "шедулеры в помощь", полностью согласен, только я хочу уточнить один момент. Действие нужно выполнять, допустим каждый час в 00 минут, 00 секунд, а если сервер был перегружен в 17:32:18, то, как сделать, чтобы действие выполнялось именно в нужное мне время?
     
  2. Хостинг MineCraft
    <
  3. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    При запуске плагина (А) вычислять число тиков, через которые тебе нужно совершить действие. Если целевой тик дальше, чем через минут 10, то каждые пять минут перезапускать шедулером код (А) с целью корректировки (на больших временах из-за скачков TPS время может скакать). Если меньше, то запланировать шедулером же уже само по себе действие.
    long тиковДоСобытия = 20 * (искомоеВремятекущееВремя); // в секундах.
     
  4. Автор темы
    Korvinius

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

    Баллы:
    88
    @Reality_SC, спасибо, попытаюсь реализовать...
     
  5. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Реализация на полстранички всего :)
     
  6. Автор темы
    Korvinius

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

    Баллы:
    88
    Как то забросил эту идею, но сегодня вспомнил и реализовал таким образом, может кому то пригодится, как узнать сколько минут осталось до окончания текущего часа:
    Код:
        public int getMinToHourNull() {
            int i = 0;
            Date d = new Date();
            SimpleDateFormat min = new SimpleDateFormat("mm");
            try {
                i = Integer.parseInt(min.format(d).toString());
            } catch (NumberFormatException e) {
            }
            return 60-i;
        }
     
    Последнее редактирование: 6 май 2016

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