aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/Danker/features
diff options
context:
space:
mode:
authorbowser0000 <bowser0000@gmail.com>2022-08-09 20:32:25 -0400
committerGitHub <noreply@github.com>2022-08-09 20:32:25 -0400
commit4d2a84d9fd2f522b2ade9954f8d40f6d80e2b12b (patch)
tree7f762c94a742a07e5c3939e70d35cf7128071b32 /src/main/java/me/Danker/features
parent48253eddf00cf5d94ecc2eb6b63e7c490b3145be (diff)
parentf56302bee3939677fc3fd015a97b12b5100c45b1 (diff)
downloadSkyblockMod-4d2a84d9fd2f522b2ade9954f8d40f6d80e2b12b.tar.gz
SkyblockMod-4d2a84d9fd2f522b2ade9954f8d40f6d80e2b12b.tar.bz2
SkyblockMod-4d2a84d9fd2f522b2ade9954f8d40f6d80e2b12b.zip
Merge branch 'development' into development
Diffstat (limited to 'src/main/java/me/Danker/features')
-rw-r--r--src/main/java/me/Danker/features/Alerts.java7
-rw-r--r--src/main/java/me/Danker/features/AutoDisplay.java2
-rw-r--r--src/main/java/me/Danker/features/ChatAliases.java6
-rw-r--r--src/main/java/me/Danker/features/ColouredNames.java2
-rw-r--r--src/main/java/me/Danker/features/CrystalHollowWaypoints.java3
-rw-r--r--src/main/java/me/Danker/features/CustomMusic.java69
-rw-r--r--src/main/java/me/Danker/features/FishingSpawnAlerts.java60
-rw-r--r--src/main/java/me/Danker/features/GemstonesLore.java5
-rw-r--r--src/main/java/me/Danker/features/GoldenEnchants.java4
-rw-r--r--src/main/java/me/Danker/features/MinionLastCollected.java142
-rw-r--r--src/main/java/me/Danker/features/loot/FishingTracker.java6
-rw-r--r--src/main/java/me/Danker/features/loot/LootDisplay.java118
-rw-r--r--src/main/java/me/Danker/features/loot/LootTracker.java25
-rw-r--r--src/main/java/me/Danker/features/loot/TrophyFishTracker.java143
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java11
15 files changed, 561 insertions, 42 deletions
diff --git a/src/main/java/me/Danker/features/Alerts.java b/src/main/java/me/Danker/features/Alerts.java
index 8f45423..aa6197f 100644
--- a/src/main/java/me/Danker/features/Alerts.java
+++ b/src/main/java/me/Danker/features/Alerts.java
@@ -1,8 +1,8 @@
package me.Danker.features;
import com.google.gson.GsonBuilder;
-import javafx.scene.control.Alert;
import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ModInitEvent;
import me.Danker.utils.Utils;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StringUtils;
@@ -25,6 +25,11 @@ public class Alerts {
public static String configFile;
@SubscribeEvent
+ public void init(ModInitEvent event) {
+ configFile = event.configDirectory + "/dsmalerts.json";
+ }
+
+ @SubscribeEvent
public void onChat(ClientChatReceivedEvent event) {
if (!ToggleCommand.alerts || event.type == 2) return;
diff --git a/src/main/java/me/Danker/features/AutoDisplay.java b/src/main/java/me/Danker/features/AutoDisplay.java
index 7f86035..9ef3b4d 100644
--- a/src/main/java/me/Danker/features/AutoDisplay.java
+++ b/src/main/java/me/Danker/features/AutoDisplay.java
@@ -97,6 +97,8 @@ public class AutoDisplay {
if (lore.get(j).contains("FISHING ROD")) {
if (Utils.tabLocation.equals("Crimson Isle")) {
LootDisplay.display = "fishing_lava";
+ } else if (Utils.tabLocation.equals("Jerry's Workshop")) {
+ LootDisplay.display = "fishing_winter";
} else {
LootDisplay.display = "fishing";
}
diff --git a/src/main/java/me/Danker/features/ChatAliases.java b/src/main/java/me/Danker/features/ChatAliases.java
index ae9e0f7..76ab5f6 100644
--- a/src/main/java/me/Danker/features/ChatAliases.java
+++ b/src/main/java/me/Danker/features/ChatAliases.java
@@ -1,6 +1,7 @@
package me.Danker.features;
import com.google.gson.GsonBuilder;
+import me.Danker.events.ModInitEvent;
import me.Danker.events.PacketWriteEvent;
import net.minecraft.client.Minecraft;
import net.minecraft.network.play.client.C01PacketChatMessage;
@@ -17,6 +18,11 @@ public class ChatAliases {
public static String configFile;
@SubscribeEvent
+ public void init(ModInitEvent event) {
+ configFile = event.configDirectory + "/dsmaliases.json";
+ }
+
+ @SubscribeEvent
public void onPacketWrite(PacketWriteEvent event) {
if (event.packet instanceof C01PacketChatMessage) {
C01PacketChatMessage packet = (C01PacketChatMessage) event.packet;
diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java
index 90d722e..9f7890c 100644
--- a/src/main/java/me/Danker/features/ColouredNames.java
+++ b/src/main/java/me/Danker/features/ColouredNames.java
@@ -72,7 +72,7 @@ public class ColouredNames {
@SubscribeEvent(priority = EventPriority.LOW)
public void onRenderLiving(RenderLivingEvent.Specials.Pre<EntityLivingBase> event) {
- if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return;
+ if (!ToggleCommand.customColouredNames || !ToggleCommand.customNametags || !Utils.inSkyblock) return;
Entity entity = event.entity;
if (entity instanceof EntityArmorStand && !entity.isDead && entity.hasCustomName()) {
diff --git a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java
index a8ee0f9..12aa94e 100644
--- a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java
+++ b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java
@@ -7,7 +7,6 @@ import me.Danker.handlers.ScoreboardHandler;
import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.event.ClickEvent;
@@ -148,7 +147,7 @@ public class CrystalHollowWaypoints {
}
player.addChatMessage(new ChatComponentText("\n" + DankersSkyblockMod.MAIN_COLOUR + "DSM/SBE Crystal Hollows waypoints found. Click to add.\n").appendSibling(add));
}).start();
- } else {
+ } else if (message.indexOf(":") != message.lastIndexOf(":")) {
String text = message.substring(message.indexOf(":") + 2);
Matcher matcher = skytilsPattern.matcher(text);
diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java
index 3ea8d1f..38e4ba0 100644
--- a/src/main/java/me/Danker/features/CustomMusic.java
+++ b/src/main/java/me/Danker/features/CustomMusic.java
@@ -2,6 +2,8 @@ package me.Danker.features;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ModInitEvent;
+import me.Danker.events.PostConfigInitEvent;
import me.Danker.handlers.ScoreboardHandler;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
@@ -67,6 +69,7 @@ public class CustomMusic {
public static Song park;
public static int parkVolume;
+ static int curPhase = 0;
@SubscribeEvent
public void onWorldChange(WorldEvent.Load event) {
@@ -94,9 +97,29 @@ public class CustomMusic {
firstLine.contains("30,344") || // F4
firstLine.contains("livid") || // F5
firstLine.contains("sadan") || // F6
- firstLine.contains("maxor")) { // F7
-
- if (ToggleCommand.dungeonBossMusic) dungeonboss.start();
+ firstLine.contains("maxor") || // F7
+ firstLine.contains("f7")) {
+
+ if (ToggleCommand.dungeonBossMusic) {
+ switch (curPhase) {
+ case -1:
+ break;
+ case 2:
+ phase2.start();
+ break;
+ case 3:
+ phase3.start();
+ break;
+ case 4:
+ phase4.start();
+ break;
+ case 5:
+ phase5.start();
+ break;
+ default:
+ dungeonboss.start();
+ }
+ }
}
}
} else {
@@ -153,22 +176,27 @@ public class CustomMusic {
}
}
- if (message.contains(":")) return;
-
if (Utils.inDungeons) {
if (ToggleCommand.dungeonBossMusic) {
- if (message.startsWith("[BOSS] Storm: Pathetic Maxor")) {
+ if (phase2.hasSongs() && message.startsWith("[BOSS] Storm: Pathetic Maxor")) {
phase2.start();
- } else if (message.startsWith("[BOSS] Goldor: Who dares trespass into my domain?")) {
+ curPhase = 2;
+ } else if (phase3.hasSongs() && message.startsWith("[BOSS] Goldor: Who dares trespass into my domain?")) {
phase3.start();
- } else if (message.startsWith("[BOSS] Necron: You went further than any human before")) {
+ curPhase = 3;
+ } else if (phase4.hasSongs() && message.startsWith("[BOSS] Necron: You went further than any human before")) {
phase4.start();
- } else if (message.startsWith("[BOSS] ") && message.endsWith("You.. again?")) {
+ curPhase = 4;
+ } else if (phase5.hasSongs() && message.startsWith("[BOSS] ") && message.endsWith("You.. again?")) {
phase5.start();
+ curPhase = 5;
}
}
+ if (message.contains(":")) return;
+
if (message.contains("EXTRA STATS ")) {
+ curPhase = -1; // force no play
dungeonboss.stop();
bloodroom.stop();
dungeon.stop();
@@ -190,6 +218,11 @@ public class CustomMusic {
}
}
+ @SubscribeEvent
+ public void postConfigInit(PostConfigInitEvent event) {
+ init(event.configDirectory);
+ }
+
public static void init(String configDirectory) {
if (configDirectory == null) return;
File directory = new File(configDirectory + "/dsmmusic");
@@ -205,7 +238,7 @@ public class CustomMusic {
phase4 = new Song(directory, "phasefour", phase4Volume);
phase5 = new Song(directory, "phasefive", phase5Volume);
hub = new Song(directory, "hub", hubVolume);
- island = new Song(directory, "island", hubVolume);
+ island = new Song(directory, "island", islandVolume);
dungeonHub = new Song(directory, "dungeonhub", dungeonHubVolume);
farmingIslands = new Song(directory, "farmingislands", farmingIslandsVolume);
goldMine = new Song(directory, "goldmine", goldMineVolume);
@@ -238,6 +271,7 @@ public class CustomMusic {
if (crimsonIsle != null) crimsonIsle.stop();
if (end != null) end.stop();
if (park != null) park.stop();
+ curPhase = 0;
}
public static class Song {
@@ -263,6 +297,7 @@ public class CustomMusic {
public void start() throws UnsupportedAudioFileException, LineUnavailableException, IOException {
try {
+ if (music == null) music = AudioSystem.getClip();
if (!music.isRunning()) {
reset();
shuffle();
@@ -307,14 +342,20 @@ public class CustomMusic {
return false;
}
- float decibels = (float) (20 * Math.log(volume / 100.0));
- FloatControl control = (FloatControl) music.getControl(FloatControl.Type.MASTER_GAIN);
- if (decibels <= control.getMinimum() || decibels >= control.getMaximum()) return false;
- control.setValue(decibels);
+ if (music != null) {
+ float decibels = (float) (20 * Math.log(volume / 100.0));
+ FloatControl control = (FloatControl) music.getControl(FloatControl.Type.MASTER_GAIN);
+ if (decibels <= control.getMinimum() || decibels >= control.getMaximum()) return false;
+ control.setValue(decibels);
+ }
return true;
}
+ public boolean hasSongs() {
+ return playlist.size() > 0;
+ }
+
}
}
diff --git a/src/main/java/me/Danker/features/FishingSpawnAlerts.java b/src/main/java/me/Danker/features/FishingSpawnAlerts.java
new file mode 100644
index 0000000..3f11dfc
--- /dev/null
+++ b/src/main/java/me/Danker/features/FishingSpawnAlerts.java
@@ -0,0 +1,60 @@
+package me.Danker.features;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityArmorStand;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraft.world.World;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+
+import java.util.List;
+
+public class FishingSpawnAlerts {
+
+ static boolean lastThunder = false;
+ static boolean lastJawbus = false;
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase != TickEvent.Phase.START) return;
+
+ World world = Minecraft.getMinecraft().theWorld;
+ if (DankersSkyblockMod.tickAmount % 10 == 0) {
+ if (ToggleCommand.fishingAlert && Utils.tabLocation.equals("Crimson Isle") && world != null) {
+ boolean thunder = false;
+ boolean jawbus = false;
+ List<Entity> entities = world.getLoadedEntityList();
+
+ for (Entity entity : entities) {
+ if (entity instanceof EntityArmorStand) {
+ String name = StringUtils.stripControlCodes(entity.getName());
+ if (name.contains("Thunder")) {
+ thunder = true;
+ } else if (name.contains("Lord Jawbus")) {
+ jawbus = true;
+ }
+ }
+ }
+
+ if (thunder && !lastThunder) Utils.createTitle(EnumChatFormatting.AQUA + "THUNDER", 2);
+ if (jawbus && !lastJawbus) Utils.createTitle(EnumChatFormatting.AQUA + "JAWBUS", 2);
+
+ lastThunder = thunder;
+ lastJawbus = jawbus;
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldChange(WorldEvent.Load event) {
+ lastThunder = false;
+ lastJawbus = false;
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/GemstonesLore.java b/src/main/java/me/Danker/features/GemstonesLore.java
index c633c58..b16edaf 100644
--- a/src/main/java/me/Danker/features/GemstonesLore.java
+++ b/src/main/java/me/Danker/features/GemstonesLore.java
@@ -1,6 +1,7 @@
package me.Danker.features;
import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ModInitEvent;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
@@ -18,7 +19,8 @@ public class GemstonesLore {
static Map<String, EnumChatFormatting> gemstoneColours = new HashMap<>();
- public static void init() {
+ @SubscribeEvent
+ public void init(ModInitEvent event) {
gemstoneColours.put("Amber", EnumChatFormatting.GOLD);
gemstoneColours.put("Sapphire", EnumChatFormatting.AQUA);
gemstoneColours.put("Jasper", EnumChatFormatting.LIGHT_PURPLE);
@@ -26,6 +28,7 @@ public class GemstonesLore {
gemstoneColours.put("Topaz", EnumChatFormatting.YELLOW);
gemstoneColours.put("Jade", EnumChatFormatting.GREEN);
gemstoneColours.put("Ruby", EnumChatFormatting.RED);
+ gemstoneColours.put("Opal", EnumChatFormatting.WHITE);
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
diff --git a/src/main/java/me/Danker/features/GoldenEnchants.java b/src/main/java/me/Danker/features/GoldenEnchants.java
index d633ec5..228d43e 100644
--- a/src/main/java/me/Danker/features/GoldenEnchants.java
+++ b/src/main/java/me/Danker/features/GoldenEnchants.java
@@ -1,6 +1,7 @@
package me.Danker.features;
import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ModInitEvent;
import me.Danker.utils.Utils;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
@@ -15,7 +16,8 @@ public class GoldenEnchants {
public static Map<String, String> t6Enchants = new HashMap<>();
public static Pattern t6EnchantPattern = Pattern.compile("");
- public static void init() {
+ @SubscribeEvent
+ public void init(ModInitEvent event) {
t6Enchants.put("9Angler VI", "6Angler VI");
t6Enchants.put("9Bane of Arthropods VI", "6Bane of Arthropods VI");
t6Enchants.put("9Caster VI", "6Caster VI");
diff --git a/src/main/java/me/Danker/features/MinionLastCollected.java b/src/main/java/me/Danker/features/MinionLastCollected.java
new file mode 100644
index 0000000..d793970
--- /dev/null
+++ b/src/main/java/me/Danker/features/MinionLastCollected.java
@@ -0,0 +1,142 @@
+package me.Danker.features;
+
+import com.google.gson.GsonBuilder;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ChestSlotClickedEvent;
+import me.Danker.events.ModInitEvent;
+import me.Danker.events.PacketWriteEvent;
+import me.Danker.utils.RenderUtils;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityArmorStand;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.network.play.client.C02PacketUseEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.BlockPos;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class MinionLastCollected {
+
+ public static List<Minion> minions = new ArrayList<>();
+ public static String configFile;
+ static BlockPos lastMinion = null;
+ public static int LAST_COLLECTED_COLOUR;
+
+ @SubscribeEvent
+ public void init(ModInitEvent event) {
+ configFile = event.configDirectory + "/dsmminions.json";
+ }
+
+ @SubscribeEvent
+ public void onPacketWrite(PacketWriteEvent event) {
+ if (ToggleCommand.minionLastCollected && Utils.inSkyblock && Utils.isInScoreboard("Your Island")) {
+ if (event.packet instanceof C02PacketUseEntity) {
+ C02PacketUseEntity packet = (C02PacketUseEntity) event.packet;
+ Entity entity = packet.getEntityFromWorld(Minecraft.getMinecraft().theWorld);
+ if (isAMinion(entity)) {
+ lastMinion = entity.getPosition();
+ if (getMinionFromPos(lastMinion) == null) {
+ minions.add(new Minion(lastMinion));
+ save();
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onSlotClick(ChestSlotClickedEvent event) {
+ if (ToggleCommand.minionLastCollected && Utils.tabLocation.equals("Private Island")) {
+ String inventoryName = event.inventoryName;
+ ItemStack item = event.item;
+ if (inventoryName.contains(" Minion ") && item != null && lastMinion != null) {
+ if (item.getDisplayName().contains("Collect All")) {
+ getMinionFromPos(lastMinion).collectNow();
+ save();
+ } else if (item.getDisplayName().contains("Pickup Minion")) {
+ minions.remove(getMinionFromPos(lastMinion));
+ save();
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldRender(RenderWorldLastEvent event) {
+ if (ToggleCommand.minionLastCollected && Utils.inSkyblock && Utils.tabLocation.equals("Private Island")) {
+ for (Minion minion : minions) {
+ if (!minionExistsAtPos(minion.pos)) continue;
+ RenderUtils.draw3DString(minion.pos.getX() + 0.5, minion.pos.getY() + 2.2, minion.pos.getZ() + 0.5, minion.getTimeCollected(), LAST_COLLECTED_COLOUR, event.partialTicks);
+ }
+ }
+ }
+
+ public boolean isAMinion(Entity entity) {
+ if (!(entity instanceof EntityArmorStand)) return false;
+ EntityArmorStand armourStand = (EntityArmorStand) entity;
+
+ for (int i = 0; i <= 3; i++) {
+ if (armourStand.getCurrentArmor(i) == null) return false;
+ }
+
+ return (Item.getIdFromItem(armourStand.getCurrentArmor(0).getItem()) == 301 &&
+ Item.getIdFromItem(armourStand.getCurrentArmor(1).getItem()) == 300 &&
+ Item.getIdFromItem(armourStand.getCurrentArmor(2).getItem()) == 299 &&
+ Item.getIdFromItem(armourStand.getCurrentArmor(3).getItem()) == 397);
+ }
+
+ public Minion getMinionFromPos(BlockPos pos) {
+ for (Minion minion : minions) {
+ if (minion.pos.equals(pos)) return minion;
+ }
+ return null;
+ }
+
+ public boolean minionExistsAtPos(BlockPos pos) {
+ AxisAlignedBB aabb = new AxisAlignedBB(pos, pos.add(1, 1, 1));
+ List<EntityArmorStand> entities = Minecraft.getMinecraft().theWorld.getEntitiesWithinAABB(EntityArmorStand.class, aabb);
+ return entities.size() > 0; // just assume theres a minion there
+ }
+
+ public static void save() {
+ try (FileWriter writer = new FileWriter(configFile)) {
+ new GsonBuilder().create().toJson(minions, writer);
+ writer.flush();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public static class Minion {
+
+ public BlockPos pos;
+ public double lastCollect;
+
+ public Minion(BlockPos pos) {
+ this.pos = pos;
+ this.lastCollect = -1;
+ }
+
+ public String getTimeCollected() {
+ String lastCollected = "Last Collected: ";
+ if (lastCollect == -1) {
+ return lastCollected + "Never";
+ }
+ return lastCollected + Utils.getTimeBetween(lastCollect, System.currentTimeMillis() / 1000) + " ago";
+ }
+
+ public void collectNow() {
+ lastCollect = System.currentTimeMillis() / 1000;
+ }
+
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/FishingTracker.java b/src/main/java/me/Danker/features/loot/FishingTracker.java
index f8adfa2..1690793 100644
--- a/src/main/java/me/Danker/features/loot/FishingTracker.java
+++ b/src/main/java/me/Danker/features/loot/FishingTracker.java
@@ -125,8 +125,8 @@ public class FishingTracker {
public static int taurusesSession = 0;
public static int thundersSession = 0;
public static int lordJawbusesSession = 0;
- public static double jawbusTimeSession = 0;
- public static int jawbusSCsSession = 0;
+ public static double jawbusTimeSession = -1;
+ public static int jawbusSCsSession = -1;
@SubscribeEvent
public void onChat(ClientChatReceivedEvent event) {
@@ -174,7 +174,7 @@ public class FishingTracker {
seaArchersSession++;
ConfigHandler.writeIntConfig("fishing", "seaArcher", seaArchers);
increaseSeaCreatures();
- } else if (message.contains("The Monster of the Deep has emerged")) {
+ } else if (message.contains("The Rider of the Deep has emerged")) {
monsterOfTheDeeps++;
monsterOfTheDeepsSession++;
ConfigHandler.writeIntConfig("fishing", "monsterOfDeep", monsterOfTheDeeps);
diff --git a/src/main/java/me/Danker/features/loot/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java
index 7832362..fe68c3e 100644
--- a/src/main/java/me/Danker/features/loot/LootDisplay.java
+++ b/src/main/java/me/Danker/features/loot/LootDisplay.java
@@ -946,6 +946,124 @@ public class LootDisplay {
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
+ case "fishing_trophy":
+ dropsText = EnumChatFormatting.WHITE + "Sulpher Skitter:\n" +
+ EnumChatFormatting.WHITE + "Obfuscated 1:\n" +
+ EnumChatFormatting.WHITE + "Steaminghot Flounder:\n" +
+ EnumChatFormatting.WHITE + "Gusher:\n" +
+ EnumChatFormatting.WHITE + "Blobfish:\n" +
+ EnumChatFormatting.GREEN + "Obfuscated 2:\n" +
+ EnumChatFormatting.GREEN + "Slugfish:\n" +
+ EnumChatFormatting.GREEN + "Flyfish:\n" +
+ EnumChatFormatting.BLUE + "Obfuscated 3:\n" +
+ EnumChatFormatting.BLUE + "Lavahorse:\n" +
+ EnumChatFormatting.BLUE + "Mana Ray:\n" +
+ EnumChatFormatting.BLUE + "Volcanic Stonefish:\n" +
+ EnumChatFormatting.BLUE + "Vanille:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Skeleton Fish:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Moldfin:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Soul Fish:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Karate Fish:\n" +
+ EnumChatFormatting.GOLD + "Golden Fish:";
+ if (!ToggleCommand.showTrophyCompletion) countText = EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Sulpher Skitter") + "\n" +
+ EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 1") + "\n" +
+ EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Steaming-Hot Flounder") + "\n" +
+ EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Gusher") + "\n" +
+ EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Blobfish") + "\n" +
+ EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 2") + "\n" +
+ EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Slugfish") + "\n" +
+ EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Flyfish") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 3") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Lavahorse") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Mana Ray") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Volcanic Stonefish") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Vanille") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Skeleton Fish") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Moldfin") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Soul Fish") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Karate Fish") + "\n" +
+ EnumChatFormatting.GOLD + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Golden Fish");
+
+ if (ToggleCommand.showTrophyCompletion) {
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Sulpher Skitter", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Obfuscated 1", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Steaming-Hot Flounder", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (2 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Gusher", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (3 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Blobfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (4 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Obfuscated 2", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (5 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Slugfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (6 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Flyfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (7 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Obfuscated 3", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (8 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Lavahorse", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (9 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Mana Ray", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (10 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Volcanic Stonefish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (11 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Vanille", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (12 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Skeleton Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (13 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Moldfin", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (14 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Soul Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (15 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Karate Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (16 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Golden Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (17 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale);
+ }
+ break;
+ case "fishing_trophy_session":
+ dropsText = EnumChatFormatting.WHITE + "Sulpher Skitter:\n" +
+ EnumChatFormatting.WHITE + "Obfuscated 1:\n" +
+ EnumChatFormatting.WHITE + "Steaminghot Flounder:\n" +
+ EnumChatFormatting.WHITE + "Gusher:\n" +
+ EnumChatFormatting.WHITE + "Blobfish:\n" +
+ EnumChatFormatting.GREEN + "Obfuscated 2:\n" +
+ EnumChatFormatting.GREEN + "Slugfish:\n" +
+ EnumChatFormatting.GREEN + "Flyfish:\n" +
+ EnumChatFormatting.BLUE + "Obfuscated 3:\n" +
+ EnumChatFormatting.BLUE + "Lavahorse:\n" +
+ EnumChatFormatting.BLUE + "Mana Ray:\n" +
+ EnumChatFormatting.BLUE + "Volcanic Stonefish:\n" +
+ EnumChatFormatting.BLUE + "Vanille:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Skeleton Fish:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Moldfin:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Soul Fish:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Karate Fish:\n" +
+ EnumChatFormatting.GOLD + "Golden Fish:";
+