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

Помогите Уничтожится ли экземпляр таймера?

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

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

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Уничтожится ли экземпляр сам или его надо будет уничтожить?Если не уничтожается,то как уничтожить.
    Вот класс таймера:
    Код:
    package ru.Novichock.HideAndSeek;
    
    import org.bukkit.entity.Player;
    import org.bukkit.scheduler.BukkitRunnable;
    
    public class MyTime extends BukkitRunnable {
    private int counter;
    private HideAndSeek plugin;
    
    public MyTime(HideAndSeek plugin,int counter){
         this.counter=counter;
         this.plugin=plugin;
    }
        @Override
        public void run() {
           if(counter>0){
               for(Player p : plugin.JoinInGame){
                   plugin.Messager("Игра начнётся через: "+counter, p);
                   counter--;
               }
           } 
           if(counter==0){
            for(Player p : plugin.JoinInGame){
            plugin.Messager("Игра началась!", p);
            }
            this.cancel();
           }
        }
    
    }
    
    Вот так запускаю:
    MyTime mytime = new MyTime(plugin,5);
    mytime.runTaskTimer(plugin, 0, 20);
     
  2. Хостинг MineCraft
    <
  3. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    в Java все объекты существуют лишь до тех пор, пока на них существует хотя-бы одна ссылка.

    в случае однократного вызова run() - MyTime будет уничтожен после исполнения.

    в данном случае исполняет его таймер, вызывая run() когда ему захочется (задан период). Для уничтожения объекта нужно остановить таймер. Для этого нужно знать его айди.

    BukkitTask.getTaskId();
    Scheduler.cancelTask(id);
     
  4. Автор темы
    Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    В моём случае таймер останавливается когда выполняется условие counter==0 ?
     

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