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

Помогите Thread выключаться

Метки:
Теги Теги
thread

hoprikj

Активный участник
Баллы
61
Имя в Minecraft
hopraynsky0049
всем привет! Недавно узнал а такой штуку как Thread решил попробовать написать на нем бедварс, но случилось что у меня начинается лотерея выключиться Thread какой ни будь или нет. И всегда по разному например в прошлом reload работали: железо и алмазы. А сейчас только золото.

вот ошибка:

Код:
[13:46:13 WARN]: Exception in thread "Thread-98" org.bukkit.plugin.IllegalPluginAccessException: Plugin attempted to register task while disabled
[13:46:13 WARN]:        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.validate(CraftScheduler.java:554)
[13:46:13 WARN]:        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:229)
[13:46:13 WARN]:        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:214)
[13:46:13 WARN]:        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.runTaskLater(CraftScheduler.java:178)
[13:46:13 WARN]:        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.runTask(CraftScheduler.java:147)
[13:46:13 WARN]:        at org.bukkit.scheduler.BukkitRunnable.runTask(BukkitRunnable.java:45)
[13:46:13 WARN]:        at com.hoprik.Minigames.bedwars.Game$7.run(Game.java:197)

код:

Код:
Thread upgrade = new Thread(){
           @Override
           public void run() {
               while (arena.getOnGameStart()) {
                   new BukkitRunnable() {
                       @Override
                       public void run() {
                           for (Location location : arena.getGenerator().getUpgrade()) {
                               location.getWorld().dropItem(location, new ItemStack(Material.EMERALD));
                           }
                       }
                   }.runTask(plugin);


                   try {
                       Thread.sleep(30000);
                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }
               }
           }
       };

Заранее спасибо за помощь
 
Зачем ты в Thread создаешь еще и BukkitRunnable? Используй просто BukkitRunnable

PHP:
        Bukkit.getScheduler().runTaskTimer(Plugin, () -> {
            //todo
        },Задержка перед запуском, Задержка между итерациями);
Все задержки в тиках
 
Попробую напишу если получилься
 
Не нужно играться с потоками наугад, лучше прочитать что к чему. А ещё, твой поток ничего не даёт, т.к. шедуллер выполняет ранейбл в потоке сервера:confused:.
А ошибка говорит о том, что ты пытаешься вызвать шедуллер, когда плагин отключается. (тут достаточно английский знать на уровне гугл переводчика)
 

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

Назад
Верх