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

Помогите Oбщий таймер

Discussion in 'Разработка плагинов для новичков' started by Bind, Nov 28, 2013.

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

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

    Trophy Points:
    68
    Всем привет,

    У меня возникла проблема, я не могут придумать способ, как сделать общий таймер. Мне надо каждый раз проверять количество игроков, когда они заходят затем если их количество состовляет 12, то начинается обратный отсчет. И если игрок подключился не во время, то ему этот обратный отсчет сравнял бы как и у всех.

    Сейчас я пробую так:
    [syntax=java]@EventHandler

    public void onJoining(PlayerJoinEvent e)

    {

    if (getServer().getOnlinePlayers().length == 12) {

    getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {

    public void run() {

    for (Player player : getServer().getOnlinePlayers()) {

    time = time - 1;

    player.setLevel(time);

    if (time == 0) {

    //The Game Begins

    }

    }

    },0L,20L);

    }//20 = 1 second | (60 for testing purposes)







    }[/syntax]
     
  2. Хостинг MineCraft
    <
  3. ptnk

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

    Trophy Points:
    173
    Делаешь несколько Runnable.
    Первый у тебя делает проверку на количество игроков и запускает отсчёт, если отсчёт начат, а игроков нет, то отсчёт останавливается.
    Второй собственно у тебя отсчёт.

    Всё, что тебе нужно знать - это id Отсчёта, чтобы его принудительно останаливать.
     
  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А зачем несколько Runnable? Можно одновременно делать отсчёт и проверять игроков
     
  5. ptnk

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

    Trophy Points:
    173
    Если есть возможность выделить какую-то часть в отдельный класс или метод - я выделяю, это при условии, что это с какой-то вероятностью будет переиспользоваться. Мне не нравится горадить огород в один класс, делать вложенные анонимные классы и радоваться тому, что получилось. Я тех плагинх, что делал именно так, т.к. в каждом потоке была своя логика; а так, возможно это и не нужно, просто метод распухнет и станет мало читаемым.

    getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
    };); - такие конструкции в коде сложны для прочтения и понимания других.
     

Share This Page