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

Помогите Счедулер обратного отсчета

Тема в разделе "Разработка плагинов для новичков", создана пользователем SergK35, 29 дек 2018.

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

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

    Баллы:
    76
    Имя в Minecraft:
    Sergk35
    Доброго времени суток. Подскажите пожалуйста, как получить id счедулера, для того, чтоб его отключить в нужный момент?

    Или есть какой-нибудь более правильный способ запуска обратного отсчета?

    Код:
    Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new BukkitRunnable() {
        @Override
        public void run() {
            p.sendMessage("Через " + countdown + " секунд произойдет магия");
            countdown--;
            if (countdown == 0) {
                Bukkit.getScheduler().cancelTask(вот сюды надо засунуть айди счедулера);
                p.sendMessage(ChatColor.RED + "Vse");
            }
     
  2. Автор темы
    SergK35

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

    Баллы:
    76
    Имя в Minecraft:
    Sergk35
    Попробовал сделать еще так:
    Код:
    Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new BukkitRunnable() {
                @Override
                public void run() {
                    if(countdown >= 0) {
                        p.sendMessage("Через " + countdown + " секунд произойдет магия");
                        countdown--;
                    }
                    this.cancel();
                }
            }, 0, 20);
    Первый раз заработало как надо, но вот при последующих отказывает работать и выбрасывает следующее:
    Код:
    [WARNING] [Plugin] Task #18 for Plugin v1.0 generated an exception
    java.lang.IllegalStateException: Not scheduled yet
        at org.bukkit.scheduler.BukkitRunnable.getTaskId(BukkitRunnable.java:129)
        at org.bukkit.scheduler.BukkitRunnable.cancel(BukkitRunnable.java:18)
     
  3. alexandrage

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

    Баллы:
    173
    public class Scheduler extends BukkitRunnable {...}
    new Scheduler().runTask(plugin).getTaskId();
     
  4. Energy warrior

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

    Баллы:
    76
    HTML:
    new BukkitRunnable(){
    
                int cooldown = 10;//Секудны кулдауна
                @Override
                public void run() {
                   Player.sendMessage("Через "+cooldown+"секунд произойдёт магия!");
                    if(cooldown == 0){ //Если секудны кулдауна равны 0 то останавливаем
                        cancel();
                    } else { //Иначе уменьшаем на 1
                        cooldown--;
                    }
                }
            }.runTaskTimer(Main.getPlugin(Main.class), 20/*через 1 секуду*/,/*каждую 1 секудну будет повторяться*/20);
     
    Последнее редактирование: 29 дек 2018
  5. Автор темы
    SergK35

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

    Баллы:
    76
    Имя в Minecraft:
    Sergk35
  6. Автор темы
    SergK35

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

    Баллы:
    76
    Имя в Minecraft:
    Sergk35
    Спасибо, учту.
     

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