diff options
6 files changed, 38 insertions, 14 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 2429668..eba8214 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - added average secrets per completion - Dungeon Party Finder: customizable Party Notes filters (`/moo dungeon rules` or `/moo dr`) - Add and edit additional rules to mark Dungeon parties based on their Party notes -- Added data for Enderman slayer, Voidling minions, and Hard Stone minions +- Added data for Enderman slayer, Voidling minions, Hard Stone minions, and Golden Dragon (lvl 101+ pets) - New keybindings to... 1) run `/moo waila` command (disabled by default; MC Options > Controls > `Cowlection`) 2) copy a single item to clipboard as JSON with <kbd>CTRL</kbd> + <kbd>C</kbd> diff --git a/src/main/java/de/cowtipper/cowlection/command/MooCommand.java b/src/main/java/de/cowtipper/cowlection/command/MooCommand.java index b8e772b..43a1335 100644 --- a/src/main/java/de/cowtipper/cowlection/command/MooCommand.java +++ b/src/main/java/de/cowtipper/cowlection/command/MooCommand.java @@ -1152,7 +1152,8 @@ public class MooCommand extends CommandBase { .appendSibling(createCmdHelpEntry("update", "Check for new mod updates")) .appendSibling(createCmdHelpEntry("updateHelp", "Show mod update instructions")) .appendSibling(createCmdHelpEntry("version", "View results of last mod update check")) - .appendSibling(createCmdHelpEntry("directory", "Open Minecraft's mods directory")); + .appendSibling(createCmdHelpEntry("directory", "Open Minecraft's mods directory")) + .appendFreshSibling(new MooChatComponent("➡ /commandslist " + EnumChatFormatting.YELLOW + "to list all commands added by your installed mods.").lightPurple().setSuggestCommand("/commandslist")); sender.addChatMessage(usage); } diff --git a/src/main/java/de/cowtipper/cowlection/data/DataHelper.java b/src/main/java/de/cowtipper/cowlection/data/DataHelper.java index 25212ff..f87090c 100644 --- a/src/main/java/de/cowtipper/cowlection/data/DataHelper.java +++ b/src/main/java/de/cowtipper/cowlection/data/DataHelper.java @@ -419,6 +419,7 @@ public final class DataHelper { minions.put("a897f4e0ed295df1c711450b42766bb11835b17770fc90f84f29330ab4a908d1", "Hard Stone IX"); minions.put("5c2e3ff6d131440211dfdff76ad15007bc91243a8359d6a67b784e37f900d7f0", "Hard Stone X"); minions.put("b37997c9ab7c8d6aa55626d2f1c274b6ded842a6e0a4b1671ef743d2527fa73a", "Hard Stone XI"); + minions.put("c2ed3f2bf20b85828b7742460f8c78fd2001ca0380c455b86dadeb80f28bccbd", "Hard Stone XII"); minions.put("bbc571c5527336352e2fee2b40a9edfa2e809f64230779aa01253c6aa535881b", "Wheat I"); minions.put("c62b0508b3fef406833d519da8b08ee078604c78b8ca6e9c138760041fa861bf", "Wheat II"); diff --git a/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java b/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java index 4bf5093..9b51f02 100644 --- a/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java +++ b/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java @@ -319,7 +319,7 @@ public class HySkyBlockStats { } private int getLevel() { - return XpTables.Pet.getLevel(tier, exp); + return XpTables.Pet.getLevel(tier, exp, "GOLDEN_DRAGON".equals(type)); } } diff --git a/src/main/java/de/cowtipper/cowlection/data/HyStalkingData.java b/src/main/java/de/cowtipper/cowlection/data/HyStalkingData.java index ae13df9..fb9f704 100644 --- a/src/main/java/de/cowtipper/cowlection/data/HyStalkingData.java +++ b/src/main/java/de/cowtipper/cowlection/data/HyStalkingData.java @@ -91,31 +91,34 @@ public class HyStalkingData { switch (mode) { case "dynamic": return "Private Island"; - case "hub": - return "Hub"; case "combat_1": return "Spider's Den"; case "combat_2": return "Blazing Fortress"; case "combat_3": return "The End"; + case "dungeon": + return "Dungeons"; + case "dungeon_hub": + return "Dungeons Hub"; case "farming_1": - return "The Barn"; - case "farming_2": - return "Mushroom Desert"; + return "The Farming Islands"; case "foraging_1": - return "The Park"; + return "Floating Islands"; case "mining_1": return "Gold Mine"; case "mining_2": return "Deep Caverns"; case "mining_3": return "Dwarven Mines"; + case "winter": + return "Jerry's Workshop"; default: // fall-through break; } } + // Crystal Hollows, Dark Auction, Hub return Utils.fancyCase(mode); } diff --git a/src/main/java/de/cowtipper/cowlection/data/XpTables.java b/src/main/java/de/cowtipper/cowlection/data/XpTables.java index 74abad5..7123387 100644 --- a/src/main/java/de/cowtipper/cowlection/data/XpTables.java +++ b/src/main/java/de/cowtipper/cowlection/data/XpTables.java @@ -259,7 +259,7 @@ public class XpTables { 12622930, 13639630, 14741330, 15933030, 17219730, 18606430, 20103130, 21719830, 23466530, 25353230); // 91-100 } - public static int getLevel(String rarity, double exp) { + public static int getLevel(String rarity, double exp, boolean hasMaxLvl200) { DataHelper.SkyBlockRarity petRarity = DataHelper.SkyBlockRarity.valueOf(rarity); if (petRarity == DataHelper.SkyBlockRarity.MYTHIC) { // special case: Mystic pets @@ -267,7 +267,21 @@ public class XpTables { } TreeSet<Integer> xpToLevels = PET_XP.get(petRarity); if (xpToLevels != null) { - return xpToLevels.headSet((int) exp, true).size(); + int petLevel = xpToLevels.headSet((int) exp, true).size(); + if (hasMaxLvl200 && petRarity == DataHelper.SkyBlockRarity.LEGENDARY && petLevel == 100) { + // after lvl 100: exp from lvl 99-100 for each level until lvl 200 + int overflowLevels = 1; // lvl 101 = 0 additional exp over lvl 100 + double expOverLvl100 = exp - xpToLevels.last(); + if (expOverLvl100 >= 1) { + overflowLevels += 1; // lvl 102 = 1 additional exp over lvl 100 + expOverLvl100 -= 1; + overflowLevels += Math.min(98, (int) (expOverLvl100 / 1886700)); + } + if (overflowLevels > 0) { + petLevel += overflowLevels; + } + } + return petLevel; } else { return -1; } @@ -276,9 +290,14 @@ public class XpTables { public static int getTotalExp(DataHelper.SkyBlockRarity rarity, int level, int exp) { TreeSet<Integer> xpToLevels = PET_XP.get(rarity); if (xpToLevels != null) { - for (int xpToLevel : xpToLevels) { - if (level-- <= 1) { - return xpToLevel + exp; + if (level > 100) { + int expOverLvl100 = (level >= 102 ? 1 : 0) + Math.max(0, (level - 102) * 1886700); + return xpToLevels.last() + expOverLvl100 + exp; + } else { + for (int xpToLevel : xpToLevels) { + if (level-- <= 1) { + return xpToLevel + exp; + } } } } |