aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--src/main/java/de/cowtipper/cowlection/command/MooCommand.java3
-rw-r--r--src/main/java/de/cowtipper/cowlection/data/DataHelper.java1
-rw-r--r--src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java2
-rw-r--r--src/main/java/de/cowtipper/cowlection/data/HyStalkingData.java15
-rw-r--r--src/main/java/de/cowtipper/cowlection/data/XpTables.java29
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;
+ }
}
}
}