mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-11 03:30:10 +00:00
Stop saving booleans as text and running database calls on BendingPlayer construction
This commit is contained in:
parent
d9e8e9f4ff
commit
8530c75ba6
3 changed files with 65 additions and 32 deletions
|
@ -82,7 +82,7 @@ public class BendingPlayer {
|
|||
this.elements = elements;
|
||||
this.subelements = subelements;
|
||||
this.abilities = new String[9];
|
||||
this.setAbilities(abilities);
|
||||
System.arraycopy(abilities, 0, this.abilities, 0, abilities.length);
|
||||
this.permaRemoved = permaRemoved;
|
||||
this.player = Bukkit.getPlayer(uuid);
|
||||
this.toggled = true;
|
||||
|
|
|
@ -336,9 +336,10 @@ public class GeneralMethods {
|
|||
}
|
||||
|
||||
private static void createBendingPlayerAsynchronously(final UUID uuid, final String player) {
|
||||
try (ResultSet rs = DBConnection.sql.readQuery("SELECT * FROM pk_players WHERE uuid = '" + uuid.toString() + "'")) {
|
||||
ResultSet rs = DBConnection.sql.readQuery("SELECT * FROM pk_players WHERE uuid = '" + uuid.toString() + "'");
|
||||
try {
|
||||
if (!rs.next()) { // Data doesn't exist, we want a completely new player.
|
||||
DBConnection.sql.modifyQuery("INSERT INTO pk_players (uuid, player, slot1, slot2, slot3, slot4, slot5, slot6, slot7, slot8, slot9) VALUES ('" + uuid.toString() + "', '" + player + "', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null')");
|
||||
DBConnection.sql.modifyQuery("INSERT INTO pk_players (uuid, player, slot1, slot2, slot3, slot4, slot5, slot6, slot7, slot8, slot9) VALUES ('" + uuid.toString() + "', '" + player + "', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null');");
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -350,12 +351,11 @@ public class GeneralMethods {
|
|||
// The player has at least played before.
|
||||
final String player2 = rs.getString("player");
|
||||
if (!player.equalsIgnoreCase(player2)) {
|
||||
DBConnection.sql.modifyQuery("UPDATE pk_players SET player = '" + player + "' WHERE uuid = '" + uuid.toString() + "'");
|
||||
DBConnection.sql.modifyQuery("UPDATE pk_players SET player = '" + player + "' WHERE uuid = '" + uuid.toString() + "';");
|
||||
// They have changed names.
|
||||
ProjectKorra.log.info("Updating Player Name for " + player);
|
||||
}
|
||||
final String permarem = rs.getString("permaremoved");
|
||||
boolean permaremoved = permarem != null && permarem.equals("true");
|
||||
final boolean permaremoved = rs.getBoolean("permaremoved");
|
||||
final List<Element> elements = new ArrayList<>();
|
||||
final List<SubElement> subelements = new ArrayList<>();
|
||||
final String[] abilities = new String[9];
|
||||
|
@ -367,23 +367,21 @@ public class GeneralMethods {
|
|||
}
|
||||
}
|
||||
|
||||
try (ResultSet rs2 = DBConnection.sql.readQuery("SELECT * FROM pk_player_elements WHERE uuid = '" + uuid.toString() + "';")) {
|
||||
while (rs2.next()) {
|
||||
String elementName = rs2.getString("element");
|
||||
String subElement = rs2.getString("sub_element");
|
||||
boolean isSub = subElement != null && subElement.equals("true");
|
||||
|
||||
Element element = Element.fromString(elementName);
|
||||
|
||||
if (element == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isSub) {
|
||||
subelements.add((SubElement)element);
|
||||
} else {
|
||||
elements.add(element);
|
||||
}
|
||||
ResultSet rs2 = DBConnection.sql.readQuery("SELECT * FROM pk_player_elements WHERE uuid = '" + uuid.toString() + "';");
|
||||
while (rs2.next()) {
|
||||
String elementName = rs2.getString("element");
|
||||
boolean isSub = rs2.getBoolean("sub_element");
|
||||
|
||||
Element element = Element.fromString(elementName);
|
||||
|
||||
if (element == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isSub) {
|
||||
subelements.add((SubElement)element);
|
||||
} else {
|
||||
elements.add(element);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1854,7 +1852,7 @@ public class GeneralMethods {
|
|||
|
||||
StringBuilder queryBuilder = new StringBuilder();
|
||||
e.forEach(element -> {
|
||||
queryBuilder.append("INSERT INTO pk_player_elements (uuid, element, sub_element) VALUES ('" + uuid + "', '" + element.getName().toLowerCase() + "', '" + String.valueOf(e instanceof SubElement) + "');");
|
||||
queryBuilder.append("INSERT INTO pk_player_elements (uuid, element, sub_element) VALUES ('" + uuid + "', '" + element.getName().toLowerCase() + "', " + String.valueOf(e instanceof SubElement) + ");");
|
||||
});
|
||||
final String query = queryBuilder.toString();
|
||||
|
||||
|
@ -1870,7 +1868,7 @@ public class GeneralMethods {
|
|||
final String element = e.getName().toLowerCase();
|
||||
final boolean subElement = e instanceof SubElement;
|
||||
|
||||
DBConnection.sql.modifyQuery("INSERT INTO pk_player_elements (uuid, element, sub_element) VALUES ('" + uuid + "', '" + element + "', '" + String.valueOf(subElement) + "');");
|
||||
DBConnection.sql.modifyQuery("INSERT INTO pk_player_elements (uuid, element, sub_element) VALUES ('" + uuid + "', '" + element + "', " + String.valueOf(subElement) + ");");
|
||||
}
|
||||
|
||||
public static void deleteElements(final BendingPlayer bPlayer, List<Element> e) {
|
||||
|
@ -1905,7 +1903,7 @@ public class GeneralMethods {
|
|||
}
|
||||
final String uuid = bPlayer.getUUIDString();
|
||||
final boolean permaRemoved = bPlayer.isPermaRemoved();
|
||||
DBConnection.sql.modifyQuery("UPDATE pk_players SET permaremoved = '" + String.valueOf(permaRemoved) + "' WHERE uuid = '" + uuid + "'");
|
||||
DBConnection.sql.modifyQuery("UPDATE pk_players SET permaremoved = " + String.valueOf(permaRemoved) + " WHERE uuid = '" + uuid + "'");
|
||||
}
|
||||
|
||||
public static void setVelocity(final Entity entity, final Vector velocity) {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.projectkorra.projectkorra.storage;
|
||||
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
|
@ -37,14 +38,27 @@ public class DBConnection {
|
|||
ProjectKorra.log.info("Database connection established.");
|
||||
if (!sql.tableExists("pk_players")) {
|
||||
ProjectKorra.log.info("Creating pk_players table");
|
||||
final String query = "CREATE TABLE `pk_players` (`uuid` varchar(36) NOT NULL, `player` varchar(16) NOT NULL, `permaremoved` varchar(5), `slot1` varchar(255), `slot2` varchar(255), `slot3` varchar(255), `slot4` varchar(255), `slot5` varchar(255), `slot6` varchar(255), `slot7` varchar(255), `slot8` varchar(255), `slot9` varchar(255), PRIMARY KEY (uuid));";
|
||||
final String query = "CREATE TABLE `pk_players` (`uuid` varchar(36) NOT NULL, `player` varchar(16) NOT NULL, `permaremoved` bool, `slot1` varchar(255), `slot2` varchar(255), `slot3` varchar(255), `slot4` varchar(255), `slot5` varchar(255), `slot6` varchar(255), `slot7` varchar(255), `slot8` varchar(255), `slot9` varchar(255), PRIMARY KEY (uuid));";
|
||||
sql.modifyQuery(query, false);
|
||||
} else {
|
||||
try {
|
||||
final DatabaseMetaData md = sql.connection.getMetaData();
|
||||
boolean elementColumn = md.getColumns(null, null, "pk_players", "element").next();
|
||||
boolean subElementColumn = md.getColumns(null, null, "pk_players", "subelement").next();
|
||||
if (elementColumn || subElementColumn) {
|
||||
boolean permaremoveTextColumn = false;
|
||||
|
||||
{
|
||||
ResultSet pr = md.getColumns(null, null, "pk_players", "permaremoved");
|
||||
if (pr.next()) {
|
||||
String type = pr.getString("TYPE_NAME");
|
||||
|
||||
if (type.toLowerCase().contains("varchar")) {
|
||||
permaremoveTextColumn = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (elementColumn || subElementColumn || permaremoveTextColumn) {
|
||||
ProjectKorra.log.info("Updating Database...");
|
||||
sql.getConnection().setAutoCommit(false);
|
||||
if (elementColumn) {
|
||||
|
@ -53,6 +67,10 @@ public class DBConnection {
|
|||
if (subElementColumn) {
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` DROP subelement;", false);
|
||||
}
|
||||
if (permaremoveTextColumn) {
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` DROP permaremoved;", false);
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` ADD permaremoved BOOL AFTER player;", false);
|
||||
}
|
||||
sql.getConnection().commit();
|
||||
sql.getConnection().setAutoCommit(true);
|
||||
ProjectKorra.log.info("Database Updated.");
|
||||
|
@ -63,7 +81,7 @@ public class DBConnection {
|
|||
}
|
||||
if (!sql.tableExists("pk_player_elements")) {
|
||||
ProjectKorra.log.info("Creating pk_player_elements table");
|
||||
final String query = "CREATE TABLE `pk_player_elements` (`uuid` varchar(36) NOT NULL, `element` varchar(36) NOT NULL, `sub_element` varchar(5) NOT NULL, PRIMARY KEY (`uuid`, `element`));";
|
||||
final String query = "CREATE TABLE `pk_player_elements` (`uuid` varchar(36) NOT NULL, `element` varchar(36) NOT NULL, `sub_element` bool NOT NULL, PRIMARY KEY (`uuid`, `element`));";
|
||||
sql.modifyQuery(query, false);
|
||||
}
|
||||
if (!sql.tableExists("pk_presets")) {
|
||||
|
@ -91,14 +109,27 @@ public class DBConnection {
|
|||
isOpen = true;
|
||||
if (!sql.tableExists("pk_players")) {
|
||||
ProjectKorra.log.info("Creating pk_players table.");
|
||||
final String query = "CREATE TABLE `pk_players` (`uuid` TEXT(36) PRIMARY KEY, `player` TEXT(16), `permaremoved` TEXT(5), `slot1` TEXT(255), `slot2` TEXT(255), `slot3` TEXT(255), `slot4` TEXT(255), `slot5` TEXT(255), `slot6` TEXT(255), `slot7` TEXT(255), `slot8` TEXT(255), `slot9` TEXT(255));";
|
||||
final String query = "CREATE TABLE `pk_players` (`uuid` TEXT(36) PRIMARY KEY, `player` TEXT(16), `permaremoved` INTEGER(1), `slot1` TEXT(255), `slot2` TEXT(255), `slot3` TEXT(255), `slot4` TEXT(255), `slot5` TEXT(255), `slot6` TEXT(255), `slot7` TEXT(255), `slot8` TEXT(255), `slot9` TEXT(255));";
|
||||
sql.modifyQuery(query, false);
|
||||
} else {
|
||||
try {
|
||||
final DatabaseMetaData md = sql.connection.getMetaData();
|
||||
boolean elementColumn = md.getColumns(null, null, "pk_players", "element").next();
|
||||
boolean subElementColumn = md.getColumns(null, null, "pk_players", "subelement").next();
|
||||
if (elementColumn || subElementColumn) {
|
||||
boolean permaremoveTextColumn = false;
|
||||
|
||||
{
|
||||
ResultSet pr = md.getColumns(null, null, "pk_players", "permaremoved");
|
||||
if (pr.next()) {
|
||||
String type = pr.getString("TYPE_NAME");
|
||||
|
||||
if (type.toLowerCase().contains("text")) {
|
||||
permaremoveTextColumn = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (elementColumn || subElementColumn || permaremoveTextColumn) {
|
||||
ProjectKorra.log.info("Updating Database...");
|
||||
sql.getConnection().setAutoCommit(false);
|
||||
if (elementColumn) {
|
||||
|
@ -107,6 +138,10 @@ public class DBConnection {
|
|||
if (subElementColumn) {
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` DROP subelement;", false);
|
||||
}
|
||||
if (permaremoveTextColumn) {
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` DROP permaremoved;", false);
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` ADD permaremoved INTEGER(1) AFTER player;", false);
|
||||
}
|
||||
sql.getConnection().commit();
|
||||
sql.getConnection().setAutoCommit(true);
|
||||
ProjectKorra.log.info("Database Updated.");
|
||||
|
@ -117,7 +152,7 @@ public class DBConnection {
|
|||
}
|
||||
if (!sql.tableExists("pk_player_elements")) {
|
||||
ProjectKorra.log.info("Creating pk_player_elements table");
|
||||
final String query = "CREATE TABLE `pk_player_elements` (`uuid` TEXT(36) NOT NULL, `element` TEXT(36) NOT NULL, `sub_element` TEXT(5) NOT NULL, PRIMARY KEY (`uuid`, `element`));";
|
||||
final String query = "CREATE TABLE `pk_player_elements` (`uuid` TEXT(36) NOT NULL, `element` TEXT(36) NOT NULL, `sub_element` INTEGER(1) NOT NULL, PRIMARY KEY (`uuid`, `element`));";
|
||||
sql.modifyQuery(query, false);
|
||||
}
|
||||
if (!sql.tableExists("pk_presets")) {
|
||||
|
|
Loading…
Reference in a new issue