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

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

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

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

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

    Trophy Points:
    76
    Skype:
    pavel.batalov1
    Уничтожится ли экземпляр сам или его надо будет уничтожить?Если не уничтожается,то как уничтожить.
    Вот класс таймера:
    Code:
    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 Старожил Пользователь

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

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

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

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

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

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

Share This Page