Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

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]
 
Делаешь несколько Runnable.
Первый у тебя делает проверку на количество игроков и запускает отсчёт, если отсчёт начат, а игроков нет, то отсчёт останавливается.
Второй собственно у тебя отсчёт.

Всё, что тебе нужно знать - это id Отсчёта, чтобы его принудительно останаливать.
 
Делаешь несколько Runnable.
Первый у тебя делает проверку на количество игроков и запускает отсчёт, если отсчёт начат, а игроков нет, то отсчёт останавливается.
Второй собственно у тебя отсчёт.

Всё, что тебе нужно знать - это id Отсчёта, чтобы его принудительно останаливать.
А зачем несколько Runnable? Можно одновременно делать отсчёт и проверять игроков
 
А зачем несколько Runnable? Можно одновременно делать отсчёт и проверять игроков
Если есть возможность выделить какую-то часть в отдельный класс или метод - я выделяю, это при условии, что это с какой-то вероятностью будет переиспользоваться. Мне не нравится горадить огород в один класс, делать вложенные анонимные классы и радоваться тому, что получилось. Я тех плагинх, что делал именно так, т.к. в каждом потоке была своя логика; а так, возможно это и не нужно, просто метод распухнет и станет мало читаемым.

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

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

Назад
Верх