aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCow <cow@volloeko.de>2022-10-10 22:59:28 +0200
committerCow <cow@volloeko.de>2022-10-10 22:59:28 +0200
commita534e8f516515c9f790b2fd2071e7de088ad778c (patch)
tree11b50949ea6038369190f6dcb017f7ac7ccda46a
parent4261cab2d8056540712318586de5be4779ef49a3 (diff)
downloadCowlection-a534e8f516515c9f790b2fd2071e7de088ad778c.tar.gz
Cowlection-a534e8f516515c9f790b2fd2071e7de088ad778c.tar.bz2
Cowlection-a534e8f516515c9f790b2fd2071e7de088ad778c.zip
Changed a few bits and pieces
-rw-r--r--src/main/java/de/cowtipper/cowlection/command/MooCommand.java2
-rw-r--r--src/main/java/de/cowtipper/cowlection/command/exception/ThrowingConsumer.java2
-rw-r--r--src/main/java/de/cowtipper/cowlection/config/MooConfig.java92
-rw-r--r--src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java2
-rw-r--r--src/main/java/de/cowtipper/cowlection/listener/ChatListener.java4
-rw-r--r--src/main/java/de/cowtipper/cowlection/listener/skyblock/DungeonsListener.java7
-rw-r--r--src/main/java/de/cowtipper/cowlection/listener/skyblock/SkyBlockListener.java10
-rw-r--r--src/main/java/de/cowtipper/cowlection/partyfinder/RuleEditorGui.java4
-rw-r--r--src/main/java/de/cowtipper/cowlection/util/ApiUtils.java2
-rw-r--r--src/main/java/de/cowtipper/cowlection/util/MooChatComponent.java4
-rw-r--r--src/main/java/de/cowtipper/cowlection/util/Utils.java4
-rw-r--r--src/main/resources/assets/cowlection/lang/en_US.lang2
12 files changed, 70 insertions, 65 deletions
diff --git a/src/main/java/de/cowtipper/cowlection/command/MooCommand.java b/src/main/java/de/cowtipper/cowlection/command/MooCommand.java
index 908f90b..aa31166 100644
--- a/src/main/java/de/cowtipper/cowlection/command/MooCommand.java
+++ b/src/main/java/de/cowtipper/cowlection/command/MooCommand.java
@@ -624,7 +624,7 @@ public class MooCommand extends CommandBase {
// last save:
Pair<String, String> fancyLastSave = activeProfile.getFancyLastSave();
sbStats.appendFreshSibling(new MooChatComponent.KeyValueChatComponent("Last profile save", fancyLastSave != null ? fancyLastSave.first() + " ago" : "unknown").setHover(new MooChatComponent.KeyValueTooltipComponent("Last profile save", fancyLastSave != null ? (fancyLastSave.second() == null ? "today" : fancyLastSave.second()) : "unknown")
- .appendFreshSibling(new MooChatComponent("= last time " + (activeProfile.coopCount() == 0 ? stalkedPlayer.getName() : "someone " + EnumChatFormatting.RED + "from " + stalkedPlayer.getName() + "'s profile" + EnumChatFormatting.WHITE) + " has played SkyBlock.").white())));
+ .appendFreshSibling(new MooChatComponent("= last time " + (activeProfile.coopCount() == 0 ? stalkedPlayer.getName() : EnumChatFormatting.RED + "someone from " + stalkedPlayer.getName() + "'s profile" + EnumChatFormatting.WHITE) + " has played SkyBlock.").white())));
main.getChatHelper().sendMessage(sbStats);
} else {
diff --git a/src/main/java/de/cowtipper/cowlection/command/exception/ThrowingConsumer.java b/src/main/java/de/cowtipper/cowlection/command/exception/ThrowingConsumer.java
index 9eae1c3..b31c19d 100644
--- a/src/main/java/de/cowtipper/cowlection/command/exception/ThrowingConsumer.java
+++ b/src/main/java/de/cowtipper/cowlection/command/exception/ThrowingConsumer.java
@@ -29,7 +29,7 @@ public interface ThrowingConsumer<T> extends Consumer<T> {
break;
}
}
- handleException(e, new MooChatComponent(EnumChatFormatting.DARK_RED + "Something went wrong: " + EnumChatFormatting.RED + e.toString()
+ handleException(e, new MooChatComponent(EnumChatFormatting.DARK_RED + "Something went wrong: " + EnumChatFormatting.RED + e
+ (stackTraceInfo == null ? "" : EnumChatFormatting.GRAY + " (" + EnumChatFormatting.WHITE + "in " + EnumChatFormatting.GRAY + stackTraceInfo + EnumChatFormatting.GRAY + ")")));
}
}
diff --git a/src/main/java/de/cowtipper/cowlection/config/MooConfig.java b/src/main/java/de/cowtipper/cowlection/config/MooConfig.java
index ee5f784..fa1ec29 100644
--- a/src/main/java/de/cowtipper/cowlection/config/MooConfig.java
+++ b/src/main/java/de/cowtipper/cowlection/config/MooConfig.java
@@ -325,7 +325,7 @@ public class MooConfig {
// (not visible in config gui: has opened config? or: knows how to move the dungeon overlay?)
Property propHasOpenedConfigGui = cfg.get(configCat.getConfigName(),
- "hasOpenedConfigGui", false, "Already opened config gui?")
+ "hasOpenedConfigGui", false, "Already opened config gui?")
.setShowInGui(false);
// Sub-Category: API settings
@@ -339,7 +339,7 @@ public class MooConfig {
subCat = configCat.addSubCategory("Command settings");
propMooCmdAlias = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "mooCmdAlias", "m", "Alias for /moo command")
+ "mooCmdAlias", "m", "Alias for /moo command")
.setValidationPattern(Pattern.compile("^[A-Za-z]*$")));
Property propFixReplyCmd = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
"fixReplyCmd", true, "Auto-replace /r?"));
@@ -360,7 +360,7 @@ public class MooConfig {
" ‣ Online best friends (if the best friend online checker is enabled)");
propTabCompletableNamesCommands = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "tabCompletableNamesCommands", new String[]{"p", "ah", "ignore", "msg", "tell", "w", "boop", "profile", "friend", "friends"}, "List of commands with a Tab-completable username argument.")
+ "tabCompletableNamesCommands", new String[]{"p", "ah", "ignore", "msg", "tell", "w", "boop", "profile", "friend", "friends"}, "List of commands with a Tab-completable username argument.")
.setValidationPattern(Pattern.compile("^[A-Za-z]+$")));
// Sub-Category: Other settings
@@ -371,7 +371,7 @@ public class MooConfig {
"logsDirs", resolveDefaultLogsDirs(),
"Directories with Minecraft log files"));
Property propDefaultStartDate = subCat.addConfigEntry(cfg.get(CATEGORY_LOGS_SEARCH,
- "defaultStartDate", "3", "Default start date (a number means X months ago, alternatively a fixed date à la yyyy-mm-dd can be used)"))
+ "defaultStartDate", "3", "Default start date (a number means X months ago, alternatively a fixed date à la yyyy-mm-dd can be used)"))
.setValidationPattern(Pattern.compile("^[1-9][0-9]{0,2}|(2[0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]))$"));
Property propMaxLogFileSize = subCat.addConfigEntry(cfg.get(CATEGORY_LOGS_SEARCH,
"maxLogFileSize", 2048, "Max log file size (in KB)?", 50, 10000));
@@ -399,17 +399,17 @@ public class MooConfig {
"Add someone to the best friends list with " + EnumChatFormatting.YELLOW + "/moo add <player>" + EnumChatFormatting.RESET);
Property propShowBestFriendNotifications = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "showBestFriendNotifications", true, "Set to true to receive best friends' login/logout messages, set to false hide them."),
+ "showBestFriendNotifications", true, "Set to true to receive best friends' login/logout messages, set to false hide them."),
new MooConfigPreview(new ChatComponentText("§a§lBest friend §a> §6Cow §r§ejoined.")));
Property propEnableBestFriendNotificationSound = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "enableBestFriendNotificationSound", false, "Set to true to play a notification sound when a best friend comes online"),
+ "enableBestFriendNotificationSound", false, "Set to true to play a notification sound when a best friend comes online"),
new MooConfigPreview("random.pop", Minecraft.getMinecraft().gameSettings.getSoundLevel(SoundCategory.MASTER), 1));
Property propShowFriendNotifications = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "showFriendNotifications", true, "Set to true to receive friends' login/logout messages, set to false hide them."),
+ "showFriendNotifications", true, "Set to true to receive friends' login/logout messages, set to false hide them."),
new MooConfigPreview(new ChatComponentText("§aFriend > §r§aBob §ejoined.")));
Property propShowGuildNotifications = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "showGuildNotifications", true, "Set to true to receive guild members' login/logout messages, set to false hide them."),
+ "showGuildNotifications", true, "Set to true to receive guild members' login/logout messages, set to false hide them."),
new MooConfigPreview(new ChatComponentText("§2Guild > §r§7Herobrian §eleft.")));
@@ -420,7 +420,7 @@ public class MooConfig {
IChatComponent spacer = new MooChatComponent(", ").green();
Property propDoBestFriendsOnlineCheck = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "doBestFriendsOnlineCheck", true, "Set to true to check best friends' online status when joining a server, set to false to disable."),
+ "doBestFriendsOnlineCheck", true, "Set to true to check best friends' online status when joining a server, set to false to disable."),
new MooConfigPreview(new MooChatComponent("§a⬤ Online best friends (§24§a/§216§a): ")
.appendSibling(MooConfigPreview.createDemoOnline("Alice", "Housing", "1 hour 13 minutes 37 seconds")).appendSibling(spacer)
.appendSibling(MooConfigPreview.createDemoOnline("Bob", "Build Battle", "2 hours 13 minutes 37 seconds")).appendSibling(spacer)
@@ -482,7 +482,7 @@ public class MooConfig {
MooConfigPreview nonStackableItemPreview = new MooConfigPreview(MooConfigPreview.createDemoItem("cake", "§dNew Year Cake", new String[]{"§7Given to every player as a", "§7celebration for the 1st SkyBlock", "§7year!", "", "§d§lSPECIAL"}, demoItemExtraAttributes));
Property propTooltipItemAge = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "tooltipItemAge", "always", "Show item age", new String[]{"always", "key press", "never"}),
+ "tooltipItemAge", "always", "Show item age", new String[]{"always", "key press", "never"}),
nonStackableItemPreview);
Property propTooltipItemAgeShortened = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
@@ -506,14 +506,14 @@ public class MooConfig {
"tooltipAuctionHousePriceEach", "always", "Add price per item if multiple items are bought or sold", new String[]{"always", "key press", "never"}), ahItemPreview);
propTooltipAuctionHousePriceEachEnchantments = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "tooltipAuctionHousePriceEachEnchantments", new String[]{"overload", "rejuvenate"}, "Price per lvl 1 book enchantment")
+ "tooltipAuctionHousePriceEachEnchantments", new String[]{"overload", "rejuvenate"}, "Price per lvl 1 book enchantment")
.setValidationPattern(Pattern.compile("^[A-Za-z_ -]+$")));
Property propAuctionHouseMarkEndedAuctions = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
"auctionHouseMarkEndedAuctions", "a letter", "Mark ended auctions", new String[]{"a letter", "a word", "disabled"}));
Property propBazaarSellAllOrder = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "bazaarSellAllOrder", "price (sum)", "Bazaar: sell all order", new String[]{"price (sum)", "item amount", "unordered", "price (each)"}),
+ "bazaarSellAllOrder", "price (sum)", "Bazaar: sell all order", new String[]{"price (sum)", "item amount", "unordered", "price (each)"}),
new MooConfigPreview(MooConfigPreview.createDemoItem("chest", "§aSell Inventory Now", new String[]{"§7Instantly sell anything in", "§7your inventory that can be", "§7sold on the Bazaar.", "", " §a1§7x §aEnchanted Leather §7for §65,263.1 coins", " §a42§7x §fLeather §7for §6436.8 coins", " §a2§7x §fRabbit Hide §7for §642.0 coins", " §a79§7x §fRaw Beef §7for §6450.3 coins", " §a16§7x §aEnchanted Raw Beef §7for §69,867.2 coins", "", "§7You earn: §615,698 coins", "", "§eClick to sell!"}, Collections.emptyMap())));
Property propBazaarSellAllOrderAscDesc = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
@@ -531,7 +531,7 @@ public class MooConfig {
"§r│§8····§r│§8·······§bx§8·································§r│", "§r│§8··§66k§r+---------+----------+---------+---------+│",
"§r│§8····§r24h§8······§r18h§8········§r12h§8·······§r6h§8·······§rnow│", "§r└----------------------------------------------┘"}, Maps.newHashMap()));
Property propBazaarConnectGraphsNodes = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "bazaarConnectGraphsNodes", "always", "Bazaar: connect the graph nodes", new String[]{"always", "key press", "never"}),
+ "bazaarConnectGraphsNodes", "always", "Bazaar: connect the graph nodes", new String[]{"always", "key press", "never"}),
bazaarGraphPreview);
Property propBazaarConnectGraphsLineWidth = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
@@ -544,7 +544,7 @@ public class MooConfig {
"",
"§7Families Found: §e75§6%", "§3---------------§f----- §b3§3/§b4"}, Maps.newHashMap()));
Property propBestiaryOverviewOrder = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "bestiaryOverviewOrder", "fewest kills", "Order of the Bestiary overview?", bestiaryOverviewOrderDefaultValues),
+ "bestiaryOverviewOrder", "fewest kills", "Order of the Bestiary overview?", bestiaryOverviewOrderDefaultValues),
bestiaryOverviewPreview);
// Sub-Category: Item lookup
@@ -580,7 +580,7 @@ public class MooConfig {
"showItemQualityAndFloor", "always", "show item quality + obtained floor?", new String[]{"always", "key press", "never"}));
Property propDungItemQualityPos = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungItemQualityPos", "top", "Position of item quality in tooltip", new String[]{"top", "bottom"}),
+ "dungItemQualityPos", "top", "Position of item quality in tooltip", new String[]{"top", "bottom"}),
new MooConfigPreview(
MooConfigPreview.createDungeonItem("light", "7/17/20 7:22 PM", "§7Gear Score: §d336 §8(526)", "§7Crit Chance: §c+5% §9(Light +2%)", "§7Crit Damage: §c+30% §9(Light +4%) §8(+48.9%)", "§7Bonus Attack Speed: §c+4% §9(Light +4%)", "", "§7Health: §a+126 HP §9(Light +15 HP) §8(+205.38 HP)", "§7Defense: §a+76 §9(Light +4) §8(+123.88)", "§7Speed: §a+4 §9(Light +4) §8(+6.52)", "", "§9Growth V, §9Protection V", "§9Thorns III", "", "§7Increase the damage you deal", "§7with arrows by §c5%§7.", "", "§6Full Set Bonus: Skeleton Soldier", "§7Increase the damage you deal", "§7with arrows by an extra §c25%§7.", "", "§aPerfect 52500 / 52500", "§5§lEPIC DUNGEON LEGGINGS"),
MooConfigPreview.createDungeonItem("clean", "7/11/20 12:27 PM", "§7Gear Score: §d359 §8(561)", "§7Crit Chance: §c+11% §9(Clean +8%)", "§7Crit Damage: §c+26% §8(+42.38%)", "", "§7Health: §a+126 HP §9(Clean +15 HP) §8(+205.38 HP)", "§7Defense: §a+87 §9(Clean +15) §8(+141.81)", "", "§9Growth V, §9Protection V", "§9Thorns III", "", "§7Increase the damage you deal", "§7with arrows by §c5%§7.", "", "§6Full Set Bonus: Skeleton Soldier", "§7Increase the damage you deal", "§7with arrows by an extra §c25%§7.", "", "§aPerfect 52500 / 52500", "§5§lEPIC DUNGEON LEGGINGS")));
@@ -612,7 +612,7 @@ public class MooConfig {
"dungOverlayEnabled", true, "Enable Dungeon performance overlay?"));
Property propDungOverlayPositionX = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungOverlayPositionX", 6, "Dungeon performance overlay position: x value", 0, 1000),
+ "dungOverlayPositionX", 6, "Dungeon performance overlay position: x value", 0, 1000),
null, "‰", // per mille
(slider) -> {
MooConfig.dungOverlayPositionX = slider.getValueInt();
@@ -620,7 +620,7 @@ public class MooConfig {
});
Property propDungOverlayPositionY = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungOverlayPositionY", 200, "Dungeon performance overlay position: y value", 0, 1000),
+ "dungOverlayPositionY", 200, "Dungeon performance overlay position: y value", 0, 1000),
null, "‰", // per mille
(slider) -> {
MooConfig.dungOverlayPositionY = slider.getValueInt();
@@ -628,7 +628,7 @@ public class MooConfig {
});
Property propDungOverlayGuiScale = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungOverlayGuiScale", 100, "Dungeon performance overlay GUI scale", 50, 200),
+ "dungOverlayGuiScale", 100, "Dungeon performance overlay GUI scale", 50, 200),
null, "%",
(slider) -> {
MooConfig.dungOverlayGuiScale = slider.getValueInt();
@@ -665,57 +665,57 @@ public class MooConfig {
"dungPartyFinderOverlayDrawBackground", true, "Party Finder: draw colored overlay?"));
Property propDungPartiesSize = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungPartiesSize", true, "Show size of parties?"),
+ "dungPartiesSize", true, "Show size of parties?"),
new MooConfigPreview(new MooChatComponent("Marked with: " + EnumChatFormatting.WHITE + "1 - 4").gray()));
Property propDungDungeonReqMin = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungDungeonReqMin", 0, "Marks parties with lower Dungeon level req than this value")
+ "dungDungeonReqMin", 0, "Marks parties with lower Dungeon level req than this value")
.setMinValue(0).setMaxValue(50),
new MooConfigPreview(new MooChatComponent("Marked with: " + EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + "ᐯ").gray()));
Property propDungClassMin = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungClassMin", 0, "Marks parties with members with lower class level than this value")
+ "dungClassMin", 0, "Marks parties with members with lower class level than this value")
.setMinValue(0).setMaxValue(50),
new MooConfigPreview(new MooChatComponent("Marked with: " + EnumChatFormatting.RED + EnumChatFormatting.BOLD + "ᐯ").gray()));
Property propDungMarkPartiesWithArcher = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungMarkPartiesWithArcher", "if dupe: " + EnumChatFormatting.GOLD + "⬛", "Mark parties with Archer class?",
- new String[]{
- "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
- "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
- "do not mark"}),
+ "dungMarkPartiesWithArcher", "if dupe: " + EnumChatFormatting.GOLD + "⬛", "Mark parties with Archer class?",
+ new String[]{
+ "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
+ "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
+ "do not mark"}),
new MooConfigPreview(DataHelper.DungeonClass.ARCHER));
Property propDungMarkPartiesWithBerserk = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungMarkPartiesWithBerserk", "do not mark", "Mark parties with Berserk class?",
- new String[]{
- "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
- "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
- "do not mark"}),
+ "dungMarkPartiesWithBerserk", "do not mark", "Mark parties with Berserk class?",
+ new String[]{
+ "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
+ "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
+ "do not mark"}),
new MooConfigPreview(DataHelper.DungeonClass.BERSERK));
Property propDungMarkPartiesWithHealer = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungMarkPartiesWithHealer", "do not mark", "Mark parties with Healer class?",
- new String[]{
- "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
- "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
- "do not mark"}),
+ "dungMarkPartiesWithHealer", "do not mark", "Mark parties with Healer class?",
+ new String[]{
+ "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
+ "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
+ "do not mark"}),
new MooConfigPreview(DataHelper.DungeonClass.HEALER));
Property propDungMarkPartiesWithMage = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungMarkPartiesWithMage", "do not mark", "Mark parties with Mage class?",
- new String[]{
- "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
- "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
- "do not mark"}),
+ "dungMarkPartiesWithMage", "do not mark", "Mark parties with Mage class?",
+ new String[]{
+ "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
+ "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
+ "do not mark"}),
new MooConfigPreview(DataHelper.DungeonClass.MAGE));
Property propDungMarkPartiesWithTank = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
- "dungMarkPartiesWithTank", "do not mark", "Mark parties with Tank class?",
- new String[]{
- "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
- "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
- "do not mark"}),
+ "dungMarkPartiesWithTank", "do not mark", "Mark parties with Tank class?",
+ new String[]{
+ "if dupe: " + EnumChatFormatting.GOLD + "⬛", "always: " + EnumChatFormatting.GOLD + "⬛",
+ "if dupe: " + EnumChatFormatting.RED + "⬛", "always: " + EnumChatFormatting.RED + "⬛",
+ "do not mark"}),
new MooConfigPreview(DataHelper.DungeonClass.TANK));
Property propDungPartyFinderRuleEditorSimplified = subCat.addConfigEntry(cfg.get(configCat.getConfigName(),
diff --git a/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java b/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java
index 9046b72..5bb9a85 100644
--- a/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java
+++ b/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java
@@ -68,7 +68,7 @@ public class HyPlayerData {
}
/**
- * Player's Rank prefix: https://github.com/HypixelDev/PublicAPI/wiki/Common-Questions#how-do-i-get-a-players-rank-prefix
+ * Player's Rank prefix: <a href="https://github.com/HypixelDev/PublicAPI/wiki/Common-Questions#how-do-i-get-a-players-rank-prefix">API Docs: How do I get a player's rank prefix?</a>
*
* @return formatted rank
*/
diff --git a/src/main/java/de/cowtipper/cowlection/listener/ChatListener.java b/src/main/java/de/cowtipper/cowlection/listener/ChatListener.java
index 6e66ec5..18f50e9 100644
--- a/src/main/java/de/cowtipper/cowlection/listener/ChatListener.java
+++ b/src/main/java/de/cowtipper/cowlection/listener/ChatListener.java
@@ -36,10 +36,10 @@ public class ChatListener {
* - §aFriend > §r§aNAME §r§eleft.§r
* - §2Guild > §r§aNAME §r§eleft.§r
*/
- private static final Pattern LOGIN_LOGOUT_NOTIFICATION = Pattern.compile("^(?<type>§aFriend|§2Guild) > §r(?<rank>§[0-9a-f])(?<playerName>[\\w]+)(?<joinLeaveSuffix> §r§e(?<joinedLeft>joined|left)\\.)§r$");
+ private static final Pattern LOGIN_LOGOUT_NOTIFICATION = Pattern.compile("^(?<type>§aFriend|§2Guild) > §r(?<rank>§[0-9a-f])(?<playerName>\\w+)(?<joinLeaveSuffix> §r§e(?<joinedLeft>joined|left)\\.)§r$");
private static final Pattern CHAT_MESSAGE_RECEIVED_PATTERN = Pattern.compile("^(?:Party|Guild) > (?:\\[.*?] )?(\\w+)(?: \\[.*?])?: ");
private static final Pattern PRIVATE_MESSAGE_RECEIVED_PATTERN = Pattern.compile("^From (?:\\[.*?] )?(\\w+): ");
- private static final Pattern PARTY_OR_GAME_INVITE_PATTERN = Pattern.compile("^[-]+\\s+(?:\\[.*?] )?(\\w+) has invited you ");
+ private static final Pattern PARTY_OR_GAME_INVITE_PATTERN = Pattern.compile("^-+\\s+(?:\\[.*?] )?(\\w+) has invited you ");
private static final Pattern DUNGEON_FINDER_JOINED_PATTERN = Pattern.compile("^Dungeon Finder > (\\w+) joined the dungeon group! \\(([A-Z][a-z]+) Level (\\d+)\\)$");
private final Cowlection main;
private String lastTypedChars = "";
diff --git a/src/main/java/de/cowtipper/cowlection/listener/skyblock/DungeonsListener.java b/src/main/java/de/cowtipper/cowlection/listener/skyblock/DungeonsListener.java
index 6c0815f..8adc188 100644
--- a/src/main/java/de/cowtipper/cowlection/listener/skyblock/DungeonsListener.java
+++ b/src/main/java/de/cowtipper/cowlection/listener/skyblock/DungeonsListener.java
@@ -99,8 +99,8 @@ public class DungeonsListener {
* <li> ☠ You were killed by [mob] and became a ghost.</li>
* </ul>
*/
- private final Pattern DUNGEON_DEATH_PATTERN = Pattern.compile("^ ☠ (\\w+) (?:.+) and became a ghost\\.$");
- private final Pattern DUNGEON_REVIVED_PATTERN = Pattern.compile("^ ❣ (\\w+) was revived(?:.*?)$");
+ private final Pattern DUNGEON_DEATH_PATTERN = Pattern.compile("^ ☠ (\\w+) .+ and became a ghost\\.$");
+ private final Pattern DUNGEON_REVIVED_PATTERN = Pattern.compile("^ ❣ (\\w+) was revived.*?$");
/**
* Class milestones:
* <ul>
@@ -667,8 +667,7 @@ public class DungeonsListener {
try {
int floorNrArabic = Integer.parseInt(floorMatcher.group(3));
floorNr = Utils.convertArabicToRoman(floorNrArabic); // floor == [0-9]+
- } catch (NumberFormatException ex) {
- floorNr = null;
+ } catch (NumberFormatException ignored) {
}
}
main.getDungeonCache().setQueuedFloor(floorNr);
diff --git a/src/main/java/de/cowtipper/cowlection/listener/skyblock/SkyBlockListener.java b/src/main/java/de/cowtipper/cowlection/listener/skyblock/SkyBlockListener.java
index a75bc20..4f9b386 100644
--- a/src/main/java/de/cowtipper/cowlection/listener/skyblock/SkyBlockListener.java
+++ b/src/main/java/de/cowtipper/cowlection/listener/skyblock/SkyBlockListener.java
@@ -67,8 +67,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SkyBlockListener {
- private static final Pattern ITEM_COUNT_PREFIXED_PATTERN = Pattern.compile("^(?:§[0-9a-fl-or])*[\\d]+x ");
- private static final Pattern ITEM_COUNT_SUFFIXED_PATTERN = Pattern.compile(" (?:§[0-9a-fl-or])*x[\\d]+$");
+ private static final Pattern ITEM_COUNT_PREFIXED_PATTERN = Pattern.compile("^(?:§[0-9a-fl-or])*\\d+x ");
+ private static final Pattern ITEM_COUNT_SUFFIXED_PATTERN = Pattern.compile(" (?:§[0-9a-fl-or])*x\\d+$");
private static final Pattern PET_NAME_PATTERN = Pattern.compile("^§7\\[Lvl (\\d+)] (§[0-9a-f])");
private static final Pattern TIER_SUFFIX_PATTERN = Pattern.compile(" [IVX0-9]+$");
// example: " §a42§7x §fLeather §7for §6436.8 coins"
@@ -607,7 +607,11 @@ public class SkyBlockListener {
|| toolTipLineUnformatted.startsWith("New bid: ") /* special case: 'Submit Bid' item */) {
try {
- long price = numberFormatter.parse(StringUtils.substringBetween(toolTipLineUnformatted, ": ", " coins")).longValue();
+ String hopefullyAPrice = StringUtils.substringBetween(toolTipLineUnformatted, ": ", " coins");
+ if (hopefullyAPrice == null) {
+ return;
+ }
+ long price = numberFormatter.parse(hopefullyAPrice).longValue();
double priceEach = price / (double) itemAmount;
String formattedPriceEach = priceEach < 5000 ? numberFormatter.format(priceEach) : Utils.formatNumberWithAbbreviations(priceEach);
if (superEnchantName != null) {
diff --git a/src/main/java/de/cowtipper/cowlection/partyfinder/RuleEditorGui.java b/src/main/java/de/cowtipper/cowlection/partyfinder/RuleEditorGui.java
index 23b725b..3c2650b 100644
--- a/src/main/java/de/cowtipper/cowlection/partyfinder/RuleEditorGui.java
+++ b/src/main/java/de/cowtipper/cowlection/partyfinder/RuleEditorGui.java
@@ -53,7 +53,7 @@ public class RuleEditorGui extends GuiScreen {
colorCodesExplanation.add(EnumChatFormatting.BOLD + "Minecraft color codes:");
for (EnumChatFormatting chatFormatting : EnumChatFormatting.values()) {
if (chatFormatting.isColor()) {
- colorCodesExplanation.add(Utils.toHumanColorCodes(chatFormatting.toString()) + " → " + chatFormatting.toString() + chatFormatting.getFriendlyName());
+ colorCodesExplanation.add(Utils.toHumanColorCodes(chatFormatting.toString()) + " → " + chatFormatting + chatFormatting.getFriendlyName());
}
}
}
@@ -114,6 +114,8 @@ public class RuleEditorGui extends GuiScreen {
EnumChatFormatting.GRAY + "plz,pls,help" + EnumChatFormatting.RESET + "\" matches \"" + EnumChatFormatting.GRAY + "plz" + EnumChatFormatting.RESET + "\", \"" + EnumChatFormatting.GRAY + "pls" + EnumChatFormatting.RESET + "\" and \"" + EnumChatFormatting.GRAY + "help" + EnumChatFormatting.RESET + "\"");
helpTooltip.add(EnumChatFormatting.YELLOW + " ➊+➋ " + EnumChatFormatting.RESET + "combination of both " + EnumChatFormatting.YELLOW + "(,)" + EnumChatFormatting.RESET + ": for example \""
+ EnumChatFormatting.GRAY + "carry( pls, plz)" + EnumChatFormatting.RESET + "\" matches \"" + EnumChatFormatting.GRAY + "carry" + EnumChatFormatting.RESET + "\", but not \"" + EnumChatFormatting.GRAY + "carry pls" + EnumChatFormatting.RESET + "\" or \"" + EnumChatFormatting.GRAY + "carry plz" + EnumChatFormatting.RESET + "\"");
+ helpTooltip.add("");
+ helpTooltip.add(EnumChatFormatting.GRAY + "If you want to use Regular Expressions (regex), you can enable them via " + EnumChatFormatting.YELLOW + "/moo config regex");
drawHoveringText(helpTooltip, mouseX, mouseY);
} else if (btnClose.isMouseOver()) {
drawHoveringText(Arrays.asList(EnumChatFormatting.RED + "Save & Close", "" + EnumChatFormatting.GRAY + EnumChatFormatting.ITALIC + "Hint:" + EnumChatFormatting.RESET + " alternatively press ESC"), mouseX, mouseY);
diff --git a/src/main/java/de/cowtipper/cowlection/util/ApiUtils.java b/src/main/java/de/cowtipper/cowlection/util/ApiUtils.java
index 0695c1e..4e81004 100644
--- a/src/main/java/de/cowtipper/cowlection/util/ApiUtils.java
+++ b/src/main/java/de/cowtipper/cowlection/util/ApiUtils.java
@@ -28,7 +28,7 @@ import java.util.concurrent.Executors;
public class ApiUtils {
public static final String UUID_NOT_FOUND = "UUID-NOT-FOUND";
private static final String NAME_TO_UUID_URL = "https://api.mojang.com/users/profiles/minecraft/";
- private static final String UUID_TO_NAME_URL = "https://api.mojang.com/user/profile/%s";
+ private static final String UUID_TO_NAME_URL = "https://sessionserver.mojang.com/session/minecraft/profile/%s";
private static final String ONLINE_STATUS_URL = "https://api.hypixel.net/status?key=%s&uuid=%s";
private static final String SKYBLOCK_STATS_URL = "https://api.hypixel.net/skyblock/profiles?key=%s&uuid=%s";
private static final String BAZAAR_URL = "https://api.hypixel.net/skyblock/bazaar";
diff --git a/src/main/java/de/cowtipper/cowlection/util/MooChatComponent.java b/src/main/java/de/cowtipper/cowlection/util/MooChatComponent.java
index 856cbb3..5500345 100644
--- a/src/main/java/de/cowtipper/cowlection/util/MooChatComponent.java
+++ b/src/main/java/de/cowtipper/cowlection/util/MooChatComponent.java
@@ -145,7 +145,7 @@ public class MooChatComponent extends ChatComponentText {
public MooChatComponent setOpenFile(File filePath) {
setChatStyle(getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, filePath.getAbsolutePath())));
- setHover(new MooChatComponent(filePath.isFile() ? "Open " + filePath.getName() : "Open folder: " + filePath.toString()).yellow());
+ setHover(new MooChatComponent(filePath.isFile() ? "Open " + filePath.getName() : "Open folder: " + filePath).yellow());
return this;
}
@@ -171,7 +171,7 @@ public class MooChatComponent extends ChatComponentText {
/**
* Appends the given component in a new line, without inheriting formatting of previous siblings.
*
- * @see ChatComponentText#appendSibling appendSibling
+ * @see ChatComponentText#appendSibling
*/
public MooChatComponent appendFreshSibling(IChatComponent sibling) {
this.siblings.add(new ChatComponentText("\n").appendSibling(sibling));
diff --git a/src/main/java/de/cowtipper/cowlection/util/Utils.java b/src/main/java/de/cowtipper/cowlection/util/Utils.java
index 85a8ae0..344ab64 100644
--- a/src/main/java/de/cowtipper/cowlection/util/Utils.java
+++ b/src/main/java/de/cowtipper/cowlection/util/Utils.java
@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
public final class Utils {
public static final Pattern VALID_UUID_PATTERN = Pattern.compile("^(\\w{8})-(\\w{4})-(\\w{4})-(\\w{4})-(\\w{12})$");
- private static final Pattern VALID_USERNAME = Pattern.compile("^[\\w]{1,16}$");
+ private static final Pattern VALID_USERNAME = Pattern.compile("^\\w{1,16}$");
private static final Pattern ALTERNATE_COLOR_CODES_PATTERN = Pattern.compile("&([0-9a-fk-or])");
private static final Pattern MC_COLOR_CODES_PATTERN = Pattern.compile("§([0-9a-fk-or])");
private static final NavigableMap<Double, Character> NUMBER_SUFFIXES = new TreeMap<>();
@@ -449,7 +449,7 @@ public final class Utils {
.appendSibling(new MooChatComponent(" [open folder]").darkAqua().setOpenFile(targetNormalized.getParentFile())));
} catch (IOException | UnsupportedOperationException e) {
e.printStackTrace();
- Cowlection.getInstance().getChatHelper().sendMessage(EnumChatFormatting.RED, "Couldn't save " + what + ": " + e.toString());
+ Cowlection.getInstance().getChatHelper().sendMessage(EnumChatFormatting.RED, "Couldn't save " + what + ": " + e);
}
}
}
diff --git a/src/main/resources/assets/cowlection/lang/en_US.lang b/src/main/resources/assets/cowlection/lang/en_US.lang
index 04ca274..bf38336 100644
--- a/src/main/resources/assets/cowlection/lang/en_US.lang
+++ b/src/main/resources/assets/cowlection/lang/en_US.lang
@@ -143,7 +143,7 @@ cowlection.config.dungMarkPartiesWithTank.tooltip=Mark parties with Tank class e
cowlection.config.gotoPartyFinderRulesEditor=Open Party Finder Notes Rules Editor
cowlection.config.gotoPartyFinderRulesEditor.tooltip=Add and edit additional rules to mark Dungeon parties based on their Party notes
cowlection.config.dungPartyFinderRuleEditorSimplified=Use simplified Party Finder Notes Rules Editor
-cowlection.config.dungPartyFinderRuleEditorSimplified.tooltip=Use the simplified variant? Only deactivate this if you know what Regular Expressions are and how to use them!
+cowlection.config.dungPartyFinderRuleEditorSimplified.tooltip=Use the simplified variant? Only deactivate this if you know what Regular Expressions (regex) are and how to use them!
cowlection.config.dungPartyFinderRuleEditorShowOpenButton=Show '§7Rule editor ↗§r' button in Party Finder?
cowlection.config.dungPartyFinderRuleEditorShowOpenButton.tooltip=If enabled, displays a button to open the Rules editor from the Dungeon Party Finder
cowlection.config.dungSendWrongFloorWarning=Warn if queued & entered floor are different