aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md6
-rw-r--r--src/main/java/me/Danker/DankersSkyblockMod.java11
-rw-r--r--src/main/java/me/Danker/commands/DisplayCommand.java11
-rw-r--r--src/main/java/me/Danker/commands/ImportFishingCommand.java39
-rw-r--r--src/main/java/me/Danker/commands/LootCommand.java52
-rw-r--r--src/main/java/me/Danker/commands/ResetLootCommand.java4
-rw-r--r--src/main/java/me/Danker/events/ModInitEvent.java13
-rw-r--r--src/main/java/me/Danker/features/Alerts.java6
-rw-r--r--src/main/java/me/Danker/features/ChatAliases.java6
-rw-r--r--src/main/java/me/Danker/features/CustomMusic.java7
-rw-r--r--src/main/java/me/Danker/features/GemstonesLore.java4
-rw-r--r--src/main/java/me/Danker/features/GoldenEnchants.java4
-rw-r--r--src/main/java/me/Danker/features/MinionLastCollected.java6
-rw-r--r--src/main/java/me/Danker/features/loot/LootDisplay.java76
-rw-r--r--src/main/java/me/Danker/features/loot/TrophyFishTracker.java120
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java11
-rw-r--r--src/main/java/me/Danker/gui/DisplayGui.java18
-rw-r--r--src/main/java/me/Danker/handlers/ConfigHandler.java11
-rw-r--r--src/main/java/me/Danker/utils/Utils.java12
19 files changed, 386 insertions, 31 deletions
diff --git a/README.md b/README.md
index 98bf434..624989f 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,7 @@ Discord Server: https://discord.gg/QsEkNQS
- Maddox menu keybind
- Block starting other slayer quests
- Slayer slain alert
-- Fishing, jerry fishing, fishing festival, spooky fishing, crystal hollows fishing, lava fishing trackers
+- Fishing, jerry fishing, fishing festival, spooky fishing, crystal hollows fishing, lava fishing, trophy fishing trackers
- Expertise kills in fishing rod lore
- Gemstones applied in item lore
- Catacombs trackers
@@ -87,8 +87,8 @@ Discord Server: https://discord.gg/QsEkNQS
- /toggle <too many to list> - Toggles features. /toggle list returns values of every toggle.
- /setkey <key> - Sets API key.
- /getkey - Returns key set with /setkey and copies it to your clipboard.
-- /loot <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological/> [winter/festival/spooky/ch/lava/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead.
-- /display <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological/ghosts/auto/off> [winter/festival/spooky/ch/lava/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active.
+- /loot <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological/> [winter/festival/spooky/ch/lava/trophy/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead.
+- /display <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological/ghosts/auto/off> [winter/festival/spooky/ch/lava/trophy/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active.
- /resetloot <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological/confirm/cancel> - - Resets loot for trackers. /resetloot confirm confirms the reset.
- /move <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/bonzotimer/golemtimer/teammatesinradius/gianthp/abilitycooldowns/dungeonscore/firepillar> <x> <y> - Moves text display to specified X and Y coordinates.
- /scale <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/bonzotimer/golemtimer/teammatesinradius/gianthp/abilitycooldowns/dungeonscore/firepillar> <scale (0.1 - 10)> - Scales text display to a specified multipler between 0.1x and 10x.
diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java
index a63552c..6322c33 100644
--- a/src/main/java/me/Danker/DankersSkyblockMod.java
+++ b/src/main/java/me/Danker/DankersSkyblockMod.java
@@ -4,6 +4,7 @@ import com.google.gson.JsonObject;
import me.Danker.commands.*;
import me.Danker.events.ChestSlotClickedEvent;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
+import me.Danker.events.ModInitEvent;
import me.Danker.events.RenderOverlayEvent;
import me.Danker.features.*;
import me.Danker.features.loot.*;
@@ -177,18 +178,12 @@ public class DankersSkyblockMod {
MinecraftForge.EVENT_BUS.register(new GhostTracker());
MinecraftForge.EVENT_BUS.register(new MythologicalTracker());
MinecraftForge.EVENT_BUS.register(new SpiderTracker());
+ MinecraftForge.EVENT_BUS.register(new TrophyFishTracker());
MinecraftForge.EVENT_BUS.register(new WolfTracker());
MinecraftForge.EVENT_BUS.register(new ZombieTracker());
- Alerts.configFile = configDirectory + "/dsmalerts.json";
- ChatAliases.configFile = configDirectory + "/dsmaliases.json";
- MinionLastCollected.configFile = configDirectory + "/dsmminions.json";
-
+ MinecraftForge.EVENT_BUS.post(new ModInitEvent(configDirectory));
ConfigHandler.reloadConfig();
- GoldenEnchants.init();
- TriviaSolver.init();
- CustomMusic.init(configDirectory);
- GemstonesLore.init();
keyBindings[0] = new KeyBinding("Open Maddox Menu", Keyboard.KEY_M, "Danker's Skyblock Mod");
keyBindings[1] = new KeyBinding("Regular Ability", Keyboard.KEY_NUMPAD4, "Danker's Skyblock Mod");
diff --git a/src/main/java/me/Danker/commands/DisplayCommand.java b/src/main/java/me/Danker/commands/DisplayCommand.java
index 21ada93..c340ed8 100644
--- a/src/main/java/me/Danker/commands/DisplayCommand.java
+++ b/src/main/java/me/Danker/commands/DisplayCommand.java
@@ -21,7 +21,7 @@ public class DisplayCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological/ghost/auto/off> [winter/festival/spooky/ch/lava/session/f(1-7)/mm]";
+ return "/" + getCommandName() + " <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological/ghost/auto/off> [winter/festival/spooky/ch/lava/trophy/session/f(1-7)/mm]";
}
public static String usage(ICommandSender arg0) {
@@ -38,7 +38,7 @@ public class DisplayCommand extends CommandBase {
if (args.length == 1) {
return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "blaze", "fishing", "catacombs", "mythological", "ghost", "auto", "off");
} else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) {
- return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "session");
+ return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "trophy", "session");
} else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) {
return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7", "mm", "master");
} else if (args.length > 1) {
@@ -132,6 +132,13 @@ public class DisplayCommand extends CommandBase {
LootDisplay.display = "fishing_lava";
}
break;
+ case "trophy":
+ if (showSession) {
+ LootDisplay.display = "fishing_trophy_session";
+ } else {
+ LootDisplay.display = "fishing_trophy";
+ }
+ break;
default:
if (showSession) {
LootDisplay.display = "fishing_session";
diff --git a/src/main/java/me/Danker/commands/ImportFishingCommand.java b/src/main/java/me/Danker/commands/ImportFishingCommand.java
index 46d9906..6658bcd 100644
--- a/src/main/java/me/Danker/commands/ImportFishingCommand.java
+++ b/src/main/java/me/Danker/commands/ImportFishingCommand.java
@@ -3,6 +3,7 @@ package me.Danker.commands;
import com.google.gson.JsonObject;
import me.Danker.DankersSkyblockMod;
import me.Danker.features.loot.FishingTracker;
+import me.Danker.features.loot.TrophyFishTracker;
import me.Danker.handlers.APIHandler;
import me.Danker.handlers.ConfigHandler;
import net.minecraft.command.CommandBase;
@@ -63,7 +64,9 @@ public class ImportFishingCommand extends CommandBase {
}
System.out.println("Fetching fishing stats...");
- JsonObject statsObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject().get("stats").getAsJsonObject();
+ JsonObject memberObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject();
+ JsonObject statsObject = memberObject.get("stats").getAsJsonObject();
+ JsonObject trophyObject = memberObject.get("trophy_fish").getAsJsonObject();
FishingTracker.greatCatches = 0;
FishingTracker.goodCatches = 0;
@@ -123,7 +126,7 @@ public class ImportFishingCommand extends CommandBase {
FishingTracker.thunders = getSCFromApi(statsObject, "kills_thunder");
FishingTracker.lordJawbuses = getSCFromApi(statsObject, "kills_lord_jawbus");
- System.out.println("Writing to config...");
+ System.out.println("Writing SC to config...");
ConfigHandler.writeIntConfig("fishing", "goodCatch", FishingTracker.goodCatches);
ConfigHandler.writeIntConfig("fishing", "greatCatch", FishingTracker.greatCatches);
ConfigHandler.writeIntConfig("fishing", "seaCreature", FishingTracker.seaCreatures);
@@ -172,6 +175,27 @@ public class ImportFishingCommand extends CommandBase {
ConfigHandler.writeIntConfig("fishing", "thunder", FishingTracker.thunders);
ConfigHandler.writeIntConfig("fishing", "lordJawbus", FishingTracker.lordJawbuses);
+ TrophyFishTracker.fish = TrophyFishTracker.createEmpty();
+ TrophyFishTracker.fish.add("Sulpher Skitter", getTrophyFromAPI(trophyObject, "sulphur_skitter"));
+ TrophyFishTracker.fish.add("Obfuscated 1", getTrophyFromAPI(trophyObject, "obfuscated_fish_1"));
+ TrophyFishTracker.fish.add("Steaming-Hot Flounder", getTrophyFromAPI(trophyObject, "steaming_hot_flounder"));
+ TrophyFishTracker.fish.add("Obfuscated 2", getTrophyFromAPI(trophyObject, "obfuscated_fish_2"));
+ TrophyFishTracker.fish.add("Gusher", getTrophyFromAPI(trophyObject, "gusher"));
+ TrophyFishTracker.fish.add("Blobfish", getTrophyFromAPI(trophyObject, "blobfish"));
+ TrophyFishTracker.fish.add("Slugfish", getTrophyFromAPI(trophyObject, "slugfish"));
+ TrophyFishTracker.fish.add("Obfuscated 3", getTrophyFromAPI(trophyObject, "obfuscated_fish_3"));
+ TrophyFishTracker.fish.add("Flyfish", getTrophyFromAPI(trophyObject, "flyfish"));
+ TrophyFishTracker.fish.add("Lavahorse", getTrophyFromAPI(trophyObject, "lava_horse"));
+ TrophyFishTracker.fish.add("Mana Ray", getTrophyFromAPI(trophyObject, "mana_ray"));
+ TrophyFishTracker.fish.add("Volcanic Stonefish", getTrophyFromAPI(trophyObject, "volcanic_stonefish"));
+ TrophyFishTracker.fish.add("Vanille", getTrophyFromAPI(trophyObject, "vanille"));
+ TrophyFishTracker.fish.add("Skeleton Fish", getTrophyFromAPI(trophyObject, "skeleton_fish"));
+ TrophyFishTracker.fish.add("Moldfin", getTrophyFromAPI(trophyObject, "moldfin"));
+ TrophyFishTracker.fish.add("Soul Fish", getTrophyFromAPI(trophyObject, "soul_fish"));
+ TrophyFishTracker.fish.add("Karate Fish", getTrophyFromAPI(trophyObject, "karate_fish"));
+ TrophyFishTracker.fish.add("Golden Fish", getTrophyFromAPI(trophyObject, "golden_fish"));
+ TrophyFishTracker.save();
+
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Fishing stats imported."));
}).start();
}
@@ -183,4 +207,15 @@ public class ImportFishingCommand extends CommandBase {
return sc;
}
+ static JsonObject getTrophyFromAPI(JsonObject obj, String name) {
+ JsonObject tiers = new JsonObject();
+
+ tiers.addProperty("BRONZE", obj.has(name + "_bronze") ? obj.get(name + "_bronze").getAsInt() : 0);
+ tiers.addProperty("SILVER", obj.has(name + "_silver") ? obj.get(name + "_silver").getAsInt() : 0);
+ tiers.addProperty("GOLD", obj.has(name + "_gold") ? obj.get(name + "_gold").getAsInt() : 0);
+ tiers.addProperty("DIAMOND", obj.has(name + "_diamond") ? obj.get(name + "_diamond").getAsInt() : 0);
+
+ return tiers;
+ }
+
}
diff --git a/src/main/java/me/Danker/commands/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java
index af5479e..3c224bb 100644
--- a/src/main/java/me/Danker/commands/LootCommand.java
+++ b/src/main/java/me/Danker/commands/LootCommand.java
@@ -24,7 +24,7 @@ public class LootCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological> [winter/festival/spooky/ch/lava/f(1-7)/mm/session]";
+ return "/" + getCommandName() + " <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological> [winter/festival/spooky/ch/lava/trophy/f(1-7)/mm/session]";
}
public static String usage(ICommandSender arg0) {
@@ -41,7 +41,7 @@ public class LootCommand extends CommandBase {
if (args.length == 1) {
return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "blaze", "fishing", "catacombs", "mythological");
} else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) {
- return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "session");
+ return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "trophy", "session");
} else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) {
return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7", "mm", "master");
} else if (args.length > 1) {
@@ -621,6 +621,54 @@ public class LootCommand extends CommandBase {
EnumChatFormatting.AQUA + " Creatures Since Lord Jawbus: " + bossesBetween + "\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
return;
+ } else if (arg1[1].equalsIgnoreCase("trophy")) {
+ if (showSession) {
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + " Trophy Fishing Summary (Current Session):\n" +
+ EnumChatFormatting.WHITE + " Sulpher Skitter " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Sulpher Skitter") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Sulpher Skitter") + "\n" +
+ EnumChatFormatting.WHITE + " Obfuscated 1 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Obfuscated 1") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 1") + "\n" +
+ EnumChatFormatting.WHITE + " Steaminghot Flounder " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Steaming-Hot Flounder") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Steaming-Hot Flounder") + "\n" +
+ EnumChatFormatting.WHITE + " Gusher " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Gusher") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Gusher") + "\n" +
+ EnumChatFormatting.WHITE + " Blobfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Blobfish") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Blobfish") + "\n" +
+ EnumChatFormatting.GREEN + " Obfuscated 2 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Obfuscated 2") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 2") + "\n" +
+ EnumChatFormatting.GREEN + " Slugfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Slugfish") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Slugfish") + "\n" +
+ EnumChatFormatting.GREEN + " Flyfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Flyfish") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Flyfish") + "\n" +
+ EnumChatFormatting.BLUE + " Obfuscated 3 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Obfuscated 3") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 3") + "\n" +
+ EnumChatFormatting.BLUE + " Lavahorse " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Lavahorse") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Lavahorse") + "\n" +
+ EnumChatFormatting.BLUE + " Mana Ray " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Mana Ray") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Mana Ray") + "\n" +
+ EnumChatFormatting.BLUE + " Volcanic Stonefish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Volcanic Stonefish") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Volcanic Stonefish") + "\n" +
+ EnumChatFormatting.BLUE + " Vanille " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Vanille") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Vanille") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Skeleton Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Skeleton Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Skeleton Fish") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Moldfin " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Moldfin") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Moldfin") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Soul Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Soul Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Soul Fish") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Karate Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Karate Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Karate Fish") + "\n" +
+ EnumChatFormatting.GOLD + " Golden Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Golden Fish") + ")" + EnumChatFormatting.GOLD + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Golden Fish") + "\n" +
+ EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + "-------------------"));
+ return;
+ }
+
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + " Trophy Fishing Summary:\n" +
+ EnumChatFormatting.WHITE + " Sulpher Skitter " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Sulpher Skitter") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Sulpher Skitter") + "\n" +
+ EnumChatFormatting.WHITE + " Obfuscated 1 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Obfuscated 1") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 1") + "\n" +
+ EnumChatFormatting.WHITE + " Steaminghot Flounder " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Steaming-Hot Flounder") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Steaming-Hot Flounder") + "\n" +
+ EnumChatFormatting.WHITE + " Gusher " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Gusher") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Gusher") + "\n" +
+ EnumChatFormatting.WHITE + " Blobfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Blobfish") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Blobfish") + "\n" +
+ EnumChatFormatting.GREEN + " Obfuscated 2 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Obfuscated 2") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 2") + "\n" +
+ EnumChatFormatting.GREEN + " Slugfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Slugfish") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Slugfish") + "\n" +
+ EnumChatFormatting.GREEN + " Flyfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Flyfish") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Flyfish") + "\n" +
+ EnumChatFormatting.BLUE + " Obfuscated 3 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Obfuscated 3") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 3") + "\n" +
+ EnumChatFormatting.BLUE + " Lavahorse " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Lavahorse") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Lavahorse") + "\n" +
+ EnumChatFormatting.BLUE + " Mana Ray " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Mana Ray") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Mana Ray") + "\n" +
+ EnumChatFormatting.BLUE + " Volcanic Stonefish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Volcanic Stonefish") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Volcanic Stonefish") + "\n" +
+ EnumChatFormatting.BLUE + " Vanille " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Vanille") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Vanille") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Skeleton Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Skeleton Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Skeleton Fish") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Moldfin " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Moldfin") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Moldfin") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Soul Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Soul Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Soul Fish") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Karate Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Karate Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Karate Fish") + "\n" +
+ EnumChatFormatting.GOLD + " Golden Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Golden Fish") + ")" + EnumChatFormatting.GOLD + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Golden Fish") + "\n" +
+ EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + "-------------------"));
+ return;
}
}
diff --git a/src/main/java/me/Danker/commands/ResetLootCommand.java b/src/main/java/me/Danker/commands/ResetLootCommand.java
index 9ccef33..00cf8f6 100644
--- a/src/main/java/me/Danker/commands/ResetLootCommand.java
+++ b/src/main/java/me/Danker/commands/ResetLootCommand.java
@@ -293,6 +293,10 @@ public class ResetLootCommand extends CommandBase {
FishingTracker.jawbusSCsSession = -1;
ConfigHandler.deleteCategory("fishing");
ConfigHandler.reloadConfig();
+
+ TrophyFishTracker.fish = TrophyFishTracker.createEmpty();
+ TrophyFishTracker.fishSession = TrophyFishTracker.createEmpty();
+ TrophyFishTracker.save();
}
static void resetMythological() {
diff --git a/src/main/java/me/Danker/events/ModInitEvent.java b/src/main/java/me/Danker/events/ModInitEvent.java
new file mode 100644
index 0000000..e1cc644
--- /dev/null
+++ b/src/main/java/me/Danker/events/ModInitEvent.java
@@ -0,0 +1,13 @@
+package me.Danker.events;
+
+import net.minecraftforge.fml.common.eventhandler.Event;
+
+public class ModInitEvent extends Event {
+
+ public final String configDirectory;
+
+ public ModInitEvent(String configDirectory) {
+ this.configDirectory = configDirectory;
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/Alerts.java b/src/main/java/me/Danker/features/Alerts.java
index 8f45423..e54a212 100644
--- a/src/main/java/me/Danker/features/Alerts.java
+++ b/src/main/java/me/Danker/features/Alerts.java
@@ -3,6 +3,7 @@ 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 +26,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/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/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java
index 8ce8c05..e6f8131 100644
--- a/src/main/java/me/Danker/features/CustomMusic.java
+++ b/src/main/java/me/Danker/features/CustomMusic.java
@@ -2,6 +2,7 @@ package me.Danker.features;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ModInitEvent;
import me.Danker.handlers.ScoreboardHandler;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
@@ -13,6 +14,7 @@ import net.minecraft.world.World;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.client.event.sound.PlaySoundEvent;
import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
@@ -196,6 +198,11 @@ public class CustomMusic {
}
}
+ @SubscribeEvent
+ public void init(ModInitEvent event) {
+ init(event.configDirectory);
+ }
+
public static void init(String configDirectory) {
if (configDirectory == null) return;
File directory = new File(configDirectory + "/dsmmusic");
diff --git a/src/main/java/me/Danker/features/GemstonesLore.java b/src/main/java/me/Danker/features/GemstonesLore.java
index 7db2d33..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);
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
index 884dccf..7079f40 100644
--- a/src/main/java/me/Danker/features/MinionLastCollected.java
+++ b/src/main/java/me/Danker/features/MinionLastCollected.java
@@ -3,6 +3,7 @@ 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;
@@ -29,6 +30,11 @@ public class MinionLastCollected {
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) {
diff --git a/src/main/java/me/Danker/features/loot/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java
index 7832362..556108c 100644
--- a/src/main/java/me/Danker/features/loot/LootDisplay.java
+++ b/src/main/java/me/Danker/features/loot/LootDisplay.java
@@ -946,6 +946,82 @@ 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:";
+ 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");
+ 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:";
+ countText = EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Sulpher Skitter") + "\n" +
+ EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 1") + "\n" +
+ EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Steaming-Hot Flounder") + "\n" +
+ EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Gusher") + "\n" +
+ EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Blobfish") + "\n" +
+ EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 2") + "\n" +
+ EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Slugfish") + "\n" +
+ EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Flyfish") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 3") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Lavahorse") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Mana Ray") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Volcanic Stonefish") + "\n" +
+ EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Vanille") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Skeleton Fish") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Moldfin") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Soul Fish") + "\n" +
+ EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Karate Fish") + "\n" +
+ EnumChatFormatting.GOLD + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Golden Fish");
+ break;
case "mythological":
dropsText = EnumChatFormatting.GOLD + "Coins:\n" +
EnumChatFormatting.WHITE + "Griffin Feathers:\n" +
diff --git a/src/main/java/me/Danker/features/loot/TrophyFishTracker.java b/src/main/java/me/Danker/features/loot/TrophyFishTracker.java
new file mode 100644
index 0000000..d11fcfe
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/TrophyFishTracker.java
@@ -0,0 +1,120 @@
+package me.Danker.features.loot;
+
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+import me.Danker.events.ModInitEvent;
+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;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class TrophyFishTracker {
+
+ public static JsonObject fish = new JsonObject();
+ public static JsonObject fishSession = new JsonObject();
+ public static Pattern fishPattern = Pattern.compile("TROPHY FISH! You caught a (?<fish>.*) (?<tier>.*).");
+ public static String configFile;
+
+ public static JsonObject createEmpty() {
+ JsonObject fish = new JsonObject();
+
+ JsonObject tiers = new JsonObject();
+ tiers.addProperty("BRONZE", 0);
+ tiers.addProperty("SILVER", 0);
+ tiers.addProperty("GOLD", 0);
+ tiers.addProperty("DIAMOND", 0);
+
+ fish.add("Sulpher Skitter", Utils.deepCopy(tiers));
+ fish.add("Obfuscated 1", Utils.deepCopy(tiers));
+ fish.add("Steaming-Hot Flounder", Utils.deepCopy(tiers));
+ fish.add("Obfuscated 2", Utils.deepCopy(tiers));
+ fish.add("Gusher", Utils.deepCopy(tiers));
+ fish.add("Blobfish", Utils.deepCopy(tiers));
+ fish.add("Slugfish", Utils.deepCopy(tiers));
+ fish.add("Obfuscated 3", Utils.deepCopy(tiers));
+ fish.add("Flyfish", Utils.deepCopy(tiers));
+ fish.add("Lavahorse", Utils.deepCopy(tiers));
+ fish.add("Mana Ray", Utils.deepCopy(tiers));
+ fish.add("Volcanic Stonefish", Utils.deepCopy(tiers));
+ fish.add("Vanille", Utils.deepCopy(tiers));
+ fish.add("Skeleton Fish", Utils.deepCopy(tiers));
+ fish.add("Moldfin", Utils.deepCopy(tiers));
+ fish.add("Soul Fish", Utils.deepCopy(tiers));
+ fish.add("Karate Fish", Utils.deepCopy(tiers));
+ fish.add("Golden Fish", Utils.deepCopy(tiers));
+
+ return fish;
+ }
+
+ @SubscribeEvent
+ public void init(ModInitEvent event) {
+ configFile = event.configDirectory + "/dsmtrophyfish.json";
+ if (fish.entrySet().isEmpty()) fish = createEmpty();
+ fishSession = createEmpty();
+ }
+
+ @SubscribeEvent(receiveCanceled = true)
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (!Utils.tabLocation.equals("Crimson Isle")) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ Matcher matcher = fishPattern.matcher(message);
+
+ if (matcher.matches()) {
+ String fishName = matcher.group("fish");
+ String tier = matcher.group("tier");
+
+ JsonObject fishObj = fish.get(fishName).getAsJsonObject();
+ int amount = fishObj.get(tier).getAsInt();
+ fishObj.addProperty(tier, amount + 1);
+
+ JsonObject fishSessionObj = fishSession.get(fishName).getAsJsonObject();
+ int amountSession = fishSessionObj.get(tier).getAsInt();
+ fishSessionObj.addProperty(tier, amountSession + 1);
+
+ save();
+ }
+ }
+
+ public static void save() {
+ try (FileWriter writer = new FileWriter(configFile)) {
+ new GsonBuilder().create().toJson(fish, writer);
+ writer.flush();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public static String getTierCount(JsonObject obj, String name) {
+ JsonObject type = obj.get(name).getAsJsonObject();
+
+ int bronze = type.get("BRONZE").getAsInt();
+ int silver = type.get("SILVER").getAsInt();
+ int gold = type.get("GOLD").getAsInt();
+ int diamond = type.get("DIAMOND").getAsInt();
+
+ return EnumChatFormatting.DARK_GRAY + "" + bronze + EnumChatFormatting.WHITE + "-" +
+ EnumChatFormatting.GRAY + silver + EnumChatFormatting.WHITE + "-" +
+ EnumChatFormatting.GOLD + gold + EnumChatFormatting.WHITE + "-" +
+ EnumChatFormatting.AQUA + diamond;
+ }
+
+ public static int getSum(JsonObject obj, String name) {
+ JsonObject type = obj.get(name).getAsJsonObject();
+ return type.get("BRONZE").getAsInt() +
+ type.get("SILVER").getAsInt() +
+ type.get("GOLD").getAsInt() +
+ type.get("DIAMOND").getAsInt();
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java
index dd2c23e..23d0228 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java
@@ -5,6 +5,7 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ModInitEvent;
import me.Danker.utils.Utils;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
@@ -26,7 +27,8 @@ public class TriviaSolver {
static JsonArray triviaAnswersJson = null;
public static String TRIVIA_WRONG_ANSWER_COLOUR;
- public static void init() {
+ @SubscribeEvent
+ public void init(ModInitEvent event) {
// Hard coded solutions if api call fails
triviaSolutions.put("What is the status of The Watcher?", new String[]{"Stalker"});
triviaSolutions.put("What is the status of Bonzo?", new String[]{"New Necromancer"});
@@ -39,11 +41,12 @@ public class TriviaSolver {
triviaSolutions.put("What is the status of Goldor?", new String[]{"Wither Soldier"});
triviaSolutions.put("What is the status of Storm?", new String[]{"Elementalist"});
triviaSolutions.put("What is the status of Necron?", new String[]{"Wither Lord"});
- triviaSolutions.put("How many total Fairy Souls are there?", new String[]{"227 Fairy Souls"});
+ triviaSolutions.put("What is the status of Maxor, Storm, Goldor and Necron?", new String[]{"Wither Lord"});
+ triviaSolutions.put("How many total Fairy Souls are there?", new String[]{"238 Fairy Souls"});
triviaSolutions.put("How many Fairy Souls are there in Spider's Den?", new String[]{"19 Fairy Souls"});
triviaSolutions.put("How many Fairy Souls are there in The End?", new String[]{"12 Fairy Souls"});
triviaSolutions.put("How many Fairy Souls are there in The Farming Islands?", new String[]{"20 Fairy Souls"});
- triviaSolutions.put("How many Fairy Souls are there in Blazing Fortress?", new String[]{"19 Fairy Souls"});
+ triviaSolutions.put("How many Fairy Souls are there in Crimson Isle?", new String[]{"29 Fairy Souls"});
triviaSolutions.put("How many Fairy Souls are there in The Park?", new String[]{"11 Fairy Souls"});
triviaSolutions.put("How many Fairy Souls are there in Jerry's Workshop?", new String[]{"5 Fairy Souls"});
triviaSolutions.put("How many Fairy Souls are there in Hub?", new String[]{"79 Fairy Souls"});
@@ -57,7 +60,7 @@ public class TriviaSolver {
triviaSolutions.put("What is the name of the person that upgrades pets?", new String[]{"Kat"});
triviaSolutions.put("What is the name of the lady of the Nether?", new String[]{"Elle"});
triviaSolutions.put("Which villager in the Village gives you a Rogue Sword?", new String[]{"Jamie"});
- triviaSolutions.put("How many unique minions are there?", new String[]{"53 Minions"});
+ triviaSolutions.put("How many unique minions are there?", new String[]{"55 Minions"});
triviaSolutions.put("Which of these enemies does not spawn in the Spider's Den?", new String[]{"Zombie Spider", "Cave Spider", "Wither Skeleton",
"Dashing Spooder", "Broodfather", "Night Spider"});
triviaSolutions.put("Which of these monsters only spawns at night?", new String[]{"Zombie Villager", "Ghast"});
diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java
index b8be3d6..2afa187 100644
--- a/src/main/java/me/Danker/gui/DisplayGui.java
+++ b/src/main/java/me/Danker/gui/DisplayGui.java
@@ -5,6 +5,7 @@ import me.Danker.handlers.ConfigHandler;
import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
@@ -28,6 +29,7 @@ public class DisplayGui extends GuiScreen {
private GuiButton fishingSpooky;
private GuiButton fishingCH;
private GuiButton fishingLava;
+ private GuiButton fishingTrophy;
private GuiButton catacombsF1;
private GuiButton catacombsF2;
private GuiButton catacombsF3;
@@ -61,12 +63,13 @@ public class DisplayGui extends GuiScreen {
wolf = new GuiButton(0, width / 2 - 50, (int) (height * 0.35), 100, 20, "Wolf");
enderman = new GuiButton(0, width / 2 + 60, (int) (height * 0.35), 100, 20, "Enderman");
blaze = new GuiButton(0, width / 2 + 170, (int) (height * 0.35), 100, 20, "Blaze");
- fishing = new GuiButton(0, width / 2 - 295, (int) (height * 0.5), 90, 20, "Fishing");
- fishingWinter = new GuiButton(0, width / 2 - 195, (int) (height * 0.5), 90, 20, "Fishing Winter");
- fishingFestival = new GuiButton(0, width / 2 - 95, (int) (height * 0.5), 90, 20, "Fishing Festival");
- fishingSpooky = new GuiButton(0, width / 2 + 5, (int) (height * 0.5), 90, 20, "Fishing Spooky");
- fishingCH = new GuiButton(0, width / 2 + 105, (int) (height * 0.5), 90, 20, "CH Fishing");
- fishingLava = new GuiButton(0, width / 2 + 205, (int) (height * 0.5), 90, 20, "Lava Fishing");
+ fishing = new GuiButton(0, width / 2 - 310, (int) (height * 0.5), 80, 20, "Fishing");
+ fishingWinter = new GuiButton(0, width / 2 - 220, (int) (height * 0.5), 80, 20, "Fishing Winter");
+ fishingFestival = new GuiButton(0, width / 2 - 130, (int) (height * 0.5), 80, 20, "Fishing Festival");
+ fishingSpooky = new GuiButton(0, width / 2 - 40, (int) (height * 0.5), 80, 20, "Fishing Spooky");
+ fishingCH = new GuiButton(0, width / 2 + 50, (int) (height * 0.5), 80, 20, "CH Fishing");
+ fishingLava = new GuiButton(0, width / 2 + 140, (int) (height * 0.5), 80, 20, "Lava Fishing");
+ fishingTrophy = new GuiButton(0, width / 2 + 230, (int) (height * 0.5), 80, 20, "Fishing Trophy");
catacombsF1 = new GuiButton(0, width / 2 - 235, (int) (height * 0.65), 50, 20, "F1");
catacombsF2 = new GuiButton(0, width / 2 - 175, (int) (height * 0.65), 50, 20, "F2");
catacombsF3 = new GuiButton(0, width / 2 - 115, (int) (height * 0.65), 50, 20, "F3");
@@ -92,6 +95,7 @@ public class DisplayGui extends GuiScreen {
this.buttonList.add(fishingSpooky);
this.buttonList.add(fishingCH);
this.buttonList.add(fishingLava);
+ this.buttonList.add(fishingTrophy);
this.buttonList.add(catacombsF1);
this.buttonList.add(catacombsF2);
this.buttonList.add(catacombsF3);
@@ -153,6 +157,8 @@ public class DisplayGui extends GuiScreen {
setDisplay("fishing_ch");
} else if (button == fishingLava) {
setDisplay("fishing_lava");
+ } else if (button == fishingTrophy) {
+ setDisplay("fishing_trophy");
} else if (button == mythological) {
setDisplay("mythological");
} else if (button == catacombsF1) {
diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java
index bd60639..b2c51a4 100644
--- a/src/main/java/me/Danker/handlers/ConfigHandler.java
+++ b/src/main/java/me/Danker/handlers/ConfigHandler.java
@@ -1,7 +1,6 @@
package me.Danker.handlers;
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
+import com.google.gson.*;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
@@ -750,6 +749,14 @@ public class ConfigHandler {
}
MinionLastCollected.Minion[] minions = gson.fromJson(new FileReader(MinionLastCollected.configFile), MinionLastCollected.Minion[].class);
if (minions != null) MinionLastCollected.minions = new ArrayList<>(Arrays.asList(minions));
+
+ // Trophy Fish
+ if (!(new File(TrophyFishTracker.configFile).exists())) {
+ FileWriter file = new FileWriter(TrophyFishTracker.configFile);
+ file.write(new JsonObject().toString());
+ file.close();
+ }
+ TrophyFishTracker.fish = new JsonParser().parse(new FileReader(TrophyFishTracker.configFile)).getAsJsonObject();
} catch (IOException ex) {
ex.printStackTrace();
}
diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java
index 3cef436..094690e 100644
--- a/src/main/java/me/Danker/utils/Utils.java
+++ b/src/main/java/me/Danker/utils/Utils.java
@@ -1,5 +1,7 @@
package me.Danker.utils;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
import me.Danker.DankersSkyblockMod;
import me.Danker.features.ColouredNames;
import me.Danker.features.GoldenEnchants;
@@ -509,6 +511,16 @@ public class Utils {
}
}
+ public static JsonObject deepCopy(JsonObject obj) {
+ JsonObject newObj = new JsonObject();
+
+ for (Map.Entry<String, JsonElement> entry : obj.entrySet()) {
+ newObj.add(entry.getKey(), entry.getValue());
+ }
+
+ return newObj;
+ }
+
public enum DungeonFloor {
NONE,
E0,