1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Bind, 28 ноя 2013.

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

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

    Баллы:
    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. ptnk

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

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

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

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

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

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

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

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

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