|
@@ -12,7 +12,7 @@ import java.util.Set;
|
|
|
import com.gmail.nossr50.mcMMO;
|
|
|
import com.gmail.nossr50.config.Config;
|
|
|
import com.gmail.nossr50.config.spout.SpoutConfig;
|
|
|
-import com.gmail.nossr50.database.DatabaseManager;
|
|
|
+import com.gmail.nossr50.database.SQLDatabaseManager;
|
|
|
import com.gmail.nossr50.datatypes.MobHealthbarType;
|
|
|
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
|
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
|
@@ -20,512 +20,54 @@ import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
|
|
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
|
|
import com.gmail.nossr50.skills.child.FamilyTree;
|
|
|
import com.gmail.nossr50.util.Misc;
|
|
|
-import com.gmail.nossr50.util.StringUtils;
|
|
|
|
|
|
public class PlayerProfile {
|
|
|
- private String playerName;
|
|
|
-
|
|
|
- // HUD
|
|
|
- private McMMOHud spoutHud;
|
|
|
- private HudType hudType;
|
|
|
- private MobHealthbarType mobHealthbarType;
|
|
|
-
|
|
|
- // mySQL Stuff
|
|
|
+ private final String playerName;
|
|
|
private int userId;
|
|
|
-
|
|
|
private boolean loaded;
|
|
|
|
|
|
- private Map<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); // Skills and Levels
|
|
|
- private Map<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); // Skills and Xp
|
|
|
- private Map<AbilityType, Integer> skillsDATS = new HashMap<AbilityType, Integer>();
|
|
|
+ /* HUDs */
|
|
|
+ private HudType hudType;
|
|
|
+ private MobHealthbarType mobHealthbarType;
|
|
|
+ private McMMOHud spoutHud;
|
|
|
|
|
|
- private final static String location = mcMMO.getUsersFilePath();
|
|
|
+ /* Skill Data */
|
|
|
+ private final Map<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); // Skill & Level
|
|
|
+ private final Map<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); // Skill & XP
|
|
|
+ private final Map<AbilityType, Integer> skillsDATS = new HashMap<AbilityType, Integer>(); // Ability & Cooldown
|
|
|
|
|
|
public PlayerProfile(String playerName, boolean addNew) {
|
|
|
this.playerName = playerName;
|
|
|
- mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
|
|
|
|
|
|
- if (mcMMO.spoutEnabled) {
|
|
|
- hudType = SpoutConfig.getInstance().getDefaultHudType();
|
|
|
- }
|
|
|
- else {
|
|
|
- hudType = HudType.DISABLED;
|
|
|
- }
|
|
|
+ hudType = mcMMO.spoutEnabled ? SpoutConfig.getInstance().getDefaultHudType() : HudType.DISABLED;
|
|
|
+ mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
|
|
|
|
|
|
for (AbilityType abilityType : AbilityType.values()) {
|
|
|
- skillsDATS.put(abilityType, 0);
|
|
|
+ skillsDATS.put(abilityType, 0);
|
|
|
}
|
|
|
|
|
|
for (SkillType skillType : SkillType.values()) {
|
|
|
- if (!skillType.isChildSkill()) {
|
|
|
- skills.put(skillType, 0);
|
|
|
- skillsXp.put(skillType, 0);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (Config.getInstance().getUseMySQL()) {
|
|
|
- if (!loadMySQL() && addNew) {
|
|
|
- addMySQLPlayer();
|
|
|
- loaded = true;
|
|
|
- }
|
|
|
- }
|
|
|
- else if (!load() && addNew) {
|
|
|
- addPlayer();
|
|
|
- loaded = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public String getPlayerName() {
|
|
|
- return playerName;
|
|
|
- }
|
|
|
-
|
|
|
- public boolean loadMySQL() {
|
|
|
- String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
|
|
-
|
|
|
- userId = DatabaseManager.getInt("SELECT id FROM " + tablePrefix + "users WHERE user = '" + playerName + "'");
|
|
|
-
|
|
|
- if (userId == 0) {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- HashMap<Integer, ArrayList<String>> huds = DatabaseManager.read("SELECT hudtype FROM " + tablePrefix + "huds WHERE user_id = " + userId);
|
|
|
-
|
|
|
- if (huds.get(1) == null) {
|
|
|
- DatabaseManager.write("INSERT INTO " + tablePrefix + "huds (user_id) VALUES (" + userId + ")");
|
|
|
- }
|
|
|
- else {
|
|
|
- hudType = HudType.valueOf(huds.get(1).get(0));
|
|
|
- mobHealthbarType = MobHealthbarType.valueOf(DatabaseManager.read("SELECT mobhealthbar FROM " + tablePrefix + "huds WHERE user_id = " + userId).get(1).get(0));
|
|
|
- }
|
|
|
-
|
|
|
- HashMap<Integer, ArrayList<String>> cooldowns = DatabaseManager.read("SELECT mining, woodcutting, unarmed, herbalism, excavation, swords, axes, blast_mining FROM " + tablePrefix + "cooldowns WHERE user_id = " + userId);
|
|
|
- ArrayList<String> cooldownValues = cooldowns.get(1);
|
|
|
-
|
|
|
- if (cooldownValues == null) {
|
|
|
- DatabaseManager.write("INSERT INTO " + tablePrefix + "cooldowns (user_id) VALUES (" + userId + ")");
|
|
|
- mcMMO.p.getLogger().warning(playerName + "does not exist in the cooldown table. Their cooldowns will be reset.");
|
|
|
- }
|
|
|
- else {
|
|
|
- skillsDATS.put(AbilityType.SUPER_BREAKER, Integer.valueOf(cooldownValues.get(0)));
|
|
|
- skillsDATS.put(AbilityType.TREE_FELLER, Integer.valueOf(cooldownValues.get(1)));
|
|
|
- skillsDATS.put(AbilityType.BERSERK, Integer.valueOf(cooldownValues.get(2)));
|
|
|
- skillsDATS.put(AbilityType.GREEN_TERRA, Integer.valueOf(cooldownValues.get(3)));
|
|
|
- skillsDATS.put(AbilityType.GIGA_DRILL_BREAKER, Integer.valueOf(cooldownValues.get(4)));
|
|
|
- skillsDATS.put(AbilityType.SERRATED_STRIKES, Integer.valueOf(cooldownValues.get(5)));
|
|
|
- skillsDATS.put(AbilityType.SKULL_SPLITTER, Integer.valueOf(cooldownValues.get(6)));
|
|
|
- skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(cooldownValues.get(7)));
|
|
|
- }
|
|
|
-
|
|
|
- HashMap<Integer, ArrayList<String>> stats = DatabaseManager.read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM " + tablePrefix + "skills WHERE user_id = " + userId);
|
|
|
- ArrayList<String> statValues = stats.get(1);
|
|
|
-
|
|
|
- if (statValues == null) {
|
|
|
- DatabaseManager.write("INSERT INTO " + tablePrefix + "skills (user_id) VALUES (" + userId + ")");
|
|
|
- mcMMO.p.getLogger().warning(playerName + "does not exist in the skills table. Their stats will be reset.");
|
|
|
- }
|
|
|
- else {
|
|
|
- skills.put(SkillType.TAMING, Integer.valueOf(statValues.get(0)));
|
|
|
- skills.put(SkillType.MINING, Integer.valueOf(statValues.get(1)));
|
|
|
- skills.put(SkillType.REPAIR, Integer.valueOf(statValues.get(2)));
|
|
|
- skills.put(SkillType.WOODCUTTING, Integer.valueOf(statValues.get(3)));
|
|
|
- skills.put(SkillType.UNARMED, Integer.valueOf(statValues.get(4)));
|
|
|
- skills.put(SkillType.HERBALISM, Integer.valueOf(statValues.get(5)));
|
|
|
- skills.put(SkillType.EXCAVATION, Integer.valueOf(statValues.get(6)));
|
|
|
- skills.put(SkillType.ARCHERY, Integer.valueOf(statValues.get(7)));
|
|
|
- skills.put(SkillType.SWORDS, Integer.valueOf(statValues.get(8)));
|
|
|
- skills.put(SkillType.AXES, Integer.valueOf(statValues.get(9)));
|
|
|
- skills.put(SkillType.ACROBATICS, Integer.valueOf(statValues.get(10)));
|
|
|
- skills.put(SkillType.FISHING, Integer.valueOf(statValues.get(11)));
|
|
|
- }
|
|
|
-
|
|
|
- HashMap<Integer, ArrayList<String>> experience = DatabaseManager.read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM " + tablePrefix + "experience WHERE user_id = " + userId);
|
|
|
- ArrayList<String> experienceValues = experience.get(1);
|
|
|
-
|
|
|
- if (experienceValues == null) {
|
|
|
- DatabaseManager.write("INSERT INTO " + tablePrefix + "experience (user_id) VALUES (" + userId + ")");
|
|
|
- mcMMO.p.getLogger().warning(playerName + "does not exist in the experience table. Their experience will be reset.");
|
|
|
- }
|
|
|
- else {
|
|
|
- skillsXp.put(SkillType.TAMING, Integer.valueOf(experienceValues.get(0)));
|
|
|
- skillsXp.put(SkillType.MINING, Integer.valueOf(experienceValues.get(1)));
|
|
|
- skillsXp.put(SkillType.REPAIR, Integer.valueOf(experienceValues.get(2)));
|
|
|
- skillsXp.put(SkillType.WOODCUTTING, Integer.valueOf(experienceValues.get(3)));
|
|
|
- skillsXp.put(SkillType.UNARMED, Integer.valueOf(experienceValues.get(4)));
|
|
|
- skillsXp.put(SkillType.HERBALISM, Integer.valueOf(experienceValues.get(5)));
|
|
|
- skillsXp.put(SkillType.EXCAVATION, Integer.valueOf(experienceValues.get(6)));
|
|
|
- skillsXp.put(SkillType.ARCHERY, Integer.valueOf(experienceValues.get(7)));
|
|
|
- skillsXp.put(SkillType.SWORDS, Integer.valueOf(experienceValues.get(8)));
|
|
|
- skillsXp.put(SkillType.AXES, Integer.valueOf(experienceValues.get(9)));
|
|
|
- skillsXp.put(SkillType.ACROBATICS, Integer.valueOf(experienceValues.get(10)));
|
|
|
- skillsXp.put(SkillType.FISHING, Integer.valueOf(experienceValues.get(11)));
|
|
|
- }
|
|
|
-
|
|
|
- loaded = true;
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- public void addMySQLPlayer() {
|
|
|
- String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
|
|
-
|
|
|
- DatabaseManager.write("INSERT INTO " + tablePrefix + "users (user, lastlogin) VALUES ('" + playerName + "'," + System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR + ")");
|
|
|
- userId = DatabaseManager.getInt("SELECT id FROM " + tablePrefix + "users WHERE user = '" + playerName + "'");
|
|
|
-
|
|
|
- DatabaseManager.write("INSERT INTO " + tablePrefix + "cooldowns (user_id) VALUES (" + userId + ")");
|
|
|
- DatabaseManager.write("INSERT INTO " + tablePrefix + "skills (user_id) VALUES (" + userId + ")");
|
|
|
- DatabaseManager.write("INSERT INTO " + tablePrefix + "experience (user_id) VALUES (" + userId + ")");
|
|
|
- }
|
|
|
-
|
|
|
- public boolean load() {
|
|
|
- try {
|
|
|
- // Open the user file
|
|
|
- FileReader file = new FileReader(location);
|
|
|
- BufferedReader in = new BufferedReader(file);
|
|
|
- String line;
|
|
|
-
|
|
|
- while ((line = in.readLine()) != null) {
|
|
|
- // Find if the line contains the player we want.
|
|
|
- String[] character = line.split(":");
|
|
|
-
|
|
|
- if (!character[0].equalsIgnoreCase(playerName)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 1 && StringUtils.isInt(character[1])) {
|
|
|
- skills.put(SkillType.MINING, Integer.valueOf(character[1]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 4 && StringUtils.isInt(character[4])) {
|
|
|
- skillsXp.put(SkillType.MINING, Integer.valueOf(character[4]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 5 && StringUtils.isInt(character[5])) {
|
|
|
- skills.put(SkillType.WOODCUTTING, Integer.valueOf(character[5]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 6 && StringUtils.isInt(character[6])) {
|
|
|
- skillsXp.put(SkillType.WOODCUTTING, Integer.valueOf(character[6]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 7 && StringUtils.isInt(character[7])) {
|
|
|
- skills.put(SkillType.REPAIR, Integer.valueOf(character[7]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 8 && StringUtils.isInt(character[8])) {
|
|
|
- skills.put(SkillType.UNARMED, Integer.valueOf(character[8]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 9 && StringUtils.isInt(character[9])) {
|
|
|
- skills.put(SkillType.HERBALISM, Integer.valueOf(character[9]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 10 && StringUtils.isInt(character[10])) {
|
|
|
- skills.put(SkillType.EXCAVATION, Integer.valueOf(character[10]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 11 && StringUtils.isInt(character[11])) {
|
|
|
- skills.put(SkillType.ARCHERY, Integer.valueOf(character[11]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 12 && StringUtils.isInt(character[12])) {
|
|
|
- skills.put(SkillType.SWORDS, Integer.valueOf(character[12]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 13 && StringUtils.isInt(character[13])) {
|
|
|
- skills.put(SkillType.AXES, Integer.valueOf(character[13]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 14 && StringUtils.isInt(character[14])) {
|
|
|
- skills.put(SkillType.ACROBATICS, Integer.valueOf(character[14]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 15 && StringUtils.isInt(character[15])) {
|
|
|
- skillsXp.put(SkillType.REPAIR, Integer.valueOf(character[15]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 16 && StringUtils.isInt(character[16])) {
|
|
|
- skillsXp.put(SkillType.UNARMED, Integer.valueOf(character[16]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 17 && StringUtils.isInt(character[17])) {
|
|
|
- skillsXp.put(SkillType.HERBALISM, Integer.valueOf(character[17]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 18 && StringUtils.isInt(character[18])) {
|
|
|
- skillsXp.put(SkillType.EXCAVATION, Integer.valueOf(character[18]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 19 && StringUtils.isInt(character[19])) {
|
|
|
- skillsXp.put(SkillType.ARCHERY, Integer.valueOf(character[19]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 20 && StringUtils.isInt(character[20])) {
|
|
|
- skillsXp.put(SkillType.SWORDS, Integer.valueOf(character[20]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 21 && StringUtils.isInt(character[21])) {
|
|
|
- skillsXp.put(SkillType.AXES, Integer.valueOf(character[21]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 22 && StringUtils.isInt(character[22])) {
|
|
|
- skillsXp.put(SkillType.ACROBATICS, Integer.valueOf(character[22]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 24 && StringUtils.isInt(character[24])) {
|
|
|
- skills.put(SkillType.TAMING, Integer.valueOf(character[24]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 25 && StringUtils.isInt(character[25])) {
|
|
|
- skillsXp.put(SkillType.TAMING, Integer.valueOf(character[25]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 26) {
|
|
|
- skillsDATS.put(AbilityType.BERSERK, Integer.valueOf(character[26]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 27) {
|
|
|
- skillsDATS.put(AbilityType.GIGA_DRILL_BREAKER, Integer.valueOf(character[27]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 28) {
|
|
|
- skillsDATS.put(AbilityType.TREE_FELLER, Integer.valueOf(character[28]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 29) {
|
|
|
- skillsDATS.put(AbilityType.GREEN_TERRA, Integer.valueOf(character[29]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 30) {
|
|
|
- skillsDATS.put(AbilityType.SERRATED_STRIKES, Integer.valueOf(character[30]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 31) {
|
|
|
- skillsDATS.put(AbilityType.SKULL_SPLITTER, Integer.valueOf(character[31]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 32) {
|
|
|
- skillsDATS.put(AbilityType.SUPER_BREAKER, Integer.valueOf(character[32]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 33) {
|
|
|
- hudType = HudType.valueOf(character[33]);
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 34) {
|
|
|
- skills.put(SkillType.FISHING, Integer.valueOf(character[34]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 35) {
|
|
|
- skillsXp.put(SkillType.FISHING, Integer.valueOf(character[35]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 36) {
|
|
|
- skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(character[36]));
|
|
|
- }
|
|
|
-
|
|
|
- if (character.length > 38) {
|
|
|
- mobHealthbarType = MobHealthbarType.valueOf(character[38]);
|
|
|
- }
|
|
|
-
|
|
|
- loaded = true;
|
|
|
-
|
|
|
- in.close();
|
|
|
- return true;
|
|
|
+ if (skillType.isChildSkill()) {
|
|
|
+ continue;
|
|
|
}
|
|
|
|
|
|
- in.close();
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- public void save() {
|
|
|
- Long timestamp = System.currentTimeMillis();
|
|
|
-
|
|
|
- // If we are using mysql save to database
|
|
|
- if (Config.getInstance().getUseMySQL()) {
|
|
|
- String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
|
|
-
|
|
|
- DatabaseManager.write("UPDATE " + tablePrefix + "huds SET hudtype = '" + hudType.toString() + "' WHERE user_id = " + userId);
|
|
|
- DatabaseManager.write("UPDATE " + tablePrefix + "huds SET mobhealthbar = '" + mobHealthbarType.toString() + "' WHERE user_id = " + userId);
|
|
|
- DatabaseManager.write("UPDATE " + tablePrefix + "users SET lastlogin = " + ((int) (timestamp / Misc.TIME_CONVERSION_FACTOR)) + " WHERE id = " + userId);
|
|
|
- DatabaseManager.write("UPDATE " + tablePrefix + "cooldowns SET "
|
|
|
- + " mining = " + skillsDATS.get(AbilityType.SUPER_BREAKER)
|
|
|
- + ", woodcutting = " + skillsDATS.get(AbilityType.TREE_FELLER)
|
|
|
- + ", unarmed = " + skillsDATS.get(AbilityType.BERSERK)
|
|
|
- + ", herbalism = " + skillsDATS.get(AbilityType.GREEN_TERRA)
|
|
|
- + ", excavation = " + skillsDATS.get(AbilityType.GIGA_DRILL_BREAKER)
|
|
|
- + ", swords = " + skillsDATS.get(AbilityType.SERRATED_STRIKES)
|
|
|
- + ", axes = " + skillsDATS.get(AbilityType.SKULL_SPLITTER)
|
|
|
- + ", blast_mining = " + skillsDATS.get(AbilityType.BLAST_MINING)
|
|
|
- + " WHERE user_id = " + userId);
|
|
|
- DatabaseManager.write("UPDATE " + tablePrefix + "skills SET "
|
|
|
- + " taming = " + skills.get(SkillType.TAMING)
|
|
|
- + ", mining = " + skills.get(SkillType.MINING)
|
|
|
- + ", repair = " + skills.get(SkillType.REPAIR)
|
|
|
- + ", woodcutting = " + skills.get(SkillType.WOODCUTTING)
|
|
|
- + ", unarmed = " + skills.get(SkillType.UNARMED)
|
|
|
- + ", herbalism = " + skills.get(SkillType.HERBALISM)
|
|
|
- + ", excavation = " + skills.get(SkillType.EXCAVATION)
|
|
|
- + ", archery = " + skills.get(SkillType.ARCHERY)
|
|
|
- + ", swords = " + skills.get(SkillType.SWORDS)
|
|
|
- + ", axes = " + skills.get(SkillType.AXES)
|
|
|
- + ", acrobatics = " + skills.get(SkillType.ACROBATICS)
|
|
|
- + ", fishing = " + skills.get(SkillType.FISHING)
|
|
|
- + " WHERE user_id = " + userId);
|
|
|
- DatabaseManager.write("UPDATE " + tablePrefix + "experience SET "
|
|
|
- + " taming = " + skillsXp.get(SkillType.TAMING)
|
|
|
- + ", mining = " + skillsXp.get(SkillType.MINING)
|
|
|
- + ", repair = " + skillsXp.get(SkillType.REPAIR)
|
|
|
- + ", woodcutting = " + skillsXp.get(SkillType.WOODCUTTING)
|
|
|
- + ", unarmed = " + skillsXp.get(SkillType.UNARMED)
|
|
|
- + ", herbalism = " + skillsXp.get(SkillType.HERBALISM)
|
|
|
- + ", excavation = " + skillsXp.get(SkillType.EXCAVATION)
|
|
|
- + ", archery = " + skillsXp.get(SkillType.ARCHERY)
|
|
|
- + ", swords = " + skillsXp.get(SkillType.SWORDS)
|
|
|
- + ", axes = " + skillsXp.get(SkillType.AXES)
|
|
|
- + ", acrobatics = " + skillsXp.get(SkillType.ACROBATICS)
|
|
|
- + ", fishing = " + skillsXp.get(SkillType.FISHING)
|
|
|
- + " WHERE user_id = " + userId);
|
|
|
- }
|
|
|
- else {
|
|
|
- // Otherwise save to flatfile
|
|
|
- try {
|
|
|
- // Open the file
|
|
|
- FileReader file = new FileReader(location);
|
|
|
- BufferedReader in = new BufferedReader(file);
|
|
|
- StringBuilder writer = new StringBuilder();
|
|
|
- String line;
|
|
|
-
|
|
|
- // While not at the end of the file
|
|
|
- while ((line = in.readLine()) != null) {
|
|
|
- // Read the line in and copy it to the output it's not the player we want to edit
|
|
|
- if (!line.split(":")[0].equalsIgnoreCase(playerName)) {
|
|
|
- writer.append(line).append("\r\n");
|
|
|
- }
|
|
|
- else {
|
|
|
- // Otherwise write the new player information
|
|
|
- writer.append(playerName).append(":");
|
|
|
- writer.append(skills.get(SkillType.MINING)).append(":");
|
|
|
- writer.append(":");
|
|
|
- writer.append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.MINING)).append(":");
|
|
|
- writer.append(skills.get(SkillType.WOODCUTTING)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.WOODCUTTING)).append(":");
|
|
|
- writer.append(skills.get(SkillType.REPAIR)).append(":");
|
|
|
- writer.append(skills.get(SkillType.UNARMED)).append(":");
|
|
|
- writer.append(skills.get(SkillType.HERBALISM)).append(":");
|
|
|
- writer.append(skills.get(SkillType.EXCAVATION)).append(":");
|
|
|
- writer.append(skills.get(SkillType.ARCHERY)).append(":");
|
|
|
- writer.append(skills.get(SkillType.SWORDS)).append(":");
|
|
|
- writer.append(skills.get(SkillType.AXES)).append(":");
|
|
|
- writer.append(skills.get(SkillType.ACROBATICS)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.REPAIR)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.UNARMED)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.HERBALISM)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.EXCAVATION)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.ARCHERY)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.SWORDS)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.AXES)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.ACROBATICS)).append(":");
|
|
|
- writer.append(":");
|
|
|
- writer.append(skills.get(SkillType.TAMING)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.TAMING)).append(":");
|
|
|
- writer.append(skillsDATS.get(AbilityType.BERSERK)).append(":");
|
|
|
- writer.append(skillsDATS.get(AbilityType.GIGA_DRILL_BREAKER)).append(":");
|
|
|
- writer.append(skillsDATS.get(AbilityType.TREE_FELLER)).append(":");
|
|
|
- writer.append(skillsDATS.get(AbilityType.GREEN_TERRA)).append(":");
|
|
|
- writer.append(skillsDATS.get(AbilityType.SERRATED_STRIKES)).append(":");
|
|
|
- writer.append(skillsDATS.get(AbilityType.SKULL_SPLITTER)).append(":");
|
|
|
- writer.append(skillsDATS.get(AbilityType.SUPER_BREAKER)).append(":");
|
|
|
- writer.append(hudType.toString()).append(":");
|
|
|
- writer.append(skills.get(SkillType.FISHING)).append(":");
|
|
|
- writer.append(skillsXp.get(SkillType.FISHING)).append(":");
|
|
|
- writer.append(skillsDATS.get(AbilityType.BLAST_MINING)).append(":");
|
|
|
- writer.append(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR).append(":");
|
|
|
- writer.append(mobHealthbarType.toString()).append(":");
|
|
|
- writer.append("\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- in.close();
|
|
|
-
|
|
|
- // Write the new file
|
|
|
- FileWriter out = new FileWriter(location);
|
|
|
- out.write(writer.toString());
|
|
|
- out.flush();
|
|
|
- out.close();
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void addPlayer() {
|
|
|
- try {
|
|
|
- // Open the file to write the player
|
|
|
- FileWriter file = new FileWriter(location, true);
|
|
|
- BufferedWriter out = new BufferedWriter(file);
|
|
|
-
|
|
|
- // Add the player to the end
|
|
|
- out.append(playerName).append(":");
|
|
|
- out.append("0:"); // Mining
|
|
|
- out.append(":");
|
|
|
- out.append(":");
|
|
|
- out.append("0:"); // Xp
|
|
|
- out.append("0:"); // Woodcutting
|
|
|
- out.append("0:"); // WoodCuttingXp
|
|
|
- out.append("0:"); // Repair
|
|
|
- out.append("0:"); // Unarmed
|
|
|
- out.append("0:"); // Herbalism
|
|
|
- out.append("0:"); // Excavation
|
|
|
- out.append("0:"); // Archery
|
|
|
- out.append("0:"); // Swords
|
|
|
- out.append("0:"); // Axes
|
|
|
- out.append("0:"); // Acrobatics
|
|
|
- out.append("0:"); // RepairXp
|
|
|
- out.append("0:"); // UnarmedXp
|
|
|
- out.append("0:"); // HerbalismXp
|
|
|
- out.append("0:"); // ExcavationXp
|
|
|
- out.append("0:"); // ArcheryXp
|
|
|
- out.append("0:"); // SwordsXp
|
|
|
- out.append("0:"); // AxesXp
|
|
|
- out.append("0:"); // AcrobaticsXp
|
|
|
- out.append(":");
|
|
|
- out.append("0:"); // Taming
|
|
|
- out.append("0:"); // TamingXp
|
|
|
- out.append("0:"); // DATS
|
|
|
- out.append("0:"); // DATS
|
|
|
- out.append("0:"); // DATS
|
|
|
- out.append("0:"); // DATS
|
|
|
- out.append("0:"); // DATS
|
|
|
- out.append("0:"); // DATS
|
|
|
- out.append("0:"); // DATS
|
|
|
- out.append(hudType.toString()).append(":"); // HUD
|
|
|
- out.append("0:"); // Fishing
|
|
|
- out.append("0:"); // FishingXp
|
|
|
- out.append("0:"); // Blast Mining
|
|
|
- out.append(String.valueOf(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR)).append(":"); // LastLogin
|
|
|
- out.append(mobHealthbarType.toString()).append(":"); // Mob Healthbar HUD
|
|
|
-
|
|
|
- // Add more in the same format as the line above
|
|
|
-
|
|
|
- out.newLine();
|
|
|
- out.close();
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
+ skills.put(skillType, 0);
|
|
|
+ skillsXp.put(skillType, 0);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- /*
|
|
|
- * mySQL Stuff
|
|
|
- */
|
|
|
+ if (!loadPlayer() && addNew) {
|
|
|
+ addPlayer();
|
|
|
+ loaded = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- public int getMySQLuserId() {
|
|
|
- return userId;
|
|
|
+ public void save() {
|
|
|
+ if (Config.getInstance().getUseMySQL()) {
|
|
|
+ saveMySQL();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ saveFlatfile();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public boolean isLoaded() {
|
|
@@ -594,8 +136,8 @@ public class PlayerProfile {
|
|
|
* Reset all skill cooldowns.
|
|
|
*/
|
|
|
public void resetCooldowns() {
|
|
|
- for (AbilityType x : skillsDATS.keySet()) {
|
|
|
- skillsDATS.put(x, 0);
|
|
|
+ for (AbilityType ability : skillsDATS.keySet()) {
|
|
|
+ skillsDATS.put(ability, 0);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -611,17 +153,6 @@ public class PlayerProfile {
|
|
|
return skills.get(skillType);
|
|
|
}
|
|
|
|
|
|
- public int getChildSkillLevel(SkillType skillType) {
|
|
|
- Set<SkillType> parents = FamilyTree.getParents(skillType);
|
|
|
- int sum = 0;
|
|
|
-
|
|
|
- for (SkillType parent : parents) {
|
|
|
- sum += Math.min(getSkillLevel(parent), 1000);
|
|
|
- }
|
|
|
-
|
|
|
- return sum / parents.size();
|
|
|
- }
|
|
|
-
|
|
|
public int getSkillXpLevel(SkillType skillType) {
|
|
|
return skillsXp.get(skillType);
|
|
|
}
|
|
@@ -705,4 +236,384 @@ public class PlayerProfile {
|
|
|
public int getXpToLevel(SkillType skillType) {
|
|
|
return 1020 + (skills.get(skillType) * Config.getInstance().getFormulaMultiplierCurve());
|
|
|
}
|
|
|
+
|
|
|
+ private int getChildSkillLevel(SkillType skillType) {
|
|
|
+ Set<SkillType> parents = FamilyTree.getParents(skillType);
|
|
|
+ int sum = 0;
|
|
|
+
|
|
|
+ for (SkillType parent : parents) {
|
|
|
+ sum += Math.min(getSkillLevel(parent), 1000);
|
|
|
+ }
|
|
|
+
|
|
|
+ return sum / parents.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean loadPlayer() {
|
|
|
+ return Config.getInstance().getUseMySQL() ? loadMySQL() : loadFlatfile();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addPlayer() {
|
|
|
+ if (Config.getInstance().getUseMySQL()) {
|
|
|
+ addMySQLPlayer();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ addFlatfilePlayer();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean loadMySQL() {
|
|
|
+ String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
|
|
+
|
|
|
+ userId = SQLDatabaseManager.getInt("SELECT id FROM " + tablePrefix + "users WHERE user = '" + playerName + "'");
|
|
|
+
|
|
|
+ if (userId == 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ ArrayList<String> hudValues = SQLDatabaseManager.read("SELECT hudtype, mobhealthbar FROM " + tablePrefix + "huds WHERE user_id = " + userId).get(1);
|
|
|
+
|
|
|
+ if (hudValues == null) {
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "huds (user_id, mobhealthbar) VALUES (" + userId + "," + mobHealthbarType.name() + ")");
|
|
|
+ mcMMO.p.getLogger().warning(playerName + "does not exist in the HUD table. Their HUDs will be reset.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ hudType = HudType.valueOf(hudValues.get(0));
|
|
|
+ mobHealthbarType = MobHealthbarType.valueOf(hudValues.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ ArrayList<String> cooldownValues = SQLDatabaseManager.read("SELECT mining, woodcutting, unarmed, herbalism, excavation, swords, axes, blast_mining FROM " + tablePrefix + "cooldowns WHERE user_id = " + userId).get(1);
|
|
|
+
|
|
|
+ if (cooldownValues == null) {
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "cooldowns (user_id) VALUES (" + userId + ")");
|
|
|
+ mcMMO.p.getLogger().warning(playerName + "does not exist in the cooldown table. Their cooldowns will be reset.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ skillsDATS.put(AbilityType.SUPER_BREAKER, Integer.valueOf(cooldownValues.get(0)));
|
|
|
+ skillsDATS.put(AbilityType.TREE_FELLER, Integer.valueOf(cooldownValues.get(1)));
|
|
|
+ skillsDATS.put(AbilityType.BERSERK, Integer.valueOf(cooldownValues.get(2)));
|
|
|
+ skillsDATS.put(AbilityType.GREEN_TERRA, Integer.valueOf(cooldownValues.get(3)));
|
|
|
+ skillsDATS.put(AbilityType.GIGA_DRILL_BREAKER, Integer.valueOf(cooldownValues.get(4)));
|
|
|
+ skillsDATS.put(AbilityType.SERRATED_STRIKES, Integer.valueOf(cooldownValues.get(5)));
|
|
|
+ skillsDATS.put(AbilityType.SKULL_SPLITTER, Integer.valueOf(cooldownValues.get(6)));
|
|
|
+ skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(cooldownValues.get(7)));
|
|
|
+ }
|
|
|
+
|
|
|
+ ArrayList<String> statValues = SQLDatabaseManager.read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM " + tablePrefix + "skills WHERE user_id = " + userId).get(1);
|
|
|
+
|
|
|
+ if (statValues == null) {
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "skills (user_id) VALUES (" + userId + ")");
|
|
|
+ mcMMO.p.getLogger().warning(playerName + "does not exist in the skills table. Their stats will be reset.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ skills.put(SkillType.TAMING, Integer.valueOf(statValues.get(0)));
|
|
|
+ skills.put(SkillType.MINING, Integer.valueOf(statValues.get(1)));
|
|
|
+ skills.put(SkillType.REPAIR, Integer.valueOf(statValues.get(2)));
|
|
|
+ skills.put(SkillType.WOODCUTTING, Integer.valueOf(statValues.get(3)));
|
|
|
+ skills.put(SkillType.UNARMED, Integer.valueOf(statValues.get(4)));
|
|
|
+ skills.put(SkillType.HERBALISM, Integer.valueOf(statValues.get(5)));
|
|
|
+ skills.put(SkillType.EXCAVATION, Integer.valueOf(statValues.get(6)));
|
|
|
+ skills.put(SkillType.ARCHERY, Integer.valueOf(statValues.get(7)));
|
|
|
+ skills.put(SkillType.SWORDS, Integer.valueOf(statValues.get(8)));
|
|
|
+ skills.put(SkillType.AXES, Integer.valueOf(statValues.get(9)));
|
|
|
+ skills.put(SkillType.ACROBATICS, Integer.valueOf(statValues.get(10)));
|
|
|
+ skills.put(SkillType.FISHING, Integer.valueOf(statValues.get(11)));
|
|
|
+ }
|
|
|
+
|
|
|
+ ArrayList<String> experienceValues = SQLDatabaseManager.read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM " + tablePrefix + "experience WHERE user_id = " + userId).get(1);
|
|
|
+
|
|
|
+ if (experienceValues == null) {
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "experience (user_id) VALUES (" + userId + ")");
|
|
|
+ mcMMO.p.getLogger().warning(playerName + "does not exist in the experience table. Their experience will be reset.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ skillsXp.put(SkillType.TAMING, Integer.valueOf(experienceValues.get(0)));
|
|
|
+ skillsXp.put(SkillType.MINING, Integer.valueOf(experienceValues.get(1)));
|
|
|
+ skillsXp.put(SkillType.REPAIR, Integer.valueOf(experienceValues.get(2)));
|
|
|
+ skillsXp.put(SkillType.WOODCUTTING, Integer.valueOf(experienceValues.get(3)));
|
|
|
+ skillsXp.put(SkillType.UNARMED, Integer.valueOf(experienceValues.get(4)));
|
|
|
+ skillsXp.put(SkillType.HERBALISM, Integer.valueOf(experienceValues.get(5)));
|
|
|
+ skillsXp.put(SkillType.EXCAVATION, Integer.valueOf(experienceValues.get(6)));
|
|
|
+ skillsXp.put(SkillType.ARCHERY, Integer.valueOf(experienceValues.get(7)));
|
|
|
+ skillsXp.put(SkillType.SWORDS, Integer.valueOf(experienceValues.get(8)));
|
|
|
+ skillsXp.put(SkillType.AXES, Integer.valueOf(experienceValues.get(9)));
|
|
|
+ skillsXp.put(SkillType.ACROBATICS, Integer.valueOf(experienceValues.get(10)));
|
|
|
+ skillsXp.put(SkillType.FISHING, Integer.valueOf(experienceValues.get(11)));
|
|
|
+ }
|
|
|
+
|
|
|
+ loaded = true;
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addMySQLPlayer() {
|
|
|
+ String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
|
|
+
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "users (user, lastlogin) VALUES ('" + playerName + "'," + System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR + ")");
|
|
|
+ userId = SQLDatabaseManager.getInt("SELECT id FROM " + tablePrefix + "users WHERE user = '" + playerName + "'");
|
|
|
+
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "huds (user_id, mobhealthbar) VALUES (" + userId + "," + mobHealthbarType.name() + ")");
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "cooldowns (user_id) VALUES (" + userId + ")");
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "skills (user_id) VALUES (" + userId + ")");
|
|
|
+ SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "experience (user_id) VALUES (" + userId + ")");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void addFlatfilePlayer() {
|
|
|
+ try {
|
|
|
+ // Open the file to write the player
|
|
|
+ BufferedWriter out = new BufferedWriter(new FileWriter(mcMMO.getUsersFilePath(), true));
|
|
|
+
|
|
|
+ // Add the player to the end
|
|
|
+ out.append(playerName).append(":");
|
|
|
+ out.append("0:"); // Mining
|
|
|
+ out.append(":");
|
|
|
+ out.append(":");
|
|
|
+ out.append("0:"); // Xp
|
|
|
+ out.append("0:"); // Woodcutting
|
|
|
+ out.append("0:"); // WoodCuttingXp
|
|
|
+ out.append("0:"); // Repair
|
|
|
+ out.append("0:"); // Unarmed
|
|
|
+ out.append("0:"); // Herbalism
|
|
|
+ out.append("0:"); // Excavation
|
|
|
+ out.append("0:"); // Archery
|
|
|
+ out.append("0:"); // Swords
|
|
|
+ out.append("0:"); // Axes
|
|
|
+ out.append("0:"); // Acrobatics
|
|
|
+ out.append("0:"); // RepairXp
|
|
|
+ out.append("0:"); // UnarmedXp
|
|
|
+ out.append("0:"); // HerbalismXp
|
|
|
+ out.append("0:"); // ExcavationXp
|
|
|
+ out.append("0:"); // ArcheryXp
|
|
|
+ out.append("0:"); // SwordsXp
|
|
|
+ out.append("0:"); // AxesXp
|
|
|
+ out.append("0:"); // AcrobaticsXp
|
|
|
+ out.append(":");
|
|
|
+ out.append("0:"); // Taming
|
|
|
+ out.append("0:"); // TamingXp
|
|
|
+ out.append("0:"); // DATS
|
|
|
+ out.append("0:"); // DATS
|
|
|
+ out.append("0:"); // DATS
|
|
|
+ out.append("0:"); // DATS
|
|
|
+ out.append("0:"); // DATS
|
|
|
+ out.append("0:"); // DATS
|
|
|
+ out.append("0:"); // DATS
|
|
|
+ out.append(hudType.toString()).append(":"); // HUD
|
|
|
+ out.append("0:"); // Fishing
|
|
|
+ out.append("0:"); // FishingXp
|
|
|
+ out.append("0:"); // Blast Mining
|
|
|
+ out.append(String.valueOf(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR)).append(":"); // LastLogin
|
|
|
+ out.append(mobHealthbarType.toString()).append(":"); // Mob Healthbar HUD
|
|
|
+
|
|
|
+ // Add more in the same format as the line above
|
|
|
+
|
|
|
+ out.newLine();
|
|
|
+ out.close();
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean loadFlatfile() {
|
|
|
+ try {
|
|
|
+ // Open the user file
|
|
|
+ FileReader file = new FileReader(mcMMO.getUsersFilePath());
|
|
|
+ BufferedReader in = new BufferedReader(file);
|
|
|
+ String line;
|
|
|
+
|
|
|
+ while ((line = in.readLine()) != null) {
|
|
|
+ // Find if the line contains the player we want.
|
|
|
+ String[] character = line.split(":");
|
|
|
+
|
|
|
+ if (!character[0].equalsIgnoreCase(playerName)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ loadSkillData(SkillType.MINING, character, 1);
|
|
|
+ loadSkillData(SkillType.WOODCUTTING, character, 5);
|
|
|
+ loadSkillData(SkillType.REPAIR, character, 7);
|
|
|
+ loadSkillData(SkillType.UNARMED, character, 8);
|
|
|
+ loadSkillData(SkillType.HERBALISM, character, 9);
|
|
|
+ loadSkillData(SkillType.EXCAVATION, character, 10);
|
|
|
+ loadSkillData(SkillType.ARCHERY, character, 11);
|
|
|
+ loadSkillData(SkillType.SWORDS, character, 12);
|
|
|
+ loadSkillData(SkillType.AXES, character, 13);
|
|
|
+ loadSkillData(SkillType.ACROBATICS, character, 14);
|
|
|
+ loadSkillData(SkillType.TAMING, character, 24);
|
|
|
+ loadSkillData(SkillType.FISHING, character, 34);
|
|
|
+
|
|
|
+ loadSkillXpData(SkillType.MINING, character, 4);
|
|
|
+ loadSkillXpData(SkillType.WOODCUTTING, character, 6);
|
|
|
+ loadSkillXpData(SkillType.REPAIR, character, 15);
|
|
|
+ loadSkillXpData(SkillType.UNARMED, character, 16);
|
|
|
+ loadSkillXpData(SkillType.HERBALISM, character, 17);
|
|
|
+ loadSkillXpData(SkillType.EXCAVATION, character, 18);
|
|
|
+ loadSkillXpData(SkillType.ARCHERY, character, 19);
|
|
|
+ loadSkillXpData(SkillType.SWORDS, character, 20);
|
|
|
+ loadSkillXpData(SkillType.AXES, character, 21);
|
|
|
+ loadSkillXpData(SkillType.ACROBATICS, character, 22);
|
|
|
+ loadSkillXpData(SkillType.TAMING, character, 25);
|
|
|
+ loadSkillXpData(SkillType.FISHING, character, 35);
|
|
|
+
|
|
|
+ loadDATSData(AbilityType.BERSERK, character, 26);
|
|
|
+ loadDATSData(AbilityType.GIGA_DRILL_BREAKER, character, 27);
|
|
|
+ loadDATSData(AbilityType.TREE_FELLER, character, 28);
|
|
|
+ loadDATSData(AbilityType.GREEN_TERRA, character, 29);
|
|
|
+ loadDATSData(AbilityType.SERRATED_STRIKES, character, 30);
|
|
|
+ loadDATSData(AbilityType.SKULL_SPLITTER, character, 31);
|
|
|
+ loadDATSData(AbilityType.SUPER_BREAKER, character, 32);
|
|
|
+ loadDATSData(AbilityType.BLAST_MINING, character, 36);
|
|
|
+
|
|
|
+ hudType = character.length > 33 ? HudType.valueOf(character[33]) : null;
|
|
|
+ mobHealthbarType = character.length > 38 ? MobHealthbarType.valueOf(character[38]) : null;
|
|
|
+
|
|
|
+ loaded = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ in.close();
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ return loaded;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveMySQL() {
|
|
|
+ if (Config.getInstance().getUseMySQL()) {
|
|
|
+ String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
|
|
+
|
|
|
+ SQLDatabaseManager.write("UPDATE " + tablePrefix + "users SET lastlogin = " + ((int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR)) + " WHERE id = " + userId);
|
|
|
+ SQLDatabaseManager.write("UPDATE " + tablePrefix + "huds SET "
|
|
|
+ + " hudtype = " + hudType.toString()
|
|
|
+ + ", mobhealthbar = " + mobHealthbarType.toString()
|
|
|
+ + " WHERE user_id = " + userId);
|
|
|
+ SQLDatabaseManager.write("UPDATE " + tablePrefix + "cooldowns SET "
|
|
|
+ + " mining = " + skillsDATS.get(AbilityType.SUPER_BREAKER)
|
|
|
+ + ", woodcutting = " + skillsDATS.get(AbilityType.TREE_FELLER)
|
|
|
+ + ", unarmed = " + skillsDATS.get(AbilityType.BERSERK)
|
|
|
+ + ", herbalism = " + skillsDATS.get(AbilityType.GREEN_TERRA)
|
|
|
+ + ", excavation = " + skillsDATS.get(AbilityType.GIGA_DRILL_BREAKER)
|
|
|
+ + ", swords = " + skillsDATS.get(AbilityType.SERRATED_STRIKES)
|
|
|
+ + ", axes = " + skillsDATS.get(AbilityType.SKULL_SPLITTER)
|
|
|
+ + ", blast_mining = " + skillsDATS.get(AbilityType.BLAST_MINING)
|
|
|
+ + " WHERE user_id = " + userId);
|
|
|
+ SQLDatabaseManager.write("UPDATE " + tablePrefix + "skills SET "
|
|
|
+ + " taming = " + skills.get(SkillType.TAMING)
|
|
|
+ + ", mining = " + skills.get(SkillType.MINING)
|
|
|
+ + ", repair = " + skills.get(SkillType.REPAIR)
|
|
|
+ + ", woodcutting = " + skills.get(SkillType.WOODCUTTING)
|
|
|
+ + ", unarmed = " + skills.get(SkillType.UNARMED)
|
|
|
+ + ", herbalism = " + skills.get(SkillType.HERBALISM)
|
|
|
+ + ", excavation = " + skills.get(SkillType.EXCAVATION)
|
|
|
+ + ", archery = " + skills.get(SkillType.ARCHERY)
|
|
|
+ + ", swords = " + skills.get(SkillType.SWORDS)
|
|
|
+ + ", axes = " + skills.get(SkillType.AXES)
|
|
|
+ + ", acrobatics = " + skills.get(SkillType.ACROBATICS)
|
|
|
+ + ", fishing = " + skills.get(SkillType.FISHING)
|
|
|
+ + " WHERE user_id = " + userId);
|
|
|
+ SQLDatabaseManager.write("UPDATE " + tablePrefix + "experience SET "
|
|
|
+ + " taming = " + skillsXp.get(SkillType.TAMING)
|
|
|
+ + ", mining = " + skillsXp.get(SkillType.MINING)
|
|
|
+ + ", repair = " + skillsXp.get(SkillType.REPAIR)
|
|
|
+ + ", woodcutting = " + skillsXp.get(SkillType.WOODCUTTING)
|
|
|
+ + ", unarmed = " + skillsXp.get(SkillType.UNARMED)
|
|
|
+ + ", herbalism = " + skillsXp.get(SkillType.HERBALISM)
|
|
|
+ + ", excavation = " + skillsXp.get(SkillType.EXCAVATION)
|
|
|
+ + ", archery = " + skillsXp.get(SkillType.ARCHERY)
|
|
|
+ + ", swords = " + skillsXp.get(SkillType.SWORDS)
|
|
|
+ + ", axes = " + skillsXp.get(SkillType.AXES)
|
|
|
+ + ", acrobatics = " + skillsXp.get(SkillType.ACROBATICS)
|
|
|
+ + ", fishing = " + skillsXp.get(SkillType.FISHING)
|
|
|
+ + " WHERE user_id = " + userId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveFlatfile() {
|
|
|
+ try {
|
|
|
+ // Open the file
|
|
|
+ BufferedReader in = new BufferedReader(new FileReader(mcMMO.getUsersFilePath()));
|
|
|
+ StringBuilder writer = new StringBuilder();
|
|
|
+ String line;
|
|
|
+
|
|
|
+ // While not at the end of the file
|
|
|
+ while ((line = in.readLine()) != null) {
|
|
|
+ // Read the line in and copy it to the output it's not the player we want to edit
|
|
|
+ if (!line.split(":")[0].equalsIgnoreCase(playerName)) {
|
|
|
+ writer.append(line).append("\r\n");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // Otherwise write the new player information
|
|
|
+ writer.append(playerName).append(":");
|
|
|
+ writer.append(skills.get(SkillType.MINING)).append(":");
|
|
|
+ writer.append(":");
|
|
|
+ writer.append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.MINING)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.WOODCUTTING)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.WOODCUTTING)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.REPAIR)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.UNARMED)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.HERBALISM)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.EXCAVATION)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.ARCHERY)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.SWORDS)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.AXES)).append(":");
|
|
|
+ writer.append(skills.get(SkillType.ACROBATICS)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.REPAIR)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.UNARMED)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.HERBALISM)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.EXCAVATION)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.ARCHERY)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.SWORDS)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.AXES)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.ACROBATICS)).append(":");
|
|
|
+ writer.append(":");
|
|
|
+ writer.append(skills.get(SkillType.TAMING)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.TAMING)).append(":");
|
|
|
+ writer.append(skillsDATS.get(AbilityType.BERSERK)).append(":");
|
|
|
+ writer.append(skillsDATS.get(AbilityType.GIGA_DRILL_BREAKER)).append(":");
|
|
|
+ writer.append(skillsDATS.get(AbilityType.TREE_FELLER)).append(":");
|
|
|
+ writer.append(skillsDATS.get(AbilityType.GREEN_TERRA)).append(":");
|
|
|
+ writer.append(skillsDATS.get(AbilityType.SERRATED_STRIKES)).append(":");
|
|
|
+ writer.append(skillsDATS.get(AbilityType.SKULL_SPLITTER)).append(":");
|
|
|
+ writer.append(skillsDATS.get(AbilityType.SUPER_BREAKER)).append(":");
|
|
|
+ writer.append(hudType.toString()).append(":");
|
|
|
+ writer.append(skills.get(SkillType.FISHING)).append(":");
|
|
|
+ writer.append(skillsXp.get(SkillType.FISHING)).append(":");
|
|
|
+ writer.append(skillsDATS.get(AbilityType.BLAST_MINING)).append(":");
|
|
|
+ writer.append(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR).append(":");
|
|
|
+ writer.append(mobHealthbarType.toString()).append(":");
|
|
|
+ writer.append("\r\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ in.close();
|
|
|
+
|
|
|
+ // Write the new file
|
|
|
+ FileWriter out = new FileWriter(mcMMO.getUsersFilePath());
|
|
|
+ out.write(writer.toString());
|
|
|
+ out.flush();
|
|
|
+ out.close();
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void loadSkillXpData(SkillType skill, String[] data, int dataIndex) {
|
|
|
+ if (data.length > dataIndex) {
|
|
|
+ skillsXp.put(skill, Integer.valueOf(data[dataIndex]));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void loadSkillData(SkillType skill, String[] data, int dataIndex) {
|
|
|
+ if (data.length > dataIndex) {
|
|
|
+ skills.put(skill, Integer.valueOf(data[dataIndex]));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void loadDATSData(AbilityType ability, String[] data, int dataIndex) {
|
|
|
+ if (data.length > dataIndex) {
|
|
|
+ skillsDATS.put(ability, Integer.valueOf(data[dataIndex]));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|