aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md23
-rw-r--r--build.gradle2
-rw-r--r--src/main/java/me/Danker/TheMod.java944
-rw-r--r--src/main/java/me/Danker/commands/ArmourCommand.java2
-rw-r--r--src/main/java/me/Danker/commands/BankCommand.java2
-rw-r--r--src/main/java/me/Danker/commands/BlockSlayerCommand.java97
-rw-r--r--src/main/java/me/Danker/commands/DHelpCommand.java16
-rw-r--r--src/main/java/me/Danker/commands/DankerGuiCommand.java32
-rw-r--r--src/main/java/me/Danker/commands/DisplayCommand.java40
-rw-r--r--src/main/java/me/Danker/commands/DungeonsCommand.java110
-rw-r--r--src/main/java/me/Danker/commands/GetkeyCommand.java2
-rw-r--r--src/main/java/me/Danker/commands/GuildOfCommand.java5
-rw-r--r--src/main/java/me/Danker/commands/ImportFishingCommand.java30
-rw-r--r--src/main/java/me/Danker/commands/LobbySkillsCommand.java215
-rw-r--r--src/main/java/me/Danker/commands/LootCommand.java153
-rw-r--r--src/main/java/me/Danker/commands/MoveCommand.java15
-rw-r--r--src/main/java/me/Danker/commands/PetsCommand.java5
-rw-r--r--src/main/java/me/Danker/commands/ReloadConfigCommand.java2
-rw-r--r--src/main/java/me/Danker/commands/ResetLootCommand.java14
-rw-r--r--src/main/java/me/Danker/commands/ScaleCommand.java13
-rw-r--r--src/main/java/me/Danker/commands/SetkeyCommand.java4
-rw-r--r--src/main/java/me/Danker/commands/SkillsCommand.java34
-rw-r--r--src/main/java/me/Danker/commands/SkyblockPlayersCommand.java2
-rw-r--r--src/main/java/me/Danker/commands/SlayerCommand.java2
-rw-r--r--src/main/java/me/Danker/commands/ToggleCommand.java40
-rw-r--r--src/main/java/me/Danker/gui/DankerGui.java206
-rw-r--r--src/main/java/me/Danker/gui/DisplayGui.java155
-rw-r--r--src/main/java/me/Danker/gui/EditLocationsGui.java152
-rw-r--r--src/main/java/me/Danker/gui/OnlySlayerGui.java135
-rw-r--r--src/main/java/me/Danker/gui/buttons/LocationButton.java61
-rw-r--r--src/main/java/me/Danker/handlers/APIHandler.java5
-rw-r--r--src/main/java/me/Danker/handlers/ConfigHandler.java79
-rw-r--r--src/main/java/me/Danker/handlers/PacketHandler.java31
-rw-r--r--src/main/java/me/Danker/handlers/ScoreboardHandler.java2
-rw-r--r--src/main/java/me/Danker/handlers/TextRenderer.java13
-rw-r--r--src/main/java/me/Danker/utils/Utils.java55
36 files changed, 2341 insertions, 357 deletions
diff --git a/README.md b/README.md
index b125559..607e4ea 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,10 @@ QOL changes that enhances your Hypixel Skyblock experience. Created to add featu
Discord Server: https://discord.gg/QsEkNQS
+## Incompatibilities
+- Old Animations <2.6.4 - Frequent crashes
+- Old Animations 2.6.4 - Pet colors does not work
+
## Current features
- Guild party desktop notifications (toggleable)
- Coordinate and angle display (toggleable, graphic display) (scalable)
@@ -13,30 +17,38 @@ Discord Server: https://discord.gg/QsEkNQS
- RNGesus drop alerts (toggleable)
- Click in chat to open Maddox (toggleable)
- Maddox Menu keybind
+- Block starting other slayer quests
- Fishing tracker (with graphic display) (scalable)
+- Expertise kills in fishing rod lore
- Dungeons tracker (with graphic display) (scalable)
- Pet background colors based on level
+- Golem spawning alerts (toggleable)
+- Show total skill xp instead of progress to next level
- API commands
- Update checker
## Commands
- /dhelp - Returns this message in-game.
-- /toggle <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalerts/aotd/sceptremessages/petcolors/dungeontimer/list> - Toggles features. /toggle list returns values of every toggle.
+- /dsm - Opens the GUI for Danker's Skyblock Mod.
+- /toggle <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalerts/aotd/sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/outlinetext/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/fishing/catacombs> [winter/f(1-4)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead.
-- /display <zombie/spider/wolf/fishing/catacombs> [winter/f(1-4)/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead.
+- /loot <zombie/spider/wolf/fishing/catacombs> [winter/f(1-6)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead.
+- /display <zombie/spider/wolf/fishing/catacombs/auto/off> [winter/f(1-6)/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/fishing/catacombs/confirm/cancel> - - Resets loot for trackers. /resetloot confirm confirms the reset.
-- /move <coords/display/dungeontimer> <x> <y> - Moves text display to specified X and Y coordinates.
-- /scale <coords/display/dungeontimer> <scale (0.1 - 10)> - Scales text display to a specified multipler between 0.1x and 10x.
+- /move <coords/display/dungeontimer/skill50> <x> <y> - Moves text display to specified X and Y coordinates.
+- /scale <coords/display/dungeontimer/skill50> <scale (0.1 - 10)> - Scales text display to a specified multipler between 0.1x and 10x.
- /slayer [player] - Uses API to get slayer xp of a person. If no name is provided, it checks yours.
- /skills [player] - Uses API to get skill levels of a person. If no name is provided, it checks yours.
+- /lobbyskills - Uses API to find the average skills of the lobby, as well the three players with the highest skill average.
- /guildof [player] - Uses API to get guild name and guild master of a person. If no name is provided, it checks yours.
- /petsof [player] - Uses API to get pets of a person. If no name is provided, it checks yours.
- /bank [player] - Uses API to get bank and purse coins of a person. If no name is provided, it checks yours.
- /armor [player] - Uses API to get armour of a person. If no name is provided, it checks yours.
+- /dungeons [player] - Uses API to get dungeon levels of a person. If no name is provided, it checks yours.
- /importfishing - Imports your fishing stats from your latest profile to your fishing tracker using the API.
- /sbplayers - Uses API to find how many players are on each Skyblock island.
+- /onlyslayer <zombie/spider/wolf> <1/2/3/4> - Stops you from starting a slayer quest other than the one specified.
## Keybinds
- Open Maddox menu - M by default.
@@ -45,5 +57,4 @@ Discord Server: https://discord.gg/QsEkNQS
- Slayer tracker for token drops and 20% chance drops uses a 12x12x12 bounding box centered on the player to detect the drops. If you are out of the range of the item drop, it will not count on the tracker.
- API commands may take a while depending on your internet connection. The API may also go down.
- If you use too many API commands too fast, you can and will get rate-limited.
-- An incorrect API key will result in an HTTP error code of 403.
- Importing fishing uses your sea creature kills, which may not always be exactly correct (e.x. someone else kills your sea creature).
diff --git a/build.gradle b/build.gradle
index e335794..cae3082 100644
--- a/build.gradle
+++ b/build.gradle
@@ -20,7 +20,7 @@ plugins {
id "net.minecraftforge.gradle.forge" version "2.0.2"
}
*/
-version = "1.7"
+version = "1.8"
group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "Danker's Skyblock Mod"
diff --git a/src/main/java/me/Danker/TheMod.java b/src/main/java/me/Danker/TheMod.java
index ec2dedf..4c30ee9 100644
--- a/src/main/java/me/Danker/TheMod.java
+++ b/src/main/java/me/Danker/TheMod.java
@@ -18,12 +18,16 @@ import com.google.gson.JsonObject;
import me.Danker.commands.ArmourCommand;
import me.Danker.commands.BankCommand;
+import me.Danker.commands.BlockSlayerCommand;
import me.Danker.commands.ChatMaddoxCommand;
import me.Danker.commands.DHelpCommand;
+import me.Danker.commands.DankerGuiCommand;
import me.Danker.commands.DisplayCommand;
+import me.Danker.commands.DungeonsCommand;
import me.Danker.commands.GetkeyCommand;
import me.Danker.commands.GuildOfCommand;
import me.Danker.commands.ImportFishingCommand;
+import me.Danker.commands.LobbySkillsCommand;
import me.Danker.commands.LootCommand;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.PetsCommand;
@@ -35,8 +39,13 @@ import me.Danker.commands.SkillsCommand;
import me.Danker.commands.SkyblockPlayersCommand;
import me.Danker.commands.SlayerCommand;
import me.Danker.commands.ToggleCommand;
+import me.Danker.gui.DankerGui;
+import me.Danker.gui.DisplayGui;
+import me.Danker.gui.EditLocationsGui;
+import me.Danker.gui.OnlySlayerGui;
import me.Danker.handlers.APIHandler;
import me.Danker.handlers.ConfigHandler;
+import me.Danker.handlers.PacketHandler;
import me.Danker.handlers.ScoreboardHandler;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
@@ -47,8 +56,12 @@ import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.event.ClickEvent;
import net.minecraft.event.ClickEvent.Action;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
@@ -64,21 +77,24 @@ import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.FMLCommonHandler;
+import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
+import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
+import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientConnectedToServerEvent;
import net.minecraftforge.fml.common.versioning.DefaultArtifactVersion;
@Mod(modid = TheMod.MODID, version = TheMod.VERSION, clientSideOnly = true)
public class TheMod
{
public static final String MODID = "Danker's Skyblock Mod";
- public static final String VERSION = "1.7";
+ public static final String VERSION = "1.8";
static double checkItemsNow = 0;
static double itemsChecked = 0;
@@ -88,10 +104,15 @@ public class TheMod
public static int titleTimer = -1;
public static boolean showTitle = false;
public static String titleText = "";
+ public static int skillTimer = -1;
+ public static boolean showSkill = false;
+ public static String skillText = "";
static int tickAmount = 1;
public static String lastMaddoxCommand = "/cb placeholdervalue";
static KeyBinding[] keyBindings = new KeyBinding[1];
static int lastMouse = -1;
+ static boolean usingLabymod = false;
+ public static String guiToOpen = null;
static double dungeonStartTime = 0;
static double bloodOpenTime = 0;
@@ -102,10 +123,10 @@ public class TheMod
static int puzzleFails = 0;
@EventHandler
- public void init(FMLInitializationEvent event)
- {
+ public void init(FMLInitializationEvent event) {
FMLCommonHandler.instance().bus().register(this);
MinecraftForge.EVENT_BUS.register(this);
+ MinecraftForge.EVENT_BUS.register(new PacketHandler());
final ConfigHandler cf = new ConfigHandler();
cf.reloadConfig();
@@ -171,6 +192,16 @@ public class TheMod
ClientCommandHandler.instance.registerCommand(new ScaleCommand());
ClientCommandHandler.instance.registerCommand(new ChatMaddoxCommand());
ClientCommandHandler.instance.registerCommand(new SkyblockPlayersCommand());
+ ClientCommandHandler.instance.registerCommand(new BlockSlayerCommand());
+ ClientCommandHandler.instance.registerCommand(new DungeonsCommand());
+ ClientCommandHandler.instance.registerCommand(new LobbySkillsCommand());
+ ClientCommandHandler.instance.registerCommand(new DankerGuiCommand());
+ }
+
+ @EventHandler
+ public void postInit(final FMLPostInitializationEvent event) {
+ usingLabymod = Loader.isModLoaded("labymod");
+ System.out.println("LabyMod detection: " + usingLabymod);
}
// Update checker
@@ -214,9 +245,30 @@ public class TheMod
final ToggleCommand tc = new ToggleCommand();
String message = event.message.getUnformattedText();
- if (event.type == 2) return;
if (!Utils.inSkyblock) return;
+ // Action Bar
+ if (event.type == 2) {
+ String[] actionBarSections = event.message.getUnformattedText().split(" {3,}");
+ for (String section : actionBarSections) {
+ if (tc.skill50DisplayToggled) {
+ if (section.contains("+") && section.contains("/") && section.contains("(")) {
+ if (section.contains("Runecrafting")) return;
+
+ String xpGained = section.substring(section.indexOf("+"), section.indexOf("(") - 1);
+ double currentXp = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("/")).replaceAll(",", ""));
+ int previousXp = Utils.getPastXpEarned(Integer.parseInt(section.substring(section.indexOf("/") + 1, section.indexOf(")")).replaceAll(",", "")));
+ double percentage = (double) Math.floor(((currentXp + previousXp) / 55172425) * 10000D) / 100D;
+
+ skillTimer = 40;
+ showSkill = true;
+ skillText = EnumChatFormatting.AQUA + xpGained + " (" + NumberFormat.getNumberInstance(Locale.US).format(currentXp + previousXp) + "/55,172,425) " + percentage + "%";
+ }
+ }
+ }
+ return;
+ }
+
// Replace chat messages with Maddox command
List<IChatComponent> chatSiblings = event.message.getSiblings();
for (IChatComponent sibling : chatSiblings) {
@@ -229,8 +281,8 @@ public class TheMod
if (message.contains("[BOSS] The Watcher: You have proven yourself. You may pass.")) {
watcherClearTime = System.currentTimeMillis() / 1000;
}
- if (message.contains(" PUZZLE FAIL! ") || message.contains("chose the wrong answer! I shall never forget this moment")) {
- dungeonDeaths++;
+ if (message.contains("PUZZLE FAIL! ") || message.contains("chose the wrong answer! I shall never forget this moment")) {
+ puzzleFails++;
}
if (message.contains(":")) return;
@@ -252,6 +304,12 @@ public class TheMod
}
}
+ if (tc.golemAlertToggled) {
+ if (message.contains("The ground begins to shake as an Endstone Protector rises from below!")) {
+ Utils.createTitle(EnumChatFormatting.RED + "GOLEM SPAWNING!", 3);
+ }
+ }
+
final LootCommand lc = new LootCommand();
final ConfigHandler cf = new ConfigHandler();
boolean wolfRNG = false;
@@ -288,50 +346,39 @@ public class TheMod
}
cf.writeIntConfig("wolf", "svens", lc.wolfSvens);
cf.writeIntConfig("wolf", "bossRNG", lc.wolfBosses);
- }
- if (message.contains("RARE DROP! (Hamster Wheel)")) {
+ } else if (message.contains("RARE DROP! (Hamster Wheel)")) {
lc.wolfWheelsDrops++;
lc.wolfWheelsDropsSession++;
cf.writeIntConfig("wolf", "wheelDrops", lc.wolfWheelsDrops);
- }
- // Removing the unicode here *should* fix rune drops not counting
- if (message.contains("VERY RARE DROP! (") && message.contains(" Spirit Rune I)")) {
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Spirit Rune I)")) { // Removing the unicode here *should* fix rune drops not counting
lc.wolfSpirits++;
lc.wolfSpiritsSession++;
cf.writeIntConfig("wolf", "spirit", lc.wolfSpirits);
- }
- if (message.contains("CRAZY RARE DROP! (Red Claw Egg)")) {
+ } else if (message.contains("CRAZY RARE DROP! (Red Claw Egg)")) {
wolfRNG = true;
lc.wolfEggs++;
lc.wolfEggsSession++;
cf.writeIntConfig("wolf", "egg", lc.wolfEggs);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_RED + "RED CLAW EGG!", 3);
- }
- if (message.contains("CRAZY RARE DROP! (") && message.contains(" Couture Rune I)")) {
+ } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Couture Rune I)")) {
wolfRNG = true;
lc.wolfCoutures++;
lc.wolfCouturesSession++;
cf.writeIntConfig("wolf", "couture", lc.wolfCoutures);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "COUTURE RUNE!", 3);
- }
- // How did Skyblock devs even manage to make this item Rename Me
- if (message.contains("CRAZY RARE DROP! (Grizzly Bait)") || message.contains("CRAZY RARE DROP! (Rename Me)")) {
+ } else if (message.contains("CRAZY RARE DROP! (Grizzly Bait)") || message.contains("CRAZY RARE DROP! (Rename Me)")) { // How did Skyblock devs even manage to make this item Rename Me
wolfRNG = true;
lc.wolfBaits++;
lc.wolfBaitsSession++;
cf.writeIntConfig("wolf", "bait", lc.wolfBaits);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.AQUA + "GRIZZLY BAIT!", 3);
- }
- if (message.contains("CRAZY RARE DROP! (Overflux Capacitor)")) {
+ } else if (message.contains("CRAZY RARE DROP! (Overflux Capacitor)")) {
wolfRNG = true;
lc.wolfFluxes++;
lc.wolfFluxesSession++;
cf.writeIntConfig("wolf", "flux", lc.wolfFluxes);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "OVERFLUX CAPACITOR!", 5);
- }
-
- // Spider
- if (message.contains("Talk to Maddox to claim your Spider Slayer XP!")) {
+ } else if (message.contains("Talk to Maddox to claim your Spider Slayer XP!")) { // Spider
lc.spiderTarantulas++;
lc.spiderTarantulasSession++;
if (lc.spiderBosses != -1) {
@@ -342,46 +389,37 @@ public class TheMod
}
cf.writeIntConfig("spider", "tarantulas", lc.spiderTarantulas);
cf.writeIntConfig("spider", "bossRNG", lc.spiderBosses);
- }
- if (message.contains("RARE DROP! (Toxic Arrow Poison)")) {
+ } else if (message.contains("RARE DROP! (Toxic Arrow Poison)")) {
lc.spiderTAPDrops++;
lc.spiderTAPDropsSession++;
cf.writeIntConfig("spider", "tapDrops", lc.spiderTAPDrops);
- }
- if (message.contains("VERY RARE DROP! (") && message.contains(" Bite Rune I)")) {
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Bite Rune I)")) {
lc.spiderBites++;
lc.spiderBitesSession++;
cf.writeIntConfig("spider", "bite", lc.spiderBites);
- }
- if (message.contains("VERY RARE DROP! (Spider Catalyst)")) {
+ } else if (message.contains("VERY RARE DROP! (Spider Catalyst)")) {
lc.spiderCatalysts++;
lc.spiderCatalystsSession++;
cf.writeIntConfig("spider", "catalyst", lc.spiderCatalysts);
- }
- if (message.contains("CRAZY RARE DROP! (Fly Swatter)")) {
+ } else if (message.contains("CRAZY RARE DROP! (Fly Swatter)")) {
spiderRNG = true;
lc.spiderSwatters++;
lc.spiderSwattersSession++;
cf.writeIntConfig("spider", "swatter", lc.spiderSwatters);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.LIGHT_PURPLE + "FLY SWATTER!", 3);
- }
- if (message.contains("CRAZY RARE DROP! (Tarantula Talisman")) {
+ } else if (message.contains("CRAZY RARE DROP! (Tarantula Talisman")) {
spiderRNG = true;
lc.spiderTalismans++;
lc.spiderTalismansSession++;
cf.writeIntConfig("spider", "talisman", lc.spiderTalismans);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "TARANTULA TALISMAN!", 3);
- }
- if (message.contains("CRAZY RARE DROP! (Digested Mosquito)")) {
+ } else if (message.contains("CRAZY RARE DROP! (Digested Mosquito)")) {
spiderRNG = true;
lc.spiderMosquitos++;
lc.spiderMosquitosSession++;
cf.writeIntConfig("spider", "mosquito", lc.spiderMosquitos);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "DIGESTED MOSQUITO!", 5);
- }
-
- // Zombie
- if (message.contains("Talk to Maddox to claim your Zombie Slayer XP!")) {
+ } else if (message.contains("Talk to Maddox to claim your Zombie Slayer XP!")) { // Zombie
lc.zombieRevs++;
lc.zombieRevsSession++;
if (lc.zombieBosses != -1) {
@@ -392,86 +430,49 @@ public class TheMod
}
cf.writeIntConfig("zombie", "revs", lc.zombieRevs);
cf.writeIntConfig("zombie", "bossRNG", lc.zombieBosses);
- }
- if (message.contains("RARE DROP! (Foul Flesh)")) {
+ } else if (message.contains("RARE DROP! (Foul Flesh)")) {
lc.zombieFoulFleshDrops++;
lc.zombieFoulFleshDropsSession++;
cf.writeIntConfig("zombie", "foulFleshDrops", lc.zombieFoulFleshDrops);
- }
- if (message.contains("VERY RARE DROP! (Revenant Catalyst)")) {
+ } else if (message.contains("VERY RARE DROP! (Revenant Catalyst)")) {
lc.zombieRevCatas++;
lc.zombieRevCatasSession++;
cf.writeIntConfig("zombie", "revCatalyst", lc.zombieRevCatas);
- }
- if (message.contains("VERY RARE DROP! (") && message.contains(" Pestilence Rune I)")) {
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Pestilence Rune I)")) {
lc.zombiePestilences++;
lc.zombiePestilencesSession++;
cf.writeIntConfig("zombie", "pestilence", lc.zombiePestilences);
- }
- if (message.contains("VERY RARE DROP! (Undead Catalyst)")) {
+ } else if (message.contains("VERY RARE DROP! (Undead Catalyst)")) {
lc.zombieUndeadCatas++;
lc.zombieUndeadCatasSession++;
cf.writeIntConfig("zombie", "undeadCatalyst", lc.zombieUndeadCatas);
- }
- if (message.contains("CRAZY RARE DROP! (Beheaded Horror)")) {
+ } else if (message.contains("CRAZY RARE DROP! (Beheaded Horror)")) {
zombieRNG = true;
lc.zombieBeheadeds++;
lc.zombieBeheadedsSession++;
cf.writeIntConfig("zombie", "beheaded", lc.zombieBeheadeds);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "BEHEADED HORROR!", 3);
- }
- if (message.contains("CRAZY RARE DROP! (") && message.contains(" Snake Rune I)")) {
+ } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Snake Rune I)")) {
zombieRNG = true;
lc.zombieSnakes++;
lc.zombieSnakesSession++;
cf.writeIntConfig("zombie", "snake", lc.zombieSnakes);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_GREEN + "SNAKE RUNE!", 3);
- }
- if (message.contains("CRAZY RARE DROP! (Scythe Blade)")) {
+ } else if (message.contains("CRAZY RARE DROP! (Scythe Blade)")) {
zombieRNG = true;
lc.zombieScythes++;
lc.zombieScythesSession++;
cf.writeIntConfig("zombie", "scythe", lc.zombieScythes);
if (tc.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "SCYTHE BLADE!", 5);
- }
-
- if (wolfRNG) {
- lc.wolfTime = System.currentTimeMillis() / 1000;
- lc.wolfBosses = 0;
- lc.wolfTimeSession = System.currentTimeMillis() / 1000;
- lc.wolfBossesSession = 0;
- cf.writeDoubleConfig("wolf", "timeRNG", lc.wolfTime);
- cf.writeIntConfig("wolf", "bossRNG", 0);
- }
- if (spiderRNG) {
- lc.spiderTime = System.currentTimeMillis() / 1000;
- lc.spiderBosses = 0;
- lc.spiderTimeSession = System.currentTimeMillis() / 1000;
- lc.spiderBossesSession = 0;
- cf.writeDoubleConfig("spider", "timeRNG", lc.spiderTime);
- cf.writeIntConfig("spider", "bossRNG", 0);
- }
- if (zombieRNG) {
- lc.zombieTime = System.currentTimeMillis() / 1000;
- lc.zombieBosses = 0;
- lc.zombieTimeSession = System.currentTimeMillis() / 1000;
- lc.zombieBossesSession = 0;
- cf.writeDoubleConfig("zombie", "timeRNG", lc.zombieTime);
- cf.writeIntConfig("zombie", "bossRNG", 0);
- }
-
- // Fishing
- if (message.contains("GOOD CATCH!")) {
+ } else if (message.contains("GOOD CATCH!")) { // Fishing
lc.goodCatches++;
lc.goodCatchesSession++;
cf.writeIntConfig("fishing", "goodCatch", lc.goodCatches);
- }
- if (message.contains("GREAT CATCH!")) {
+ } else if (message.contains("GREAT CATCH!")) {
lc.greatCatches++;
lc.greatCatchesSession++;
cf.writeIntConfig("fishing", "greatCatch", lc.greatCatches);
- }
- if (message.contains("You caught a lowly Squid")) {
+ } else if (message.contains("You caught a lowly Squid")) {
lc.squids++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -482,8 +483,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("From the depths of the waters, you've reeled in a Sea Walker")) {
+ } else if (message.contains("From the depths of the waters, you've reeled in a Sea Walker")) {
lc.seaWalkers++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -494,8 +494,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("Pitch darkness reveals you've caught a")) {
+ } else if (message.contains("Pitch darkness reveals you've caught a")) {
lc.nightSquids++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -506,8 +505,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("You've stumbled upon a patrolling Sea Guardian")) {
+ } else if (message.contains("You've stumbled upon a patrolling Sea Guardian")) {
lc.seaGuardians++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -518,8 +516,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("It looks like you've disrupted the Sea Witch's brewing session. Watch out, she's furious")) {
+ } else if (message.contains("It looks like you've disrupted the Sea Witch's brewing session. Watch out, she's furious")) {
lc.seaWitches++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -530,8 +527,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("From the depths of the waters, you've reeled in a Sea Archer")) {
+ } else if (message.contains("From the depths of the waters, you've reeled in a Sea Archer")) {
lc.seaArchers++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -542,8 +538,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("The Monster of the Deep emerges from the dark depths")) {
+ } else if (message.contains("The Monster of the Deep emerges from the dark depths")) {
lc.monsterOfTheDeeps++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -554,8 +549,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("You have found a Catfish, don't let it steal your catches")) {
+ } else if (message.contains("You have found a Catfish, don't let it steal your catches")) {
lc.catfishes++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -566,8 +560,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("Is this even a fish? It's the Carrot King")) {
+ } else if (message.contains("Is this even a fish? It's the Carrot King")) {
lc.carrotKings++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -578,8 +571,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("Gross! A Sea Leech")) {
+ } else if (message.contains("Gross! A Sea Leech")) {
lc.seaLeeches++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -590,8 +582,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("You've discovered a Guardian Defender of the sea")) {
+ } else if (message.contains("You've discovered a Guardian Defender of the sea")) {
lc.guardianDefenders++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -602,8 +593,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("You have awoken the Deep Sea Protector, prepare for a battle")) {
+ } else if (message.contains("You have awoken the Deep Sea Protector, prepare for a battle")) {
lc.deepSeaProtectors++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -614,8 +604,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("The Water Hydra has come to test your strength")) {
+ } else if (message.contains("The Water Hydra has come to test your strength")) {
lc.hydras++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -626,8 +615,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("The Sea Emperor arises from the depths")) {
+ } else if (message.contains("The Sea Emperor arises from the depths")) {
lc.seaEmperors++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -643,9 +631,7 @@ public class TheMod
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
cf.writeDoubleConfig("fishing", "empTime", lc.empTime);
cf.writeIntConfig("fishing", "empSC", lc.empSCs);
- }
- // Fishing Winter
- if (message.contains("Frozen Steve fell into the pond long ago")) {
+ } else if (message.contains("Frozen Steve fell into the pond long ago")) { // Fishing Winter
lc.frozenSteves++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -656,8 +642,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("It's a snowman! He looks harmless")) {
+ } else if (message.contains("It's a snowman! He looks harmless")) {
lc.frostyTheSnowmans++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -668,8 +653,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("stole Jerry's Gifts...get them back")) {
+ } else if (message.contains("stole Jerry's Gifts...get them back")) {
lc.grinches++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -680,8 +664,7 @@ public class TheMod
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
increaseSeaCreatures();
- }
- if (message.contains("What is this creature")) {
+ } else if (message.contains("What is this creature")) {
lc.yetis++;
lc.seaCreatures++;
lc.fishingMilestone++;
@@ -697,11 +680,51 @@ public class TheMod
cf.writeIntConfig("fishing", "yetiSC", lc.yetiSCs);
cf.writeIntConfig("fishing", "seaCreature", lc.seaCreatures);
cf.writeIntConfig("fishing", "milestone", lc.fishingMilestone);
- }
-
- // Catacombs Dungeons
- // Timers
- if (message.contains("Dungeon starts in 1 second.")) {
+ } else if (message.contains("A tiny fin emerges from the water, you've caught a Nurse Shark")) { // Fishing Festival
+ lc.nurseSharks++;
+ lc.seaCreatures++;
+ lc.fishingMilestone++;
+ lc.nurseSharksSession++;
+ lc.seaCreaturesSession++;
+ lc.fishingMilestoneSession++;
+ cf.writeIntConfig("fishing", "nurseShark", lc.nurseSharks);
+ cf.write