Помогите Ошибка Plugin attempted to register task while disabled

Статус
Закрыто для дальнейших ответов.

Den_Blade

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Den_Blade
Ошибка при выключении сервера:Screenshot_75.png

Код:
public class PlayerFuction
{
  
    public static HashMap<String, PlayerFuction> players = new HashMap<String, PlayerFuction>();


    private String name;
    private int balance;


    static String namedb = Main.instance.Donates.getString("database.name");
    public PlayerFuction(String name) {
        this.name = name;
        load();
    }
 

    public boolean playerExists() {
        try {
        ResultSet resultSet = Main.getMain().getDatabaseManager().getResult("SELECT * FROM " + namedb + " WHERE name='" + name + "'");
        try {
            if (resultSet.next())
                return true;
        } catch (SQLException e) {
        }
        }
        catch(NullPointerException ef) {
          
        }
      
        return false;
    }
 
    private void load() {
        Bukkit.getScheduler().runTaskAsynchronously(Main.getInstance(), () -> {
            try {
            if (playerExists()) {
                ResultSet resultSet =  Main.getMain().getDatabaseManager().getResult("SELECT * FROM " + namedb + " WHERE name='" + name + "'");
                try {
                    if (resultSet.next()) {
 
                        this.balance = resultSet.getInt("balance");

                    }
                } catch (SQLException e) {
                }
            } else {
                this.balance = 0;
            

                Main.getMain().getDatabaseManager().update("INSERT INTO " + namedb + "(name, balance) VALUES('" + name + "', '" + balance + "');");
            }         
            }
            catch(NullPointerException fa) {
              
            }


      
        });
        players.put(name, this);
    }
    public static String getMembersFac (Integer fid) {
      
        try {
      
            PreparedStatement st =(PreparedStatement) Main.getMain().getDatabaseManager().getResult("SELECT FROM " + namedb + " WHERE faction = ?");
            st.setInt(1, fid);
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                return rs.getString("name");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

  
       public void save() {
           try {
                Bukkit.getScheduler().runTaskAsynchronously(Main.getInstance(), () -> {  //96
    

                 Main.getMain().getDatabaseManager().update("UPDATE " + namedb + " SET balance=" + balance + " " + " WHERE name='" + name + "'");
            });
           }
           catch(IllegalArgumentException e) {
               e.printStackTrace();
  
           }
        }
        public double getBalance() {
            return balance;
        }

        public void setBalance(int Balance) {
            this.balance = Balance;
        }
        public void removeBalance(int Balance) {
            this.balance -= Balance;

        }
        public void addBalance(int Balance) {
            this.balance += Balance;

        }

        public void unload() {
            save();
            players.remove(name);
        }
        public static PlayerFuction getPlayerFuction(String name) {
            return players.get(name);
        }



    public String getName()
    {
        return this.name;
    }
  
  





  



  


    public static PlayerFuction getPlayerFuction(PlayerFuction bfplayer) {
        // TODO Auto-generated method stub
        return null;
    }

}
Код:
public class SavePlayersThread extends Thread {
    @Override
    public void run() {
      
        while (true) {
            try {
                Thread.sleep(10000);
            } catch (InterruptedException ex) {

            }
            PlayerFuction.players.values().stream().forEach(bfplayer -> bfplayer.save()); //15
        }
    }
}

Долго пытался бороться с этой проблемой, но ничего не выходит
 
Ты через свой поток пытаешься запустить шедулер. Когда плагин выключается, поток продолжает работу, и в итоге он пытается вызвать шедулер от лица уже выключенного плагина. Либо убери поток вовсе и юзай шедулер (что, в общем-то, будет правильно), либо останавливай поток при выключении плагина и запускай сохранение так.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх