- Баллы
- 66
- Имя в Minecraft
- Den_Blade
Ошибка при выключении сервера:
Долго пытался бороться с этой проблемой, но ничего не выходит
Код:
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
}
}
}
Долго пытался бороться с этой проблемой, но ничего не выходит