Очистить упавшие предметы каждые 5 минут - PullRequest
0 голосов
/ 22 мая 2018

Я кодирую плагин Spigot 1.8.9 и пытаюсь сбрасывать капли каждые 5 минут, но перед тем, как очистить элементы, я хочу дать предупреждение за 60, 30, 15, 10, 5, 3, 2, 1 секундуочистить их.

Я попытался использовать следующее, но у него нет предупреждения о обратном отсчете.

public static void startDropTimer() {
    Bukkit.getScheduler().scheduleSyncRepeatingTask(MyPlugin.getPlugin(), new Runnable() {

        @Override
        public void run() {
            clearAllDrops();
        }
    }, 6000, 6000);
}

Как я могу реализовать предупреждающий отсчет перед очисткой капель?

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете создать переменную timer для хранения пройденного времени

long remainingTimeInSeconds = 300; //5 minutes

Затем обновите свою задачу, чтобы уменьшить этот таймер каждые 20 тактов (20 тактов = 1 секунда в Bukkit),При выполнении задачи обновления выполните проверку переменной таймера, чтобы проверить, нужно ли отправлять сообщение или удаляются отбрасывания:

Bukkit.getScheduler().scheduleSyncRepeatingTask(MyPlugin.getPlugin(), new Runnable() {

    @Override
    public void run() {
        currentTimeInSeconds--;

        switch(remainingTimeInSeconds) {
           case 60:
           case 30:
           case 15:
           case 10:
           case 5:
           case 3:
           case 2:
           case 1:
           //Send message remainingTimeInSeconds seconds left until drops are cleared!
           break;

           case 0:
           clearAllDrops();
           remainingTimeInSeconds = 300; //Reset your timer
           break;             
        }    

    }
}, 20L, 0);
...