queryList = new ArrayList<>();
- String flatColumns = "(";
- String flatValues = "(";
- String flatColumnsAndValues = "";
- Boolean first = true;
- for(Pair pair : pairs){
- String column = (String)pair.getLeft();
- Object value = pair.getRight();
- String valueTrans = value+"";
- if (value == null || (""+value).equalsIgnoreCase("null")){
- valueTrans = "NULL";
- } else if (!(value instanceof Number)) {
- valueTrans = "'" + valueTrans + "'";
- }
- if (first){
- flatColumns = flatColumns+"`"+column+"`";
- flatValues = flatValues + valueTrans;
- flatColumnsAndValues = "`"+column+"`=" + valueTrans;
- first = false;
- } else {
- flatColumns = flatColumns+", `"+column+"`";
- flatValues = flatValues + ", " + valueTrans;
- flatColumnsAndValues = flatColumnsAndValues + ", `"+column+"`=" + valueTrans;
- }
- }
- flatColumns = flatColumns + ")";
- flatValues = flatValues + ")";
- if (databaseType == SQLDatabaseType.MYSQL){
- String query;
- query = "INSERT INTO `"+table+"` "
- + flatColumns+" "
- + "VALUES "+flatValues+" ";
- if (hasTableUniqueKey){
- query = query
- + "ON DUPLICATE KEY UPDATE "
- + flatColumnsAndValues;
- }
- queryList.add(query);
- } else {
-// query = "INSERT INTO `"+table+"` "
-// + flatColumns+" "
-// + "VALUES "+flatValues+" ";
-// if (hasTableUniqueKey){
-// query = query
-// + "ON CONFLICT (`"+pairs.get(0).getLeft()+"`) "
-// + "DO UPDATE SET "
-// + flatColumnsAndValues;
-// }
- String begining = "INSERT";
- if (hasTableUniqueKey) {
- begining = "INSERT OR IGNORE";
- }
- String query1 = begining+" INTO `"+table+"` "
- + flatColumns
- + "VALUES "+flatValues;
- if (hasTableUniqueKey) {
- Object keyValue = pairs.get(0).getRight();
- String keyValueTrans = keyValue+"";
- if (keyValue == null || (""+keyValue).equalsIgnoreCase("null")){
- keyValueTrans = "NULL";
- } else if (!(keyValue instanceof Number)) {
- keyValueTrans = "'" + keyValueTrans + "'";
- }
- String query2 = "UPDATE `"+table+"` "
- + "SET "+flatColumnsAndValues+" "
- + "WHERE `"+pairs.get(0).getLeft()+"` = "+keyValueTrans+" ";
- queryList.add(query2);
- }
- queryList.add(query1);
-
- }
-
- return queryList;
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/exortions/pluginutils/database/v2/SQLDatabase.java b/src/main/java/com/exortions/pluginutils/database/v2/SQLDatabase.java
deleted file mode 100644
index 0f0882f..0000000
--- a/src/main/java/com/exortions/pluginutils/database/v2/SQLDatabase.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package com.exortions.pluginutils.database.v2;
-
-import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.util.List;
-
-/**
- * @author MorkaZ, Exortions
- * @since 0.4.24.23
- */
-@SuppressWarnings({"unused", "UnusedReturnValue"})
-public interface SQLDatabase {
-
- SQLDatabaseType getDatabaseType();
-
- /**
- * Send query through connection asynchronously in background.
- * It will not affect TPS, but it will work asynchronously.
- * Also, database will be updated in delay and data will not be synchronous.
- * It will be unable to get data from database instantly after update in another line of code.
- * @param query the query.
- */
- void updateAsync(String query);
-
- /**
- * Send query through connection with synchronization with main thread.
- * It will affect TPS depends of connection quality.
- * @param query the query.
- * @return Success
- */
- Boolean updateSync(String query);
-
- /**
- * Data from ResultSet can be get using ResultSetManager from this plugin.
- * @param query the query.
- * @return Result
- */
- ResultSet getResult(String query);
-
- /**
- * data values are different depend on type of SQL connection.
- * @param data The data for the SQL conn.ion
- * @return The connection
- */
- Connection createConnection(String... data);
-
- /**
- * Gets the SQL conn.
- * @return The SQL conn.
- */
- Connection getConnection();
-
- /**
- * @return If the SQL db is connected
- */
- Boolean isConnected();
-
- /**
- * Closes the SQL conn.
- */
- void closeConnection();
-
- /**
- * Keys are used to find correct row.
- * {@code removeObjectSync("SQLTable", "nick", "Steve", "money");}
- * @param table The table.
- * @param keyColumn The column
- * @param keyValue The value
- * @param objectColumn The object
- */
- void removeObjectSync(String table, String keyColumn, Object keyValue, String objectColumn);
-
- /**
- * Keys are used to find correct row.
- * {@code removeObjectAsync("SQLTable", "nick", "Steve", "money");}
- * @param table The table.
- * @param keyColumn The column
- * @param keyValue The value
- * @param objectColumn The object
- */
- void removeObjectAsync(String table, String keyColumn, Object keyValue, String objectColumn);
-
- /**
- * Keys are used to find correct row.
- * {@code setObjectSync("SQLTable", "nick", "Steve", "money", 3000);}
- * @param table The table.
- * @param keyColumn The column
- * @param keyValue The value
- * @param objectColumn The object
- * @param objectValue The value
- * @param hasTablePrimaryKey If it is a PK
- */
- void setObjectSync(String table, String keyColumn, Object keyValue, String objectColumn, Object objectValue, Boolean hasTablePrimaryKey);
-
- /**
- * Keys are used to find correct row.
- * {@code setObjectAsync("SQLTable", "nick", "Steve", "money", 3000);}
- * @param table The table.
- * @param keyColumn The column
- * @param keyValue The value
- * @param objectColumn The object
- * @param objectValue The value
- * @param hasTablePrimaryKey If it is a PK
- */
- void setObjectAsync(String table, String keyColumn, Object keyValue, String objectColumn, Object objectValue, Boolean hasTablePrimaryKey);
-
- /**
- * Apache commons lib is required for Pair class.
- * Left value is column, Right value is value object of column.
- * @param table The table.
- * @param pairs The pairs for str and obj
- * @param hasTablePrimaryKey If it is a PK
- */
- void setObjectsSync(String table, List> pairs, Boolean hasTablePrimaryKey);
-
- /**
- * Apache commons lib is required for Pair class.
- * Left value is column, Right value is value object of column.
- * @param table The table.
- * @param pairs The pairs for str and obj
- * @param hasTablePrimaryKey If it is a PK
- */
- void setObjectsAsync(String table, List> pairs, Boolean hasTablePrimaryKey);
-
- /**
- * Keys are used to find correct row.
- * {@code getRow("Players", "nick", "Steve");}
- * @param table The table.
- * @param keyColumn The column.
- * @param keyValue The value.
- * @return The row
- */
- ResultSet getRow(String table, String keyColumn, String keyValue);
-
- /**
- * Keys are used to find correct row.
- * {@code getRow("Players", "premium", true, 5);}
- * @param table The table.
- * @param keyColumn The column.
- * @param keyValue The value.
- * @param limit The limit
- * @return The rows
- */
- ResultSet getRows(String table, String keyColumn, String keyValue, int limit);
-
- /**
- * Keys are used to find correct row.
- * {@code deleteRow("Players", "nick", "Steve");}
- * @param table The table.
- * @param keyColumn The column.
- * @param keyValue The value.
- */
- void deleteRowSync(String table, String keyColumn, String keyValue);
-
- /**
- * Keys are used to find correct row.
- * {@code deleteRow("Players", "nick", "Steve");}
- * @param table The table.
- * @param keyColumn The column.
- * @param keyValue The value.
- */
- void deleteRowAsync(String table, String keyColumn, String keyValue);
-
- /**
- * Keys are used to find correct row.
- * {@code deleteRow("Players", "premium", true, 5);}
- * @param table The table.
- * @param keyColumn The column.
- * @param keyValue The value.
- * @param limit The limit
- */
- void deleteRowsSync(String table, String keyColumn, String keyValue, int limit);
-
- /**
- * Keys are used to find correct row.
- * {@code deleteRow("Players", "premium", true, 5);}
- * @param table The table.
- * @param keyColumn The column.
- * @param keyValue The value.
- * @param limit The limit
- */
- void deleteRowsAsync(String table, String keyColumn, String keyValue, int limit);
-
-}
diff --git a/src/main/java/com/exortions/pluginutils/database/v2/SQLDatabaseType.java b/src/main/java/com/exortions/pluginutils/database/v2/SQLDatabaseType.java
deleted file mode 100644
index 3117f9b..0000000
--- a/src/main/java/com/exortions/pluginutils/database/v2/SQLDatabaseType.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.exortions.pluginutils.database.v2;
-
-/**
- * @author MorkaZ, Exortions
- * @since 0.4.24.23
- */
-@SuppressWarnings("unused")
-public enum SQLDatabaseType {
-
- SQLITE(),
- MYSQL()
-
-}
-
diff --git a/src/main/java/com/exortions/pluginutils/database/v2/SQLScheduler.java b/src/main/java/com/exortions/pluginutils/database/v2/SQLScheduler.java
deleted file mode 100644
index a09b1ba..0000000
--- a/src/main/java/com/exortions/pluginutils/database/v2/SQLScheduler.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.exortions.pluginutils.database.v2;
-
-import org.bukkit.plugin.Plugin;
-import org.bukkit.scheduler.BukkitRunnable;
-import org.bukkit.scheduler.BukkitTask;
-
-import java.util.ArrayList;
-
-/**
- * @author MorkaZ, Exortions
- * @since 0.4.24.23
- */
-@SuppressWarnings({"unused", "UnusedReturnValue", "unchecked"})
-public abstract class SQLScheduler{
-
- private final Plugin plugin;
- private final ArrayList runnableList = new ArrayList<>();
- private Boolean processing = false;
- private BukkitTask schedulerTask;
-
- /**
- * Default constructor
- * @param plugin The spigot plugin
- */
- public SQLScheduler(Plugin plugin) {
- this.plugin = plugin;
- this.startScheduler();
- }
-
- /**
- * Cancels the scheduled task.
- */
- public void cancelSchedulerTask() {
- this.schedulerTask.cancel();
- }
-
- /**
- * Gets the scheduled task.
- * @return The scheduled task.
- */
- public BukkitTask getSchedulerTask() {
- return this.schedulerTask;
- }
-
- /**
- * Reloads the scheduler.
- */
- public void reloadScheduler() {
- schedulerTask.cancel();
- runnableList.clear();
- processing = false;
- startScheduler();
- }
-
- /**
- * Schedules a new runnable.
- * @param runnable The runnable to schedule.
- */
- public void scheduleRunnable(Runnable runnable) {
- if (!processing) {
- runnableList.add(runnable);
- } else {
- plugin.getServer().getScheduler().runTaskLater(plugin, () -> runnableList.add(runnable), 1L);
- }
- }
-
- /**
- * Starts the scheduler.
- * @return The scheduler.
- */
- public BukkitTask startScheduler() {
- this.schedulerTask = new BukkitRunnable() {
- @Override
- public void run() {
- if (!processing) {
- processing = true;
- ArrayList copiedRunnableList = (ArrayList) runnableList.clone();
- runnableList.clear();
- for (Runnable runnable : copiedRunnableList) {
- runnable.run();
- }
- processing = false;
- }
- }
- }.runTaskTimerAsynchronously(plugin, 0L, 5L);
- return schedulerTask;
- }
-
-}
diff --git a/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLConnection.java b/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLConnection.java
deleted file mode 100644
index 516cc58..0000000
--- a/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLConnection.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.exortions.pluginutils.database.v2.mysql;
-
-import java.sql.*;
-
-/**
- * @author MorkaZ, Exortions
- * @since 0.4.24.23
- */
-@SuppressWarnings({"unused", "UnusedReturnValue"})
-public class MySQLConnection extends MySQLData {
-
- public MySQLConnection(String host, String port, String databaseName, String user, String password) {
- super(host, port, databaseName, user, password);
- try {
- super.connection = openConnection();
- } catch (SQLException | ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
-
-
- public Connection openConnection() throws SQLException, ClassNotFoundException {
- if (checkConnection()) {
- return connection;
- }
-
- String connectionURL = "jdbc:mysql://" + super.getHost() + ":" + super.getPort();
- if (getDatabaseName() != null) {
- connectionURL = connectionURL + "/" + this.getDatabaseName();
- }
-
- Class.forName("com.mysql.jdbc.Driver");
- connection = DriverManager.getConnection(connectionURL, super.getUser(), super.getPassword());
- return connection;
- }
-
-
- public boolean checkConnection() throws SQLException {
- return connection != null && !connection.isClosed();
- }
-
-
- public Connection getConnection() {
- return connection;
- }
-
-
- public boolean closeConnection() throws SQLException {
- if (connection == null) {
- return false;
- }
- connection.close();
- return true;
- }
-
-
- public ResultSet querySQL(String query) throws SQLException,
- ClassNotFoundException {
- if (!checkConnection()) {
- openConnection();
- }
- Statement statement = connection.createStatement();
- return statement.executeQuery(query);
- }
-
-
- public int updateSQL(String query) throws SQLException,
- ClassNotFoundException {
- if (!checkConnection()) {
- openConnection();
- }
- Statement statement = connection.createStatement();
- return statement.executeUpdate(query);
- }
-
-}
-
-
-
diff --git a/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLData.java b/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLData.java
deleted file mode 100644
index 02e5571..0000000
--- a/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLData.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.exortions.pluginutils.database.v2.mysql;
-
-import java.sql.Connection;
-
-/**
- * @author MorkaZ, Exortions
- * @since 0.4.24.23
- */
-@SuppressWarnings({"unused", "UnusedReturnValue"})
-public class MySQLData {
-
- private String host;
- private String port;
- private String databaseName;
- private String user;
- private String password;
- public Connection connection;
-
-
- public MySQLData(String host, String port, String databaseName, String user, String password) {
- this.host = host;
- this.port = port;
- this.databaseName = databaseName;
- this.user = user;
- this.password = password;
- }
-
- public String getHost() {
- return host;
- }
-
-
- public void setHost(String host) {
- this.host = host;
- }
-
-
- public String getPort() {
- return port;
- }
-
-
- public void setPort(String port) {
- this.port = port;
- }
-
-
- public String getDatabaseName() {
- return databaseName;
- }
-
-
- public void setDatabaseName(String databaseName) {
- this.databaseName = databaseName;
- }
-
-
- public String getUser() {
- return user;
- }
-
-
- public void setUser(String user) {
- this.user = user;
- }
-
-
- public String getPassword() {
- return password;
- }
-
-
- public void setPassword(String password) {
- this.password = password;
- }
-
-
- public Connection getConnection() {
- return connection;
- }
-
-
- public void setConnection(Connection connection) {
- this.connection = connection;
- }
-
-}
diff --git a/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase.java b/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase.java
deleted file mode 100644
index c66ccd8..0000000
--- a/src/main/java/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase.java
+++ /dev/null
@@ -1,262 +0,0 @@
-package com.exortions.pluginutils.database.v2.mysql;
-
-
-import com.exortions.pluginutils.database.v2.QueryUtils;
-import com.exortions.pluginutils.database.v2.SQLDatabase;
-import com.exortions.pluginutils.database.v2.SQLDatabaseType;
-import com.exortions.pluginutils.database.v2.SQLScheduler;
-import org.bukkit.Bukkit;
-import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
-import org.bukkit.plugin.Plugin;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.List;
-
-/**
- * @author MorkaZ, Exortions
- * @since 0.4.24.23
- */
-@SuppressWarnings({"unused", "UnusedReturnValue"})
-public class MySQLDatabase extends SQLScheduler implements SQLDatabase {
-
-
- private MySQLConnection mySQLConnection;
- private Plugin plugin;
-
-
- public MySQLDatabase(Plugin plugin) {
- super(plugin);
- this.plugin = plugin;
- }
-
- @Override
- public SQLDatabaseType getDatabaseType() {
- return SQLDatabaseType.MYSQL;
- }
-
- @Override
- public void updateAsync(String query) {
- if (mySQLConnection == null){
- Bukkit.getLogger().warning("["+plugin.getName()+"/MoxLibrary] MySQLConnection object is null. It must be initialized by method createConnection(data..).");
- return;
- }
- super.scheduleRunnable(new Runnable() {
- public void run() {
- try {
- Statement statement = mySQLConnection.getConnection().createStatement();
- statement.executeUpdate(query);
-
- } catch (SQLException e) {
- e.printStackTrace();
- Bukkit.getConsoleSender().sendMessage("[MoxLibrary] SQL query error: "+e.getSQLState()+" ---- "+e.getCause()
- +" ---- "+e.getMessage()+" ---- "+e.getErrorCode()+" ---- USED QUERY:"+query);
- }
- }
- });
- }
-
- @Override
- public Boolean updateSync(String query) {
- if (mySQLConnection == null){
- Bukkit.getLogger().warning("["+plugin.getName()+"/MoxLibrary] MySQLConnection object is null. It must be initialized by method createConnection(data..).");
- return null;
- }
- try {
- Statement statement = mySQLConnection.getConnection().createStatement();
- statement.executeUpdate(query);
- return true;
- } catch (SQLException e) {
- e.printStackTrace();
- Bukkit.getConsoleSender().sendMessage("[MoxLibrary] SQL query error: "+e.getSQLState()+" ---- "+e.getCause()
- +" ---- "+e.getMessage()+" ---- "+e.getErrorCode()+" ---- USED QUERY:"+query);
- }
- return false;
- }
-
- @Override
- public ResultSet getResult(String query) {
- if (mySQLConnection == null){
- Bukkit.getLogger().warning("["+plugin.getName()+"/MoxLibrary] MySQLConnection object is null. It must be initialized by method createConnection(data..).");
- return null;
- }
- ResultSet set = null;
- try {
- Statement statement = mySQLConnection.getConnection().createStatement();
- set = statement.executeQuery(query);
- } catch (SQLException e) {
- e.printStackTrace();
- Bukkit.getConsoleSender().sendMessage("[MoxLibrary] MySQL get data from query error: "+e.getErrorCode());
- }
- try {
- if (set != null) {
- set.beforeFirst();
- }
- } catch (SQLException e2) {
- e2.printStackTrace();
- }
- return set;
- }
-
- /**
- * @param data Data of mySQLConnection.getConnection()
- * data[0] - host
- * data[1] - port
- * data[2] - database name
- * data[3] - user
- * data[4] - password
- * @return opened mySQLConnection.getConnection()
- */
- @Override
- public Connection createConnection(String... data) {
- try {
- if (mySQLConnection != null && mySQLConnection.getConnection() != null && !this.mySQLConnection.getConnection().isClosed()){
- return this.mySQLConnection.getConnection();
- }
- } catch (SQLException e) {
- return null;
- }
- MySQLConnection mySQL = new MySQLConnection(data[0], data[1], data[2], data[3], data[4]);
- mySQLConnection = mySQL;
- try {
- mySQLConnection.setConnection(mySQL.openConnection());
- if (mySQLConnection.getConnection().isClosed()){
- return null;
- }
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- return null;
- } catch (SQLException e) {
- e.printStackTrace();
- return null;
- }
- return null;
- }
-
- @Override
- public Connection getConnection() {
- if (mySQLConnection == null){
- Bukkit.getLogger().warning("["+plugin.getName()+"/MoxLibrary] MySQLConnection object is null. It must be initialized by method createConnection(data..).");
- return null;
- }
- try {
- if (mySQLConnection.getConnection() != null && !this.mySQLConnection.getConnection().isClosed()){
- return mySQLConnection.getConnection();
- } else {
- return createConnection(mySQLConnection);
- }
- } catch (SQLException e) {
- return createConnection(mySQLConnection);
- }
- }
-
- public Connection createConnection(MySQLData mySQLData){
- return createConnection(mySQLData.getHost(), mySQLData.getPort(), mySQLData.getDatabaseName(), mySQLData.getUser(), mySQLData.getPassword());
- }
-
- public MySQLConnection getMySQLConnection(){
- return this.mySQLConnection;
- }
-
- @Override
- public Boolean isConnected() {
- if (mySQLConnection == null){
- Bukkit.getLogger().warning("["+plugin.getName()+"/MoxLibrary] MySQLConnection object is null. It must be initialized by method createConnection(data..).");
- return null;
- }
- if (mySQLConnection.getConnection() != null){
- try {
- return !mySQLConnection.getConnection().isClosed();
- } catch (SQLException e) {
- return false;
- }
- }
- return false;
- }
-
- @Override
- public void closeConnection() {
- if (mySQLConnection.getConnection() != null){
- try {
- mySQLConnection.getConnection().close();
- } catch (SQLException e) {
- mySQLConnection.setConnection(null);
- }
- }
- }
-
- @Override
- public void removeObjectSync(String table, String keyColumn, Object keyValue, String objectColumn) {
- String query = QueryUtils.constructQueryValueRemove(table, keyColumn, keyValue, objectColumn, SQLDatabaseType.MYSQL);
- this.updateSync(query);
- }
-
- @Override
- public void removeObjectAsync(String table, String keyColumn, Object keyValue, String objectColumn) {
- String query = QueryUtils.constructQueryValueRemove(table, keyColumn, keyValue, objectColumn, SQLDatabaseType.MYSQL);
- this.updateAsync(query);
- }
-
- @Override
- public void setObjectSync(String table, String keyColumn, Object keyValue, String objectColumn, Object objectValue, Boolean hasTablePrimaryKey) {
- QueryUtils.constructQuerySingleValueSet(table, keyColumn, keyValue, objectColumn, objectValue, hasTablePrimaryKey, SQLDatabaseType.MYSQL)
- .forEach(this::updateAsync);
- }
-
- @Override
- public void setObjectAsync(String table, String keyColumn, Object keyValue, String objectColumn, Object objectValue, Boolean hasTablePrimaryKey) {
- QueryUtils.constructQuerySingleValueSet(table, keyColumn, keyValue, objectColumn, objectValue, hasTablePrimaryKey, SQLDatabaseType.MYSQL)
- .forEach(this::updateAsync);
- }
-
- @Override
- public void setObjectsSync(String table, List> pairs, Boolean hasTablePrimaryKey) {
- QueryUtils.constructQueryMultipleValuesSet(table, pairs, hasTablePrimaryKey, SQLDatabaseType.MYSQL)
- .forEach(this::updateAsync);
- }
-
- @Override
- public void setObjectsAsync(String table, List> pairs, Boolean hasTablePrimaryKey) {
- QueryUtils.constructQueryMultipleValuesSet(table, pairs, hasTablePrimaryKey, SQLDatabaseType.MYSQL)
- .forEach(this::updateAsync);
- }
-
- @Override
- public ResultSet getRow(String table, String keyColumn, String keyValue) {
- String query = QueryUtils.constructQueryRowGet(table, keyColumn, keyValue, SQLDatabaseType.MYSQL);
- return this.getResult(query);
- }
-
- @Override
- public ResultSet getRows(String table, String keyColumn, String keyValue, int limit) {
- String query = QueryUtils.constructQueryRowsGet(table, keyColumn, keyValue, limit, SQLDatabaseType.MYSQL);
- return this.getResult(query);
- }
-
- @Override
- public void deleteRowSync(String table, String keyColumn, String keyValue) {
- String query = QueryUtils.constructQueryRowRemove(table, keyColumn, keyValue, SQLDatabaseType.MYSQL);
- this.updateSync(query);
- }
-
- @Override
- public void deleteRowAsync(String table, String keyColumn, String keyValue) {
- String query = QueryUtils.constructQueryRowRemove(table, keyColumn, keyValue, SQLDatabaseType.MYSQL);
- this.updateAsync(query);
- }
-
- @Override
- public void deleteRowsSync(String table, String keyColumn, String keyValue, int limit) {
- String query = QueryUtils.constructQueryRowsRemove(table, keyColumn, keyValue, limit, SQLDatabaseType.MYSQL);
- this.updateSync(query);
- }
-
- @Override
- public void deleteRowsAsync(String table, String keyColumn, String keyValue, int limit) {
- String query = QueryUtils.constructQueryRowsRemove(table, keyColumn, keyValue, limit, SQLDatabaseType.MYSQL);
- this.updateAsync(query);
- }
-
-}
diff --git a/src/main/java/com/exortions/pluginutils/database/v2/sqlite/SQLiteDatabase.java b/src/main/java/com/exortions/pluginutils/database/v2/sqlite/SQLiteDatabase.java
deleted file mode 100644
index 8a4bd57..0000000
--- a/src/main/java/com/exortions/pluginutils/database/v2/sqlite/SQLiteDatabase.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package com.exortions.pluginutils.database.v2.sqlite;
-
-
-import com.exortions.pluginutils.database.v2.QueryUtils;
-import com.exortions.pluginutils.database.v2.SQLDatabase;
-import com.exortions.pluginutils.database.v2.SQLDatabaseType;
-import com.exortions.pluginutils.database.v2.SQLScheduler;
-import org.bukkit.Bukkit;
-import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
-import org.bukkit.plugin.Plugin;
-
-import java.sql.*;
-import java.util.List;
-
-/**
- * @since 0.4.24.23
- */
-@SuppressWarnings({"unused", "UnusedReturnValue"})
-public class SQLiteDatabase extends SQLScheduler implements SQLDatabase {
-
- public Connection connection;
- private String fileLocation;
-
- public SQLiteDatabase(Plugin plugin) {
- super(plugin);
- }
-
- @Override
- public SQLDatabaseType getDatabaseType() {
- return SQLDatabaseType.SQLITE;
- }
-
- @Override
- public void updateAsync(String query) {
- super.scheduleRunnable(() -> {
- try {
- Statement statement = connection.createStatement();
- statement.executeUpdate(query);
- } catch (SQLException e) {
- e.printStackTrace();
- Bukkit.getConsoleSender().sendMessage("[MoxLibrary] SQL query error: "+e.getSQLState()+" ---- "+e.getCause()
- +" ---- "+e.getMessage()+" ---- "+e.getErrorCode()+" ---- USED QUERY:"+query);
- }
- });
- }
-
- @Override
- public Boolean updateSync(String query) {
- try {
- Statement statement = connection.createStatement();
- statement.executeUpdate(query);
- return true;
- } catch (SQLException e) {
- e.printStackTrace();
- Bukkit.getConsoleSender().sendMessage("[MoxLibrary] SQL query error: "+e.getSQLState()+" ---- "+e.getCause()
- +" ---- "+e.getMessage()+" ---- "+e.getErrorCode()+" ---- USED QUERY: "+query);
- }
- return false;
- }
-
- @Override
- public ResultSet getResult(String query) {
- ResultSet set = null;
- try {
- Statement statement = connection.createStatement();
- set = statement.executeQuery(query);
- } catch (SQLException e) {
- e.printStackTrace();
- Bukkit.getConsoleSender().sendMessage("[MoxLibrary] SQL get data from query error: ["+e.getErrorCode()+"] "+e.getMessage()+"\n" +
- "Used query: "+query);
- }
- return set;
- }
-
- /**
- * @param data Data of connection.
- * data[0] - filename
- * @return The connection.
- */
- @Override
- public Connection createConnection(String... data) {
- this.fileLocation = data[0];
- Connection connection = null;
- String url = "jdbc:sqlite:" + fileLocation;
- try {
- Class.forName("org.sqlite.JDBC");
- connection = DriverManager.getConnection(url);
- if (connection == null) {
- Bukkit.getLogger().info("[MoxLibrary] Creating SQLite connection to file failed. " +
- "Check if given location is correct and required access is given: "+fileLocation+"");
- }
- assert connection != null;
- Bukkit.getLogger().info("[MoxLibrary] URL ("+url+") Succesfully connected! Driver version: " + connection.getMetaData().getDriverVersion());
- } catch (ClassNotFoundException | SQLException e) {
- e.printStackTrace();
- }
- this.connection = connection;
- return connection;
- }
-
-
- @Override
- public Connection getConnection() {
- try {
- if (this.connection != null && !this.connection.isClosed()){
- return this.connection;
- } else if (fileLocation != null){
- return createConnection(fileLocation);
- }
- } catch (SQLException e) {
- if (fileLocation != null){
- return createConnection(fileLocation);
- }
- }
- return null;
- }
-
- @Override
- public Boolean isConnected() {
- if (connection != null){
- try {
- return !connection.isClosed();
- } catch (SQLException e) {
- return false;
- }
- }
- return false;
- }
-
- @Override
- public void closeConnection() {
- if (connection != null){
- try {
- connection.close();
- } catch (SQLException e) {
- connection = null;
- }
- }
- }
-
- @Override
- public void removeObjectSync(String table, String keyColumn, Object keyValue, String objectColumn) {
- String query = QueryUtils.constructQueryValueRemove(table, keyColumn, keyValue, objectColumn, SQLDatabaseType.SQLITE);
- this.updateSync(query);
- }
-
- @Override
- public void removeObjectAsync(String table, String keyColumn, Object keyValue, String objectColumn) {
- String query = QueryUtils.constructQueryValueRemove(table, keyColumn, keyValue, objectColumn, SQLDatabaseType.SQLITE);
- this.updateAsync(query);
- }
-
- @Override
- public void setObjectSync(String table, String keyColumn, Object keyValue, String objectColumn, Object objectValue, Boolean hasTablePrimaryKey) {
- QueryUtils.constructQuerySingleValueSet(table, keyColumn, keyValue, objectColumn, objectValue, hasTablePrimaryKey, SQLDatabaseType.SQLITE)
- .forEach(this::updateAsync);
- }
-
- @Override
- public void setObjectAsync(String table, String keyColumn, Object keyValue, String objectColumn, Object objectValue, Boolean hasTablePrimaryKey) {
- QueryUtils.constructQuerySingleValueSet(table, keyColumn, keyValue, objectColumn, objectValue, hasTablePrimaryKey, SQLDatabaseType.SQLITE)
- .forEach(this::updateAsync);
- }
-
- @Override
- public void setObjectsSync(String table, List> pairs, Boolean hasTablePrimaryKey) {
- QueryUtils.constructQueryMultipleValuesSet(table, pairs, hasTablePrimaryKey, SQLDatabaseType.SQLITE)
- .forEach(this::updateSync);
- }
-
- @Override
- public void setObjectsAsync(String table, List> pairs, Boolean hasTablePrimaryKey) {
- QueryUtils.constructQueryMultipleValuesSet(table, pairs, hasTablePrimaryKey, SQLDatabaseType.SQLITE)
- .forEach(this::updateSync);
- }
-
- @Override
- public ResultSet getRow(String table, String keyColumn, String keyValue) {
- String query = QueryUtils.constructQueryRowGet(table, keyColumn, keyValue, SQLDatabaseType.SQLITE);
- return this.getResult(query);
- }
-
- @Override
- public ResultSet getRows(String table, String keyColumn, String keyValue, int limit) {
- String query = QueryUtils.constructQueryRowsGet(table, keyColumn, keyValue, limit, SQLDatabaseType.SQLITE);
- return this.getResult(query);
- }
-
- @Override
- public void deleteRowSync(String table, String keyColumn, String keyValue) {
- String query = QueryUtils.constructQueryRowRemove(table, keyColumn, keyValue, SQLDatabaseType.SQLITE);
- this.updateSync(query);
- }
-
- @Override
- public void deleteRowAsync(String table, String keyColumn, String keyValue) {
- String query = QueryUtils.constructQueryRowRemove(table, keyColumn, keyValue, SQLDatabaseType.SQLITE);
- this.updateAsync(query);
- }
-
- @Override
- public void deleteRowsSync(String table, String keyColumn, String keyValue, int limit) {
- String query = QueryUtils.constructQueryRowsRemove(table, keyColumn, keyValue, limit, SQLDatabaseType.SQLITE);
- this.updateSync(query);
- }
-
- @Override
- public void deleteRowsAsync(String table, String keyColumn, String keyValue, int limit) {
- String query = QueryUtils.constructQueryRowsRemove(table, keyColumn, keyValue, limit, SQLDatabaseType.SQLITE);
- this.updateAsync(query);
- }
-
-}
diff --git a/src/main/java/com/exortions/pluginutils/database/v3/MySQL.java b/src/main/java/com/exortions/pluginutils/database/v3/MySQL.java
deleted file mode 100644
index dc99dc4..0000000
--- a/src/main/java/com/exortions/pluginutils/database/v3/MySQL.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.exortions.pluginutils.database.v3;
-
-import lombok.Getter;
-
-import java.sql.*;
-import java.util.List;
-
-@Getter
-public class MySQL {
-
- private final String host;
- private final String port;
- private final String database;
-
- private final String username;
- private final String password;
-
- private final String url;
-
- private Connection connection;
-
- public MySQL(String host, String port, String database, String username, String password) {
- this.host = host;
- this.port = port;
- this.database = database;
- this.username = username;
- this.password = password;
-
- url = "jdbc:mysql://" + host + ":" + port + "/" + database;
- }
-
- public boolean isConnected() {
- return (connection != null);
- }
-
- public boolean connect() {
- try {
- connection = DriverManager.getConnection(url, username, password);
- return true;
- } catch (SQLException e) {
- return false;
- }
- }
-
- public boolean disconnect() {
- try {
- if (connection != null && !connection.isClosed()) {
- connection.close();
- return true;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- return false;
- }
-
- public boolean createTable(String name, List vars) {
- String sql = "CREATE TABLE IF NOT EXISTS " + name + "(";
- for (String var : vars) {
- sql = sql.concat(var + ",");
- }
- sql = sql.substring(0, sql.length()-1);
- sql = sql.concat("));");
- try {
- PreparedStatement stmt = connection.prepareStatement(sql);
- stmt.executeUpdate();
- return true;
- } catch (SQLException e) {
- e.printStackTrace();
- return false;
- }
- }
-
- public ResultSet getResult(String table, String column, String input) {
- String sql = "SELECT * FROM " + table + " WHERE " + column + "=" + input;
- try {
- PreparedStatement stmt = connection.prepareStatement(sql);
- stmt.setString(1, column);
- ResultSet res = stmt.executeQuery();
- return res;
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return null;
- }
-
-}
diff --git a/src/main/java/com/exortions/pluginutils/plugin/SpigotPlugin.java b/src/main/java/com/exortions/pluginutils/plugin/SpigotPlugin.java
index 1e16de0..6679e91 100644
--- a/src/main/java/com/exortions/pluginutils/plugin/SpigotPlugin.java
+++ b/src/main/java/com/exortions/pluginutils/plugin/SpigotPlugin.java
@@ -1,5 +1,7 @@
package com.exortions.pluginutils.plugin;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
/**
@@ -8,6 +10,19 @@
*/
public abstract class SpigotPlugin extends JavaPlugin implements MinecraftPlugin {
+ /** @deprecated */
+ @Deprecated
public SpigotPlugin instance;
+ public void sendMessage(String msg) {
+ getServer().getConsoleSender().sendMessage(msg);
+ }
+
+ public void broadcastMessage(String msg) {
+ getServer().getConsoleSender().sendMessage(msg);
+ for (Player player : Bukkit.getOnlinePlayers()) {
+ player.sendMessage(msg);
+ }
+ }
+
}
diff --git a/src/main/java/com/exortions/pluginutils/world/FileUtils.java b/src/main/java/com/exortions/pluginutils/world/FileUtils.java
new file mode 100644
index 0000000..7d39449
--- /dev/null
+++ b/src/main/java/com/exortions/pluginutils/world/FileUtils.java
@@ -0,0 +1,159 @@
+package com.exortions.pluginutils.world;
+
+import org.bukkit.plugin.java.JavaPlugin;
+
+import java.io.*;
+import java.nio.channels.FileChannel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class FileUtils {
+
+ public static void copyDirectoryToDirectory(File srcDir, File destDir) throws IOException {
+ if (srcDir == null) {
+ throw new NullPointerException("Source must not be null");
+ } else if (srcDir.exists() && !srcDir.isDirectory()) {
+ throw new IllegalArgumentException("Source '" + destDir + "' is not a directory");
+ } else if (destDir == null) {
+ throw new NullPointerException("Destination must not be null");
+ } else if (destDir.exists() && !destDir.isDirectory()) {
+ throw new IllegalArgumentException("Destination '" + destDir + "' is not a directory");
+ } else {
+ copyDirectory(srcDir, new File(destDir, srcDir.getName()), true);
+ }
+ }
+
+ public static void copyDirectory(File srcDir, File destDir) throws IOException {
+ copyDirectory(srcDir, destDir, true);
+ }
+
+ public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate) throws IOException {
+ copyDirectory(srcDir, destDir, (FileFilter)null, preserveFileDate);
+ }
+
+ public static void copyDirectory(File srcDir, File destDir, FileFilter filter) throws IOException {
+ copyDirectory(srcDir, destDir, filter, true);
+ }
+
+ public static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate) throws IOException {
+ checkFileRequirements(srcDir, destDir);
+ if (!srcDir.isDirectory()) {
+ throw new IOException("Source '" + srcDir + "' exists but is not a directory");
+ } else if (srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) {
+ throw new IOException("Source '" + srcDir + "' and destination '" + destDir + "' are the same");
+ } else {
+ List exclusionList = null;
+ if (destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) {
+ File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);
+ if (srcFiles != null && srcFiles.length > 0) {
+ exclusionList = new ArrayList(srcFiles.length);
+ File[] arr$ = srcFiles;
+ int len$ = srcFiles.length;
+
+ for(int i$ = 0; i$ < len$; ++i$) {
+ File srcFile = arr$[i$];
+ File copiedFile = new File(destDir, srcFile.getName());
+ exclusionList.add(copiedFile.getCanonicalPath());
+ }
+ }
+ }
+
+ doCopyDirectory(srcDir, destDir, filter, preserveFileDate, exclusionList);
+ }
+ }
+
+ private static void checkFileRequirements(File src, File dest) throws FileNotFoundException {
+ if (src == null) {
+ throw new NullPointerException("Source must not be null");
+ } else if (dest == null) {
+ throw new NullPointerException("Destination must not be null");
+ } else if (!src.exists()) {
+ throw new FileNotFoundException("Source '" + src + "' does not exist");
+ }
+ }
+
+ private static void doCopyFile(File srcFile, File destFile, boolean preserveFileDate) throws IOException {
+ if (destFile.exists() && destFile.isDirectory()) {
+ throw new IOException("Destination '" + destFile + "' exists but is a directory");
+ } else {
+ FileInputStream fis = null;
+ FileOutputStream fos = null;
+ FileChannel input = null;
+ FileChannel output = null;
+
+ long srcLen;
+ long dstLen;
+ try {
+ fis = new FileInputStream(srcFile);
+ fos = new FileOutputStream(destFile);
+ input = fis.getChannel();
+ output = fos.getChannel();
+ srcLen = input.size();
+ dstLen = 0L;
+
+ long bytesCopied;
+ for(long count = 0L; dstLen < srcLen; dstLen += bytesCopied) {
+ long remain = srcLen - dstLen;
+ count = remain > 31457280L ? 31457280L : remain;
+ bytesCopied = output.transferFrom(input, dstLen, count);
+ if (bytesCopied == 0L) {
+ break;
+ }
+ }
+ } finally {
+
+ }
+
+ srcLen = srcFile.length();
+ dstLen = destFile.length();
+ if (srcLen != dstLen) {
+ throw new IOException("Failed to copy full contents from '" + srcFile + "' to '" + destFile + "' Expected length: " + srcLen + " Actual: " + dstLen);
+ } else {
+ if (preserveFileDate) {
+ destFile.setLastModified(srcFile.lastModified());
+ }
+
+ }
+ }
+ }
+
+ private static void doCopyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate, List exclusionList) throws IOException {
+ File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);
+ if (srcFiles == null) {
+ throw new IOException("Failed to list contents of " + srcDir);
+ } else {
+ if (destDir.exists()) {
+ if (!destDir.isDirectory()) {
+ throw new IOException("Destination '" + destDir + "' exists but is not a directory");
+ }
+ } else if (!destDir.mkdirs() && !destDir.isDirectory()) {
+ throw new IOException("Destination '" + destDir + "' directory cannot be created");
+ }
+
+ if (!destDir.canWrite()) {
+ throw new IOException("Destination '" + destDir + "' cannot be written to");
+ } else {
+ File[] arr$ = srcFiles;
+ int len$ = srcFiles.length;
+
+ for(int i$ = 0; i$ < len$; ++i$) {
+ File srcFile = arr$[i$];
+ File dstFile = new File(destDir, srcFile.getName());
+ if (exclusionList == null || !exclusionList.contains(srcFile.getCanonicalPath())) {
+ if (srcFile.isDirectory()) {
+ doCopyDirectory(srcFile, dstFile, filter, preserveFileDate, exclusionList);
+ } else {
+ doCopyFile(srcFile, dstFile, preserveFileDate);
+ }
+ }
+ }
+
+ if (preserveFileDate) {
+ destDir.setLastModified(srcDir.lastModified());
+ }
+
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/exortions/pluginutils/world/WorldManager.java b/src/main/java/com/exortions/pluginutils/world/WorldManager.java
index fecbb93..e03b274 100644
--- a/src/main/java/com/exortions/pluginutils/world/WorldManager.java
+++ b/src/main/java/com/exortions/pluginutils/world/WorldManager.java
@@ -2,7 +2,6 @@
import org.bukkit.Bukkit;
import org.bukkit.World;
-import org.bukkit.craftbukkit.libs.org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.FileNotFoundException;
diff --git a/target/ExosPluginUtils-1.4.31.27-javadoc.jar b/target/ExosPluginUtils-1.4.31.27-javadoc.jar
deleted file mode 100644
index b1848c9..0000000
Binary files a/target/ExosPluginUtils-1.4.31.27-javadoc.jar and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/collection/CollectionUtils.class b/target/classes/com/exortions/pluginutils/collection/CollectionUtils.class
index e0630eb..2998e95 100644
Binary files a/target/classes/com/exortions/pluginutils/collection/CollectionUtils.class and b/target/classes/com/exortions/pluginutils/collection/CollectionUtils.class differ
diff --git a/target/classes/com/exortions/pluginutils/command/subcommand/SubCommandHandler.class b/target/classes/com/exortions/pluginutils/command/subcommand/SubCommandHandler.class
index 67858b9..cb0730a 100644
Binary files a/target/classes/com/exortions/pluginutils/command/subcommand/SubCommandHandler.class and b/target/classes/com/exortions/pluginutils/command/subcommand/SubCommandHandler.class differ
diff --git a/target/classes/com/exortions/pluginutils/database/v1/AlreadyConnectedException.class b/target/classes/com/exortions/pluginutils/database/v1/AlreadyConnectedException.class
deleted file mode 100644
index d10fb10..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v1/AlreadyConnectedException.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v1/MySQL.class b/target/classes/com/exortions/pluginutils/database/v1/MySQL.class
deleted file mode 100644
index df38881..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v1/MySQL.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v1/NotConnectedException.class b/target/classes/com/exortions/pluginutils/database/v1/NotConnectedException.class
deleted file mode 100644
index ea29984..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v1/NotConnectedException.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v1/SQLDatabase.class b/target/classes/com/exortions/pluginutils/database/v1/SQLDatabase.class
deleted file mode 100644
index 541f02f..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v1/SQLDatabase.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/MySQLResultSetUtils.class b/target/classes/com/exortions/pluginutils/database/v2/MySQLResultSetUtils.class
deleted file mode 100644
index af5fa9b..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/MySQLResultSetUtils.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/Query.class b/target/classes/com/exortions/pluginutils/database/v2/Query.class
deleted file mode 100644
index f413e73..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/Query.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/QueryUtils.class b/target/classes/com/exortions/pluginutils/database/v2/QueryUtils.class
deleted file mode 100644
index 53abd21..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/QueryUtils.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/SQLDatabase.class b/target/classes/com/exortions/pluginutils/database/v2/SQLDatabase.class
deleted file mode 100644
index ce534d6..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/SQLDatabase.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/SQLDatabaseType.class b/target/classes/com/exortions/pluginutils/database/v2/SQLDatabaseType.class
deleted file mode 100644
index df710b8..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/SQLDatabaseType.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/SQLScheduler$1.class b/target/classes/com/exortions/pluginutils/database/v2/SQLScheduler$1.class
deleted file mode 100644
index 82b9da6..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/SQLScheduler$1.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/SQLScheduler.class b/target/classes/com/exortions/pluginutils/database/v2/SQLScheduler.class
deleted file mode 100644
index 5dcfc19..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/SQLScheduler.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLConnection.class b/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLConnection.class
deleted file mode 100644
index 8314200..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLConnection.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLData.class b/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLData.class
deleted file mode 100644
index 2d41613..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLData.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase$1.class b/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase$1.class
deleted file mode 100644
index 6bfed11..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase$1.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase.class b/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase.class
deleted file mode 100644
index 79a534b..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/mysql/MySQLDatabase.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v2/sqlite/SQLiteDatabase.class b/target/classes/com/exortions/pluginutils/database/v2/sqlite/SQLiteDatabase.class
deleted file mode 100644
index 8f46a55..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v2/sqlite/SQLiteDatabase.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/database/v3/MySQL.class b/target/classes/com/exortions/pluginutils/database/v3/MySQL.class
deleted file mode 100644
index 31d0de2..0000000
Binary files a/target/classes/com/exortions/pluginutils/database/v3/MySQL.class and /dev/null differ
diff --git a/target/classes/com/exortions/pluginutils/plugin/SpigotPlugin.class b/target/classes/com/exortions/pluginutils/plugin/SpigotPlugin.class
index 1c11765..39d5bbb 100644
Binary files a/target/classes/com/exortions/pluginutils/plugin/SpigotPlugin.class and b/target/classes/com/exortions/pluginutils/plugin/SpigotPlugin.class differ
diff --git a/target/classes/com/exortions/pluginutils/world/WorldManager.class b/target/classes/com/exortions/pluginutils/world/WorldManager.class
index 2e582cf..c17dd0b 100644
Binary files a/target/classes/com/exortions/pluginutils/world/WorldManager.class and b/target/classes/com/exortions/pluginutils/world/WorldManager.class differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
index 46379f8..4a07695 100644
--- a/target/maven-archiver/pom.properties
+++ b/target/maven-archiver/pom.properties
@@ -1,5 +1,5 @@
#Generated by Maven
-#Sun Aug 01 17:39:00 PDT 2021
-version=1.4.31.27
+#Mon Sep 06 10:52:28 PDT 2021
+version=1.4.31.32
groupId=com.exortions
artifactId=ExosPluginUtils
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index 2174287..55186fa 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,9 +1,6 @@
-com\exortions\pluginutils\database\v2\Query.class
com\exortions\pluginutils\collection\CollectionUtils.class
-com\exortions\pluginutils\database\v1\MySQL.class
com\exortions\pluginutils\example\commands\ExplosiveStickCommand.class
com\exortions\pluginutils\npc\PlayerLeftClickNPCEvent.class
-com\exortions\pluginutils\database\v3\MySQL.class
com\exortions\pluginutils\command\subcommand\SubCommandHandler.class
com\exortions\pluginutils\mojang\SkinAPI.class
com\exortions\pluginutils\annotation\AllMinecraft.class
@@ -11,32 +8,24 @@ com\exortions\pluginutils\string\StringUtils.class
com\exortions\pluginutils\world\WorldManager.class
com\exortions\pluginutils\tablist\Tablist.class
com\exortions\pluginutils\command\tabcomplete\TabCompleterHandler.class
-com\exortions\pluginutils\database\v2\SQLScheduler.class
com\exortions\pluginutils\npc\PacketReader.class
-com\exortions\pluginutils\database\v1\AlreadyConnectedException.class
com\exortions\pluginutils\tablist\Tablist$1.class
com\exortions\pluginutils\bossbar\Bossbar.class
com\exortions\pluginutils\scoreboard\Team.class
-com\exortions\pluginutils\database\v2\SQLScheduler$1.class
com\exortions\pluginutils\npc\PacketReader$1.class
com\exortions\pluginutils\event\Event.class
com\exortions\pluginutils\example\ExamplePlugin.class
com\exortions\pluginutils\plugin\UpdateChecker.class
-com\exortions\pluginutils\database\v2\sqlite\SQLiteDatabase.class
com\exortions\pluginutils\tablist\Tablist$2.class
com\exortions\pluginutils\npc\NPC.class
com\exortions\pluginutils\annotation\NewMinecraft.class
com\exortions\pluginutils\plugin\MinecraftPlugin.class
-com\exortions\pluginutils\database\v2\QueryUtils.class
com\exortions\pluginutils\mojang\SkinAPI$1.class
com\exortions\pluginutils\title\Title.class
com\exortions\pluginutils\example\commands\HologramCommand.class
com\exortions\pluginutils\example\listeners\EventListener$2.class
com\exortions\pluginutils\example\commands\HealCommand.class
-com\exortions\pluginutils\database\v2\mysql\MySQLConnection.class
com\exortions\pluginutils\command\PluginCommand.class
-com\exortions\pluginutils\database\v2\mysql\MySQLData.class
-com\exortions\pluginutils\database\v2\SQLDatabase.class
com\exortions\pluginutils\actionbar\Actionbar.class
com\exortions\pluginutils\example\listeners\EventListener$1.class
com\exortions\pluginutils\startup\Startup.class
@@ -52,19 +41,15 @@ com\exortions\pluginutils\example\commands\NPCCommand.class
com\exortions\pluginutils\config\Configuration.class
com\exortions\pluginutils\particle\PointParticleEffect.class
com\exortions\pluginutils\scoreboard\Scoreboard.class
-com\exortions\pluginutils\database\v1\SQLDatabase.class
com\exortions\pluginutils\command\CommandInfo.class
-com\exortions\pluginutils\database\v2\mysql\MySQLDatabase.class
com\exortions\pluginutils\chat\ChatUtils.class
-com\exortions\pluginutils\database\v2\SQLDatabaseType.class
com\exortions\pluginutils\listener\ListenerUtils.class
com\exortions\pluginutils\command\CommandUtils.class
com\exortions\pluginutils\example\listeners\EventListener.class
com\exortions\pluginutils\entity\Hologram.class
com\exortions\pluginutils\plugin\MinecraftVersion.class
com\exortions\pluginutils\mojang\SkinAPI$Property.class
-com\exortions\pluginutils\database\v1\NotConnectedException.class
com\exortions\pluginutils\item\ItemBuilder.class
com\exortions\pluginutils\particle\ParticleData.class
-com\exortions\pluginutils\database\v2\MySQLResultSetUtils.class
-com\exortions\pluginutils\database\v2\mysql\MySQLDatabase$1.class
+com\exortions\pluginutils\database\DatabaseManipulator.class
+com\exortions\pluginutils\world\FileUtils.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index eee0d87..dd06a2a 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,61 +1,48 @@
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\annotation\AllMinecraft.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\item\ItemBuilder.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\annotation\LegacyMinecraft.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\command\tabcomplete\TabCompleterHandler.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\plugin\UpdateChecker.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\command\CommandInfo.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v1\MySQL.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\DatabaseManipulator.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\world\FileUtils.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\collection\CollectionUtils.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\commands\NPCCommand.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\entity\Hologram.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\ExamplePlugin.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\title\Title.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\actionbar\Actionbar.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\npc\NPC.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\annotation\NewMinecraft.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\command\PluginCommand.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\bossbar\Bossbar.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\chat\ChatUtils.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\config\Configuration.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\mojang\SkinAPI.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\mysql\MySQLDatabase.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\mysql\MySQLData.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\scoreboard\Team.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\string\StringUtils.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\particle\ParticleData.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\MySQLResultSetUtils.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\SQLDatabaseType.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\commands\HologramCommand.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\Query.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\world\WorldManager.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\annotation\AllMinecraft.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\annotation\LegacyMinecraft.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\plugin\UpdateChecker.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v1\NotConnectedException.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\collection\CollectionUtils.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\sqlite\SQLiteDatabase.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v1\AlreadyConnectedException.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\ExamplePlugin.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\mysql\MySQLConnection.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\commands\ExplosiveStickCommand.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v1\SQLDatabase.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\annotation\NewMinecraft.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\listeners\ExplosiveStickListener.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\plugin\MinecraftVersion.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v3\MySQL.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\plugin\JavaVersion.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\command\subcommand\SubCommandHandler.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\command\PluginCommand.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\command\CommandUtils.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\particle\PointParticleEffect.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\commands\HealCommand.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\SQLScheduler.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\bossbar\Bossbar.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\plugin\MinecraftPlugin.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\startup\Startup.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\QueryUtils.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\npc\PlayerLeftClickNPCEvent.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\npc\PlayerRightClickNPCEvent.java
-C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\database\v2\SQLDatabase.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\chat\ChatUtils.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\listeners\EventListener.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\config\Configuration.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\event\Event.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\listener\ListenerUtils.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\mojang\SkinAPI.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\gui\GUIContainer.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\scoreboard\Team.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\plugin\SpigotPlugin.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\scoreboard\Scoreboard.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\npc\PacketReader.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\string\StringUtils.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\particle\ParticleData.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\example\commands\HologramCommand.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\command\subcommand\SubCommand.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\particle\CircleParticleEffect.java
C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\tablist\Tablist.java
+C:\Users\quade\Documents\Code\PluginUtils\src\main\java\com\exortions\pluginutils\world\WorldManager.java
diff --git a/target/nexus-staging/staging/335a5a938700dc.properties b/target/nexus-staging/staging/335a5a938700dc.properties
index f671ba9..826a66d 100644
--- a/target/nexus-staging/staging/335a5a938700dc.properties
+++ b/target/nexus-staging/staging/335a5a938700dc.properties
@@ -1,6 +1,6 @@
#Generated by org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7
-#Sun Aug 01 17:39:55 PDT 2021
+#Sat Sep 11 11:12:40 PDT 2021
stagingRepository.managed=true
stagingRepository.profileId=335a5a938700dc
-stagingRepository.id=comexortions-1007
-stagingRepository.url=https\://s01.oss.sonatype.org\:443/content/repositories/comexortions-1007
+stagingRepository.id=comexortions-1014
+stagingRepository.url=https\://s01.oss.sonatype.org\:443/content/repositories/comexortions-1014
diff --git a/target/nexus-staging/staging/335a5a938700dc/.index b/target/nexus-staging/staging/335a5a938700dc/.index
index 804c6b6..8918c7a 100644
--- a/target/nexus-staging/staging/335a5a938700dc/.index
+++ b/target/nexus-staging/staging/335a5a938700dc/.index
@@ -54,3 +54,52 @@ com/exortions/ExosPluginUtils/1.4.31.27/ExosPluginUtils-1.4.31.27.jar.asc=com.ex
com/exortions/ExosPluginUtils/1.4.31.27/ExosPluginUtils-1.4.31.27.pom.asc=com.exortions:ExosPluginUtils:1.4.31.27:n/a:pom.asc:pom.asc:n/a:n/a:n/a:n/a
com/exortions/ExosPluginUtils/1.4.31.27/ExosPluginUtils-1.4.31.27-sources.jar.asc=com.exortions:ExosPluginUtils:1.4.31.27:sources:jar.asc:jar.asc:n/a:n/a:n/a:n/a
com/exortions/ExosPluginUtils/1.4.31.27/ExosPluginUtils-1.4.31.27-javadoc.jar.asc=com.exortions:ExosPluginUtils:1.4.31.27:javadoc:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.jar=com.exortions:ExosPluginUtils:1.4.31.28:n/a:jar:jar:ExosPluginUtils-1.4.31.28.pom:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-sources.jar=com.exortions:ExosPluginUtils:1.4.31.28:sources:java-source:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-javadoc.jar=com.exortions:ExosPluginUtils:1.4.31.28:javadoc:javadoc:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.jar.asc=com.exortions:ExosPluginUtils:1.4.31.28:n/a:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.pom.asc=com.exortions:ExosPluginUtils:1.4.31.28:n/a:pom.asc:pom.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-sources.jar.asc=com.exortions:ExosPluginUtils:1.4.31.28:sources:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-javadoc.jar.asc=com.exortions:ExosPluginUtils:1.4.31.28:javadoc:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.29/ExosPluginUtils-1.4.31.29.jar=com.exortions:ExosPluginUtils:1.4.31.29:n/a:jar:jar:ExosPluginUtils-1.4.31.29.pom:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.29/ExosPluginUtils-1.4.31.29-sources.jar=com.exortions:ExosPluginUtils:1.4.31.29:sources:java-source:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.29/ExosPluginUtils-1.4.31.29-javadoc.jar=com.exortions:ExosPluginUtils:1.4.31.29:javadoc:javadoc:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.29/ExosPluginUtils-1.4.31.29.jar.asc=com.exortions:ExosPluginUtils:1.4.31.29:n/a:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.29/ExosPluginUtils-1.4.31.29.pom.asc=com.exortions:ExosPluginUtils:1.4.31.29:n/a:pom.asc:pom.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.29/ExosPluginUtils-1.4.31.29-sources.jar.asc=com.exortions:ExosPluginUtils:1.4.31.29:sources:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.29/ExosPluginUtils-1.4.31.29-javadoc.jar.asc=com.exortions:ExosPluginUtils:1.4.31.29:javadoc:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.30/ExosPluginUtils-1.4.31.30.jar=com.exortions:ExosPluginUtils:1.4.31.30:n/a:jar:jar:ExosPluginUtils-1.4.31.30.pom:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.30/ExosPluginUtils-1.4.31.30-sources.jar=com.exortions:ExosPluginUtils:1.4.31.30:sources:java-source:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.30/ExosPluginUtils-1.4.31.30-javadoc.jar=com.exortions:ExosPluginUtils:1.4.31.30:javadoc:javadoc:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.30/ExosPluginUtils-1.4.31.30.jar.asc=com.exortions:ExosPluginUtils:1.4.31.30:n/a:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.30/ExosPluginUtils-1.4.31.30.pom.asc=com.exortions:ExosPluginUtils:1.4.31.30:n/a:pom.asc:pom.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.30/ExosPluginUtils-1.4.31.30-sources.jar.asc=com.exortions:ExosPluginUtils:1.4.31.30:sources:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.30/ExosPluginUtils-1.4.31.30-javadoc.jar.asc=com.exortions:ExosPluginUtils:1.4.31.30:javadoc:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.31/ExosPluginUtils-1.4.31.31.jar=com.exortions:ExosPluginUtils:1.4.31.31:n/a:jar:jar:ExosPluginUtils-1.4.31.31.pom:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.31/ExosPluginUtils-1.4.31.31-sources.jar=com.exortions:ExosPluginUtils:1.4.31.31:sources:java-source:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.31/ExosPluginUtils-1.4.31.31-javadoc.jar=com.exortions:ExosPluginUtils:1.4.31.31:javadoc:javadoc:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.31/ExosPluginUtils-1.4.31.31.jar.asc=com.exortions:ExosPluginUtils:1.4.31.31:n/a:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.31/ExosPluginUtils-1.4.31.31.pom.asc=com.exortions:ExosPluginUtils:1.4.31.31:n/a:pom.asc:pom.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.31/ExosPluginUtils-1.4.31.31-sources.jar.asc=com.exortions:ExosPluginUtils:1.4.31.31:sources:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.31/ExosPluginUtils-1.4.31.31-javadoc.jar.asc=com.exortions:ExosPluginUtils:1.4.31.31:javadoc:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.jar=com.exortions:ExosPluginUtils:1.4.31.32:n/a:jar:jar:ExosPluginUtils-1.4.31.32.pom:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-sources.jar=com.exortions:ExosPluginUtils:1.4.31.32:sources:java-source:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-javadoc.jar=com.exortions:ExosPluginUtils:1.4.31.32:javadoc:javadoc:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:n/a:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.pom.asc=com.exortions:ExosPluginUtils:1.4.31.32:n/a:pom.asc:pom.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-sources.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:sources:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-javadoc.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:javadoc:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.jar=com.exortions:ExosPluginUtils:1.4.31.32:n/a:jar:jar:ExosPluginUtils-1.4.31.32.pom:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-sources.jar=com.exortions:ExosPluginUtils:1.4.31.32:sources:java-source:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-javadoc.jar=com.exortions:ExosPluginUtils:1.4.31.32:javadoc:javadoc:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:n/a:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.pom.asc=com.exortions:ExosPluginUtils:1.4.31.32:n/a:pom.asc:pom.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-sources.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:sources:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-javadoc.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:javadoc:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.jar=com.exortions:ExosPluginUtils:1.4.31.32:n/a:jar:jar:ExosPluginUtils-1.4.31.32.pom:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-sources.jar=com.exortions:ExosPluginUtils:1.4.31.32:sources:java-source:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-javadoc.jar=com.exortions:ExosPluginUtils:1.4.31.32:javadoc:javadoc:jar:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:n/a:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32.pom.asc=com.exortions:ExosPluginUtils:1.4.31.32:n/a:pom.asc:pom.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-sources.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:sources:jar.asc:jar.asc:n/a:n/a:n/a:n/a
+com/exortions/ExosPluginUtils/1.4.31.32/ExosPluginUtils-1.4.31.32-javadoc.jar.asc=com.exortions:ExosPluginUtils:1.4.31.32:javadoc:jar.asc:jar.asc:n/a:n/a:n/a:n/a
diff --git a/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-javadoc.jar b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-javadoc.jar
new file mode 100644
index 0000000..d899cf3
Binary files /dev/null and b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-javadoc.jar differ
diff --git a/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-javadoc.jar.asc b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-javadoc.jar.asc
new file mode 100644
index 0000000..2bb4473
--- /dev/null
+++ b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-javadoc.jar.asc
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+
+iHUEABYKAB0WIQTfGZ8pLtGPBAaE9dKBNmxnA3bKQgUCYQsIAwAKCRCBNmxnA3bK
+QsTYAP9uFImft85Iy2LiNg9IsRaEpTZH6qtMhMMKWREN8rMgPAD9Hsm8SKjW2YWV
++7vWneyUvYCCTZUeM78lT47SPxA0rAg=
+=5HR1
+-----END PGP SIGNATURE-----
diff --git a/target/ExosPluginUtils-1.4.31.27-sources.jar b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-sources.jar
similarity index 97%
rename from target/ExosPluginUtils-1.4.31.27-sources.jar
rename to target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-sources.jar
index 6c7f1a1..6051428 100644
Binary files a/target/ExosPluginUtils-1.4.31.27-sources.jar and b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-sources.jar differ
diff --git a/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-sources.jar.asc b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-sources.jar.asc
new file mode 100644
index 0000000..054295b
--- /dev/null
+++ b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28-sources.jar.asc
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+
+iHUEABYKAB0WIQTfGZ8pLtGPBAaE9dKBNmxnA3bKQgUCYQsIAwAKCRCBNmxnA3bK
+Qs6RAQDKD2SaTTh69jZ4pl1PobX0pmhnIuBoT+EgXmPCGhTFSgD+KLqDwj+pV6rf
+kRB6MlO1syL3bNjiOhWAMoziSUt7+wM=
+=EiDK
+-----END PGP SIGNATURE-----
diff --git a/target/ExosPluginUtils-1.4.31.27.jar b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.jar
similarity index 85%
rename from target/ExosPluginUtils-1.4.31.27.jar
rename to target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.jar
index 34b6d1d..7c03d3d 100644
Binary files a/target/ExosPluginUtils-1.4.31.27.jar and b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.jar differ
diff --git a/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.jar.asc b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.jar.asc
new file mode 100644
index 0000000..afec220
--- /dev/null
+++ b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.jar.asc
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+
+iHUEABYKAB0WIQTfGZ8pLtGPBAaE9dKBNmxnA3bKQgUCYQsH8wAKCRCBNmxnA3bK
+QtPhAQCb4frYwPj0M08C2Gi0osp35MtIaBvgntf71zr1opv8ZwD8CfGFDcuw6RHC
+emTNlqcgFZU+yHgN5AFNw3XX+givxQE=
+=zm+r
+-----END PGP SIGNATURE-----
diff --git a/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.pom b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.pom
new file mode 100644
index 0000000..b373ff1
--- /dev/null
+++ b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.pom
@@ -0,0 +1,185 @@
+
+
+ 4.0.0
+
+ com.exortions
+ ExosPluginUtils
+ 1.4.31.28
+ jar
+
+ PluginUtils
+ PluginUtils is a simple, easy-to-use
+ library that saves many Minecraft Spigot developers a lot of time when creating
+ plugins. It allows Spigot developers to create a lot of NMS
+ (net.minecraft.server) and Spigot things like Tablists, Scoreboards, etc, as well as MySQL and SQLite support,
+ a bunch of lines and classes saved, therefore improving the experience while
+ developing plugins.
+
+ https://www.github.com/Exortions/PluginUtils
+
+
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ 8
+ 8
+
+
+
+
+ Exortions
+ exortionsmc@gmail.com
+
+
+
+
+ scm:git:git://github.com/Exortions/PluginUtils.git
+ scm:git:ssh://github.com:Exortions/PluginUtils.git
+ https://github.com/Exortions/PluginUtils/tree/master
+
+
+
+
+ ossrh
+ https://s01.oss.sonatype.org/content/repositories/snapshots
+
+
+ ossrh
+ https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.3.0
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.5
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+ org.sonatype.plugins
+ nexus-staging-maven-plugin
+ 1.6.7
+ true
+
+ ossrh
+ https://s01.oss.sonatype.org/
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.5
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+ org.sonatype.plugins
+ nexus-staging-maven-plugin
+ 1.6.7
+ true
+
+ ossrh
+ https://s01.oss.sonatype.org/
+ true
+
+
+
+
+
+
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+ bungeecord-repo
+ https://oss.sonatype.org/content/repositories/snapshots/
+
+
+ sonatype
+ https://oss.sonatype.org/content/groups/public/
+
+
+
+
+
+
+ org.spigotmc
+ spigot
+ 1.16.5-R0.1-SNAPSHOT
+ provided
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ org.jetbrains
+ annotations
+ RELEASE
+ compile
+
+
+
+ org.reflections
+ reflections
+ 0.9.12
+
+
+
+
\ No newline at end of file
diff --git a/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.pom.asc b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.pom.asc
new file mode 100644
index 0000000..3a4d77c
--- /dev/null
+++ b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/1.4.31.28/ExosPluginUtils-1.4.31.28.pom.asc
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+
+iHUEABYKAB0WIQTfGZ8pLtGPBAaE9dKBNmxnA3bKQgUCYQsIAwAKCRCBNmxnA3bK
+QoM3AP9J1PeIZTHyRYh4OLvhv8dPSQ7DK03wRZH6cGjaYQeOcgEAgG74kYzFcMi3
+fHWLpKTiVy9ui+jE1tV7EwEl3ixgAwk=
+=n5YC
+-----END PGP SIGNATURE-----
diff --git a/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/maven-metadata-nexus.xml b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/maven-metadata-nexus.xml
index 369fed3..c9eaad7 100644
--- a/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/maven-metadata-nexus.xml
+++ b/target/nexus-staging/staging/335a5a938700dc/com/exortions/ExosPluginUtils/maven-metadata-nexus.xml
@@ -3,7 +3,7 @@
com.exortions
ExosPluginUtils
- 1.4.31.27
+ 1.4.31.32
0.4.30.23
0.4.30.24
@@ -12,7 +12,12 @@
1.4.31.25
1.4.31.26
1.4.31.27
+ 1.4.31.28
+ 1.4.31.29
+ 1.4.31.30
+ 1.4.31.31
+ 1.4.31.32
- 20210802003936
+ 20210911181209