From 50113a57f593d0aec94d8627826d95024085345c Mon Sep 17 00:00:00 2001 From: Cow Date: Mon, 1 Feb 2021 15:05:49 +0100 Subject: Changelection - `/moo stalkskyblock` additions: last profile save; Enchanting/Farming/Mining 51-60; Runecrafting 25 - Refined the comma representation of abbreviated numbers - Fixed issue with 'no dung class selected' --- .../de/cowtipper/cowlection/data/HyPlayerData.java | 1 + .../cowtipper/cowlection/data/HySkyBlockStats.java | 23 ++++++++++++++++++--- .../de/cowtipper/cowlection/data/XpTables.java | 24 +++++++++++++++++++--- 3 files changed, 42 insertions(+), 6 deletions(-) (limited to 'src/main/java/de/cowtipper/cowlection/data') diff --git a/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java b/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java index 5a7c168..feca6ba 100644 --- a/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java +++ b/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java @@ -16,6 +16,7 @@ public class HyPlayerData { private long lastLogin; private long lastLogout; private String mostRecentGameType; + @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") private Map achievements; /** diff --git a/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java b/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java index b65e48c..fb9fcff 100644 --- a/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java +++ b/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java @@ -126,6 +126,7 @@ public class HySkyBlockStats { private double experience_skill_taming = -1; private Map slayer_bosses; private List pets; + private JacobData jacob2; private Dungeons dungeons; /** @@ -138,6 +139,10 @@ public class HySkyBlockStats { return Utils.getDurationAsWords(first_join); } + public Pair getFancyLastSave() { + return Utils.getDurationAsWords(last_save); + } + public double getCoinPurse() { return coin_purse; } @@ -149,10 +154,10 @@ public class HySkyBlockStats { public Map getSkills() { Map skills = new TreeMap<>(); if (experience_skill_farming >= 0) { - skills.put(XpTables.Skill.FARMING, XpTables.Skill.FARMING.getLevel(experience_skill_farming)); + skills.put(XpTables.Skill.FARMING, XpTables.Skill.FARMING.getLevel(experience_skill_farming, getMaxFarmingLevel())); } if (experience_skill_mining >= 0) { - skills.put(XpTables.Skill.MINING, XpTables.Skill.MINING.getLevel(experience_skill_mining)); + skills.put(XpTables.Skill.MINING, XpTables.Skill.MINING.getLevel(experience_skill_mining, 60)); } if (experience_skill_combat >= 0) { skills.put(XpTables.Skill.COMBAT, XpTables.Skill.COMBAT.getLevel(experience_skill_combat)); @@ -164,7 +169,7 @@ public class HySkyBlockStats { skills.put(XpTables.Skill.FISHING, XpTables.Skill.FISHING.getLevel(experience_skill_fishing)); } if (experience_skill_enchanting >= 0) { - skills.put(XpTables.Skill.ENCHANTING, XpTables.Skill.ENCHANTING.getLevel(experience_skill_enchanting)); + skills.put(XpTables.Skill.ENCHANTING, XpTables.Skill.ENCHANTING.getLevel(experience_skill_enchanting, 60)); } if (experience_skill_alchemy >= 0) { skills.put(XpTables.Skill.ALCHEMY, XpTables.Skill.ALCHEMY.getLevel(experience_skill_alchemy)); @@ -209,6 +214,14 @@ public class HySkyBlockStats { return null; } + public int getMaxFarmingLevel() { + int farmingLevelCap = 50; + if (jacob2 != null && jacob2.perks != null) { + farmingLevelCap += jacob2.perks.getOrDefault("farming_level_cap", 0); + } + return farmingLevelCap; + } + public List getArmor() { NBTTagCompound nbt = inv_armor.getDecodedData(); List armorList = new ArrayList<>(); @@ -270,6 +283,10 @@ public class HySkyBlockStats { } } + private static class JacobData { + private Map perks; + } + public static class Dungeons { private Map dungeon_types; private Map player_classes; diff --git a/src/main/java/de/cowtipper/cowlection/data/XpTables.java b/src/main/java/de/cowtipper/cowlection/data/XpTables.java index 158fb66..efa576a 100644 --- a/src/main/java/de/cowtipper/cowlection/data/XpTables.java +++ b/src/main/java/de/cowtipper/cowlection/data/XpTables.java @@ -62,6 +62,16 @@ public class XpTables { XP_TO_LEVEL.put(47472425, 48); XP_TO_LEVEL.put(51172425, 49); XP_TO_LEVEL.put(55172425, 50); + XP_TO_LEVEL.put(59472425, 51); + XP_TO_LEVEL.put(64072425, 52); + XP_TO_LEVEL.put(68972425, 53); + XP_TO_LEVEL.put(74172425, 54); + XP_TO_LEVEL.put(79672425, 55); + XP_TO_LEVEL.put(85472425, 56); + XP_TO_LEVEL.put(91572425, 57); + XP_TO_LEVEL.put(97972425, 58); + XP_TO_LEVEL.put(104672425, 59); + XP_TO_LEVEL.put(111672425, 60); XP_TO_LEVEL_ALTERNATIVE.put(0, 0); XP_TO_LEVEL_ALTERNATIVE.put(50, 1); @@ -88,7 +98,7 @@ public class XpTables { XP_TO_LEVEL_ALTERNATIVE.put(47850, 22); XP_TO_LEVEL_ALTERNATIVE.put(60100, 23); XP_TO_LEVEL_ALTERNATIVE.put(75400, 24); - + XP_TO_LEVEL_ALTERNATIVE.put(94450, 25); } Skill() { @@ -101,9 +111,17 @@ public class XpTables { public int getLevel(double exp) { if (alternativeXpFormula) { - return XP_TO_LEVEL_ALTERNATIVE.floorEntry((int) exp).getValue(); + return getLevel(exp, 25); } else { - return XP_TO_LEVEL.floorEntry((int) exp).getValue(); + return getLevel(exp, 50); + } + } + + public int getLevel(double exp, int maxLevel) { + if (alternativeXpFormula) { + return Math.min(XP_TO_LEVEL_ALTERNATIVE.floorEntry((int) exp).getValue(), maxLevel); + } else { + return Math.min(XP_TO_LEVEL.floorEntry((int) exp).getValue(), maxLevel); } } -- cgit