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

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

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

Метки:
  1. Автор темы
    hoprikj

    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();
                       }
                   }
               }
           };
    Заранее спасибо за помощь
     
  2. 0xLairon1

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

    Баллы:
    76
    Имя в Minecraft:
    0xLairon1
    Зачем ты в Thread создаешь еще и BukkitRunnable? Используй просто BukkitRunnable

    PHP:
            Bukkit.getScheduler().runTaskTimer(Plugin, () -> {
                
    //todo
            
    },Задержка перед запускомЗадержка между итерациями);
    Все задержки в тиках
     
  3. Автор темы
    hoprikj

    hoprikj Активный участник

    Баллы:
    61
    Имя в Minecraft:
    hopraynsky0049
    Попробую напишу если получилься
     
  4. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Не нужно играться с потоками наугад, лучше прочитать что к чему. А ещё, твой поток ничего не даёт, т.к. шедуллер выполняет ранейбл в потоке сервера:confused:.
    А ошибка говорит о том, что ты пытаешься вызвать шедуллер, когда плагин отключается. (тут достаточно английский знать на уровне гугл переводчика)
     

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