Помогите Задержка кода •~°

SpokeKamchatka

Активный участник
Пользователь
Баллы
66
Ну вы поняли : )
При изучении Bukkit-а и всех его финтефлюшек я столкнулся с проблемой задержки кода
Я, конечно же, вставил Thread.sleep(long);
Но... Сервер встал!

Нужно что-то другое
Ищу по интернету
Нашёл какие-то 'Шедулеры' (для меня это вообще шаманские слово))

Сделал так:
Bukkit.getServer().getSheduler().runTaskTimer(this, new Runnable() {
public void run(){
//MyPoopCode
}
}, 20L, 0);

И у меня начался хаос на сервере
Код начал loopится без остановки

И говорят, что Шедулер этот лучше вообще не трогать нафиг, потому что грузит сильно ._.

Мне же нужно, чтобы код выполнился и сделалась задержка (как в Thread.sleep(long); )

Подскажите, как это реализовать?

:3
 
Мне нужна задержка кода, а с циклом можно разобраться чуть позже. Циклом задержку не сделаешь, а проблема остаётся..
алло, вот...
Код:
for (Block b : blocks) {
    b.setType(Material.AIR);
   // TODO: Player play sound
   Thread.sleep(10000L);
}
 
Неправильно ты, дядя, сшчэдуллер юзаешь. И зачем в них Thread.sleep, если ты от него отказался и перешел НА сшчэдуллеры ВМЕСТО него? Нельзя использовать и то, и другое.

Циклом проходишься по партиям блоков (партии блоков - это то, между чем задержка, т.е. лупишь одну партию, потом с задержкой другую и так далее)
@
В каждой итерации цикла запускаешь сшчэдуллер runTaskLater(вряд ли Asynchronous, потому что нельзя блоки ставить в асинхроне)
@
В этом сшчэдуллере и расставляешь всю партию блоков

Так между расстановкой партий блоков у тебя будет нужная тебе задержка. Это доведенный до ума твой способ. Но он гмно в плане оптимизации, используй лучше готовые либы и API для расстановки блоков с задержкой. Там все доведено до ума и давно. Не изобретай велосипед старого типа (1884 г.), когда прогресс давно ушел вперед и есть велосипеды наших дней
 
Назад
Верх