|
|
@ -1,22 +1,24 @@
|
|
|
|
package com.gmail.nossr50.database;
|
|
|
|
package com.gmail.nossr50.database;
|
|
|
|
|
|
|
|
|
|
|
|
import com.gmail.nossr50.config.AdvancedConfig;
|
|
|
|
|
|
|
|
import com.gmail.nossr50.config.Config;
|
|
|
|
import com.gmail.nossr50.config.Config;
|
|
|
|
import com.gmail.nossr50.datatypes.MobHealthbarType;
|
|
|
|
import com.gmail.nossr50.datatypes.MobHealthBarType;
|
|
|
|
import com.gmail.nossr50.datatypes.database.DatabaseType;
|
|
|
|
import com.gmail.nossr50.datatypes.database.DatabaseType;
|
|
|
|
import com.gmail.nossr50.datatypes.database.PlayerStat;
|
|
|
|
import com.gmail.nossr50.datatypes.database.PlayerStat;
|
|
|
|
import com.gmail.nossr50.datatypes.database.UpgradeType;
|
|
|
|
import com.gmail.nossr50.datatypes.database.UpgradeType;
|
|
|
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|
|
|
import com.gmail.nossr50.datatypes.player.*;
|
|
|
|
import com.gmail.nossr50.datatypes.player.UniqueDataType;
|
|
|
|
|
|
|
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|
|
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|
|
|
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
|
|
|
|
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
|
|
|
|
import com.gmail.nossr50.mcMMO;
|
|
|
|
import com.gmail.nossr50.mcMMO;
|
|
|
|
import com.gmail.nossr50.runnables.database.UUIDUpdateAsyncTask;
|
|
|
|
import com.gmail.nossr50.runnables.database.UUIDUpdateAsyncTask;
|
|
|
|
import com.gmail.nossr50.util.Misc;
|
|
|
|
import com.gmail.nossr50.util.Misc;
|
|
|
|
import com.gmail.nossr50.util.experience.ExperienceBarManager;
|
|
|
|
import com.gmail.nossr50.util.experience.MMOExperienceBarManager;
|
|
|
|
|
|
|
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
|
|
|
import org.apache.tomcat.jdbc.pool.DataSource;
|
|
|
|
import org.apache.tomcat.jdbc.pool.DataSource;
|
|
|
|
import org.apache.tomcat.jdbc.pool.PoolProperties;
|
|
|
|
import org.apache.tomcat.jdbc.pool.PoolProperties;
|
|
|
|
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
|
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
|
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
|
|
|
|
|
|
|
|
import java.sql.*;
|
|
|
|
import java.sql.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
@ -127,7 +129,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
+ "taming = 0 AND mining = 0 AND woodcutting = 0 AND repair = 0 "
|
|
|
|
+ "taming = 0 AND mining = 0 AND woodcutting = 0 AND repair = 0 "
|
|
|
|
+ "AND unarmed = 0 AND herbalism = 0 AND excavation = 0 AND "
|
|
|
|
+ "AND unarmed = 0 AND herbalism = 0 AND excavation = 0 AND "
|
|
|
|
+ "archery = 0 AND swords = 0 AND axes = 0 AND acrobatics = 0 "
|
|
|
|
+ "archery = 0 AND swords = 0 AND axes = 0 AND acrobatics = 0 "
|
|
|
|
+ "AND fishing = 0 AND alchemy = 0;");
|
|
|
|
+ "AND fishing = 0 AND alchemy = 0 AND tridents = 0 AND crossbows = 0;");
|
|
|
|
|
|
|
|
|
|
|
|
statement.executeUpdate("DELETE FROM `" + tablePrefix + "experience` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "skills` `s` WHERE `" + tablePrefix + "experience`.`user_id` = `s`.`user_id`)");
|
|
|
|
statement.executeUpdate("DELETE FROM `" + tablePrefix + "experience` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "skills` `s` WHERE `" + tablePrefix + "experience`.`user_id` = `s`.`user_id`)");
|
|
|
|
statement.executeUpdate("DELETE FROM `" + tablePrefix + "huds` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "skills` `s` WHERE `" + tablePrefix + "huds`.`user_id` = `s`.`user_id`)");
|
|
|
|
statement.executeUpdate("DELETE FROM `" + tablePrefix + "huds` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "skills` `s` WHERE `" + tablePrefix + "huds`.`user_id` = `s`.`user_id`)");
|
|
|
@ -218,7 +220,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
cachedUserIDs.remove(uuid);
|
|
|
|
cachedUserIDs.remove(uuid);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public boolean saveUser(PlayerProfile profile) {
|
|
|
|
public boolean saveUser(MMODataSnapshot dataSnapshot) {
|
|
|
|
boolean success = true;
|
|
|
|
boolean success = true;
|
|
|
|
PreparedStatement statement = null;
|
|
|
|
PreparedStatement statement = null;
|
|
|
|
Connection connection = null;
|
|
|
|
Connection connection = null;
|
|
|
@ -226,22 +228,22 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
connection = getConnection(PoolIdentifier.SAVE);
|
|
|
|
connection = getConnection(PoolIdentifier.SAVE);
|
|
|
|
|
|
|
|
|
|
|
|
int id = getUserID(connection, profile.getPlayerName(), profile.getUniqueId());
|
|
|
|
int id = getUserID(connection, dataSnapshot.getPlayerName(), dataSnapshot.getPlayerUUID());
|
|
|
|
|
|
|
|
|
|
|
|
if (id == -1) {
|
|
|
|
// if (id == -1) {
|
|
|
|
id = newUser(connection, profile.getPlayerName(), profile.getUniqueId());
|
|
|
|
// id = newUser(connection, dataSnapshot.getPlayerName(), dataSnapshot.getPlayerUUID());
|
|
|
|
if (id == -1) {
|
|
|
|
// if (id == -1) {
|
|
|
|
mcMMO.p.getLogger().severe("Failed to create new account for " + profile.getPlayerName());
|
|
|
|
// mcMMO.p.getLogger().severe("Failed to create new account for " + dataSnapshot.getPlayerName());
|
|
|
|
return false;
|
|
|
|
// return false;
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "users SET lastlogin = UNIX_TIMESTAMP() WHERE id = ?");
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "users SET lastlogin = UNIX_TIMESTAMP() WHERE id = ?");
|
|
|
|
statement.setInt(1, id);
|
|
|
|
statement.setInt(1, id);
|
|
|
|
success &= (statement.executeUpdate() != 0);
|
|
|
|
success &= (statement.executeUpdate() != 0);
|
|
|
|
statement.close();
|
|
|
|
statement.close();
|
|
|
|
if (!success) {
|
|
|
|
if (!success) {
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update last login for " + profile.getPlayerName());
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update last login for " + dataSnapshot.getPlayerName());
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -249,29 +251,31 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
+ " taming = ?, mining = ?, repair = ?, woodcutting = ?"
|
|
|
|
+ " taming = ?, mining = ?, repair = ?, woodcutting = ?"
|
|
|
|
+ ", unarmed = ?, herbalism = ?, excavation = ?"
|
|
|
|
+ ", unarmed = ?, herbalism = ?, excavation = ?"
|
|
|
|
+ ", archery = ?, swords = ?, axes = ?, acrobatics = ?"
|
|
|
|
+ ", archery = ?, swords = ?, axes = ?, acrobatics = ?"
|
|
|
|
+ ", fishing = ?, alchemy = ?, total = ? WHERE user_id = ?");
|
|
|
|
+ ", fishing = ?, alchemy = ?, tridents = ?, crossbows = ?, total = ? WHERE user_id = ?");
|
|
|
|
statement.setInt(1, profile.getSkillLevel(PrimarySkillType.TAMING));
|
|
|
|
statement.setInt(1, dataSnapshot.getSkillLevel(PrimarySkillType.TAMING));
|
|
|
|
statement.setInt(2, profile.getSkillLevel(PrimarySkillType.MINING));
|
|
|
|
statement.setInt(2, dataSnapshot.getSkillLevel(PrimarySkillType.MINING));
|
|
|
|
statement.setInt(3, profile.getSkillLevel(PrimarySkillType.REPAIR));
|
|
|
|
statement.setInt(3, dataSnapshot.getSkillLevel(PrimarySkillType.REPAIR));
|
|
|
|
statement.setInt(4, profile.getSkillLevel(PrimarySkillType.WOODCUTTING));
|
|
|
|
statement.setInt(4, dataSnapshot.getSkillLevel(PrimarySkillType.WOODCUTTING));
|
|
|
|
statement.setInt(5, profile.getSkillLevel(PrimarySkillType.UNARMED));
|
|
|
|
statement.setInt(5, dataSnapshot.getSkillLevel(PrimarySkillType.UNARMED));
|
|
|
|
statement.setInt(6, profile.getSkillLevel(PrimarySkillType.HERBALISM));
|
|
|
|
statement.setInt(6, dataSnapshot.getSkillLevel(PrimarySkillType.HERBALISM));
|
|
|
|
statement.setInt(7, profile.getSkillLevel(PrimarySkillType.EXCAVATION));
|
|
|
|
statement.setInt(7, dataSnapshot.getSkillLevel(PrimarySkillType.EXCAVATION));
|
|
|
|
statement.setInt(8, profile.getSkillLevel(PrimarySkillType.ARCHERY));
|
|
|
|
statement.setInt(8, dataSnapshot.getSkillLevel(PrimarySkillType.ARCHERY));
|
|
|
|
statement.setInt(9, profile.getSkillLevel(PrimarySkillType.SWORDS));
|
|
|
|
statement.setInt(9, dataSnapshot.getSkillLevel(PrimarySkillType.SWORDS));
|
|
|
|
statement.setInt(10, profile.getSkillLevel(PrimarySkillType.AXES));
|
|
|
|
statement.setInt(10, dataSnapshot.getSkillLevel(PrimarySkillType.AXES));
|
|
|
|
statement.setInt(11, profile.getSkillLevel(PrimarySkillType.ACROBATICS));
|
|
|
|
statement.setInt(11, dataSnapshot.getSkillLevel(PrimarySkillType.ACROBATICS));
|
|
|
|
statement.setInt(12, profile.getSkillLevel(PrimarySkillType.FISHING));
|
|
|
|
statement.setInt(12, dataSnapshot.getSkillLevel(PrimarySkillType.FISHING));
|
|
|
|
statement.setInt(13, profile.getSkillLevel(PrimarySkillType.ALCHEMY));
|
|
|
|
statement.setInt(13, dataSnapshot.getSkillLevel(PrimarySkillType.ALCHEMY));
|
|
|
|
|
|
|
|
statement.setInt(14, dataSnapshot.getSkillLevel(PrimarySkillType.TRIDENTS));
|
|
|
|
|
|
|
|
statement.setInt(15, dataSnapshot.getSkillLevel(PrimarySkillType.CROSSBOWS));
|
|
|
|
int total = 0;
|
|
|
|
int total = 0;
|
|
|
|
for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS)
|
|
|
|
for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS)
|
|
|
|
total += profile.getSkillLevel(primarySkillType);
|
|
|
|
total += dataSnapshot.getSkillLevel(primarySkillType);
|
|
|
|
statement.setInt(14, total);
|
|
|
|
statement.setInt(16, total);
|
|
|
|
statement.setInt(15, id);
|
|
|
|
statement.setInt(17, id);
|
|
|
|
success &= (statement.executeUpdate() != 0);
|
|
|
|
success &= (statement.executeUpdate() != 0);
|
|
|
|
statement.close();
|
|
|
|
statement.close();
|
|
|
|
if (!success) {
|
|
|
|
if (!success) {
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update skills for " + profile.getPlayerName());
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update skills for " + dataSnapshot.getPlayerName());
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -279,59 +283,112 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
+ " taming = ?, mining = ?, repair = ?, woodcutting = ?"
|
|
|
|
+ " taming = ?, mining = ?, repair = ?, woodcutting = ?"
|
|
|
|
+ ", unarmed = ?, herbalism = ?, excavation = ?"
|
|
|
|
+ ", unarmed = ?, herbalism = ?, excavation = ?"
|
|
|
|
+ ", archery = ?, swords = ?, axes = ?, acrobatics = ?"
|
|
|
|
+ ", archery = ?, swords = ?, axes = ?, acrobatics = ?"
|
|
|
|
+ ", fishing = ?, alchemy = ? WHERE user_id = ?");
|
|
|
|
+ ", fishing = ?, alchemy = ?, tridents = ?, crossbows = ?, WHERE user_id = ?");
|
|
|
|
statement.setInt(1, profile.getSkillXpLevel(PrimarySkillType.TAMING));
|
|
|
|
statement.setInt(1, dataSnapshot.getSkillXpLevel(PrimarySkillType.TAMING));
|
|
|
|
statement.setInt(2, profile.getSkillXpLevel(PrimarySkillType.MINING));
|
|
|
|
statement.setInt(2, dataSnapshot.getSkillXpLevel(PrimarySkillType.MINING));
|
|
|
|
statement.setInt(3, profile.getSkillXpLevel(PrimarySkillType.REPAIR));
|
|
|
|
statement.setInt(3, dataSnapshot.getSkillXpLevel(PrimarySkillType.REPAIR));
|
|
|
|
statement.setInt(4, profile.getSkillXpLevel(PrimarySkillType.WOODCUTTING));
|
|
|
|
statement.setInt(4, dataSnapshot.getSkillXpLevel(PrimarySkillType.WOODCUTTING));
|
|
|
|
statement.setInt(5, profile.getSkillXpLevel(PrimarySkillType.UNARMED));
|
|
|
|
statement.setInt(5, dataSnapshot.getSkillXpLevel(PrimarySkillType.UNARMED));
|
|
|
|
statement.setInt(6, profile.getSkillXpLevel(PrimarySkillType.HERBALISM));
|
|
|
|
statement.setInt(6, dataSnapshot.getSkillXpLevel(PrimarySkillType.HERBALISM));
|
|
|
|
statement.setInt(7, profile.getSkillXpLevel(PrimarySkillType.EXCAVATION));
|
|
|
|
statement.setInt(7, dataSnapshot.getSkillXpLevel(PrimarySkillType.EXCAVATION));
|
|
|
|
statement.setInt(8, profile.getSkillXpLevel(PrimarySkillType.ARCHERY));
|
|
|
|
statement.setInt(8, dataSnapshot.getSkillXpLevel(PrimarySkillType.ARCHERY));
|
|
|
|
statement.setInt(9, profile.getSkillXpLevel(PrimarySkillType.SWORDS));
|
|
|
|
statement.setInt(9, dataSnapshot.getSkillXpLevel(PrimarySkillType.SWORDS));
|
|
|
|
statement.setInt(10, profile.getSkillXpLevel(PrimarySkillType.AXES));
|
|
|
|
statement.setInt(10, dataSnapshot.getSkillXpLevel(PrimarySkillType.AXES));
|
|
|
|
statement.setInt(11, profile.getSkillXpLevel(PrimarySkillType.ACROBATICS));
|
|
|
|
statement.setInt(11, dataSnapshot.getSkillXpLevel(PrimarySkillType.ACROBATICS));
|
|
|
|
statement.setInt(12, profile.getSkillXpLevel(PrimarySkillType.FISHING));
|
|
|
|
statement.setInt(12, dataSnapshot.getSkillXpLevel(PrimarySkillType.FISHING));
|
|
|
|
statement.setInt(13, profile.getSkillXpLevel(PrimarySkillType.ALCHEMY));
|
|
|
|
statement.setInt(13, dataSnapshot.getSkillXpLevel(PrimarySkillType.ALCHEMY));
|
|
|
|
statement.setInt(14, id);
|
|
|
|
statement.setInt(14, dataSnapshot.getSkillXpLevel(PrimarySkillType.TRIDENTS));
|
|
|
|
|
|
|
|
statement.setInt(15, dataSnapshot.getSkillXpLevel(PrimarySkillType.CROSSBOWS));
|
|
|
|
|
|
|
|
statement.setInt(16, id);
|
|
|
|
success &= (statement.executeUpdate() != 0);
|
|
|
|
success &= (statement.executeUpdate() != 0);
|
|
|
|
statement.close();
|
|
|
|
statement.close();
|
|
|
|
if (!success) {
|
|
|
|
if (!success) {
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update experience for " + profile.getPlayerName());
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update experience for " + dataSnapshot.getPlayerName());
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "cooldowns SET "
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "cooldowns SET "
|
|
|
|
+ " mining = ?, woodcutting = ?, unarmed = ?"
|
|
|
|
+ " mining = ?, woodcutting = ?, unarmed = ?"
|
|
|
|
+ ", herbalism = ?, excavation = ?, swords = ?"
|
|
|
|
+ ", herbalism = ?, excavation = ?, swords = ?"
|
|
|
|
+ ", axes = ?, blast_mining = ?, chimaera_wing = ? WHERE user_id = ?");
|
|
|
|
+ ", axes = ?, blast_mining = ?, chimaera_wing = ?, archery = ?, tridents = ?, crossbows = ? WHERE user_id = ?");
|
|
|
|
statement.setLong(1, profile.getAbilityDATS(SuperAbilityType.SUPER_BREAKER));
|
|
|
|
statement.setLong(1, dataSnapshot.getAbilityDATS(SuperAbilityType.SUPER_BREAKER));
|
|
|
|
statement.setLong(2, profile.getAbilityDATS(SuperAbilityType.TREE_FELLER));
|
|
|
|
statement.setLong(2, dataSnapshot.getAbilityDATS(SuperAbilityType.TREE_FELLER));
|
|
|
|
statement.setLong(3, profile.getAbilityDATS(SuperAbilityType.BERSERK));
|
|
|
|
statement.setLong(3, dataSnapshot.getAbilityDATS(SuperAbilityType.BERSERK));
|
|
|
|
statement.setLong(4, profile.getAbilityDATS(SuperAbilityType.GREEN_TERRA));
|
|
|
|
statement.setLong(4, dataSnapshot.getAbilityDATS(SuperAbilityType.GREEN_TERRA));
|
|
|
|
statement.setLong(5, profile.getAbilityDATS(SuperAbilityType.GIGA_DRILL_BREAKER));
|
|
|
|
statement.setLong(5, dataSnapshot.getAbilityDATS(SuperAbilityType.GIGA_DRILL_BREAKER));
|
|
|
|
statement.setLong(6, profile.getAbilityDATS(SuperAbilityType.SERRATED_STRIKES));
|
|
|
|
statement.setLong(6, dataSnapshot.getAbilityDATS(SuperAbilityType.SERRATED_STRIKES));
|
|
|
|
statement.setLong(7, profile.getAbilityDATS(SuperAbilityType.SKULL_SPLITTER));
|
|
|
|
statement.setLong(7, dataSnapshot.getAbilityDATS(SuperAbilityType.SKULL_SPLITTER));
|
|
|
|
statement.setLong(8, profile.getAbilityDATS(SuperAbilityType.BLAST_MINING));
|
|
|
|
statement.setLong(8, dataSnapshot.getAbilityDATS(SuperAbilityType.BLAST_MINING));
|
|
|
|
statement.setLong(9, profile.getUniqueData(UniqueDataType.CHIMAERA_WING_DATS));
|
|
|
|
statement.setLong(9, dataSnapshot.getUniqueData(UniqueDataType.CHIMAERA_WING_DATS));
|
|
|
|
statement.setInt(10, id);
|
|
|
|
statement.setLong(10, dataSnapshot.getAbilityDATS(SuperAbilityType.ARCHERY_SUPER));
|
|
|
|
|
|
|
|
statement.setLong(11, dataSnapshot.getAbilityDATS(SuperAbilityType.TRIDENT_SUPER));
|
|
|
|
|
|
|
|
statement.setLong(12, dataSnapshot.getAbilityDATS(SuperAbilityType.SUPER_SHOTGUN));
|
|
|
|
|
|
|
|
statement.setInt(13, id);
|
|
|
|
success = (statement.executeUpdate() != 0);
|
|
|
|
success = (statement.executeUpdate() != 0);
|
|
|
|
statement.close();
|
|
|
|
statement.close();
|
|
|
|
if (!success) {
|
|
|
|
if (!success) {
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update cooldowns for " + profile.getPlayerName());
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update cooldowns for " + dataSnapshot.getPlayerName());
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "huds SET mobhealthbar = ?, scoreboardtips = ? WHERE user_id = ?");
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "huds SET mobhealthbar = ?, scoreboardtips = ? WHERE user_id = ?");
|
|
|
|
statement.setString(1, profile.getMobHealthbarType() == null ? Config.getInstance().getMobHealthbarDefault().name() : profile.getMobHealthbarType().name());
|
|
|
|
statement.setString(1, dataSnapshot.getMobHealthBarType() == null ? Config.getInstance().getMobHealthbarDefault().name() : dataSnapshot.getMobHealthBarType().name());
|
|
|
|
statement.setInt(2, profile.getScoreboardTipsShown());
|
|
|
|
statement.setInt(2, dataSnapshot.getScoreboardTipsShown());
|
|
|
|
statement.setInt(3, id);
|
|
|
|
statement.setInt(3, id);
|
|
|
|
success = (statement.executeUpdate() != 0);
|
|
|
|
success = (statement.executeUpdate() != 0);
|
|
|
|
statement.close();
|
|
|
|
statement.close();
|
|
|
|
if (!success) {
|
|
|
|
if (!success) {
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update hud settings for " + profile.getPlayerName());
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update hud settings for " + dataSnapshot.getPlayerName());
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//XP BAR STUFF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "xpbar SET "
|
|
|
|
|
|
|
|
+ " view_taming = ?, view_mining = ?, view_repair = ?, view_woodcutting = ?"
|
|
|
|
|
|
|
|
+ ", view_unarmed = ?, view_herbalism = ?, view_excavation = ?"
|
|
|
|
|
|
|
|
+ ", view_archery = ?, view_swords = ?, view_axes = ?, view_acrobatics = ?"
|
|
|
|
|
|
|
|
+ ", view_fishing = ?, view_alchemy = ?, view_salvage = ?, view_smelting = ?, view_tridents = ?, view_crossbows = ? WHERE user_id = ?");
|
|
|
|
|
|
|
|
statement.setString(1, dataSnapshot.getBarStateMap().get(PrimarySkillType.TAMING).toString());
|
|
|
|
|
|
|
|
statement.setString(2, dataSnapshot.getBarStateMap().get(PrimarySkillType.MINING).toString());
|
|
|
|
|
|
|
|
statement.setString(3, dataSnapshot.getBarStateMap().get(PrimarySkillType.REPAIR).toString());
|
|
|
|
|
|
|
|
statement.setString(4, dataSnapshot.getBarStateMap().get(PrimarySkillType.WOODCUTTING).toString());
|
|
|
|
|
|
|
|
statement.setString(5, dataSnapshot.getBarStateMap().get(PrimarySkillType.UNARMED).toString());
|
|
|
|
|
|
|
|
statement.setString(6, dataSnapshot.getBarStateMap().get(PrimarySkillType.HERBALISM).toString());
|
|
|
|
|
|
|
|
statement.setString(7, dataSnapshot.getBarStateMap().get(PrimarySkillType.EXCAVATION).toString());
|
|
|
|
|
|
|
|
statement.setString(8, dataSnapshot.getBarStateMap().get(PrimarySkillType.ARCHERY).toString());
|
|
|
|
|
|
|
|
statement.setString(9, dataSnapshot.getBarStateMap().get(PrimarySkillType.SWORDS).toString());
|
|
|
|
|
|
|
|
statement.setString(10, dataSnapshot.getBarStateMap().get(PrimarySkillType.AXES).toString());
|
|
|
|
|
|
|
|
statement.setString(11, dataSnapshot.getBarStateMap().get(PrimarySkillType.ACROBATICS).toString());
|
|
|
|
|
|
|
|
statement.setString(12, dataSnapshot.getBarStateMap().get(PrimarySkillType.FISHING).toString());
|
|
|
|
|
|
|
|
statement.setString(13, dataSnapshot.getBarStateMap().get(PrimarySkillType.ALCHEMY).toString());
|
|
|
|
|
|
|
|
statement.setString(14, dataSnapshot.getBarStateMap().get(PrimarySkillType.SALVAGE).toString());
|
|
|
|
|
|
|
|
statement.setString(15, dataSnapshot.getBarStateMap().get(PrimarySkillType.SMELTING).toString());
|
|
|
|
|
|
|
|
statement.setString(16, dataSnapshot.getBarStateMap().get(PrimarySkillType.TRIDENTS).toString());
|
|
|
|
|
|
|
|
statement.setString(17, dataSnapshot.getBarStateMap().get(PrimarySkillType.CROSSBOWS).toString());
|
|
|
|
|
|
|
|
statement.setInt(18, id);
|
|
|
|
|
|
|
|
success &= (statement.executeUpdate() != 0);
|
|
|
|
|
|
|
|
statement.close();
|
|
|
|
|
|
|
|
if (!success) {
|
|
|
|
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update XP bar views for " + dataSnapshot.getPlayerName());
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TOGGLES
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "toggle SET "
|
|
|
|
|
|
|
|
+ " chatspy = ?, rankless = ? WHERE user_id = ?");
|
|
|
|
|
|
|
|
statement.setBoolean(1, dataSnapshot.getPartyChatSpying());
|
|
|
|
|
|
|
|
statement.setBoolean(2, dataSnapshot.isLeaderBoardExcluded());
|
|
|
|
|
|
|
|
statement.setInt(3, id);
|
|
|
|
|
|
|
|
success &= (statement.executeUpdate() != 0);
|
|
|
|
|
|
|
|
statement.close();
|
|
|
|
|
|
|
|
if (!success) {
|
|
|
|
|
|
|
|
mcMMO.p.getLogger().severe("Failed to update user toggles for " + dataSnapshot.getPlayerName());
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (SQLException ex) {
|
|
|
|
catch (SQLException ex) {
|
|
|
|
printErrors(ex);
|
|
|
|
printErrors(ex);
|
|
|
@ -354,7 +411,9 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
connection = getConnection(PoolIdentifier.MISC);
|
|
|
|
connection = getConnection(PoolIdentifier.MISC);
|
|
|
|
statement = connection.prepareStatement("SELECT " + query + ", user FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON (user_id = id) WHERE " + query + " > 0 AND NOT user = '\\_INVALID\\_OLD\\_USERNAME\\_' ORDER BY " + query + " DESC, user LIMIT ?, ?");
|
|
|
|
statement = connection.prepareStatement("SELECT " + query + ", user FROM " + tablePrefix + "users JOIN " + tablePrefix
|
|
|
|
|
|
|
|
+ "skills ON (user_id = id) WHERE " + query + " > 0 AND NOT user = '\\_INVALID\\_OLD\\_USERNAME\\_' ORDER BY "
|
|
|
|
|
|
|
|
+ query + " DESC, user LIMIT ?, ?");
|
|
|
|
statement.setInt(1, (pageNumber * statsPerPage) - statsPerPage);
|
|
|
|
statement.setInt(1, (pageNumber * statsPerPage) - statsPerPage);
|
|
|
|
statement.setInt(2, statsPerPage);
|
|
|
|
statement.setInt(2, statsPerPage);
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
@ -530,55 +589,51 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Deprecated
|
|
|
|
// @Deprecated
|
|
|
|
public PlayerProfile loadPlayerProfile(String playerName, boolean create) {
|
|
|
|
// public PlayerProfile loadPlayerProfile(String playerName, boolean create) {
|
|
|
|
return loadPlayerProfile(playerName, null, false, true);
|
|
|
|
// return loadPlayerProfile(playerName, null);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public @Nullable PlayerProfile loadPlayerProfile(UUID uuid) {
|
|
|
|
|
|
|
|
return loadPlayerProfile(null, "", uuid);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public PlayerProfile loadPlayerProfile(UUID uuid) {
|
|
|
|
public @Nullable PlayerProfile loadPlayerProfile(String playerName) {
|
|
|
|
return loadPlayerProfile("", uuid, false, true);
|
|
|
|
return loadPlayerProfile(null, playerName, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public PlayerProfile loadPlayerProfile(String playerName, UUID uuid, boolean create) {
|
|
|
|
public @Nullable PlayerProfile loadPlayerProfile(String playerName, UUID uuid, boolean create) {
|
|
|
|
return loadPlayerProfile(playerName, uuid, create, true);
|
|
|
|
return loadPlayerProfile(null, playerName, uuid);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private PlayerProfile loadPlayerProfile(String playerName, UUID uuid, boolean create, boolean retry) {
|
|
|
|
public @NotNull PlayerProfile loadPlayerProfile(Player player) {
|
|
|
|
|
|
|
|
return loadPlayerProfile(player, player.getName(), player.getUniqueId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private @Nullable PlayerProfile loadPlayerProfile(@Nullable Player player, @NotNull String playerName, @Nullable UUID playerUUID) {
|
|
|
|
PreparedStatement statement = null;
|
|
|
|
PreparedStatement statement = null;
|
|
|
|
Connection connection = null;
|
|
|
|
Connection connection = null;
|
|
|
|
ResultSet resultSet = null;
|
|
|
|
ResultSet resultSet = null;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
connection = getConnection(PoolIdentifier.LOAD);
|
|
|
|
connection = getConnection(PoolIdentifier.LOAD);
|
|
|
|
int id = getUserID(connection, playerName, uuid);
|
|
|
|
int id = getUserID(connection, playerName, playerUUID);
|
|
|
|
|
|
|
|
|
|
|
|
if (id == -1) {
|
|
|
|
if (id == -1) {
|
|
|
|
// There is no such user
|
|
|
|
// There is no such user
|
|
|
|
if (create) {
|
|
|
|
if (player != null) {
|
|
|
|
id = newUser(connection, playerName, uuid);
|
|
|
|
id = newUser(connection, playerName, playerUUID);
|
|
|
|
create = false;
|
|
|
|
|
|
|
|
if (id == -1) {
|
|
|
|
if (id == -1) {
|
|
|
|
return new PlayerProfile(playerName, false);
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
return new PlayerProfile(playerName, false);
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// There is such a user
|
|
|
|
// There is such a user
|
|
|
|
writeMissingRows(connection, id);
|
|
|
|
writeMissingRows(connection, id);
|
|
|
|
|
|
|
|
|
|
|
|
statement = connection.prepareStatement(
|
|
|
|
statement = getUserData(connection);
|
|
|
|
"SELECT "
|
|
|
|
|
|
|
|
+ "s.taming, s.mining, s.repair, s.woodcutting, s.unarmed, s.herbalism, s.excavation, s.archery, s.swords, s.axes, s.acrobatics, s.fishing, s.alchemy, "
|
|
|
|
|
|
|
|
+ "e.taming, e.mining, e.repair, e.woodcutting, e.unarmed, e.herbalism, e.excavation, e.archery, e.swords, e.axes, e.acrobatics, e.fishing, e.alchemy, "
|
|
|
|
|
|
|
|
+ "c.taming, c.mining, c.repair, c.woodcutting, c.unarmed, c.herbalism, c.excavation, c.archery, c.swords, c.axes, c.acrobatics, c.blast_mining, c.chimaera_wing, "
|
|
|
|
|
|
|
|
+ "h.mobhealthbar, h.scoreboardtips, u.uuid, u.user "
|
|
|
|
|
|
|
|
+ "FROM " + tablePrefix + "users u "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "cooldowns c ON (u.id = c.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) "
|
|
|
|
|
|
|
|
+ "WHERE u.id = ?");
|
|
|
|
|
|
|
|
statement.setInt(1, id);
|
|
|
|
statement.setInt(1, id);
|
|
|
|
|
|
|
|
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
@ -590,7 +645,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
resultSet.close();
|
|
|
|
resultSet.close();
|
|
|
|
statement.close();
|
|
|
|
statement.close();
|
|
|
|
|
|
|
|
|
|
|
|
if (!playerName.isEmpty() && !playerName.equalsIgnoreCase(name) && uuid != null) {
|
|
|
|
if (!playerName.isEmpty() && !playerName.equalsIgnoreCase(name) && playerUUID != null) {
|
|
|
|
statement = connection.prepareStatement(
|
|
|
|
statement = connection.prepareStatement(
|
|
|
|
"UPDATE `" + tablePrefix + "users` "
|
|
|
|
"UPDATE `" + tablePrefix + "users` "
|
|
|
|
+ "SET user = ? "
|
|
|
|
+ "SET user = ? "
|
|
|
@ -604,7 +659,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
+ "SET user = ?, uuid = ? "
|
|
|
|
+ "SET user = ?, uuid = ? "
|
|
|
|
+ "WHERE id = ?");
|
|
|
|
+ "WHERE id = ?");
|
|
|
|
statement.setString(1, playerName);
|
|
|
|
statement.setString(1, playerName);
|
|
|
|
statement.setString(2, uuid.toString());
|
|
|
|
statement.setString(2, playerUUID.toString());
|
|
|
|
statement.setInt(3, id);
|
|
|
|
statement.setInt(3, id);
|
|
|
|
statement.executeUpdate();
|
|
|
|
statement.executeUpdate();
|
|
|
|
statement.close();
|
|
|
|
statement.close();
|
|
|
@ -627,15 +682,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
tryClose(connection);
|
|
|
|
tryClose(connection);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Problem, nothing was returned
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
|
|
// return unloaded profile
|
|
|
|
|
|
|
|
if (!retry) {
|
|
|
|
|
|
|
|
return new PlayerProfile(playerName, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Retry, and abort on re-failure
|
|
|
|
|
|
|
|
return loadPlayerProfile(playerName, uuid, create, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void convertUsers(DatabaseManager destination) {
|
|
|
|
public void convertUsers(DatabaseManager destination) {
|
|
|
@ -645,18 +692,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
connection = getConnection(PoolIdentifier.MISC);
|
|
|
|
connection = getConnection(PoolIdentifier.MISC);
|
|
|
|
statement = connection.prepareStatement(
|
|
|
|
statement = getUserData(connection);
|
|
|
|
"SELECT "
|
|
|
|
|
|
|
|
+ "s.taming, s.mining, s.repair, s.woodcutting, s.unarmed, s.herbalism, s.excavation, s.archery, s.swords, s.axes, s.acrobatics, s.fishing, s.alchemy, "
|
|
|
|
|
|
|
|
+ "e.taming, e.mining, e.repair, e.woodcutting, e.unarmed, e.herbalism, e.excavation, e.archery, e.swords, e.axes, e.acrobatics, e.fishing, e.alchemy, "
|
|
|
|
|
|
|
|
+ "c.taming, c.mining, c.repair, c.woodcutting, c.unarmed, c.herbalism, c.excavation, c.archery, c.swords, c.axes, c.acrobatics, c.blast_mining, c.chimaera_wing, "
|
|
|
|
|
|
|
|
+ "h.mobhealthbar, h.scoreboardtips, u.uuid "
|
|
|
|
|
|
|
|
+ "FROM " + tablePrefix + "users u "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "cooldowns c ON (u.id = c.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) "
|
|
|
|
|
|
|
|
+ "WHERE u.user = ?");
|
|
|
|
|
|
|
|
List<String> usernames = getStoredUsers();
|
|
|
|
List<String> usernames = getStoredUsers();
|
|
|
|
int convertedUsers = 0;
|
|
|
|
int convertedUsers = 0;
|
|
|
|
long startMillis = System.currentTimeMillis();
|
|
|
|
long startMillis = System.currentTimeMillis();
|
|
|
@ -665,7 +701,15 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
|
resultSet.next();
|
|
|
|
resultSet.next();
|
|
|
|
destination.saveUser(loadFromResult(playerName, resultSet));
|
|
|
|
PlayerProfile playerProfile = loadFromResult(playerName, resultSet);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(playerProfile == null)
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PersistentPlayerData persistentPlayerData = playerProfile.getPersistentPlayerData();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MMODataSnapshot mmoDataSnapshot = mcMMO.getUserManager().createPlayerDataSnapshot(persistentPlayerData);
|
|
|
|
|
|
|
|
destination.saveUser(mmoDataSnapshot);
|
|
|
|
resultSet.close();
|
|
|
|
resultSet.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (SQLException e) {
|
|
|
|
catch (SQLException e) {
|
|
|
@ -687,6 +731,26 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private @NotNull PreparedStatement getUserData(@NotNull Connection connection) throws SQLException {
|
|
|
|
|
|
|
|
return connection.prepareStatement(
|
|
|
|
|
|
|
|
"SELECT "
|
|
|
|
|
|
|
|
+ "s.taming, s.mining, s.repair, s.woodcutting, s.unarmed, s.herbalism, s.excavation, s.archery, s.swords, s.axes, s.acrobatics, s.fishing, s.alchemy, s.tridents, s.crossbows, "
|
|
|
|
|
|
|
|
+ "e.taming, e.mining, e.repair, e.woodcutting, e.unarmed, e.herbalism, e.excavation, e.archery, e.swords, e.axes, e.acrobatics, e.fishing, e.alchemy, e.tridents, e.crossbows, "
|
|
|
|
|
|
|
|
+ "c.taming, c.mining, c.repair, c.woodcutting, c.unarmed, c.herbalism, c.excavation, c.archery, c.swords, c.axes, c.acrobatics, c.blast_mining, c.chimaera_wing, c.tridents, c.crossbows, "
|
|
|
|
|
|
|
|
+ "h.mobhealthbar, h.scoreboardtips, u.uuid "
|
|
|
|
|
|
|
|
+ "x.view_taming, x.view_mining, x.view_repair, x.view_woodcutting, x.view_unarmed, x.view_herbalism, x.view_excavation, x.view_archery, x.view_swords, x.view_axes, x.view_acrobatics, x.view_salvage, x.view_smelting, x.view_tridents, x.view_crossbows, "
|
|
|
|
|
|
|
|
+ "t.chatspy, t.rankless, "
|
|
|
|
|
|
|
|
+ "FROM " + tablePrefix + "users u "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "cooldowns c ON (u.id = c.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "xpbar x ON (u.id = x.user_id) "
|
|
|
|
|
|
|
|
+ "JOIN " + tablePrefix + "toggle t ON (u.id = t.user_id) "
|
|
|
|
|
|
|
|
+ "WHERE u.user = ?");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public boolean saveUserUUID(String userName, UUID uuid) {
|
|
|
|
public boolean saveUserUUID(String userName, UUID uuid) {
|
|
|
|
PreparedStatement statement = null;
|
|
|
|
PreparedStatement statement = null;
|
|
|
|
Connection connection = null;
|
|
|
|
Connection connection = null;
|
|
|
@ -711,45 +775,45 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public boolean saveUserUUIDs(Map<String, UUID> fetchedUUIDs) {
|
|
|
|
// public boolean saveUserUUIDs(Map<String, UUID> fetchedUUIDs) {
|
|
|
|
PreparedStatement statement = null;
|
|
|
|
// PreparedStatement statement = null;
|
|
|
|
int count = 0;
|
|
|
|
// int count = 0;
|
|
|
|
|
|
|
|
//
|
|
|
|
Connection connection = null;
|
|
|
|
// Connection connection = null;
|
|
|
|
|
|
|
|
//
|
|
|
|
try {
|
|
|
|
// try {
|
|
|
|
connection = getConnection(PoolIdentifier.MISC);
|
|
|
|
// connection = getConnection(PoolIdentifier.MISC);
|
|
|
|
statement = connection.prepareStatement("UPDATE " + tablePrefix + "users SET uuid = ? WHERE user = ?");
|
|
|
|
// statement = connection.prepareStatement("UPDATE " + tablePrefix + "users SET uuid = ? WHERE user = ?");
|
|
|
|
|
|
|
|
//
|
|
|
|
for (Map.Entry<String, UUID> entry : fetchedUUIDs.entrySet()) {
|
|
|
|
// for (Map.Entry<String, UUID> entry : fetchedUUIDs.entrySet()) {
|
|
|
|
statement.setString(1, entry.getValue().toString());
|
|
|
|
// statement.setString(1, entry.getValue().toString());
|
|
|
|
statement.setString(2, entry.getKey());
|
|
|
|
// statement.setString(2, entry.getKey());
|
|
|
|
|
|
|
|
//
|
|
|
|
statement.addBatch();
|
|
|
|
// statement.addBatch();
|
|
|
|
|
|
|
|
//
|
|
|
|
count++;
|
|
|
|
// count++;
|
|
|
|
|
|
|
|
//
|
|
|
|
if ((count % 500) == 0) {
|
|
|
|
// if ((count % 500) == 0) {
|
|
|
|
statement.executeBatch();
|
|
|
|
// statement.executeBatch();
|
|
|
|
count = 0;
|
|
|
|
// count = 0;
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
if (count != 0) {
|
|
|
|
// if (count != 0) {
|
|
|
|
statement.executeBatch();
|
|
|
|
// statement.executeBatch();
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
return true;
|
|
|
|
// return true;
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
catch (SQLException ex) {
|
|
|
|
// catch (SQLException ex) {
|
|
|
|
printErrors(ex);
|
|
|
|
// printErrors(ex);
|
|
|
|
return false;
|
|
|
|
// return false;
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
finally {
|
|
|
|
// finally {
|
|
|
|
tryClose(statement);
|
|
|
|
// tryClose(statement);
|
|
|
|
tryClose(connection);
|
|
|
|
// tryClose(connection);
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
public List<String> getStoredUsers() {
|
|
|
|
public List<String> getStoredUsers() {
|
|
|
|
ArrayList<String> users = new ArrayList<>();
|
|
|
|
ArrayList<String> users = new ArrayList<>();
|
|
|
@ -843,6 +907,8 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
+ "`acrobatics` int(32) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`acrobatics` int(32) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`blast_mining` int(32) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`blast_mining` int(32) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`chimaera_wing` int(32) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`chimaera_wing` int(32) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "`tridents` int(32) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "`crossbows` int(32) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "PRIMARY KEY (`user_id`)) "
|
|
|
|
+ "PRIMARY KEY (`user_id`)) "
|
|
|
|
+ "DEFAULT CHARSET=latin1;");
|
|
|
|
+ "DEFAULT CHARSET=latin1;");
|
|
|
|
tryClose(createStatement);
|
|
|
|
tryClose(createStatement);
|
|
|
@ -852,25 +918,25 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
statement.setString(2, tablePrefix + "skills");
|
|
|
|
statement.setString(2, tablePrefix + "skills");
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
|
if (!resultSet.next()) {
|
|
|
|
if (!resultSet.next()) {
|
|
|
|
String startingLevel = "'" + AdvancedConfig.getInstance().getStartingLevel() + "'";
|
|
|
|
|
|
|
|
String totalLevel = "'" + (AdvancedConfig.getInstance().getStartingLevel() * (PrimarySkillType.values().length - PrimarySkillType.CHILD_SKILLS.size())) + "'";
|
|
|
|
|
|
|
|
createStatement = connection.createStatement();
|
|
|
|
createStatement = connection.createStatement();
|
|
|
|
createStatement.executeUpdate("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "skills` ("
|
|
|
|
createStatement.executeUpdate("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "skills` ("
|
|
|
|
+ "`user_id` int(10) unsigned NOT NULL,"
|
|
|
|
+ "`user_id` int(10) unsigned NOT NULL,"
|
|
|
|
+ "`taming` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`taming` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`mining` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`mining` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`woodcutting` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`woodcutting` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`repair` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`repair` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`unarmed` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`unarmed` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`herbalism` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`herbalism` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`excavation` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`excavation` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`archery` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`archery` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`swords` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`swords` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`axes` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`axes` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`acrobatics` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`fishing` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`fishing` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`alchemy` int(10) unsigned NOT NULL DEFAULT "+startingLevel+","
|
|
|
|
+ "`alchemy` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`total` int(10) unsigned NOT NULL DEFAULT "+totalLevel+","
|
|
|
|
+ "`tridents` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "`crossbows` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "`total` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "PRIMARY KEY (`user_id`)) "
|
|
|
|
+ "PRIMARY KEY (`user_id`)) "
|
|
|
|
+ "DEFAULT CHARSET=latin1;");
|
|
|
|
+ "DEFAULT CHARSET=latin1;");
|
|
|
|
tryClose(createStatement);
|
|
|
|
tryClose(createStatement);
|
|
|
@ -896,6 +962,55 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
+ "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`fishing` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`fishing` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`alchemy` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
+ "`alchemy` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "`tridents` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "`crossbows` int(10) unsigned NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "PRIMARY KEY (`user_id`)) "
|
|
|
|
|
|
|
|
+ "DEFAULT CHARSET=latin1;");
|
|
|
|
|
|
|
|
tryClose(createStatement);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
tryClose(resultSet);
|
|
|
|
|
|
|
|
tryClose(statement);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Toggle Table
|
|
|
|
|
|
|
|
statement.setString(1, Config.getInstance().getMySQLDatabaseName());
|
|
|
|
|
|
|
|
statement.setString(2, tablePrefix + "toggle");
|
|
|
|
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
|
|
|
|
|
if (!resultSet.next()) {
|
|
|
|
|
|
|
|
createStatement = connection.createStatement();
|
|
|
|
|
|
|
|
createStatement.executeUpdate("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "toggle` ("
|
|
|
|
|
|
|
|
+ "`user_id` int(10) unsigned NOT NULL,"
|
|
|
|
|
|
|
|
+ "`chatspy` bit NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "`rankless` bit NOT NULL DEFAULT '0',"
|
|
|
|
|
|
|
|
+ "PRIMARY KEY (`user_id`)) "
|
|
|
|
|
|
|
|
+ "DEFAULT CHARSET=latin1;");
|
|
|
|
|
|
|
|
tryClose(createStatement);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
tryClose(resultSet);
|
|
|
|
|
|
|
|
tryClose(statement);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//XP Bar Table
|
|
|
|
|
|
|
|
statement.setString(1, Config.getInstance().getMySQLDatabaseName());
|
|
|
|
|
|
|
|
statement.setString(2, tablePrefix + "xpbar");
|
|
|
|
|
|
|
|
resultSet = statement.executeQuery();
|
|
|
|
|
|
|
|
if (!resultSet.next()) {
|
|
|
|
|
|
|
|
createStatement = connection.createStatement();
|
|
|
|
|
|
|
|
createStatement.executeUpdate("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "xpbar` ("
|
|
|
|
|
|
|
|
+ "`user_id` int(10) unsigned NOT NULL,"
|
|
|
|
|
|
|
|
+ "`view_taming` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_mining` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_woodcutting` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_repair` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_unarmed` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_herbalism` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_excavation` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_archery` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_swords` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_axes` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_acrobatics` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_salvage` varchar(40) NOT NULL DEFAULT 'DISABLED',"
|
|
|
|
|
|
|
|
+ "`view_smelting` varchar(40) NOT NULL DEFAULT 'DISABLED',"
|
|
|
|
|
|
|
|
+ "`view_tridents` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
|
|
|
|
+ "`view_crossbows` varchar(40) NOT NULL DEFAULT 'NORMAL',"
|
|
|
|
+ "PRIMARY KEY (`user_id`)) "
|
|
|
|
+ "PRIMARY KEY (`user_id`)) "
|
|
|
|
+ "DEFAULT CHARSET=latin1;");
|
|
|
|
+ "DEFAULT CHARSET=latin1;");
|
|
|
|
tryClose(createStatement);
|
|
|
|
tryClose(createStatement);
|
|
|
@ -924,6 +1039,8 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
createStatement.executeUpdate("DELETE FROM `" + tablePrefix + "huds` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "users` `u` WHERE `" + tablePrefix + "huds`.`user_id` = `u`.`id`)");
|
|
|
|
createStatement.executeUpdate("DELETE FROM `" + tablePrefix + "huds` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "users` `u` WHERE `" + tablePrefix + "huds`.`user_id` = `u`.`id`)");
|
|
|
|
createStatement.executeUpdate("DELETE FROM `" + tablePrefix + "cooldowns` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "users` `u` WHERE `" + tablePrefix + "cooldowns`.`user_id` = `u`.`id`)");
|
|
|
|
createStatement.executeUpdate("DELETE FROM `" + tablePrefix + "cooldowns` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "users` `u` WHERE `" + tablePrefix + "cooldowns`.`user_id` = `u`.`id`)");
|
|
|
|
createStatement.executeUpdate("DELETE FROM `" + tablePrefix + "skills` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "users` `u` WHERE `" + tablePrefix + "skills`.`user_id` = `u`.`id`)");
|
|
|
|
createStatement.executeUpdate("DELETE FROM `" + tablePrefix + "skills` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "users` `u` WHERE `" + tablePrefix + "skills`.`user_id` = `u`.`id`)");
|
|
|
|
|
|
|
|
createStatement.executeUpdate("DELETE FROM `" + tablePrefix + "toggle` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "users` `u` WHERE `" + tablePrefix + "skills`.`user_id` = `u`.`id`)");
|
|
|
|
|
|
|
|
createStatement.executeUpdate("DELETE FROM `" + tablePrefix + "xpbar` WHERE NOT EXISTS (SELECT * FROM `" + tablePrefix + "users` `u` WHERE `" + tablePrefix + "skills`.`user_id` = `u`.`id`)");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (SQLException ex) {
|
|
|
|
catch (SQLException ex) {
|
|
|
|
printErrors(ex);
|
|
|
|
printErrors(ex);
|
|
|
@ -1004,7 +1121,6 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
case ADD_UUIDS:
|
|
|
|
case ADD_UUIDS:
|
|
|
|
checkUpgradeAddUUIDs(statement);
|
|
|
|
checkUpgradeAddUUIDs(statement);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
case ADD_SCOREBOARD_TIPS:
|
|
|
|
case ADD_SCOREBOARD_TIPS:
|
|
|
|
checkUpgradeAddScoreboardTips(statement);
|
|
|
|
checkUpgradeAddScoreboardTips(statement);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -1019,7 +1135,9 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
case ADD_UNIQUE_PLAYER_DATA:
|
|
|
|
case ADD_UNIQUE_PLAYER_DATA:
|
|
|
|
checkUpgradeAddUniqueChimaeraWing(statement);
|
|
|
|
checkUpgradeAddUniqueChimaeraWing(statement);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case ADD_SQL_2_2:
|
|
|
|
|
|
|
|
checkUpgradeAddTridentsAndCrossbowsSQL(statement);
|
|
|
|
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
@ -1069,22 +1187,26 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private PlayerProfile loadFromResult(String playerName, ResultSet result) throws SQLException {
|
|
|
|
private @Nullable PlayerProfile loadFromResult(String playerName, ResultSet result) throws SQLException {
|
|
|
|
Map<PrimarySkillType, Integer> skills = new EnumMap<PrimarySkillType, Integer>(PrimarySkillType.class); // Skill & Level
|
|
|
|
PersistentPlayerDataBuilder persistentPlayerDataBuilder = new PersistentPlayerDataBuilder();
|
|
|
|
Map<PrimarySkillType, Float> skillsXp = new EnumMap<PrimarySkillType, Float>(PrimarySkillType.class); // Skill & XP
|
|
|
|
EnumMap<PrimarySkillType, Integer> skills = new EnumMap<PrimarySkillType, Integer>(PrimarySkillType.class); // Skill & Level
|
|
|
|
Map<SuperAbilityType, Integer> skillsDATS = new EnumMap<SuperAbilityType, Integer>(SuperAbilityType.class); // Ability & Cooldown
|
|
|
|
EnumMap<PrimarySkillType, Float> skillsXp = new EnumMap<PrimarySkillType, Float>(PrimarySkillType.class); // Skill & XP
|
|
|
|
Map<UniqueDataType, Integer> uniqueData = new EnumMap<UniqueDataType, Integer>(UniqueDataType.class); //Chimaera wing cooldown and other misc info
|
|
|
|
EnumMap<SuperAbilityType, Integer> skillsDATS = new EnumMap<SuperAbilityType, Integer>(SuperAbilityType.class); // Ability & Cooldown
|
|
|
|
Map<PrimarySkillType, ExperienceBarManager.BarState> xpBarStateMap = new EnumMap<PrimarySkillType, ExperienceBarManager.BarState>(PrimarySkillType.class);
|
|
|
|
EnumMap<UniqueDataType, Integer> uniqueData = new EnumMap<UniqueDataType, Integer>(UniqueDataType.class); //Chimaera wing cooldown and other misc info
|
|
|
|
|
|
|
|
EnumMap<PrimarySkillType, MMOExperienceBarManager.BarState> xpBarStateMap = new EnumMap<PrimarySkillType, MMOExperienceBarManager.BarState>(PrimarySkillType.class);
|
|
|
|
|
|
|
|
|
|
|
|
MobHealthbarType mobHealthbarType;
|
|
|
|
MobHealthBarType mobHealthbarType;
|
|
|
|
UUID uuid;
|
|
|
|
UUID uuid;
|
|
|
|
int scoreboardTipsShown;
|
|
|
|
int scoreboardTipsShown;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final int parentSkills = 15, allSkills = 17, cooldownCount = 17, toggleCount = 2, otherCount = 4;
|
|
|
|
final int OFFSET_SKILLS = 0; // TODO update these numbers when the query
|
|
|
|
final int OFFSET_SKILLS = 0; // TODO update these numbers when the query
|
|
|
|
// changes (a new skill is added)
|
|
|
|
// changes (a new skill is added)
|
|
|
|
final int OFFSET_XP = 13;
|
|
|
|
final int OFFSET_EXPERIENCE = OFFSET_SKILLS + parentSkills;
|
|
|
|
final int OFFSET_DATS = 26;
|
|
|
|
final int OFFSET_COOLDOWNS = OFFSET_EXPERIENCE + parentSkills;
|
|
|
|
final int OFFSET_OTHER = 39;
|
|
|
|
final int OFFSET_OTHER = OFFSET_COOLDOWNS + cooldownCount;
|
|
|
|
|
|
|
|
final int OFFSET_XPBAR = OFFSET_OTHER + otherCount;
|
|
|
|
|
|
|
|
final int OFFSET_TOGGLE = OFFSET_XPBAR + allSkills;
|
|
|
|
|
|
|
|
|
|
|
|
skills.put(PrimarySkillType.TAMING, result.getInt(OFFSET_SKILLS + 1));
|
|
|
|
skills.put(PrimarySkillType.TAMING, result.getInt(OFFSET_SKILLS + 1));
|
|
|
|
skills.put(PrimarySkillType.MINING, result.getInt(OFFSET_SKILLS + 2));
|
|
|
|
skills.put(PrimarySkillType.MINING, result.getInt(OFFSET_SKILLS + 2));
|
|
|
@ -1099,38 +1221,46 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
skills.put(PrimarySkillType.ACROBATICS, result.getInt(OFFSET_SKILLS + 11));
|
|
|
|
skills.put(PrimarySkillType.ACROBATICS, result.getInt(OFFSET_SKILLS + 11));
|
|
|
|
skills.put(PrimarySkillType.FISHING, result.getInt(OFFSET_SKILLS + 12));
|
|
|
|
skills.put(PrimarySkillType.FISHING, result.getInt(OFFSET_SKILLS + 12));
|
|
|
|
skills.put(PrimarySkillType.ALCHEMY, result.getInt(OFFSET_SKILLS + 13));
|
|
|
|
skills.put(PrimarySkillType.ALCHEMY, result.getInt(OFFSET_SKILLS + 13));
|
|
|
|
|
|
|
|
skills.put(PrimarySkillType.TRIDENTS, result.getInt(OFFSET_SKILLS + 14));
|
|
|
|
|
|
|
|
skills.put(PrimarySkillType.CROSSBOWS, result.getInt(OFFSET_SKILLS + 15));
|
|
|
|
|
|
|
|
|
|
|
|
skillsXp.put(PrimarySkillType.TAMING, result.getFloat(OFFSET_XP + 1));
|
|
|
|
skillsXp.put(PrimarySkillType.TAMING, result.getFloat(OFFSET_EXPERIENCE + 1));
|
|
|
|
skillsXp.put(PrimarySkillType.MINING, result.getFloat(OFFSET_XP + 2));
|
|
|
|
skillsXp.put(PrimarySkillType.MINING, result.getFloat(OFFSET_EXPERIENCE + 2));
|
|
|
|
skillsXp.put(PrimarySkillType.REPAIR, result.getFloat(OFFSET_XP + 3));
|
|
|
|
skillsXp.put(PrimarySkillType.REPAIR, result.getFloat(OFFSET_EXPERIENCE + 3));
|
|
|
|
skillsXp.put(PrimarySkillType.WOODCUTTING, result.getFloat(OFFSET_XP + 4));
|
|
|
|
skillsXp.put(PrimarySkillType.WOODCUTTING, result.getFloat(OFFSET_EXPERIENCE + 4));
|
|
|
|
skillsXp.put(PrimarySkillType.UNARMED, result.getFloat(OFFSET_XP + 5));
|
|
|
|
skillsXp.put(PrimarySkillType.UNARMED, result.getFloat(OFFSET_EXPERIENCE + 5));
|
|
|
|
skillsXp.put(PrimarySkillType.HERBALISM, result.getFloat(OFFSET_XP + 6));
|
|
|
|
skillsXp.put(PrimarySkillType.HERBALISM, result.getFloat(OFFSET_EXPERIENCE + 6));
|
|
|
|
skillsXp.put(PrimarySkillType.EXCAVATION, result.getFloat(OFFSET_XP + 7));
|
|
|
|
skillsXp.put(PrimarySkillType.EXCAVATION, result.getFloat(OFFSET_EXPERIENCE + 7));
|
|
|
|
skillsXp.put(PrimarySkillType.ARCHERY, result.getFloat(OFFSET_XP + 8));
|
|
|
|
skillsXp.put(PrimarySkillType.ARCHERY, result.getFloat(OFFSET_EXPERIENCE + 8));
|
|
|
|
skillsXp.put(PrimarySkillType.SWORDS, result.getFloat(OFFSET_XP + 9));
|
|
|
|
skillsXp.put(PrimarySkillType.SWORDS, result.getFloat(OFFSET_EXPERIENCE + 9));
|
|
|
|
skillsXp.put(PrimarySkillType.AXES, result.getFloat(OFFSET_XP + 10));
|
|
|
|
skillsXp.put(PrimarySkillType.AXES, result.getFloat(OFFSET_EXPERIENCE + 10));
|
|
|
|
skillsXp.put(PrimarySkillType.ACROBATICS, result.getFloat(OFFSET_XP + 11));
|
|
|
|
skillsXp.put(PrimarySkillType.ACROBATICS, result.getFloat(OFFSET_EXPERIENCE + 11));
|
|
|
|
skillsXp.put(PrimarySkillType.FISHING, result.getFloat(OFFSET_XP + 12));
|
|
|
|
skillsXp.put(PrimarySkillType.FISHING, result.getFloat(OFFSET_EXPERIENCE + 12));
|
|
|
|
skillsXp.put(PrimarySkillType.ALCHEMY, result.getFloat(OFFSET_XP + 13));
|
|
|
|
skillsXp.put(PrimarySkillType.ALCHEMY, result.getFloat(OFFSET_EXPERIENCE + 13));
|
|
|
|
|
|
|
|
skillsXp.put(PrimarySkillType.TRIDENTS, result.getFloat(OFFSET_EXPERIENCE + 14));
|
|
|
|
|
|
|
|
skillsXp.put(PrimarySkillType.CROSSBOWS, result.getFloat(OFFSET_EXPERIENCE + 15));
|
|
|
|
|
|
|
|
|
|
|
|
// Taming - Unused - result.getInt(OFFSET_DATS + 1)
|
|
|
|
// Taming - Unused - result.getInt(OFFSET_COOLDOWNS + 1)
|
|
|
|
skillsDATS.put(SuperAbilityType.SUPER_BREAKER, result.getInt(OFFSET_DATS + 2));
|
|
|
|
skillsDATS.put(SuperAbilityType.SUPER_BREAKER, result.getInt(OFFSET_COOLDOWNS + 2));
|
|
|
|
// Repair - Unused - result.getInt(OFFSET_DATS + 3)
|
|
|
|
// Repair - Unused - result.getInt(OFFSET_COOLDOWNS + 3)
|
|
|
|
skillsDATS.put(SuperAbilityType.TREE_FELLER, result.getInt(OFFSET_DATS + 4));
|
|
|
|
skillsDATS.put(SuperAbilityType.TREE_FELLER, result.getInt(OFFSET_COOLDOWNS + 4));
|
|
|
|
skillsDATS.put(SuperAbilityType.BERSERK, result.getInt(OFFSET_DATS + 5));
|
|
|
|
skillsDATS.put(SuperAbilityType.BERSERK, result.getInt(OFFSET_COOLDOWNS + 5));
|
|
|
|
skillsDATS.put(SuperAbilityType.GREEN_TERRA, result.getInt(OFFSET_DATS + 6));
|
|
|
|
skillsDATS.put(SuperAbilityType.GREEN_TERRA, result.getInt(OFFSET_COOLDOWNS + 6));
|
|
|
|
skillsDATS.put(SuperAbilityType.GIGA_DRILL_BREAKER, result.getInt(OFFSET_DATS + 7));
|
|
|
|
skillsDATS.put(SuperAbilityType.GIGA_DRILL_BREAKER, result.getInt(OFFSET_COOLDOWNS + 7));
|
|
|
|
// Archery - Unused - result.getInt(OFFSET_DATS + 8)
|
|
|
|
skillsDATS.put(SuperAbilityType.ARCHERY_SUPER, result.getInt(OFFSET_COOLDOWNS + 8));
|
|
|
|
skillsDATS.put(SuperAbilityType.SERRATED_STRIKES, result.getInt(OFFSET_DATS + 9));
|
|
|
|
skillsDATS.put(SuperAbilityType.SERRATED_STRIKES, result.getInt(OFFSET_COOLDOWNS + 9));
|
|
|
|
skillsDATS.put(SuperAbilityType.SKULL_SPLITTER, result.getInt(OFFSET_DATS + 10));
|
|
|
|
skillsDATS.put(SuperAbilityType.SKULL_SPLITTER, result.getInt(OFFSET_COOLDOWNS + 10));
|
|
|
|
// Acrobatics - Unused - result.getInt(OFFSET_DATS + 11)
|
|
|
|
// Acrobatics - Unused - result.getInt(OFFSET_COOLDOWNS + 11)
|
|
|
|
skillsDATS.put(SuperAbilityType.BLAST_MINING, result.getInt(OFFSET_DATS + 12));
|
|
|
|
skillsDATS.put(SuperAbilityType.BLAST_MINING, result.getInt(OFFSET_COOLDOWNS + 12));
|
|
|
|
uniqueData.put(UniqueDataType.CHIMAERA_WING_DATS, result.getInt(OFFSET_DATS + 13));
|
|
|
|
uniqueData.put(UniqueDataType.CHIMAERA_WING_DATS, result.getInt(OFFSET_COOLDOWNS + 13));
|
|
|
|
|
|
|
|
skillsDATS.put(SuperAbilityType.TRIDENT_SUPER, result.getInt(OFFSET_COOLDOWNS + 14));
|
|
|
|
|
|
|
|
skillsDATS.put(SuperAbilityType.SUPER_SHOTGUN, result.getInt(OFFSET_COOLDOWNS + 15));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
mobHealthbarType = MobHealthbarType.valueOf(result.getString(OFFSET_OTHER + 1));
|
|
|
|
mobHealthbarType = MobHealthBarType.valueOf(result.getString(OFFSET_OTHER + 1));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception e) {
|
|
|
|
catch (Exception e) {
|
|
|
|
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
|
|
|
|
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
|
|
|
@ -1147,10 +1277,56 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
uuid = UUID.fromString(result.getString(OFFSET_OTHER + 3));
|
|
|
|
uuid = UUID.fromString(result.getString(OFFSET_OTHER + 3));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception e) {
|
|
|
|
catch (Exception e) {
|
|
|
|
uuid = null;
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//XPBAR
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.TAMING, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 1)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.MINING, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 2)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.REPAIR, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 3)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.WOODCUTTING, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 4)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.UNARMED, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 5)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.HERBALISM, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 6)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.EXCAVATION, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 7)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.ARCHERY, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 8)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.SWORDS, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 9)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.AXES, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 10)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.ACROBATICS, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 11)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.FISHING, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 12)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.ALCHEMY, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 13)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.SALVAGE, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 14)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.SMELTING, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 15)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.TRIDENTS, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 16)));
|
|
|
|
|
|
|
|
xpBarStateMap.put(PrimarySkillType.CROSSBOWS, SkillUtils.asBarState(result.getString(OFFSET_XPBAR + 17)));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TOGGLE
|
|
|
|
|
|
|
|
boolean chatSpy = result.getBoolean(OFFSET_TOGGLE+1);
|
|
|
|
|
|
|
|
boolean rankLess = result.getBoolean(OFFSET_TOGGLE+2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Build
|
|
|
|
|
|
|
|
persistentPlayerDataBuilder.setSkillLevelValues(skills)
|
|
|
|
|
|
|
|
.setSkillExperienceValues(skillsXp)
|
|
|
|
|
|
|
|
.setAbilityDeactivationTimestamps(skillsDATS)
|
|
|
|
|
|
|
|
.setUniquePlayerData(uniqueData)
|
|
|
|
|
|
|
|
.setBarStateMap(xpBarStateMap)
|
|
|
|
|
|
|
|
.setPlayerUUID(uuid)
|
|
|
|
|
|
|
|
.setPlayerName(playerName)
|
|
|
|
|
|
|
|
.setPartyChatSpying(chatSpy)
|
|
|
|
|
|
|
|
.setLastLogin(0) //TODO: Program this in properly
|
|
|
|
|
|
|
|
.setScoreboardTipsShown(scoreboardTipsShown)
|
|
|
|
|
|
|
|
.setMobHealthBarType(mobHealthbarType)
|
|
|
|
|
|
|
|
.setLeaderBoardExemption(rankLess);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PersistentPlayerData persistentPlayerData;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
persistentPlayerData = persistentPlayerDataBuilder.build();
|
|
|
|
|
|
|
|
return new PlayerProfile(persistentPlayerData);
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return new PlayerProfile(playerName, uuid, skills, skillsXp, skillsDATS, mobHealthbarType, scoreboardTipsShown, uniqueData, xpBarStateMap);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void printErrors(SQLException ex) {
|
|
|
|
private void printErrors(SQLException ex) {
|
|
|
@ -1191,6 +1367,23 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void checkUpgradeAddTridentsAndCrossbowsSQL(final Statement statement) throws SQLException {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
statement.executeQuery("SELECT 'tridents' FROM `" + tablePrefix +"cooldowns` LIMIT 1");
|
|
|
|
|
|
|
|
} catch (SQLException ex) {
|
|
|
|
|
|
|
|
mcMMO.p.getLogger().info("Updating SQL DB tables for 2.2 Update....");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "cooldowns` ADD `tridents` int(10) NOT NULL DEFAULT '0'");
|
|
|
|
|
|
|
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "cooldowns` ADD `crossbows` int(10) NOT NULL DEFAULT '0'");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "skills` ADD `tridents` int(10) NOT NULL DEFAULT '0'");
|
|
|
|
|
|
|
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "skills` ADD `crossbows` int(10) NOT NULL DEFAULT '0'");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "experience` ADD `tridents` int(10) NOT NULL DEFAULT '0'");
|
|
|
|
|
|
|
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "experience` ADD `crossbows` int(10) NOT NULL DEFAULT '0'");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void checkUpgradeAddAlchemy(final Statement statement) throws SQLException {
|
|
|
|
private void checkUpgradeAddAlchemy(final Statement statement) throws SQLException {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
statement.executeQuery("SELECT `alchemy` FROM `" + tablePrefix + "skills` LIMIT 1");
|
|
|
|
statement.executeQuery("SELECT `alchemy` FROM `" + tablePrefix + "skills` LIMIT 1");
|
|
|
@ -1548,4 +1741,9 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|
|
|
tryClose(connection);
|
|
|
|
tryClose(connection);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void removeCache(UUID uuid) {
|
|
|
|
|
|
|
|
cachedUserIDs.remove(uuid);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|