Browse Source

SQL fixed player cooldowns being loaded incorrectly Fixes #5042 Fixes #5032

nossr50 1 year ago
parent
commit
600ab0eea7

+ 3 - 0
Changelog.txt

@@ -1,3 +1,6 @@
+Version 2.2.016
+    (SQL) Fixed a bug where skill cooldowns were being loaded for players incorrectly
+
 Version 2.2.015
     Added Maces skill
     Added Mace to repair.vanilla.yml (see notes)

+ 1 - 1
pom.xml

@@ -2,7 +2,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.gmail.nossr50.mcMMO</groupId>
     <artifactId>mcMMO</artifactId>
-    <version>2.2.015</version>
+    <version>2.2.016-SNAPSHOT</version>
     <name>mcMMO</name>
     <url>https://github.com/mcMMO-Dev/mcMMO</url>
     <scm>

+ 20 - 13
src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java

@@ -1219,18 +1219,18 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     private PlayerProfile loadFromResult(String playerName, ResultSet result) throws SQLException {
-        Map<PrimarySkillType, Integer> skills = new EnumMap<>(PrimarySkillType.class); // Skill & Level
-        Map<PrimarySkillType, Float> skillsXp = new EnumMap<>(PrimarySkillType.class); // Skill & XP
-        Map<SuperAbilityType, Integer> skillsDATS = new EnumMap<>(SuperAbilityType.class); // Ability & Cooldown
-        Map<UniqueDataType, Integer> uniqueData = new EnumMap<>(UniqueDataType.class); //Chimaera wing cooldown and other misc info
+        final Map<PrimarySkillType, Integer> skills = new EnumMap<>(PrimarySkillType.class); // Skill & Level
+        final Map<PrimarySkillType, Float> skillsXp = new EnumMap<>(PrimarySkillType.class); // Skill & XP
+        final Map<SuperAbilityType, Integer> skillsDATS = new EnumMap<>(SuperAbilityType.class); // Ability & Cooldown
+        final Map<UniqueDataType, Integer> uniqueData = new EnumMap<>(UniqueDataType.class); //Chimaera wing cooldown and other misc info
         UUID uuid;
         int scoreboardTipsShown;
 
-        final int OFFSET_SKILLS = 0; // TODO update these numbers when the query
-        // changes (a new skill is added)
-        final int OFFSET_XP = 16;
-        final int OFFSET_DATS = 29;
-        final int OFFSET_OTHER = 42;
+        final int SKILL_COLUMNS = 16;
+        final int OFFSET_SKILLS = 0;
+        final int OFFSET_XP = SKILL_COLUMNS;
+        final int OFFSET_DATS = OFFSET_XP + SKILL_COLUMNS;
+        final int OFFSET_OTHER = OFFSET_DATS + SKILL_COLUMNS;
 
         skills.put(PrimarySkillType.TAMING, result.getInt(OFFSET_SKILLS + 1));
         skills.put(PrimarySkillType.MINING, result.getInt(OFFSET_SKILLS + 2));
@@ -1284,17 +1284,24 @@ public final class SQLDatabaseManager implements DatabaseManager {
         skillsDATS.put(SuperAbilityType.TRIDENTS_SUPER_ABILITY, result.getInt(OFFSET_DATS + 15));
         skillsDATS.put(SuperAbilityType.MACES_SUPER_ABILITY, result.getInt(OFFSET_DATS + 16));
 
+        // ORDER IS AS FOLLOWS
+        // MOB HEALTH BAR
+        // SCOREBOARD TIPS
+        // UUID
+        // USER
+
         try {
+            // Mob Health bar is unused, so we add two
+            // TODO: Why even SELECT the mob health bar?
+            //  Refactor later.
             scoreboardTipsShown = result.getInt(OFFSET_OTHER + 2);
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
             scoreboardTipsShown = 0;
         }
 
         try {
             uuid = UUID.fromString(result.getString(OFFSET_OTHER + 3));
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
             uuid = null;
         }
 

+ 6 - 3
src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java

@@ -1059,9 +1059,12 @@ public class McMMOPlayer implements Identified {
         }
     }
 
-    private void tooTiredMultiple(PrimarySkillType primarySkillType, SubSkillType aSubSkill, SuperAbilityType aSuperAbility, SubSkillType bSubSkill, SuperAbilityType bSuperAbility) {
-        String aSuperAbilityCD = LocaleLoader.getString("Skills.TooTired.Named", aSubSkill.getLocaleName(), String.valueOf(calculateTimeRemaining(aSuperAbility)));
-        String bSuperAbilityCD = LocaleLoader.getString("Skills.TooTired.Named", bSubSkill.getLocaleName(), String.valueOf(calculateTimeRemaining(bSuperAbility)));
+    private void tooTiredMultiple(PrimarySkillType primarySkillType, SubSkillType aSubSkill,
+                                  SuperAbilityType aSuperAbility, SubSkillType bSubSkill, SuperAbilityType bSuperAbility) {
+        String aSuperAbilityCD = LocaleLoader.getString("Skills.TooTired.Named", aSubSkill.getLocaleName(),
+                String.valueOf(calculateTimeRemaining(aSuperAbility)));
+        String bSuperAbilityCD = LocaleLoader.getString("Skills.TooTired.Named", bSubSkill.getLocaleName(),
+                String.valueOf(calculateTimeRemaining(bSuperAbility)));
         String allCDStr = aSuperAbilityCD + ", " + bSuperAbilityCD;
 
         NotificationManager.sendPlayerInformation(player, NotificationType.TOOL, "Skills.TooTired.Extra",

+ 4 - 1
src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java

@@ -88,7 +88,10 @@ public class PlayerProfile {
         this.loaded = isLoaded;
     }
 
-    public PlayerProfile(@NotNull String playerName, @Nullable UUID uuid, Map<PrimarySkillType, Integer> levelData, Map<PrimarySkillType, Float> xpData, Map<SuperAbilityType, Integer> cooldownData, int scoreboardTipsShown, Map<UniqueDataType, Integer> uniqueProfileData, @Nullable Long lastLogin) {
+    public PlayerProfile(@NotNull String playerName, @Nullable UUID uuid,
+                         Map<PrimarySkillType, Integer> levelData, Map<PrimarySkillType, Float> xpData,
+                         Map<SuperAbilityType, Integer> cooldownData, int scoreboardTipsShown,
+                         Map<UniqueDataType, Integer> uniqueProfileData, @Nullable Long lastLogin) {
         this.playerName = playerName;
         this.uuid = uuid;
         this.scoreboardTipsShown = scoreboardTipsShown;