package de.mviper.adventskalender; import org.bukkit.configuration.file.FileConfiguration; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class MySQLManager { private static Connection connection; public static void connect() { FileConfiguration config = Adventskalender.getInstance().getConfig(); String host = config.getString("mysql.host"); int port = config.getInt("mysql.port"); String database = config.getString("mysql.database"); String user = config.getString("mysql.user"); String password = config.getString("mysql.password"); try { if (connection != null && !connection.isClosed()) return; synchronized (MySQLManager.class) { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database + "?autoReconnect=true&useSSL=false", user, password); } createTables(); Adventskalender.getInstance().getLogger().info("MySQL-Verbindung erfolgreich hergestellt!"); } catch (Exception e) { Adventskalender.getInstance().getLogger().severe("MySQL-Verbindung fehlgeschlagen: " + e.getMessage()); } } private static void createTables() { try (Statement s = connection.createStatement()) { // Tabelle für Einzelspieler-Daten s.executeUpdate("CREATE TABLE IF NOT EXISTS advent_players (uuid VARCHAR(36), day INT, PRIMARY KEY(uuid, day))"); // Tabelle für globalen Modus s.executeUpdate("CREATE TABLE IF NOT EXISTS advent_global (day INT PRIMARY KEY, player_name VARCHAR(16))"); } catch (SQLException e) { e.printStackTrace(); } } public static boolean isConnected() { try { return connection != null && !connection.isClosed(); } catch (SQLException e) { return false; } } public static void close() { try { if (isConnected()) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } public static Connection getConnection() { return connection; } }