diff --git a/modules/GuildManager/pom.xml b/modules/GuildManager/pom.xml
index 4f5f6c8..0463171 100644
--- a/modules/GuildManager/pom.xml
+++ b/modules/GuildManager/pom.xml
@@ -109,8 +109,8 @@
provided
- me.clip
- placeholderapi
+ com.github.PlaceholderAPI
+ PlaceholderAPI
2.11.1
provided
diff --git a/modules/GuildManager/src/main/java/com/mcatk/guildmanager/sql/SQLManager.java b/modules/GuildManager/src/main/java/com/mcatk/guildmanager/sql/SQLManager.java
index 29cec3c..5c27443 100644
--- a/modules/GuildManager/src/main/java/com/mcatk/guildmanager/sql/SQLManager.java
+++ b/modules/GuildManager/src/main/java/com/mcatk/guildmanager/sql/SQLManager.java
@@ -4,6 +4,8 @@
import com.mcatk.guildmanager.models.Guild;
import com.mcatk.guildmanager.models.Member;
+import org.bukkit.Bukkit;
+
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
@@ -23,17 +25,21 @@ private SQLManager() {
guilds = getAllGuildsFromSQL();
}
- private void connectMySQL() {
+ private Connection createConnection() throws SQLException {
String ip = GuildManager.getPlugin().getConfig().getString("mysql.ip");
String databaseName = GuildManager.getPlugin().getConfig().getString("mysql.databasename");
String userName = GuildManager.getPlugin().getConfig().getString("mysql.username");
String userPassword = GuildManager.getPlugin().getConfig().getString("mysql.password");
int port = GuildManager.getPlugin().getConfig().getInt("mysql.port");
+ return DriverManager.getConnection(
+ "jdbc:mysql://" + ip + ":" + port + "/" + databaseName + "?autoReconnect=true&useSSL=false",
+ userName, userPassword
+ );
+ }
+
+ private void connectMySQL() {
try {
- connection = DriverManager.getConnection(
- "jdbc:mysql://" + ip + ":" + port + "/" + databaseName + "?autoReconnect=true&useSSL=false",
- userName, userPassword
- );
+ connection = createConnection();
} catch (SQLException e) {
e.printStackTrace();
}
@@ -165,8 +171,12 @@ public HashMap getGuilds() {
}
private HashMap getAllGuildsFromSQL() {
+ return getAllGuildsFromSQL(this.connection);
+ }
+
+ private HashMap getAllGuildsFromSQL(Connection conn) {
HashMap guilds = new HashMap<>();
- try (PreparedStatement ps = connection.prepareStatement(SQLCommand.GET_ALL_GUILDS.toString())){
+ try (PreparedStatement ps = conn.prepareStatement(SQLCommand.GET_ALL_GUILDS.toString())){
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Guild g = new Guild();
@@ -180,7 +190,7 @@ private HashMap getAllGuildsFromSQL() {
g.setCash(rs.getInt("guild_cash"));
g.setResidenceFLag(rs.getBoolean("guild_has_residence"));
g.setHasChangedName(rs.getBoolean("guild_has_changed_name"));
- g.setMembers(getMembersFromSQL(g.getId()));
+ g.setMembers(getMembersFromSQL(g.getId(), conn));
guilds.put(g.getId(), g);
}
} catch (SQLException e) {
@@ -190,8 +200,12 @@ private HashMap getAllGuildsFromSQL() {
}
private ArrayList getMembersFromSQL(String guildID) {
+ return getMembersFromSQL(guildID, this.connection);
+ }
+
+ private ArrayList getMembersFromSQL(String guildID, Connection conn) {
ArrayList list = new ArrayList<>();
- try (PreparedStatement ps = connection.prepareStatement("SELECT * FROM `player_guild` WHERE guild_id = ?")){
+ try (PreparedStatement ps = conn.prepareStatement("SELECT * FROM `player_guild` WHERE guild_id = ?")){
ps.setString(1, guildID);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
@@ -217,5 +231,16 @@ public void update() {
guilds = getAllGuildsFromSQL();
}
+ public void updateAsync() {
+ try (Connection conn = createConnection()) {
+ HashMap guilds = getAllGuildsFromSQL(conn);
+ Bukkit.getScheduler().runTask(GuildManager.getPlugin(), () -> {
+ this.guilds = guilds;
+ });
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
}
diff --git a/modules/GuildManager/src/main/java/com/mcatk/guildmanager/sql/SQLUpdater.java b/modules/GuildManager/src/main/java/com/mcatk/guildmanager/sql/SQLUpdater.java
index 81a1fa6..7a0d471 100644
--- a/modules/GuildManager/src/main/java/com/mcatk/guildmanager/sql/SQLUpdater.java
+++ b/modules/GuildManager/src/main/java/com/mcatk/guildmanager/sql/SQLUpdater.java
@@ -5,6 +5,6 @@
public class SQLUpdater {
public void run() {
- Bukkit.getScheduler().runTaskTimer(GuildManager.getPlugin(), () -> SQLManager.getInstance().update(), 20L * 60L, 20L * 60L);
+ Bukkit.getScheduler().runTaskTimerAsynchronously(GuildManager.getPlugin(), () -> SQLManager.getInstance().updateAsync(), 20L * 60L, 20L * 60L);
}
}