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

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

Discussion in 'Разработка плагинов для новичков' started by Korvinius, Feb 25, 2016.

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    88
    Как то забросил эту идею, но сегодня вспомнил и реализовал таким образом, может кому то пригодится, как узнать сколько минут осталось до окончания текущего часа:
    Code:
        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;
        }
     
    Last edited: May 6, 2016

Share This Page