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

Помогите Нормальный таймер

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    hyndo
    Код:
       
        public void startCountDown(Arena arena){
           
                int id = Bukkit.getScheduler().scheduleSyncRepeatingTask(AntWars.instance(), new Runnable(){
                int start = arena.getTimeToStart();
                public void run(){
                    for (String str : arena.getPlayers()){
                      if(Bukkit.getPlayer(str) == null){
                          arena.getPlayers().remove(str);
                      }
                  }
                    String[] CDOn = config.getString("startCounDownOn").split(",");
                    for(int i = 0; i < CDOn.length; i++){
                        if(start == Integer.parseInt(CDOn[i])){
                            arena.sendMessage(format(prefix + "Начало через " + start + " секунд(ы)"));
                        }
                    }
                   
                    start--;
                }
            }, 20, 20);
            Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AntWars.instance(), new Runnable(){
    
                public void run(){
                    Bukkit.getServer().getScheduler().cancelTask(id);
                    startArena(arena);
                }
            }, (arena.getTimeToStart() * 20) + 1);
        }
    
    Имеется вот такой код. Его проблема в том, что если игрок выйдет и снова зайдет, то вызовется два раза этот метод и соответственно будет два начала и два отсчета.
     
  2. Хостинг MineCraft
    <
  3. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Присваивай таску переменную и проверяй его на нулл, если он существует - ретурн.
     
  4. Автор темы
    hyndorik

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

    Баллы:
    66
    Имя в Minecraft:
    hyndo
    Конечно так можно, но так будет работать только одна арена. Для мультиарен нужен hashmap, но я то не смогу в хеш мап сразу айди положить.
     
  5. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    В классе арена создай переменную task и геттер к ней
     

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