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

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

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

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

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

    Trophy Points:
    66
    Имя в Minecraft:
    hyndo
    Code:
       
        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 Активный участник Пользователь

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

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

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

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

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

Share This Page