import java.util.Timer;
import java.util.TimerTask;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Listener;
//import net.md_5.bungee.api.chat.BaseComponent;
public class SQL implements Listener {
private Main main;
private static Connection con;
private static Statement stmt;
private static ResultSet rs;
private Timer timer;
SQL (Main m) {
main = m;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {e.printStackTrace();}
if (!main.config.firststart) connect();
startTimer();
}
public void connect() { //подключение БД
String url = "jdbc:mysql://" + main.config.host + ":" + main.config.port + "/" + main.config.base;
String query = "select count(*) from " + main.config.table;
try {
con = DriverManager.getConnection(url, main.config.user, main.config.pass);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
try {
while (rs.next()) {
int count = 0; count = rs.getInt(1);
System.out.println("[BotNagibatorBungee] Строк в таблице: " + String.valueOf(count));
}
} catch (Exception e) {e.printStackTrace();}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {con.close();} catch(SQLException e) {}
try {stmt.close();} catch(SQLException e) {}
try {rs.close();} catch(SQLException e) {}
}
}
public void startTimer() { //старт таймера
timer = new Timer();
timer.schedule(new TP(), main.config.tpintms, main.config.tpintms);
}
public void stopTimer() { //стоп таймера
try {
timer.cancel();
} catch (Exception e) {e.printStackTrace();}
}
private class TP extends TimerTask {
@Override
public void run() {
String url = "jdbc:mysql://" + main.config.host + ":" + main.config.port + "/" + main.config.base;
String query = "select name from " + main.config.table;
try {
con = DriverManager.getConnection(url, main.config.user, main.config.pass);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
try {
while (rs.next()) { //обработка накопившихся телепортаций
String name = rs.getString(1);
ProxiedPlayer player = main.getProxy().getPlayer(name);
if (player != null) {
System.out.println("переброс " + name + " на основной сервер");
//player.connect(main.map.get(main.config.main));
main.getProxy().getScheduler().runAsync(main, new Tp(player));
/*
try {
String data = "BNBTeleport;" + player.getName();
main.tp.add(player.getName()); //костыль :(
//перебрасываем игрока с помощью создание ивента
main.getProxy().getScheduler().runAsync(main, new SendPluginMessage("BotNagibatorBungee", player.getServer().getInfo(), data));
} catch (NullPointerException e) {e.printStackTrace(); continue;} catch (Exception e) {e.printStackTrace(); continue;}
*/
/*
try {
player.disconnect("test");
player.connect(main.map.get(main.config.main));
} catch (Exception e) {e.printStackTrace();}
*/
if (main.config.addwhitelist) main.events.whitelist.add(player.getAddress().getAddress().getAddress());
}
}
} catch (Exception e) {e.printStackTrace();}
query = "DELETE FROM " + main.config.table;
stmt.executeUpdate(query);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {con.close();} catch(SQLException e) {}
try {stmt.close();} catch(SQLException e) {}
try {rs.close();} catch(SQLException e) {}
}
}
}
/*
public class SendPluginMessage implements Runnable {
private final String channel;
private final String data;
private final ServerInfo server;
public SendPluginMessage(String channel, ServerInfo server, String data) { //создаем ивент
this.channel = channel;
this.data = data;
this.server = server;
}
public void run() {
server.sendData(channel, data.getBytes());
}
}
*/
private class Tp implements Runnable {
private ProxiedPlayer player;
public Tp (ProxiedPlayer p) {
player = p;
}
@Override
public void run() {
player.connect(main.map.get(main.config.main));
}
}
}