aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/Danker/features/loot
diff options
context:
space:
mode:
authorbowser0000 <bowser0000@gmail.com>2021-08-28 02:56:06 -0400
committerbowser0000 <bowser0000@gmail.com>2021-08-28 02:56:06 -0400
commitea8413504f2a6663608367ad6ab5fbcad7e6c029 (patch)
treeff19616c49487a4c7ea338c46f5319e6f2c47555 /src/main/java/me/Danker/features/loot
parent4ea49e306ca14e2f4045045f7895e2c1c5d51d6d (diff)
downloadSkyblockMod-ea8413504f2a6663608367ad6ab5fbcad7e6c029.tar.gz
SkyblockMod-ea8413504f2a6663608367ad6ab5fbcad7e6c029.tar.bz2
SkyblockMod-ea8413504f2a6663608367ad6ab5fbcad7e6c029.zip
A lot of internal changes
Rename RenderOverlay -> RenderOverlayEvent Split loot trackers into own classes Add packet read and write events Move render functions form Utils to RenderUtils Fix warnings in installer frame Move spirit boots fix to own class
Diffstat (limited to 'src/main/java/me/Danker/features/loot')
-rw-r--r--src/main/java/me/Danker/features/loot/CatacombsTracker.java431
-rw-r--r--src/main/java/me/Danker/features/loot/EndermanTracker.java178
-rw-r--r--src/main/java/me/Danker/features/loot/FishingTracker.java285
-rw-r--r--src/main/java/me/Danker/features/loot/GhostTracker.java60
-rw-r--r--src/main/java/me/Danker/features/loot/LootDisplay.java828
-rw-r--r--src/main/java/me/Danker/features/loot/LootTracker.java1295
-rw-r--r--src/main/java/me/Danker/features/loot/MythologicalTracker.java87
-rw-r--r--src/main/java/me/Danker/features/loot/SpiderTracker.java114
-rw-r--r--src/main/java/me/Danker/features/loot/WolfTracker.java116
-rw-r--r--src/main/java/me/Danker/features/loot/ZombieTracker.java143
10 files changed, 1844 insertions, 1693 deletions
diff --git a/src/main/java/me/Danker/features/loot/CatacombsTracker.java b/src/main/java/me/Danker/features/loot/CatacombsTracker.java
new file mode 100644
index 0000000..9de197c
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/CatacombsTracker.java
@@ -0,0 +1,431 @@
+package me.Danker.features.loot;
+
+import me.Danker.events.ChestSlotClickedEvent;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.handlers.ScoreboardHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.util.List;
+
+public class CatacombsTracker {
+
+ // Catacombs Dungeons
+ public static int recombobulators;
+ public static int fumingPotatoBooks;
+ // F1
+ public static int bonzoStaffs;
+ public static double f1CoinsSpent;
+ public static double f1TimeSpent;
+ // F2
+ public static int scarfStudies;
+ public static int adaptiveSwords;
+ public static double f2CoinsSpent;
+ public static double f2TimeSpent;
+ // F3
+ public static int adaptiveHelms;
+ public static int adaptiveChests;
+ public static int adaptiveLegs;
+ public static int adaptiveBoots;
+ public static double f3CoinsSpent;
+ public static double f3TimeSpent;
+ // F4
+ public static int spiritWings;
+ public static int spiritBones;
+ public static int spiritBoots;
+ public static int spiritSwords;
+ public static int spiritBows;
+ public static int epicSpiritPets;
+ public static int legSpiritPets;
+ public static double f4CoinsSpent;
+ public static double f4TimeSpent;
+ // F5
+ public static int warpedStones;
+ public static int shadowAssHelms;
+ public static int shadowAssChests;
+ public static int shadowAssLegs;
+ public static int shadowAssBoots;
+ public static int lastBreaths;
+ public static int lividDaggers;
+ public static int shadowFurys;
+ public static double f5CoinsSpent;
+ public static double f5TimeSpent;
+ // F6
+ public static int ancientRoses;
+ public static int precursorEyes;
+ public static int giantsSwords;
+ public static int necroLordHelms;
+ public static int necroLordChests;
+ public static int necroLordLegs;
+ public static int necroLordBoots;
+ public static int necroSwords;
+ public static double f6CoinsSpent;
+ public static double f6TimeSpent;
+ // F7
+ public static int witherBloods;
+ public static int witherCloaks;
+ public static int implosions;
+ public static int witherShields;
+ public static int shadowWarps;
+ public static int necronsHandles;
+ public static int autoRecombs;
+ public static int witherHelms;
+ public static int witherChests;
+ public static int witherLegs;
+ public static int witherBoots;
+ public static double f7CoinsSpent;
+ public static double f7TimeSpent;
+
+ // Catacombs Dungeons
+ public static int recombobulatorsSession = 0;
+ public static int fumingPotatoBooksSession = 0;
+ // F1
+ public static int bonzoStaffsSession = 0;
+ public static double f1CoinsSpentSession = 0;
+ public static double f1TimeSpentSession = 0;
+ // F2
+ public static int scarfStudiesSession = 0;
+ public static int adaptiveSwordsSession = 0;
+ public static double f2CoinsSpentSession = 0;
+ public static double f2TimeSpentSession = 0;
+ // F3
+ public static int adaptiveHelmsSession = 0;
+ public static int adaptiveChestsSession = 0;
+ public static int adaptiveLegsSession = 0;
+ public static int adaptiveBootsSession = 0;
+ public static double f3CoinsSpentSession = 0;
+ public static double f3TimeSpentSession = 0;
+ // F4
+ public static int spiritWingsSession = 0;
+ public static int spiritBonesSession = 0;
+ public static int spiritBootsSession = 0;
+ public static int spiritSwordsSession = 0;
+ public static int spiritBowsSession = 0;
+ public static int epicSpiritPetsSession = 0;
+ public static int legSpiritPetsSession = 0;
+ public static double f4CoinsSpentSession = 0;
+ public static double f4TimeSpentSession = 0;
+ // F5
+ public static int warpedStonesSession = 0;
+ public static int shadowAssHelmsSession = 0;
+ public static int shadowAssChestsSession = 0;
+ public static int shadowAssLegsSession = 0;
+ public static int shadowAssBootsSession = 0;
+ public static int lastBreathsSession = 0;
+ public static int lividDaggersSession = 0;
+ public static int shadowFurysSession = 0;
+ public static double f5CoinsSpentSession = 0;
+ public static double f5TimeSpentSession = 0;
+ // F6
+ public static int ancientRosesSession = 0;
+ public static int precursorEyesSession = 0;
+ public static int giantsSwordsSession = 0;
+ public static int necroLordHelmsSession = 0;
+ public static int necroLordChestsSession = 0;
+ public static int necroLordLegsSession = 0;
+ public static int necroLordBootsSession = 0;
+ public static int necroSwordsSession = 0;
+ public static double f6CoinsSpentSession = 0;
+ public static double f6TimeSpentSession = 0;
+ // F7
+ public static int witherBloodsSession = 0;
+ public static int witherCloaksSession = 0;
+ public static int implosionsSession = 0;
+ public static int witherShieldsSession = 0;
+ public static int shadowWarpsSession = 0;
+ public static int necronsHandlesSession = 0;
+ public static int autoRecombsSession = 0;
+ public static int witherHelmsSession = 0;
+ public static int witherChestsSession = 0;
+ public static int witherLegsSession = 0;
+ public static int witherBootsSession = 0;
+ public static double f7CoinsSpentSession = 0;
+ public static double f7TimeSpentSession = 0;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ if (message.contains(" ")) {
+ if (message.contains("Recombobulator 3000")) {
+ recombobulators++;
+ recombobulatorsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "recombobulator", recombobulators);
+ } else if (message.contains("Fuming Potato Book")) {
+ fumingPotatoBooks++;
+ fumingPotatoBooksSession++;
+ ConfigHandler.writeIntConfig("catacombs", "fumingBooks", fumingPotatoBooks);
+ } else if (message.contains("Bonzo's Staff")) { // F1
+ bonzoStaffs++;
+ bonzoStaffsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "bonzoStaff", bonzoStaffs);
+ } else if (message.contains("Scarf's Studies")) { // F2
+ scarfStudies++;
+ scarfStudiesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "scarfStudies", scarfStudies);
+ } else if (message.contains("Adaptive Helmet")) { // F3
+ adaptiveHelms++;
+ adaptiveHelmsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveHelm", adaptiveHelms);
+ } else if (message.contains("Adaptive Chestplate")) {
+ adaptiveChests++;
+ adaptiveChestsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveChest", adaptiveChests);
+ } else if (message.contains("Adaptive Leggings")) {
+ adaptiveLegs++;
+ adaptiveLegsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveLegging", adaptiveLegs);
+ } else if (message.contains("Adaptive Boots")) {
+ adaptiveBoots++;
+ adaptiveBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveBoot", adaptiveBoots);
+ } else if (message.contains("Adaptive Blade")) {
+ adaptiveSwords++;
+ adaptiveSwordsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveSword", adaptiveSwords);
+ } else if (message.contains("Spirit Wing")) { // F4
+ spiritWings++;
+ spiritWingsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritWing", spiritWings);
+ } else if (message.contains("Spirit Bone")) {
+ spiritBones++;
+ spiritBonesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritBone", spiritBones);
+ } else if (message.contains("Spirit Boots")) {
+ spiritBoots++;
+ spiritBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritBoot", spiritBoots);
+ } else if (message.contains("[Lvl 1] Spirit")) {
+ String formattedMessage = event.message.getFormattedText();
+ // Unicode colour code messes up here, just gonna remove the symbols
+ if (formattedMessage.contains("5Spirit")) {
+ epicSpiritPets++;
+ epicSpiritPetsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritPetEpic", epicSpiritPets);
+ } else if (formattedMessage.contains("6Spirit")) {
+ legSpiritPets++;
+ legSpiritPetsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritPetLeg", legSpiritPets);
+ }
+ } else if (message.contains("Spirit Sword")) {
+ spiritSwords++;
+ spiritSwordsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritSword", spiritSwords);
+ } else if (message.contains("Spirit Bow")) {
+ spiritBows++;
+ spiritBowsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritBow", spiritBows);
+ } else if (message.contains("Warped Stone")) { // F5
+ warpedStones++;
+ warpedStonesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "warpedStone", warpedStones);
+ } else if (message.contains("Shadow Assassin Helmet")) {
+ shadowAssHelms++;
+ shadowAssHelmsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowAssassinHelm", shadowAssHelms);
+ } else if (message.contains("Shadow Assassin Chestplate")) {
+ shadowAssChests++;
+ shadowAssChestsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowAssassinChest", shadowAssChests);
+ } else if (message.contains("Shadow Assassin Leggings")) {
+ shadowAssLegs++;
+ shadowAssLegsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowAssassinLegging", shadowAssLegs);
+ } else if (message.contains("Shadow Assassin Boots")) {
+ shadowAssBoots++;
+ shadowAssBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowAssassinBoot", shadowAssBoots);
+ } else if (message.contains("Livid Dagger")) {
+ lividDaggers++;
+ lividDaggersSession++;
+ ConfigHandler.writeIntConfig("catacombs", "lividDagger", lividDaggers);
+ } else if (message.contains("Shadow Fury")) {
+ shadowFurys++;
+ shadowFurysSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowFury", shadowFurys);
+ } else if (message.contains("Ancient Rose")) { // F6
+ ancientRoses++;
+ ancientRosesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "ancientRose", ancientRoses);
+ } else if (message.contains("Precursor Eye")) {
+ precursorEyes++;
+ precursorEyesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "precursorEye", precursorEyes);
+ } else if (message.contains("Giant's Sword")) {
+ giantsSwords++;
+ giantsSwordsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "giantsSword", giantsSwords);
+ } else if (message.contains("Necromancer Lord Helmet")) {
+ necroLordHelms++;
+ necroLordHelmsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroLordHelm", necroLordHelms);
+ } else if (message.contains("Necromancer Lord Chestplate")) {
+ necroLordChests++;
+ necroLordChestsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroLordChest", necroLordChests);
+ } else if (message.contains("Necromancer Lord Leggings")) {
+ necroLordLegs++;
+ necroLordLegsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroLordLegging", necroLordLegs);
+ } else if (message.contains("Necromancer Lord Boots")) {
+ necroLordBoots++;
+ necroLordBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroLordBoot", necroLordBoots);
+ } else if (message.contains("Necromancer Sword")) {
+ necroSwords++;
+ necroSwordsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroSword", necroSwords);
+ } else if (message.contains("Wither Blood")) { // F7
+ witherBloods++;
+ witherBloodsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherBlood", witherBloods);
+ } else if (message.contains("Wither Cloak")) {
+ witherCloaks++;
+ witherCloaksSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherCloak", witherCloaks);
+ } else if (message.contains("Implosion")) {
+ implosions++;
+ implosionsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "implosion", implosions);
+ } else if (message.contains("Wither Shield")) {
+ witherShields++;
+ witherShieldsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherShield", witherShields);
+ } else if (message.contains("Shadow Warp")) {
+ shadowWarps++;
+ shadowWarpsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowWarp", shadowWarps);
+ } else if (message.contains("Necron's Handle")) {
+ necronsHandles++;
+ necronsHandlesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necronsHandle", necronsHandles);
+ } else if (message.contains("Auto Recombobulator")) {
+ autoRecombs++;
+ autoRecombsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "autoRecomb", autoRecombs);
+ } else if (message.contains("Wither Helmet")) {
+ witherHelms++;
+ witherHelmsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherHelm", witherHelms);
+ } else if (message.contains("Wither Chestplate")) {
+ witherChests++;
+ witherChestsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherChest", witherChests);
+ } else if (message.contains("Wither Leggings")) {
+ witherLegs++;
+ witherLegsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherLegging", witherLegs);
+ } else if (message.contains("Wither Boots")) {
+ witherBoots++;
+ witherBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherBoot", witherBoots);
+ }
+ }
+
+ if (message.contains("EXTRA STATS ")) {
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ int timeToAdd = 0;
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+ if (sCleaned.contains("The Catacombs (")) {
+ // Add time to floor
+ if (sCleaned.contains("F1")) {
+ f1TimeSpent = Math.floor(f1TimeSpent + timeToAdd);
+ f1TimeSpentSession = Math.floor(f1TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorOneTime", f1TimeSpent);
+ } else if (sCleaned.contains("F2")) {
+ f2TimeSpent = Math.floor(f2TimeSpent + timeToAdd);
+ f2TimeSpentSession = Math.floor(f2TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorTwoTime", f2TimeSpent);
+ } else if (sCleaned.contains("F3")) {
+ f3TimeSpent = Math.floor(f3TimeSpent + timeToAdd);
+ f3TimeSpentSession = Math.floor(f3TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorThreeTime", f3TimeSpent);
+ } else if (sCleaned.contains("F4")) {
+ f4TimeSpent = Math.floor(f4TimeSpent + timeToAdd);
+ f4TimeSpentSession = Math.floor(f4TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFourTime", f4TimeSpent);
+ } else if (sCleaned.contains("F5")) {
+ f5TimeSpent = Math.floor(f5TimeSpent + timeToAdd);
+ f5TimeSpentSession = Math.floor(f5TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFiveTime", f5TimeSpent);
+ } else if (sCleaned.contains("F6")) {
+ f6TimeSpent = Math.floor(f6TimeSpent + timeToAdd);
+ f6TimeSpentSession = Math.floor(f6TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSixTime", f6TimeSpent);
+ } else if (sCleaned.contains("F7")) {
+ f7TimeSpent = Math.floor(f7TimeSpent + timeToAdd);
+ f7TimeSpentSession = Math.floor(f7TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSevenTime", f7TimeSpent);
+ }
+ } else if (sCleaned.contains("Time Elapsed:")) {
+ // Get floor time
+ String time = sCleaned.substring(sCleaned.indexOf(":") + 2);
+ time = time.replaceAll("\\s", "");
+ int minutes = Integer.parseInt(time.substring(0, time.indexOf("m")));
+ int seconds = Integer.parseInt(time.substring(time.indexOf("m") + 1, time.indexOf("s")));
+ timeToAdd = (minutes * 60) + seconds;
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onSlotClick(ChestSlotClickedEvent event) {
+ ItemStack item = event.item;
+
+ if (event.inventoryName.endsWith(" Chest") && item != null && item.getDisplayName().contains("Open Reward Chest")) {
+ List<String> tooltip = item.getTooltip(Minecraft.getMinecraft().thePlayer, Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
+ for (String lineUnclean : tooltip) {
+ String line = StringUtils.stripControlCodes(lineUnclean);
+ if (line.contains("FREE")) {
+ break;
+ } else if (line.contains(" Coins")) {
+ int coinsSpent = Integer.parseInt(line.substring(0, line.indexOf(" ")).replaceAll(",", ""));
+
+ if (Utils.isInScoreboard("The Catacombs (")) {
+ if (Utils.isInScoreboard("F1")) {
+ f1CoinsSpent += coinsSpent;
+ f1CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorOneCoins", f1CoinsSpent);
+ } else if (Utils.isInScoreboard("F2")) {
+ f2CoinsSpent += coinsSpent;
+ f2CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorTwoCoins", f2CoinsSpent);
+ } else if (Utils.isInScoreboard("F3")) {
+ f3CoinsSpent += coinsSpent;
+ f3CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorThreeCoins", f3CoinsSpent);
+ } else if (Utils.isInScoreboard("F4")) {
+ f4CoinsSpent += coinsSpent;
+ f4CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFourCoins", f4CoinsSpent);
+ } else if (Utils.isInScoreboard("F5")) {
+ f5CoinsSpent += coinsSpent;
+ f5CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFiveCoins", f5CoinsSpent);
+ } else if (Utils.isInScoreboard("F6")) {
+ f6CoinsSpent += coinsSpent;
+ f6CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSixCoins", f6CoinsSpent);
+ } else if (Utils.isInScoreboard("F7")) {
+ f7CoinsSpent += coinsSpent;
+ f7CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSevenCoins", f7CoinsSpent);
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/EndermanTracker.java b/src/main/java/me/Danker/features/loot/EndermanTracker.java
new file mode 100644
index 0000000..38b22f9
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/EndermanTracker.java
@@ -0,0 +1,178 @@
+package me.Danker.features.loot;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class EndermanTracker {
+
+ public static int endermanVoidglooms;
+ public static int endermanNullSpheres;
+ public static int endermanTAP;
+ public static int endermanTAPDrops;
+ public static int endermanEndersnakes;
+ public static int endermanSummoningEyes;
+ public static int endermanManaBooks;
+ public static int endermanTuners;
+ public static int endermanAtoms;
+ public static int endermanEspressoMachines;
+ public static int endermanSmartyBooks;
+ public static int endermanEndRunes;
+ public static int endermanChalices;
+ public static int endermanDice;
+ public static int endermanArtifacts;
+ public static int endermanSkins;
+ public static int endermanMergers;
+ public static int endermanCores;
+ public static int endermanEnchantRunes;
+ public static int endermanEnderBooks;
+ public static double endermanTime;
+ public static int endermanBosses;
+
+ public static int endermanVoidgloomsSession = 0;
+ public static int endermanNullSpheresSession = 0;
+ public static int endermanTAPSession = 0;
+ public static int endermanTAPDropsSession = 0;
+ public static int endermanEndersnakesSession = 0;
+ public static int endermanSummoningEyesSession = 0;
+ public static int endermanManaBooksSession = 0;
+ public static int endermanTunersSession = 0;
+ public static int endermanAtomsSession = 0;
+ public static int endermanEspressoMachinesSession = 0;
+ public static int endermanSmartyBooksSession = 0;
+ public static int endermanEndRunesSession = 0;
+ public static int endermanChalicesSession = 0;
+ public static int endermanDiceSession = 0;
+ public static int endermanArtifactsSession = 0;
+ public static int endermanSkinsSession = 0;
+ public static int endermanMergersSession = 0;
+ public static int endermanCoresSession = 0;
+ public static int endermanEnchantRunesSession = 0;
+ public static int endermanEnderBooksSession = 0;
+ public static double endermanTimeSession = -1;
+ public static int endermanBossesSession = -1;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ boolean rng = false;
+
+ if (message.contains(" Enderman Slayer LVL ")) {
+ endermanVoidglooms++;
+ endermanVoidgloomsSession++;
+ if (endermanBosses != -1) {
+ endermanBosses++;
+ }
+ if (endermanBossesSession != -1) {
+ endermanBossesSession++;
+ }
+ ConfigHandler.writeIntConfig("enderman", "voidglooms", endermanVoidglooms);
+ ConfigHandler.writeIntConfig("enderman", "bossRNG", endermanBosses);
+ } else if (message.contains("RARE DROP! (") && message.contains("Twilight Arrow Poison)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ endermanTAP += amount;
+ endermanTAPSession += amount;
+ endermanTAPDrops++;
+ endermanTAPDropsSession++;
+ ConfigHandler.writeIntConfig("enderman", "tap", endermanTAP);
+ ConfigHandler.writeIntConfig("enderman", "tapDrops", endermanTAPDrops);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Endersnake Rune I)")) {
+ endermanEndersnakes++;
+ endermanEndersnakesSession++;
+ ConfigHandler.writeIntConfig("enderman", "endersnakes", endermanEndersnakes);
+ } else if (message.contains("VERY RARE DROP! (Summoning Eye)")) {
+ endermanSummoningEyes++;
+ endermanSummoningEyesSession++;
+ ConfigHandler.writeIntConfig("enderman", "summoningEyes", endermanSummoningEyes);
+ } else if (message.contains("VERY RARE DROP! (Mana Steal I)")) {
+ endermanManaBooks++;
+ endermanManaBooksSession++;
+ ConfigHandler.writeIntConfig("enderman", "manaBooks", endermanManaBooks);
+ } else if (message.contains("VERY RARE DROP! (Transmission Tuner)")) {
+ endermanTuners++;
+ endermanTunersSession++;
+ ConfigHandler.writeIntConfig("enderman", "tuners", endermanTuners);
+ } else if (message.contains("VERY RARE DROP! (Null Atom)")) {
+ endermanAtoms++;
+ endermanAtomsSession++;
+ ConfigHandler.writeIntConfig("enderman", "atoms", endermanAtoms);
+ } else if (message.contains("CRAZY RARE DROP! (Pocket Espresso Machine)")) {
+ rng = true;
+ endermanEspressoMachines++;
+ endermanEspressoMachinesSession++;
+ ConfigHandler.writeIntConfig("enderman", "espressoMachines", endermanEspressoMachines);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.AQUA + "POCKET ESPRESSO MACHINE!", 3);
+ } else if (message.contains("VERY RARE DROP! (Smarty Pants I)")) {
+ endermanSmartyBooks++;
+ endermanSmartyBooksSession++;
+ ConfigHandler.writeIntConfig("enderman", "smartyBooks", endermanSmartyBooks);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" End Rune I)")) {
+ endermanEndRunes++;
+ endermanEndRunesSession++;
+ ConfigHandler.writeIntConfig("enderman", "endRunes", endermanEndRunes);
+ } else if (message.contains("CRAZY RARE DROP! (Handy Blood Chalice)")) {
+ rng = true;
+ endermanChalices++;
+ endermanChalicesSession++;
+ ConfigHandler.writeIntConfig("enderman", "chalices", endermanChalices);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "HANDY BLOOD CHALICE!", 3);
+ } else if (message.contains("VERY RARE DROP! (Sinful Dice)")) {
+ endermanDice++;
+ endermanDiceSession++;
+ ConfigHandler.writeIntConfig("enderman", "dice", endermanDice);
+ } else if (message.contains("CRAZY RARE DROP! (Exceedingly Rare Ender Artifact Upgrader)")) {
+ rng = true;
+ endermanArtifacts++;
+ endermanArtifactsSession++;
+ ConfigHandler.writeIntConfig("enderman", "artifacts", endermanArtifacts);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "ENDER ARTIFACT UPGRADER!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (Void Conqueror Enderman Skin)")) {
+ rng = true;
+ endermanSkins++;
+ endermanSkinsSession++;
+ ConfigHandler.writeIntConfig("enderman", "skins", endermanSkins);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "ENDERMAN SKIN!", 3);
+ } else if (message.contains("VERY RARE DROP! (Etherwarp Merger)")) {
+ endermanMergers++;
+ endermanMergersSession++;
+ ConfigHandler.writeIntConfig("enderman", "mergers", endermanMergers);
+ } else if (message.contains("CRAZY RARE DROP! (Judgement Core)")) {
+ rng = true;
+ endermanCores++;
+ endermanCoresSession++;
+ ConfigHandler.writeIntConfig("enderman", "cores", endermanCores);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "JUDGEMENT CORE!", 5);
+ } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Enchant Rune I)")) {
+ rng = true;
+ endermanEnchantRunes++;
+ endermanEnchantRunesSession++;
+ ConfigHandler.writeIntConfig("enderman", "enchantRunes", endermanEnchantRunes);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GRAY + "ENCHANT RUNE!", 3);
+ } else if (message.contains("INSANE DROP! (Ender Slayer VII)") || message.contains("CRAZY RARE DROP! (Ender Slayer VII)")) {
+ rng = true;
+ endermanEnderBooks++;
+ endermanEnderBooksSession++;
+ ConfigHandler.writeIntConfig("enderman", "enderBooks", endermanEnderBooks);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "ENDER SLAYER VII!", 3);
+ }
+
+ if (rng) {
+ endermanTime = System.currentTimeMillis() / 1000;
+ endermanBosses = 0;
+ endermanTimeSession = System.currentTimeMillis() / 1000;
+ endermanBossesSession = 0;
+ ConfigHandler.writeDoubleConfig("enderman", "timeRNG", endermanTime);
+ ConfigHandler.writeIntConfig("enderman", "bossRNG", 0);
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/FishingTracker.java b/src/main/java/me/Danker/features/loot/FishingTracker.java
new file mode 100644
index 0000000..c54f943
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/FishingTracker.java
@@ -0,0 +1,285 @@
+package me.Danker.features.loot;
+
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class FishingTracker {
+
+ // Fishing
+ public static int seaCreatures;
+ public static int goodCatches;
+ public static int greatCatches;
+ public static int squids;
+ public static int seaWalkers;
+ public static int nightSquids;
+ public static int seaGuardians;
+ public static int seaWitches;
+ public static int seaArchers;
+ public static int monsterOfTheDeeps;
+ public static int catfishes;
+ public static int carrotKings;
+ public static int seaLeeches;
+ public static int guardianDefenders;
+ public static int deepSeaProtectors;
+ public static int hydras;
+ public static int seaEmperors;
+ public static double empTime;
+ public static int empSCs;
+ public static int fishingMilestone;
+ // Fishing Winter
+ public static int frozenSteves;
+ public static int frostyTheSnowmans;
+ public static int grinches;
+ public static int yetis;
+ public static double yetiTime;
+ public static int yetiSCs;
+ // Fishing Festival
+ public static int nurseSharks;
+ public static int blueSharks;
+ public static int tigerSharks;
+ public static int greatWhiteSharks;
+ // Spooky Fishing
+ public static int scarecrows;
+ public static int nightmares;
+ public static int werewolfs;
+ public static int phantomFishers;
+ public static int grimReapers;
+
+ // Fishing
+ public static int seaCreaturesSession = 0;
+ public static int goodCatchesSession = 0;
+ public static int greatCatchesSession = 0;
+ public static int squidsSession = 0;
+ public static int seaWalkersSession = 0;
+ public static int nightSquidsSession = 0;
+ public static int seaGuardiansSession = 0;
+ public static int seaWitchesSession = 0;
+ public static int seaArchersSession = 0;
+ public static int monsterOfTheDeepsSession = 0;
+ public static int catfishesSession = 0;
+ public static int carrotKingsSession = 0;
+ public static int seaLeechesSession = 0;
+ public static int guardianDefendersSession = 0;
+ public static int deepSeaProtectorsSession = 0;
+ public static int hydrasSession = 0;
+ public static int seaEmperorsSession = 0;
+ public static double empTimeSession = -1;
+ public static int empSCsSession = -1;
+ public static int fishingMilestoneSession = 0;
+ // Fishing Winter
+ public static int frozenStevesSession = 0;
+ public static int frostyTheSnowmansSession = 0;
+ public static int grinchesSession = 0;
+ public static int yetisSession = 0;
+ public static double yetiTimeSession = -1;
+ public static int yetiSCsSession = -1;
+ // Fishing Festival
+ public static int nurseSharksSession = 0;
+ public static int blueSharksSession = 0;
+ public static int tigerSharksSession = 0;
+ public static int greatWhiteSharksSession = 0;
+ // Spooky Fishing
+ public static int scarecrowsSession = 0;
+ public static int nightmaresSession = 0;
+ public static int werewolfsSession = 0;
+ public static int phantomFishersSession = 0;
+ public static int grimReapersSession = 0;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ if (message.contains("GOOD CATCH!")) {
+ goodCatches++;
+ goodCatchesSession++;
+ ConfigHandler.writeIntConfig("fishing", "goodCatch", goodCatches);
+ } else if (message.contains("GREAT CATCH!")) {
+ greatCatches++;
+ greatCatchesSession++;
+ ConfigHandler.writeIntConfig("fishing", "greatCatch", greatCatches);
+ } else if (message.contains("A Squid appeared")) {
+ squids++;
+ squidsSession++;
+ ConfigHandler.wr