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

В разработке ///

Пишешь плагины - забудь про свои потоки и Thread.sleep(), особенно в основном потоке. Для тасков с задержкой у Scheduler'a есть специальные методы с параметром, определяющим задержку (scheduleSyncDelayedTask для одноразового выполнения и scheduleSyncRepeatingTask для постоянного выполнения)
 
Здравствуйте, не давно наткнулся на проблему появление фейерверков в определенной точке с определённой задержкой. Для отлаженного спавна я использовал простую конструкцию:
Код:
    new Thread() {
@Override
        public void run() {
        try{
        Thread.sleep(5000);
 
                Bukkit.getScheduler().runTask(Main, new Runnable() {             
                   @Override
                     public void run() {

try{
Thread.sleep(2000);
spawnEntity();
Thread.sleep(2000);
spawnEntity();
}catch(Exception){
. . .
}
}
});

}catch(Exception){
. . .
}
}.start();
Во время выполнения зависает сервер, а взрыв фейерверка происходит только после выполения последнего блока Thread в Bukkit.getScheduler().runTask(Main, new Runnable());
Можно ли заменить метод или по другому реализовать подобный спавн?
Нельзя обращаться к большинству баккит апи в другом потоке.
Используй шедулер который будет в основном потоке делать то что тебе нужно без последствий.
 

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

Назад
Верх