aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore10
-rw-r--r--README.md12
-rw-r--r--build.gradle4
-rw-r--r--src/main/java/me/Danker/DankersSkyblockMod.java5183
-rw-r--r--src/main/java/me/Danker/commands/DHelpCommand.java6
-rw-r--r--src/main/java/me/Danker/commands/DankerGuiCommand.java85
-rw-r--r--src/main/java/me/Danker/commands/DungeonsCommand.java66
-rw-r--r--src/main/java/me/Danker/commands/FairySoulsCommand.java92
-rw-r--r--src/main/java/me/Danker/commands/LobbySkillsCommand.java4
-rw-r--r--src/main/java/me/Danker/commands/MoveCommand.java14
-rw-r--r--src/main/java/me/Danker/commands/PetsCommand.java232
-rw-r--r--src/main/java/me/Danker/commands/RepartyCommand.java135
-rw-r--r--src/main/java/me/Danker/commands/ResetLootCommand.java2
-rw-r--r--src/main/java/me/Danker/commands/ScaleCommand.java11
-rw-r--r--src/main/java/me/Danker/commands/SetkeyCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/SkillTrackerCommand.java107
-rw-r--r--src/main/java/me/Danker/commands/SkillsCommand.java4
-rw-r--r--src/main/java/me/Danker/commands/SkyblockPlayersCommand.java5
-rw-r--r--src/main/java/me/Danker/commands/SlayerCommand.java6
-rw-r--r--src/main/java/me/Danker/commands/ToggleCommand.java116
-rw-r--r--src/main/java/me/Danker/gui/DankerGui.java125
-rw-r--r--src/main/java/me/Danker/gui/DisplayGui.java5
-rw-r--r--src/main/java/me/Danker/gui/EditLocationsGui.java34
-rw-r--r--src/main/java/me/Danker/gui/ExperimentsGui.java15
-rw-r--r--src/main/java/me/Danker/gui/OnlySlayerGui.java1
-rw-r--r--src/main/java/me/Danker/gui/PuzzleSolversGui.java16
-rw-r--r--src/main/java/me/Danker/gui/WarningGui.java61
-rw-r--r--src/main/java/me/Danker/gui/WarningGuiRedirect.java28
-rw-r--r--src/main/java/me/Danker/handlers/ConfigHandler.java110
-rw-r--r--src/main/java/me/Danker/handlers/ScoreboardHandler.java1
-rw-r--r--src/main/java/me/Danker/handlers/TextRenderer.java2
-rw-r--r--src/main/java/me/Danker/utils/Utils.java120
-rw-r--r--src/main/resources/assets/dsm/icons/bonzo.pngbin0 -> 10809 bytes
33 files changed, 4052 insertions, 2561 deletions
diff --git a/.gitignore b/.gitignore
index f354308..db10469 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,13 @@ build
eclipse
run
*.txt
+*.cfg
+*.gz
+*.log
+*.dat
+*.mca
+*.json
+*.dat_mcr
+*.lock
+*.dat_old
+*.properties
diff --git a/README.md b/README.md
index f047470..05c5f1b 100644
--- a/README.md
+++ b/README.md
@@ -16,10 +16,13 @@ Discord Server: https://discord.gg/QsEkNQS
- Golden T10/T6/T4 enchant display
- Block AOTD ability
- Block Livid Dagger ability
+- Block placing Flower of Truth/Spirit Sceptre
- Disable Spirit Sceptre messages
- Disable Midas Staff messages
- Disable Implosion messages
- Disable heal messages
+- Disable ability cooldown messages
+- Disable out of mana messages
- Slayer item tracker
- RNGesus drop alerts
- Click anywhere on-screen to open Maddox
@@ -29,9 +32,12 @@ Discord Server: https://discord.gg/QsEkNQS
- Expertise kills in fishing rod lore
- Catacombs trackers
- Dungeons puzzle solver (Riddle, trivia, blaze, creeper, water, tic tac toe)
-- Experimentation solvers (Ultrasequencer, Chronomatron, Superpairs)
+- Dungeons timer (watcher, boss, deaths, and puzzle fails)
+- Watcher ready message
- Catacombs F7 Stage 3 solvers (Starts with letter, select all colour, ignore arrows on sea lanterns)
- Find correct Livid (with graphic display of HP)
+- Experimentation solvers (Ultrasequencer, Chronomatron, Superpairs)
+- Hide tooltips in experiment addons
- Pet background colors based on level
- Golem spawning alerts
- Skill xp/hour tracker
@@ -41,11 +47,12 @@ Discord Server: https://discord.gg/QsEkNQS
- Low health alert in dungeons
- API commands
- Update checker
+- Reparty command
## Commands
- /dhelp - Returns this message in-game.
- /dsm - Opens the GUI for Danker's Skyblock Mod.
-- /toggle <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalerts/aotd/lividdagger/sceptremessages/midasstaffmessages/implosionmessages/healmessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/outlinetext/caketimer/lowhealthnotify/lividsolver/threemanpuzzle/oruopuzzle/blazepuzzle/creeperpuzzle/waterpuzzle/tictactoepuzzle/startswithterminal/selectallterminal/itemframeonsealanterns/ultrasequencer/list> - Toggles features. /toggle list returns values of every toggle.
+- /toggle <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalerts/aotd/lividdagger/flowerweapons/sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/outlinetext/midasstaffmessages/implosionmessages/healmessages/cooldownmessages/manamessages/caketimer/lowhealthnotify/lividsolver/stopsalvagestarred/notifyslayerslain/threemanpuzzle/oruopuzzle/blazepuzzle/creeperpuzzle/waterpuzzle/tictactoepuzzle/watchermessage/startswithterminal/selectallterminal/clickinorderterminal/blockwrongterminalclicks/itemframeonsealanterns/ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/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/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead.
@@ -65,6 +72,7 @@ Discord Server: https://discord.gg/QsEkNQS
- /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.
- /skilltracker <start/stop/reset> - Text display for skill xp/hour.
+- /reparty - Disbands and reparties all members in the party
## Keybinds
- Open Maddox menu - M by default.
diff --git a/build.gradle b/build.gradle
index 0258259..cae593a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -20,8 +20,8 @@ plugins {
id "net.minecraftforge.gradle.forge" version "2.0.2"
}
*/
-version = "1.8.4"
-group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
+version = "1.8.5"
+group= "me.Danker.DankersSkyblockMod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "Danker's Skyblock Mod"
sourceCompatibility = targetCompatibility = 1.8
diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java
index 2c75a0e..12a8066 100644
--- a/src/main/java/me/Danker/DankersSkyblockMod.java
+++ b/src/main/java/me/Danker/DankersSkyblockMod.java
@@ -7,20 +7,25 @@ import me.Danker.handlers.*;
import me.Danker.utils.TicTacToeUtils;
import me.Danker.utils.Utils;
import net.minecraft.block.Block;
+import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.client.gui.Gui;
-import net.minecraft.client.gui.GuiChat;
-import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.gui.*;
import net.minecraft.client.gui.inventory.GuiChest;
import net.minecraft.client.settings.GameSettings;
import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.command.ICommand;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.entity.item.EntityItemFrame;
import net.minecraft.entity.monster.EntityCreeper;
+import net.minecraft.entity.monster.EntitySpider;
+import net.minecraft.entity.monster.EntityZombie;
+import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.event.ClickEvent;
import net.minecraft.event.ClickEvent.Action;
+import net.minecraft.event.HoverEvent;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.inventory.Container;
@@ -40,9 +45,7 @@ import net.minecraftforge.client.event.*;
import net.minecraftforge.client.event.sound.PlaySoundEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
-import net.minecraftforge.event.entity.player.EntityInteractEvent;
-import net.minecraftforge.event.entity.player.ItemTooltipEvent;
-import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import net.minecraftforge.event.entity.player.*;
import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.Loader;
@@ -67,18 +70,18 @@ import java.awt.*;
import java.text.NumberFormat;
import java.util.List;
import java.util.*;
+import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Mod(modid = DankersSkyblockMod.MODID, version = DankersSkyblockMod.VERSION, clientSideOnly = true)
-public class DankersSkyblockMod
-{
+public class DankersSkyblockMod {
public static final String MODID = "Danker's Skyblock Mod";
- public static final String VERSION = "1.8.4";
-
+ public static final String VERSION = "1.8.5";
static double checkItemsNow = 0;
static double itemsChecked = 0;
public static Map<String, String> t6Enchants = new HashMap<>();
- public static Pattern pattern = Pattern.compile("");
+ public static Pattern t6EnchantPattern = Pattern.compile("");
+ static Pattern petPattern = Pattern.compile("\\[Lvl [\\d]{1,3}]");
static boolean updateChecked = false;
public static int titleTimer = -1;
public static boolean showTitle = false;
@@ -90,48 +93,57 @@ public class DankersSkyblockMod
static int tickAmount = 1;
static String lastMaddoxCommand = "/cb placeholder";
static double lastMaddoxTime = 0;
- static KeyBinding[] keyBindings = new KeyBinding[2];
+ static KeyBinding[] keyBindings = new KeyBinding[3];
static boolean usingLabymod = false;
+ static boolean usingOAM = false;
+ static boolean OAMWarning = false;
public static String guiToOpen = null;
- static boolean foundLivid = false;
- static Entity livid = null;
- public static double cakeTime;
-
- public static final ResourceLocation CAKE_ICON = new ResourceLocation("dsm", "icons/cake.png");
-
- static String[] riddleSolutions = {"The reward is not in my chest!", "At least one of them is lying, and the reward is not in",
- "My chest doesn't have the reward. We are all telling the truth", "My chest has the reward and I'm telling the truth",
- "The reward isn't in any of our chests", "Both of them are telling the truth."};
- static Map<String, String[]> triviaSolutions = new HashMap<>();
- static String[] triviaAnswers = null;
- static Entity highestBlaze = null;
- static Entity lowestBlaze = null;
- // Among Us colours
- static final int[] CREEPER_COLOURS = {0x50EF39, 0xC51111, 0x132ED1, 0x117F2D, 0xED54BA, 0xEF7D0D, 0xF5F557, 0xD6E0F0, 0x6B2FBB, 0x39FEDC};
- static boolean drawCreeperLines = false;
- static Vec3 creeperLocation = new Vec3(0, 0, 0);
- static List<Vec3[]> creeperLines = new ArrayList<>();
- static boolean prevInWaterRoom = false;
- static boolean inWaterRoom = false;
- static String waterAnswers = null;
- static AxisAlignedBB correctTicTacToeButton = null;
- static Slot[] clickInOrderSlots = new Slot[36];
- static int lastChronomatronRound = 0;
- static List<String> chronomatronPattern = new ArrayList<>();
- static int chronomatronMouseClicks = 0;
- static int lastUltraSequencerClicked = 0;
- static ItemStack[] experimentTableSlots = new ItemStack[54];
- static int pickBlockBind;
- static boolean pickBlockBindSwapped = false;
-
- static double dungeonStartTime = 0;
+ static boolean foundLivid = false;
+ static Entity livid = null;
+ public static double cakeTime;
+ public static double nextBonzoUse = 0;
+ public static boolean firstLaunch = false;
+
+ public static final ResourceLocation CAKE_ICON = new ResourceLocation("dsm", "icons/cake.png");
+ public static final ResourceLocation BONZO_ICON = new ResourceLocation("dsm", "icons/bonzo.png");
+
+ static String[] riddleSolutions = {"The reward is not in my chest!", "At least one of them is lying, and the reward is not in",
+ "My chest doesn't have the reward. We are all telling the truth", "My chest has the reward and I'm telling the truth",
+ "The reward isn't in any of our chests", "Both of them are telling the truth."};
+ static BlockPos riddleChest = null;
+ static Map<String, String[]> triviaSolutions = new HashMap<>();
+ static String[] triviaAnswers = null;
+ static Entity highestBlaze = null;
+ static Entity lowestBlaze = null;
+ // Among Us colours
+ static final int[] CREEPER_COLOURS = {0x50EF39, 0xC51111, 0x132ED1, 0x117F2D, 0xED54BA, 0xEF7D0D, 0xF5F557, 0xD6E0F0, 0x6B2FBB, 0x39FEDC};
+ static boolean drawCreeperLines = false;
+ static Vec3 creeperLocation = new Vec3(0, 0, 0);
+ static List<Vec3[]> creeperLines = new ArrayList<>();
+ static boolean prevInWaterRoom = false;
+ static boolean inWaterRoom = false;
+ static String waterAnswers = null;
+ static AxisAlignedBB correctTicTacToeButton = null;
+ static Pattern startsWithTerminalPattern = Pattern.compile("[A-Z]{2,}");
+ static Slot[] clickInOrderSlots = new Slot[36];
+ static int lastChronomatronRound = 0;
+ static List<String> chronomatronPattern = new ArrayList<>();
+ static int chronomatronMouseClicks = 0;
+ static int lastUltraSequencerClicked = 0;
+ static ItemStack[] experimentTableSlots = new ItemStack[54];
+ static int pickBlockBind;
+ static boolean pickBlockBindSwapped = false;
+ static String terminalColorNeeded;
+ static int[] terminalNumberNeeded = new int[4];
+
+ static double dungeonStartTime = 0;
static double bloodOpenTime = 0;
static double watcherClearTime = 0;
static double bossClearTime = 0;
static int witherDoors = 0;
static int dungeonDeaths = 0;
static int puzzleFails = 0;
-
+
static String lastSkill = "Farming";
public static boolean showSkillTracker;
public static StopWatch skillStopwatch = new StopWatch();
@@ -150,6 +162,7 @@ public class DankersSkyblockMod
static double alchemyXP = 0;
public static double alchemyXPGained = 0;
static double xpLeft = 0;
+ static double timeSinceGained = 0;
public static String MAIN_COLOUR;
public static String SECONDARY_COLOUR;
@@ -164,98 +177,117 @@ public class DankersSkyblockMod
public static String CAKE_COLOUR;
public static String SKILL_TRACKER_COLOUR;
public static String TRIVIA_WRONG_ANSWER_COLOUR;
+ public static String BONZO_COLOR;
public static int LOWEST_BLAZE_COLOUR;
public static int HIGHEST_BLAZE_COLOUR;
-
+ public static int PET_1_TO_9;
+ public static int PET_10_TO_19;
+ public static int PET_20_TO_29;
+ public static int PET_30_TO_39;
+ public static int PET_40_TO_49;
+ public static int PET_50_TO_59;
+ public static int PET_60_TO_69;
+ public static int PET_70_TO_79;
+ public static int PET_80_TO_89;
+ public static int PET_90_TO_99;
+ public static int PET_100;
+ public static int ULTRASEQUENCER_NEXT;
+ public static int ULTRASEQUENCER_NEXT_TO_NEXT;
+ public static int CHRONOMATRON_NEXT;
+ public static int CHRONOMATRON_NEXT_TO_NEXT;
+ public static int CLICK_IN_ORDER_NEXT;
+ public static int CLICK_IN_ORDER_NEXT_TO_NEXT;
+
@EventHandler
public void init(FMLInitializationEvent event) {
- MinecraftForge.EVENT_BUS.register(this);
- MinecraftForge.EVENT_BUS.register(new PacketHandler());
-
- ConfigHandler.reloadConfig();
-
- // For golden enchants
- t6Enchants.put("9Angler VI", "6Angler VI");
- t6Enchants.put("9Bane of Arthropods VI", "6Bane of Arthropods VI");
- t6Enchants.put("9Caster VI", "6Caster VI");
- t6Enchants.put("9Compact X", "6Compact X");
- t6Enchants.put("9Critical VI", "6Critical VI");
- t6Enchants.put("9Dragon Hunter V", "6Dragon Hunter V");
- t6Enchants.put("9Efficiency VI", "6Efficiency VI");
- t6Enchants.put("9Ender Slayer VI", "6Ender Slayer VI");
- t6Enchants.put("9Experience IV", "6Experience IV");
- t6Enchants.put("9Expertise X", "6Expertise X");
- t6Enchants.put("9Feather Falling X", "6Feather Falling X");
- t6Enchants.put("9Frail VI", "6Frail VI");
- t6Enchants.put("9Giant Killer VI", "6Giant Killer VI");
- t6Enchants.put("9Growth VI", "6Growth VI");
- t6Enchants.put("9Infinite Quiver X", "6Infinite Quiver X");
- t6Enchants.put("9Lethality VI", "6Lethality VI");
- t6Enchants.put("9Life Steal IV", "6Life Steal IV");
- t6Enchants.put("9Looting IV", "6Looting IV");
- t6Enchants.put("9Luck VI", "6Luck VI");
- t6Enchants.put("9Luck of the Sea VI", "6Luck of the Sea VI");
- t6Enchants.put("9Lure VI", "6Lure VI");
- t6Enchants.put("9Magnet VI", "6Magnet VI");
- t6Enchants.put("9Overload V", "6Overload V");
- t6Enchants.put("9Power VI", "6Power VI");
- t6Enchants.put("9Protection VI", "6Protection VI");
- t6Enchants.put("9Scavenger IV", "6Scavenger IV");
- t6Enchants.put("9Scavenger V", "6Scavenger V");
- t6Enchants.put("9Sharpness VI", "6Sharpness VI");
- t6Enchants.put("9Smite VI", "6Smite VI");
- t6Enchants.put("9Spiked Hook VI", "6Spiked Hook VI");
- t6Enchants.put("9Thunderlord VI", "6Thunderlord VI");
- t6Enchants.put("9Vampirism VI", "6Vampirism VI");
-
- triviaSolutions.put("What is the status of The Watcher?", new String[]{"Stalker"});
- triviaSolutions.put("What is the status of Bonzo?", new String[]{"New Necromancer"});
- triviaSolutions.put("What is the status of Scarf?", new String[]{"Apprentice Necromancer"});
- triviaSolutions.put("What is the status of The Professor?", new String[]{"Professor"});
- triviaSolutions.put("What is the status of Thorn?", new String[]{"Shaman Necromancer"});
- triviaSolutions.put("What is the status of Livid?", new String[]{"Master Necromancer"});
- triviaSolutions.put("What is the status of Sadan?", new String[]{"Necromancer Lord"});
- triviaSolutions.put("What is the status of Maxor?", new String[]{"Young Wither"});
- 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[]{"209 Fairy Souls"});
- triviaSolutions.put("How many Fairy Souls are there in Spider's Den?", new String[]{"17 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 Barn?", new String[]{"7 Fairy Souls"});
- triviaSolutions.put("How many Fairy Souls are there in Mushroom Desert?", new String[]{"8 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 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"});
- triviaSolutions.put("How many Fairy Souls are there in The Hub?", new String[]{"79 Fairy Souls"});
- triviaSolutions.put("How many Fairy Souls are there in Deep Caverns?", new String[]{"21 Fairy Souls"});
- triviaSolutions.put("How many Fairy Souls are there in Gold Mine?", new String[]{"12 Fairy Souls"});
- triviaSolutions.put("How many Fairy Souls are there in Dungeon Hub?", new String[]{"7 Fairy Souls"});
- triviaSolutions.put("Which brother is on the Spider's Den?", new String[]{"Rick"});
- triviaSolutions.put("What is the name of Rick's brother?", new String[]{"Pat"});
- triviaSolutions.put("What is the name of the Painter in the Hub?", new String[]{"Marco"});
- 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[]{"52 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"});
- triviaSolutions.put("Which of these is not a dragon in The End?", new String[]{"Zoomer Dragon", "Weak Dragon", "Stonk Dragon", "Holy Dragon", "Boomer Dragon",
- "Booger Dragon", "Older Dragon", "Elder Dragon", "Stable Dragon", "Professor Dragon"});
-
- String patternString = "(" + String.join("|", t6Enchants.keySet()) + ")";
- pattern = Pattern.compile(patternString);
-
- keyBindings[0] = new KeyBinding("Open Maddox Menu", Keyboard.KEY_M, "Danker's Skyblock Mod");
- keyBindings[1] = new KeyBinding("Start/Stop Skill Tracker", Keyboard.KEY_NUMPAD5, "Danker's Skyblock Mod");
-
- for (KeyBinding keyBinding : keyBindings) {
- ClientRegistry.registerKeyBinding(keyBinding);
- }
+ MinecraftForge.EVENT_BUS.register(this);
+ MinecraftForge.EVENT_BUS.register(new PacketHandler());
+
+ ConfigHandler.reloadConfig();
+
+ // For golden enchants
+ t6Enchants.put("9Angler VI", "6Angler VI");
+ t6Enchants.put("9Bane of Arthropods VI", "6Bane of Arthropods VI");
+ t6Enchants.put("9Caster VI", "6Caster VI");
+ t6Enchants.put("9Compact X", "6Compact X");
+ t6Enchants.put("9Critical VI", "6Critical VI");
+ t6Enchants.put("9Dragon Hunter V", "6Dragon Hunter V");
+ t6Enchants.put("9Efficiency VI", "6Efficiency VI");
+ t6Enchants.put("9Ender Slayer VI", "6Ender Slayer VI");
+ t6Enchants.put("9Experience IV", "6Experience IV");
+ t6Enchants.put("9Expertise X", "6Expertise X");
+ t6Enchants.put("9Feather Falling X", "6Feather Falling X");
+ t6Enchants.put("9Frail VI", "6Frail VI");
+ t6Enchants.put("9Giant Killer VI", "6Giant Killer VI");
+ t6Enchants.put("9Growth VI", "6Growth VI");
+ t6Enchants.put("9Infinite Quiver X", "6Infinite Quiver X");
+ t6Enchants.put("9Lethality VI", "6Lethality VI");
+ t6Enchants.put("9Life Steal IV", "6Life Steal IV");
+ t6Enchants.put("9Looting IV", "6Looting IV");
+ t6Enchants.put("9Luck VI", "6Luck VI");
+ t6Enchants.put("9Luck of the Sea VI", "6Luck of the Sea VI");
+ t6Enchants.put("9Lure VI", "6Lure VI");
+ t6Enchants.put("9Magnet VI", "6Magnet VI");
+ t6Enchants.put("9Overload V", "6Overload V");
+ t6Enchants.put("9Power VI", "6Power VI");
+ t6Enchants.put("9Protection VI", "6Protection VI");
+ t6Enchants.put("9Scavenger IV", "6Scavenger IV");
+ t6Enchants.put("9Scavenger V", "6Scavenger V");
+ t6Enchants.put("9Sharpness VI", "6Sharpness VI");
+ t6Enchants.put("9Smite VI", "6Smite VI");
+ t6Enchants.put("9Spiked Hook VI", "6Spiked Hook VI");
+ t6Enchants.put("9Thunderlord VI", "6Thunderlord VI");
+ t6Enchants.put("9Vampirism VI", "6Vampirism VI");
+
+ triviaSolutions.put("What is the status of The Watcher?", new String[]{"Stalker"});
+ triviaSolutions.put("What is the status of Bonzo?", new String[]{"New Necromancer"});
+ triviaSolutions.put("What is the status of Scarf?", new String[]{"Apprentice Necromancer"});
+ triviaSolutions.put("What is the status of The Professor?", new String[]{"Professor"});
+ triviaSolutions.put("What is the status of Thorn?", new String[]{"Shaman Necromancer"});
+ triviaSolutions.put("What is the status of Livid?", new String[]{"Master Necromancer"});
+ triviaSolutions.put("What is the status of Sadan?", new String[]{"Necromancer Lord"});
+ triviaSolutions.put("What is the status of Maxor?", new String[]{"Young Wither"});
+ 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[]{"220 Fairy Souls"});
+ triviaSolutions.put("How many Fairy Souls are there in Spider's Den?", new String[]{"17 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 Barn?", new String[]{"7 Fairy Souls"});
+ triviaSolutions.put("How many Fairy Souls are there in Mushroom Desert?", new String[]{"8 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 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"});
+ triviaSolutions.put("How many Fairy Souls are there in The Hub?", new String[]{"79 Fairy Souls"});
+ triviaSolutions.put("How many Fairy Souls are there in Deep Caverns?", new String[]{"21 Fairy Souls"});
+ triviaSolutions.put("How many Fairy Souls are there in Gold Mine?", new String[]{"12 Fairy Souls"});
+ triviaSolutions.put("How many Fairy Souls are there in Dungeon Hub?", new String[]{"7 Fairy Souls"});
+ triviaSolutions.put("Which brother is on the Spider's Den?", new String[]{"Rick"});
+ triviaSolutions.put("What is the name of Rick's brother?", new String[]{"Pat"});
+ triviaSolutions.put("What is the name of the Painter in the Hub?", new String[]{"Marco"});
+ 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("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"});
+ triviaSolutions.put("Which of these is not a dragon in The End?", new String[]{"Zoomer Dragon", "Weak Dragon", "Stonk Dragon", "Holy Dragon", "Boomer Dragon",
+ "Booger Dragon", "Older Dragon", "Elder Dragon", "Stable Dragon", "Professor Dragon"});
+
+ String patternString = "(" + String.join("|", t6Enchants.keySet()) + ")";
+ t6EnchantPattern = Pattern.compile(patternString);
+
+ 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");
+ keyBindings[2] = new KeyBinding("Start/Stop Skill Tracker", Keyboard.KEY_NUMPAD5, "Danker's Skyblock Mod");
+
+ for (KeyBinding keyBinding : keyBindings) {
+ ClientRegistry.registerKeyBinding(keyBinding);
+ }
}
-
+
@EventHandler
public void preInit(final FMLPreInitializationEvent event) {
ClientCommandHandler.instance.registerCommand(new ToggleCommand());
@@ -280,74 +312,282 @@ public class DankersSkyblockMod
ClientCommandHandler.instance.registerCommand(new DungeonsCommand());
ClientCommandHandler.instance.registerCommand(new LobbySkillsCommand());
ClientCommandHandler.instance.registerCommand(new DankerGuiCommand());
- ClientCommandHandler.instance.registerCommand(new SkillTrackerCommand());
+ ClientCommandHandler.instance.registerCommand(new SkillTrackerCommand());
+ ClientCommandHandler.instance.registerCommand(new FairySoulsCommand());
}
-
+
@EventHandler
public void postInit(final FMLPostInitializationEvent event) {
+ Package[] packages = Package.getPackages();
+ for(Package p : packages){
+ if(p.getName().startsWith("com.spiderfrog.gadgets") || p.getName().startsWith("com.spiderfrog.oldanimations")){
+ usingOAM = true;
+ }
+ }
+ System.out.println("OAM detection: " + usingOAM);
+
usingLabymod = Loader.isModLoaded("labymod");
System.out.println("LabyMod detection: " + usingLabymod);
+
+ if(!ClientCommandHandler.instance.getCommands().containsKey("reparty")) {
+ ClientCommandHandler.instance.registerCommand(new RepartyCommand());
+ } else if (ConfigHandler.getBoolean("commands", "reparty")) {
+ for(Map.Entry<String, ICommand> entry : ClientCommandHandler.instance.getCommands().entrySet()) {
+ if (entry.getKey().equals("reparty") || entry.getKey().equals("rp")) {
+ entry.setValue(new RepartyCommand());
+ }
+ }
+ }
+
}
-
+
+ @SubscribeEvent
+ public void onGuiOpenEvent(GuiOpenEvent event){
+ if(event.gui instanceof GuiMainMenu && usingOAM && !OAMWarning){
+ if(!(event.gui instanceof WarningGui)){
+ event.gui = new WarningGuiRedirect(new WarningGui());
+ OAMWarning = true;
+ }
+ }
+ }
+
// Update checker
@SubscribeEvent
public void onJoin(EntityJoinWorldEvent event) {
- if (!updateChecked) {
- updateChecked = true;
-
- // MULTI THREAD DRIFTING
- new Thread(() -> {
- EntityPlayer player = Minecraft.getMinecraft().thePlayer;
-
- System.out.println("Checking for updates...");
- JsonObject latestRelease = APIHandler.getResponse("https://api.github.com/repos/bowser0000/SkyblockMod/releases/latest");
-
- String latestTag = latestRelease.get("tag_name").getAsString();
- DefaultArtifactVersion currentVersion = new DefaultArtifactVersion(VERSION);
- DefaultArtifactVersion latestVersion = new DefaultArtifactVersion(latestTag.substring(1));
-
- if (currentVersion.compareTo(latestVersion) < 0) {
- String releaseURL = latestRelease.get("html_url").getAsString();
-
- ChatComponentText update = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [UPDATE] ");
- update.setChatStyle(update.getChatStyle().setChatClickEvent(new ClickEvent(Action.OPEN_URL, releaseURL)));
-
- try {
- Thread.sleep(2000);
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- }
- player.addChatMessage(new ChatComponentText(ERROR_COLOUR + MODID + " is outdated. Please update to " + latestTag + ".\n").appendSibling(update));
- }
- }).start();
- }
+
+ if (firstLaunch) {
+ firstLaunch = false;
+ ConfigHandler.writeBooleanConfig("misc", "firstLaunch", false);
+
+ IChatComponent chatComponent = new ChatComponentText(
+ EnumChatFormatting.GOLD + "Thank you for downloading Danker's Skyblock Mod.\n" +
+ "To get started, run the command " + EnumChatFormatting.GOLD + "/dsm" + EnumChatFormatting.RESET + " to view all the mod features."
+ );
+ chatComponent.setChatStyle(chatComponent.getChatStyle().setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText("Click to open the DSM menu."))).setChatClickEvent(new ClickEvent(Action.RUN_COMMAND, "/dsm")));
+
+ new Thread(() -> {
+ while (true) {
+ if (Minecraft.getMinecraft().thePlayer == null) {
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ continue;
+ }
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ Minecraft.getMinecraft().thePlayer.addChatMessage(chatComponent);
+ break;
+ }
+ }).start();
+ }
+
+ if (!updateChecked) {
+ updateChecked = true;
+
+ // MULTI THREAD DRIFTING
+ new Thread(() -> {
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+
+ System.out.println("Checking for updates...");
+ JsonObject latestRelease = APIHandler.getResponse("https://api.github.com/repos/bowser0000/SkyblockMod/releases/latest");
+
+ String latestTag = latestRelease.get("tag_name").getAsString();
+ DefaultArtifactVersion currentVersion = new DefaultArtifactVersion(VERSION);
+ DefaultArtifactVersion latestVersion = new DefaultArtifactVersion(latestTag.substring(1));
+
+ if (currentVersion.compareTo(latestVersion) < 0) {
+ String releaseURL = latestRelease.get("html_url").getAsString();
+
+ ChatComponentText update = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [UPDATE] ");
+ update.setChatStyle(update.getChatStyle().setChatClickEvent(new ClickEvent(Action.OPEN_URL, releaseURL)));
+
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ player.addChatMessage(new ChatComponentText(ERROR_COLOUR + MODID + " is outdated. Please update to " + latestTag + ".\n").appendSibling(update));
+ }
+ }).start();
+ }
}
-
+
@SubscribeEvent
public void onWorldChange(WorldEvent.Load event) {
- foundLivid = false;
- livid = null;
+ riddleChest = null;
+ foundLivid = false;
+ livid = null;
+ lowestBlaze = null;
+ highestBlaze = null;
+ nextBonzoUse = 0;
}
-
+
// It randomly broke, so I had to make it the highest priority
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void onChat(ClientChatReceivedEvent event) {
String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
-
+
+ if (message.startsWith("Your new API key is ") && Utils.isOnHypixel()) {
+ String apiKey = event.message.getSiblings().get(0).getChatStyle().getChatClickEvent().getValue();
+ ConfigHandler.writeStringConfig("api", "APIKey", apiKey);
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Set API key to " + DankersSkyblockMod.SECONDARY_COLOUR + apiKey));
+ }
+
+ // Reparty command
+ // Getting party
+ if (RepartyCommand.gettingParty) {
+ if (message.contains("-----")) {
+ switch(RepartyCommand.Delimiter) {
+ case 0:
+ System.out.println("Get Party Delimiter Cancelled");
+ RepartyCommand.Delimiter++;
+ event.setCanceled(true);
+ return;
+ case 1:
+ System.out.println("Done querying party");
+ RepartyCommand.gettingParty = false;
+ RepartyCommand.Delimiter = 0;
+ event.setCanceled(true);
+ return;
+ }
+ }else if (message.startsWith("Party M") || message.startsWith("Party Leader")){
+ EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+
+ Pattern party_start_pattern = Pattern.compile("^Party Members \\((\\d+)\\)$");
+ Pattern leader_pattern = Pattern.compile("^Party Leader: (?:\\[.+?] )?(\\w+) ●$");
+ Pattern members_pattern = Pattern.compile(" (?:\\[.+?] )?(\\w+) ●");
+ Matcher party_start = party_start_pattern.matcher(message);
+ Matcher leader = leader_pattern.matcher(message);
+ Matcher members = members_pattern.matcher(message);
+
+ if (party_start.matches() && Integer.parseInt(party_start.group(1)) == 1) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "You cannot reparty yourself."));
+ RepartyCommand.partyThread.interrupt();
+ } else if (leader.matches() && !(leader.group(1).equals(player.getName()))) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "You are not party leader."));
+ RepartyCommand.partyThread.interrupt();
+ } else {
+ while (members.find()) {
+ String partyMember = members.group(1);
+ if (!partyMember.equals(player.getName())) {
+ RepartyCommand.party.add(partyMember);
+ System.out.println(partyMember);
+ }
+ }
+ }
+ event.setCanceled(true);
+ return;
+ }
+ }
+ // Disbanding party
+ if (RepartyCommand.disbanding) {
+ if (message.contains("-----")) {
+ switch (RepartyCommand.Delimiter) {
+ case 0:
+ System.out.println("Disband Delimiter Cancelled");
+ RepartyCommand.Delimiter++;
+ event.setCanceled(true);
+ return;
+ case 1:
+ System.out.println("Done disbanding");
+ RepartyCommand.disbanding = false;
+ RepartyCommand.Delimiter = 0;
+ event.setCanceled(true);
+ return;
+ }
+ } else if (message.endsWith("has disbanded the party!")) {
+ event.setCanceled(true);
+ return;
+ }
+ }
+ // Inviting
+ if (RepartyCommand.inviting) {
+ if (message.contains("-----")) {
+ switch (RepartyCommand.Delimiter) {
+ case 1:
+ event.setCanceled(true);
+ RepartyCommand.Delimiter = 0;
+ System.out.println("Player Invited!");
+ RepartyCommand.inviting = false;
+ return;
+ case 0:
+ RepartyCommand.Delimiter++;
+ event.setCanceled(true);
+ return;
+ }
+ } else if (message.endsWith(" to the party! They have 60 seconds to accept.")) {
+ Pattern invitePattern = Pattern.compile("(?:(?:\\[.+?] )?(?:\\w+) invited )(?:\\[.+?] )?(\\w+)");
+ Matcher invitee = invitePattern.matcher(message);
+ if (invitee.find()) {
+ System.out.println("" + invitee.group(1) + ": " + RepartyCommand.repartyFailList.remove(invitee.group(1)));
+ }
+ event.setCanceled(true);
+ return;
+ } else if (message.contains("Couldn't find a player") || message.contains("You cannot invite that player")) {
+ event.setCanceled(true);
+ return;
+ }
+ }
+ // Fail Inviting
+ if (RepartyCommand.failInviting) {
+ if (message.contains("-----")) {
+ switch (RepartyCommand.Delimiter) {
+ case 1:
+ event.setCanceled(true);
+ RepartyCommand.Delimiter = 0;
+ System.out.println("Player Invited!");
+ RepartyCommand.inviting = false;
+ return;
+ case 0:
+ RepartyCommand.Delimiter++;
+ event.setCanceled(true);
+ return;
+ }
+ } else if (message.endsWith(" to the party! They have 60 seconds to accept.")) {
+ Pattern invitePattern = Pattern.compile("(?:(?:\\[.+?] )?(?:\\w+) invited )(?:\\[.+?] )?(\\w+)");
+ Matcher invitee = invitePattern.matcher(message);
+ if (invitee.find()) {
+ System.out.println("" + invitee.group(1) + ": " + RepartyCommand.repartyFailList.remove(invitee.group(1)));
+ }
+ event.setCanceled(true);
+ return;
+ } else if (message.contains("Couldn't find a player") || message.contains("You cannot invite that player")) {
+ event.setCanceled(true);
+ return;
+ }
+ }
+
if (!Utils.inSkyblock) return;
// Action Bar
if (event.type == 2) {
- String[] actionBarSections = event.message.getUnformattedText().split(" {3,}");
- for (String section : actionBarSections) {
+ EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+ String[] actionBarSections = event.message.getUnformattedText().split(" {3,}");
+
+ for (String section : actionBarSections) {
if (section.contains("+") && section.contains("/") && section.contains("(")) {
if (!section.contains("Runecrafting") && !section.contains("Carpentry")) {
- int limit = section.contains("Farming") || section.contains("Enchanting") ? 60 : 50;
- double currentXP = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("/")).replace(",", ""));
+ if (ToggleCommand.autoSkillTrackerToggled && System.currentTimeMillis() / 1000 - timeSinceGained <= 2) {
+ if (skillStopwatch.isStarted() && skillStopwatch.isSuspended()) {
+ skillStopwatch.resume();
+ } else if (!skillStopwatch.isStarted()) {
+ skillStopwatch.start();
+ }
+ }
+ timeSinceGained = System.currentTimeMillis() / 1000;
+
+ int limit = section.contains("Farming") || section.contains("Enchanting") || section.contains("Mining") ? 60 : 50;
+ double currentXP = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("/")).replace(",", ""));
int xpToLevelUp = Integer.parseInt(section.substring(section.indexOf("/") + 1, section.indexOf(")")).replaceAll(",", ""));
xpLeft = xpToLevelUp - currentXP;
int previousXP = Utils.getPastXpEarned(xpToLevelUp, limit);
- double totalXP = currentXP + previousXP;
+ double totalXP = currentXP + previousXP;
+
String skill = section.substring(section.indexOf(" ") + 1, section.lastIndexOf(" "));
switch (skill) {
case "Farming":
@@ -409,7 +649,7 @@ public class DankersSkyblockMod
double currentXp = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("/")).replace(",", ""));
int limit;
int totalXp;
- if (section.contains("Farming") || section.contains("Enchanting")) {
+ if (section.contains("Farming") || section.contains("Enchanting") || section.contains("Mining")) {
limit = 60;
totalXp = 111672425;
} else {
@@ -428,60 +668,168 @@ public class DankersSkyblockMod
}
return;
}
-
+
+ if (ToggleCommand.bonzoTimerToggled && Utils.inDungeons && message.contains("Bonzo's Mask") && message.contains("saved your life!")) {
+ double usedTime = System.currentTimeMillis() / 1000;
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
+ ItemStack bonzoMask = player.getCurrentArmor(3);
+ if (bonzoMask != null && bonzoMask.getItem() == Items.skull) {
+ int cooldownSeconds = 0;
+ for (String line : Utils.getItemLore(bonzoMask)) {
+ String stripped = StringUtils.stripControlCodes(line);
+ if (stripped.startsWith("Cooldown: "))
+ cooldownSeconds = Integer.parseInt(stripped.replaceAll("[^\\d]", ""));
+ }
+ System.out.println("Parsed Bonzo Mask Cooldown: " + cooldownSeconds);
+ if (cooldownSeconds > 0)
+ nextBonzoUse = usedTime + cooldownSeconds;
+ }
+ }
+
// Dungeon chat spoken by an NPC, containing :
if (ToggleCommand.threeManToggled && Utils.inDungeons && message.contains("[NPC]")) {
- for (String solution : riddleSolutions) {
- if (message.contains(solution)) {
- String npcName = message.substring(message.indexOf("]") + 2, message.indexOf(":"));
- Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(ANSWER_COLOUR + EnumChatFormatting.BOLD + StringUtils.stripControlCodes(npcName) + MAIN_COLOUR + " has the blessing."));
- break;
- }
- }
+ for (String solution : riddleSolutions) {
+ if (message.contains(solution)) {
+ Minecraft mc = Minecraft.getMinecraft();
+ String npcName = message.substring(message.indexOf("]") + 2, message.indexOf(":"));
+ mc.thePlayer.addChatMessage(new ChatComponentText(ANSWER_COLOUR + EnumChatFormatting.BOLD + StringUtils.stripControlCodes(npcName) + MAIN_COLOUR + " has the blessing."));
+ if (riddleChest == null) {
+ List<Entity> entities = mc.theWorld.getLoadedEntityList();
+ for (Entity entity : entities) {
+ if (entity == null || !entity.hasCustomName()) continue;
+ if (entity.getCustomNameTag().contains(npcName)) {
+ BlockPos npcLocation = new BlockPos(entity.posX, 69, entity.posZ);
+ if (mc.theWorld.getBlockState(npcLocation.north()).getBlock() == Blocks.chest) {
+ riddleChest = npcLocation.north();
+ } else if (mc.theWorld.getBlockState(npcLocation.east()).getBlock() == Blocks.chest) {
+ riddleChest = npcLocation.east();
+ } else if (mc.theWorld.getBlockState(npcLocation.south()).getBlock() == Blocks.chest) {
+ riddleChest = npcLocation.south();
+ } else if (mc.theWorld.getBlockState(npcLocation.west()).getBlock() == Blocks.chest) {
+ riddleChest = npcLocation.west();
+ } else {
+ System.out.print("Could not find correct riddle chest.");
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
}
-
+
+ if (ToggleCommand.necronNotificationsToggled && Utils.inDungeons && message.contains("[BOSS] Necron:")) {
+ Minecraft mc = Minecraft.getMinecraft();
+ World world = mc.theWorld;
+ if (message.contains("You tricked me!") || message.contains("That beam, it hurts! IT HURTS!!")) {
+ Utils.createTitle(EnumChatFormatting.RED + "NECRON STUCK!", 2);
+ } else if (message.contains("STOP USING MY FACTORY AGAINST ME!") || message.contains("OOF") || message.contains("ANOTHER TRAP!! YOUR TRICKS ARE FUTILE!") || message.contains("SERIOUSLY? AGAIN?!") || message.contains("STOP!!!!!")) {
+ List<EntityArmorStand> necronLabels = world.getEntities(EntityArmorStand.class, (entity -> {
+ if (!entity.hasCustomName()) return false;
+ if (!entity.getCustomNameTag().contains("Necron")) return false;
+ return true;
+ }));
+ if (necronLabels.size() == 0) {
+ Utils.createTitle(EnumChatFormatting.WHITE + "NECRON STUNNED!", 2);
+ } else {
+ EntityArmorStand necron = necronLabels.get(0);
+ double x = necron.posX;
+ double z = necron.posZ;
+
+ BlockPos blockPos = new BlockPos(x, 168, z);
+
+ IBlockState blockState = world.getBlockState(blockPos);
+ Block block = blockState.getBlock();
+
+ if (block != Blocks.stained_hardened_clay) {
+ Utils.createTitle(EnumChatFormatting.WHITE + "NECRON STUNNED!", 2);
+ } else {
+ switch (block.getDamageValue(world, blockPos)) {
+ case 4:
+ Utils.createTitle(EnumChatFormatting.YELLOW + "YELLOW PILLAR!", 2);
+ break;
+ case 5:
+ Utils.createTitle(EnumChatFormatting.DARK_GREEN + "GREEN PILLAR!", 2);
+ break;
+ case 11:
+ Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "PURPLE PILLAR!", 2);
+ break;
+ default:
+ Utils.createTitle(EnumChatFormatting.WHITE + "NECRON STUNNED!", 2);
+ }
+ }
+
+ }
+ } else if (message.contains("I'VE HAD ENOUGH! YOU'RE NOT HITTING ME WITH ANY MORE PILLARS!")) {
+ Utils.createTitle(EnumChatFormatting.RED + "RED PILLAR!", 2);
+ } else if (message.contains("ARGH!")) {
+ Utils.createTitle(EnumChatFormatting.RED + "EXPLOSION OVER!", 2);
+ }
+ }
+
if (message.contains("[BOSS] The Watcher: You have proven yourself. You may pass.")) {
- watcherClearTime = System.currentTimeMillis() / 1000;
+ watcherClearTime = System.currentTimeMillis() / 1000;
+ }
+ if (message.contains("[BOSS] The Watcher: That will be enough for now.")) {
+ if (ToggleCommand.watcherReadyToggled) Utils.createTitle(EnumChatFormatting.RED + "WATCHER READY", 2);
+ }
+ if (message.contains("PUZZLE FAIL! ") || message.contains("chose the wrong answer! I shall never forget this moment")) {
+ puzzleFails++;
}
- if (message.contains("PUZZLE FAIL! ") || message.contains("chose the wrong answer! I shall never forget this moment")) {
- puzzleFails++;
- }
-
- if (message.contains(":")) return;
-
- // Spirit Sceptre
- if (!ToggleCommand.sceptreMessages && message.contains("Your Spirit Sceptre hit ")) {
- event.setCanceled(true);
- return;
- }
- // Midas Staff
- if (!ToggleCommand.midasStaffMessages && message.contains("Your Molten Wave hit ")) {
- event.setCanceled(true);
- return;
- }
- // Heals
- if (!ToggleCommand.healMessages && message.contains(" health!") && (message.contains("You healed ") || message.contains(" healed you for "))) {
- event.setCanceled(true);
- return;
- }
- if (!ToggleCommand.implosionMessages) {
- if (message.contains("Your Implosion hit ") || message.contains("There are blocks in the way")) {
- event.setCanceled(true);
- return;
- }
- }
-
+ if (message.contains(":")) return;
+
+ // Spirit Sceptre
+ if (!ToggleCommand.sceptreMessages && message.contains("Your Spirit Sceptre hit ")) {
+ event.setCanceled(true);
+ return;
+ }
+ // Midas Staff
+ if (!ToggleCommand.midasStaffMessages && message.contains("Your Molten Wave hit ")) {
+ event.setCanceled(true);
+ return;
+ }
+ // Heals
+ if (!ToggleCommand.healMessages && message.contains(" health!") && (message.contains("You healed ") || message.contains(" healed you for "))) {
+ event.setCanceled(true);
+ return;
+ }
+ // Ability Cooldown
+ if (!ToggleCommand.cooldownMessages && message.contains("This ability is on cooldown for ")) {
+ event.setCanceled(true);
+ return;
+ }
+ // Out of mana messages
+ if (!ToggleCommand.manaMessages && message.contains("You do not have enough mana to do this!")) {
+ event.setCanceled(true);
+ return;
+ }
+ // Implosion
+ if (!ToggleCommand.implosionMessages) {
+ if (message.contains("Your Implosion hit ") || message.contains("There are blocks in the way")) {
+ event.setCanceled(true);
+ return;
+ }
+ }
+
if (ToggleCommand.oruoToggled && Utils.inDungeons) {
- // Don't set every answer to wrong with this question
- if (message.contains("What SkyBlock year is it?")) triviaAnswers = null;
-
- for (String question : triviaSolutions.keySet()) {
- if (message.contains(question)) {
- triviaAnswers = triviaSolutions.get(question);
- break;
- }
- }
+ if (message.contains("What SkyBlock year is it?")) {
+ double currentTime = System.currentTimeMillis() /1000L;
+
+ double diff = Math.floor(currentTime - 1560276000);
+
+ int year = (int) (diff / 446400 + 1);
+ triviaAnswers = new String[]{"Year " + year};
+ } else {
+ for (String question : triviaSolutions.keySet()) {
+ if (message.contains(question)) {
+ triviaAnswers = triviaSolutions.get(question);
+ break;
+ }
+ }
+ }
// Set wrong answers to red and remove click events
if (triviaAnswers != null && (message.contains("ⓐ") || message.contains("ⓑ") || message.contains("ⓒ"))) {
@@ -517,7 +865,7 @@ public class DankersSkyblockMod
}
}
}
-
+
if (ToggleCommand.golemAlertToggled) {
if (message.contains("The ground begins to shake as an Endstone Protector rises from below!")) {
Utils.createTitle(EnumChatFormatting.RED + "GOLEM SPAWNING!", 3);
@@ -1165,2122 +1513,2441 @@ public class DankersSkyblockMod
Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "SPIRIT BEAR", 2);
}
}
-
+
@SubscribeEvent
public void renderPlayerInfo(final RenderGameOverlayEvent.Post event) {
- if (usingLabymod && !(Minecraft.getMinecraft().ingameGUI instanceof GuiIngameForge)) return;
- if (event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE && event.type != RenderGameOverlayEvent.ElementType.JUMPBAR) return;
- renderEverything();
+ if (usingLabymod && !(Minecraft.getMinecraft().ingameGUI instanceof GuiIngameForge)) return;
+ if (event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE && event.type != RenderGameOverlayEvent.ElementType.JUMPBAR)
+ return;
+ renderEverything();
}
-
+
// LabyMod Support
@SubscribeEvent
public void renderPlayerInfoLabyMod(final RenderGameOverlayEvent event) {
- if (!usingLabymod) return;
- if (event.type != null) return;
- renderEverything();
+ if (!usingLabymod) return;
+ if (event.type != null) return;
+ renderEverything();
}
-
+
public void renderEverything() {
- if (Minecraft.getMinecraft().currentScreen instanceof EditLocationsGui) return;
-
- Minecraft mc = Minecraft.getMinecraft();
-
- if (ToggleCommand.coordsToggled) {
- EntityPlayer player = mc.thePlayer;
-
- double xDir = (player.rotationYaw % 360 + 360) % 360;
- if (xDir > 180) xDir -= 360;
- xDir = (double) Math.round(xDir * 10d) / 10d;
- double yDir = (double) Math.round(player.rotationPitch * 10d) / 10d;
-
- String coordText = COORDS_COLOUR + (int) player.posX + " / " + (int) player.posY + " / " + (int) player.posZ + " (" + xDir + " / " + yDir + ")";
- new TextRenderer(mc, coordText, MoveCommand.coordsXY[0], MoveCommand.coordsXY[1], ScaleCommand.coordsScale);
- }
-
- if (ToggleCommand.dungeonTimerToggled && Utils.inDungeons) {
- String dungeonTimerText = EnumChatFormatting.GRAY + "Wither Doors:\n" +
- EnumChatFormatting.DARK_RED + "Blood Open:\n" +
- EnumChatFormatting.RED + "Watcher Clear:\n" +
- EnumChatFormatting.BLUE + "Boss Clear:\n" +
- EnumChatFormatting.YELLOW + "Deaths:\n" +
- EnumChatFormatting.YELLOW + "Puzzle Fails:";
- String dungeonTimers = EnumChatFormatting.GRAY + "" + witherDoors + "\n" +
- EnumChatFormatting.DARK_RED + Utils.getTimeBetween(dungeonStartTime, bloodOpenTime) + "\n" +
- EnumChatFormatting.RED + Utils.getTimeBetween(dungeonStartTime, watcherClearTime) + "\n" +
- EnumChatFormatting.BLUE + Utils.getTimeBetween(dungeonStartTime, bossClearTime) + "\n" +
- EnumChatFormatting.YELLOW + dungeonDeaths + "\n" +
- EnumChatFormatting.YELLOW + puzzleFails;
- new TextRenderer(mc, dungeonTimerText, MoveCommand.dungeonTimerXY[0], MoveCommand.dungeonTimerXY[1], ScaleCommand.dungeonTimerScale);
- new TextRenderer(mc, dungeonTimers, (int) (MoveCommand.dungeonTimerXY[0] + (80 * ScaleCommand.dungeonTimerScale)), MoveCommand.dungeonTimerXY[1], ScaleCommand.dungeonTimerScale);
- }
-
- if (ToggleCommand.lividSolverToggled && foundLivid && livid != null) {
- new TextRenderer(mc, livid.getName().replace("" + EnumChatFormatting.BOLD, ""), MoveCommand.lividHpXY[0], MoveCommand.lividHpXY[1], ScaleCommand.lividHpScale);
- }
-
- if (ToggleCommand.cakeTimerToggled && Utils.inSkyblock) {
- double scale = ScaleCommand.cakeTimerScale;
- double scaleReset = Math.pow(scale, -1);
- GL11.glScaled(scale, scale, scale);
-
- double timeNow = System.currentTimeMillis() / 1000;
- mc.getTextureManager().bindTexture(CAKE_ICON);
- Gui.drawModalRectWithCustomSizedTexture(MoveCommand.cakeTimerXY[0], MoveCommand.cakeTimerXY[1], 0, 0, 16, 16, 16, 16);
-
- String cakeText;
- if (cakeTime - timeNow < 0) {
- cakeText = EnumChatFormatting.RED + "NONE";
- } else {
- cakeText = CAKE_COLOUR + Utils.getTimeBetween(timeNow, cakeTime);
- }
- new TextRenderer(mc, cakeText, MoveCommand.cakeTimerXY[0] + 20, MoveCommand.cakeTimerXY[1] + 5, 1);
-
- GL11.glScaled(scaleReset, scaleReset, scaleReset);
- }
-
- if (showSkillTracker && Utils.inSkyblock) {
- int xpPerHour;
- double xpToShow = 0;
- switch (lastSkill) {
- case "Farming":
- xpToShow = farmingXPGained;
- break;
- case "Mining":
- xpToShow = miningXPGained;
- break;
- case "Combat":
- xpToShow = combatXPGained;
- break;
- case "Foraging":
- xpToShow = foragingXPGained;
- break;
- case "Fishing":
- xpToShow = fishingXPGained;
- break;
- case "Enchanting":
- xpToShow = enchantingXPGained;
- break;
- case "Alchemy":
- xpToShow = alchemyXPGained;
- break;
- default:
- System.err.println("Unknown skill in rendering.");
- }
- xpPerHour = (int) Math.round(xpToShow / ((skillStopwatch.getTime() + 1) / 3600000d));
- String skillTrackerText = SKILL_TRACKER_COLOUR + lastSkill + " XP Earned: " + NumberFormat.getNumberInstance(Locale.US).format(xpToShow) + "\n" +
- SKILL_TRACKER_COLOUR + "Time Elapsed: " + Utils.getTimeBetween(0, skillStopwatch.getTime() / 1000d) + "\n" +
- SKILL_TRACKER_COLOUR + "XP Per Hour: " + NumberFormat.getIntegerInstance(Locale.US).format(xpPerHour);
- if (xpLeft >= 0) {
- String time = xpPerHour == 0 ? "Never" : Utils.getTimeBetween(0, xpLeft / (xpPerHour / 3600D));
- skillTrackerText += "\n" + SKILL_TRACKER_COLOUR + "Time Until Next Level: " + time;
- }
- if (!skillStopwatch.isStarted() || skillStopwatch.isSuspended()) {
- skillTrackerText += "\n" + EnumChatFormatting.RED + "PAUSED";
- }
-
- new TextRenderer(mc, skillTrackerText, MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[1], ScaleCommand.skillTrackerScale);
- }
+ if (Minecraft.getMinecraft().currentScreen instanceof EditLocationsGui) return;
- if (ToggleCommand.waterToggled && Utils.inDungeons && waterAnswers != null) {
- new TextRenderer(mc, waterAnswers, MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], ScaleCommand.waterAnswerScale);
- }
+ Minecraft mc = Minecraft.getMinecraft();
- if (!DisplayCommand.display.equals("off")) {
- String dropsText = "";
- String countText = "";
- String dropsTextTwo;
- String countTextTwo;
- String timeBetween;
- String bossesBetween;
- String drop20;
- double timeNow = System.currentTimeMillis() / 1000;
- NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US);
-
- switch (DisplayCommand.display) {
- case "wolf":
- if (LootCommand.wolfTime == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.wolfTime, timeNow);
- }
- if (LootCommand.wolfBosses == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.wolfBosses);
- }
- if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootCommand.wolfWheels);
- } else {
- drop20 = nf.format(LootCommand.wolfWheelsDrops) + " times";
- }
-
- dropsText = EnumChatFormatting.GOLD + "Svens Killed:\n" +
- EnumChatFormatting.GREEN + "Wolf Teeth:\n" +
- EnumChatFormatting.BLUE + "Hamster Wheels:\n" +
- EnumChatFormatting.AQUA + "Spirit Runes:\n" +
- EnumChatFormatting.WHITE + "Critical VI Books:\n" +
- EnumChatFormatting.DARK_RED + "Red Claw Eggs:\n" +
- EnumChatFormatting.GOLD + "Couture Runes:\n" +
- EnumChatFormatting.AQUA + "Grizzly Baits:\n" +
- EnumChatFormatting.DARK_PURPLE + "Overfluxes:\n" +
- EnumChatFormatting.AQUA + "Time Since RNG:\n" +
- EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.wolfSvens) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.wolfTeeth) + "\n" +
- EnumChatFormatting.BLUE + drop20 + "\n" +
- EnumChatFormatting.AQUA + LootCommand.wolfSpirits + "\n" +
- EnumChatFormatting.WHITE + LootCommand.wolfBooks + "\n" +
- EnumChatFormatting.DARK_RED + LootCommand.wolfEggs + "\n" +
- EnumChatFormatting.GOLD + LootCommand.wolfCoutures + "\n" +
- EnumChatFormatting.AQUA + LootCommand.wolfBaits + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootCommand.wolfFluxes + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
- break;
- case "wolf_session":
- if (LootCommand.wolfTimeSession == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.wolfTimeSession, timeNow);
- }
- if (LootCommand.wolfBossesSession == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.wolfBossesSession);
- }
- if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootCommand.wolfWheelsSession);
- } else {
- drop20 = nf.format(LootCommand.wolfWheelsDropsSession) + " times";
- }
-
- dropsText = EnumChatFormatting.GOLD + "Svens Killed:\n" +
- EnumChatFormatting.GREEN + "Wolf Teeth:\n" +
- EnumChatFormatting.BLUE + "Hamster Wheels:\n" +
- EnumChatFormatting.AQUA + "Spirit Runes:\n" +
- EnumChatFormatting.WHITE + "Critical VI Books:\n" +
- EnumChatFormatting.DARK_RED + "Red Claw Eggs:\n" +
- EnumChatFormatting.GOLD + "Couture Runes:\n" +
- EnumChatFormatting.AQUA + "Grizzly Baits:\n" +
- EnumChatFormatting.DARK_PURPLE + "Overfluxes:\n" +
- EnumChatFormatting.AQUA + "Time Since RNG:\n" +
- EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.wolfSvensSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.wolfTeethSession) + "\n" +
- EnumChatFormatting.BLUE + drop20 + "\n" +
- EnumChatFormatting.AQUA + LootCommand.wolfSpiritsSession + "\n" +
- EnumChatFormatting.WHITE + LootCommand.wolfBooksSession + "\n" +
- EnumChatFormatting.DARK_RED + LootCommand.wolfEggsSession + "\n" +
- EnumChatFormatting.GOLD + LootCommand.wolfCouturesSession + "\n" +
- EnumChatFormatting.AQUA + LootCommand.wolfBaitsSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootCommand.wolfFluxesSession + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
- break;
- case "spider":
- if (LootCommand.spiderTime == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.spiderTime, timeNow);
- }
- if (LootCommand.spiderBosses == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.spiderBosses);
- }
- if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootCommand.spiderTAP);
- } else {
- drop20 = nf.format(LootCommand.spiderTAPDrops) + " times";
- }
-
- dropsText = EnumChatFormatting.GOLD + "Tarantulas Killed:\n" +
- EnumChatFormatting.GREEN + "Tarantula Webs:\n" +
- EnumChatFormatting.DARK_GREEN + "Arrow Poison:\n" +
- EnumChatFormatting.DARK_GRAY + "Bite Runes:\n" +
- EnumChatFormatting.WHITE + "Bane VI Books:\n" +
- EnumChatFormatting.AQUA + "Spider Catalysts:\n" +
- EnumChatFormatting.DARK_PURPLE + "Tarantula Talismans:\n" +
- EnumChatFormatting.LIGHT_PURPLE + "Fly Swatters:\n" +
- EnumChatFormatting.GOLD + "Digested Mosquitos:\n" +
- EnumChatFormatting.AQUA + "Time Since RNG:\n" +
- EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.spiderTarantulas) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.spiderWebs) + "\n" +
- EnumChatFormatting.DARK_GREEN + drop20 + "\n" +
- EnumChatFormatting.DARK_GRAY + LootCommand.spiderBites + "\n" +
- EnumChatFormatting.WHITE + LootCommand.spiderBooks + "\n" +
- EnumChatFormatting.AQUA + LootCommand.spiderCatalysts + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootCommand.spiderTalismans + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + LootCommand.spiderSwatters + "\n" +
- EnumChatFormatting.GOLD + LootCommand.spiderMosquitos + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
- break;
- case "spider_session":
- if (LootCommand.spiderTimeSession == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.spiderTimeSession, timeNow);
- }
- if (LootCommand.spiderBossesSession == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.spiderBossesSession);
- }
- if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootCommand.spiderTAPSession);
- } else {
- drop20 = nf.format(LootCommand.spiderTAPDropsSession) + " times";
- }
-
- dropsText = EnumChatFormatting.GOLD + "Tarantulas Killed:\n" +
- EnumChatFormatting.GREEN + "Tarantula Webs:\n" +
- EnumChatFormatting.DARK_GREEN + "Arrow Poison:\n" +
- EnumChatFormatting.DARK_GRAY + "Bite Runes:\n" +
- EnumChatFormatting.WHITE + "Bane VI Books:\n" +
- EnumChatFormatting.AQUA + "Spider Catalysts:\n" +
- EnumChatFormatting.DARK_PURPLE + "Tarantula Talismans:\n" +
- EnumChatFormatting.LIGHT_PURPLE + "Fly Swatters:\n" +
- EnumChatFormatting.GOLD + "Digested Mosquitos:\n" +
- EnumChatFormatting.AQUA + "Time Since RNG:\n" +
- EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.spiderTarantulasSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.spiderWebsSession) + "\n" +
- EnumChatFormatting.DARK_GREEN + drop20 + "\n" +
- EnumChatFormatting.DARK_GRAY + LootCommand.spiderBitesSession + "\n" +
- EnumChatFormatting.WHITE + LootCommand.spiderBooksSession + "\n" +
- EnumChatFormatting.AQUA + LootCommand.spiderCatalystsSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootCommand.spiderTalismansSession + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + LootCommand.spiderSwattersSession + "\n" +
- EnumChatFormatting.GOLD + LootCommand.spiderMosquitosSession + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
- break;
- case "zombie":
- if (LootCommand.zombieTime == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.zombieTime, timeNow);
- }
- if (LootCommand.zombieBosses == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.zombieBosses);
- }
- if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootCommand.zombieFoulFlesh);
- } else {
- drop20 = nf.format(LootCommand.zombieFoulFleshDrops) + " times";
- }
-
- dropsText = EnumChatFormatting.GOLD + "Revs Killed:\n" +
- EnumChatFormatting.GREEN + "Revenant Flesh:\n" +
- EnumChatFormatting.BLUE + "Foul Flesh:\n" +
- EnumChatFormatting.DARK_GREEN + "Pestilence Runes:\n" +
- EnumChatFormatting.WHITE + "Smite VI Books:\n" +
- EnumChatFormatting.AQUA + "Undead Catalysts:\n" +
- EnumChatFormatting.DARK_PURPLE + "Beheaded Horrors:\n" +
- EnumChatFormatting.RED + "Revenant Catalysts:\n" +
- EnumChatFormatting.DARK_GREEN + "Snake Runes:\n" +
- EnumChatFormatting.GOLD + "Scythe Blades:\n" +
- EnumChatFormatting.AQUA + "Time Since RNG:\n" +
- EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.zombieRevs) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.zombieRevFlesh) + "\n" +
- EnumChatFormatting.BLUE + drop20 + "\n" +
- EnumChatFormatting.DARK_GREEN + LootCommand.zombiePestilences + "\n" +
- EnumChatFormatting.WHITE + LootCommand.zombieBooks + "\n" +
- EnumChatFormatting.AQUA + LootCommand.zombieUndeadCatas + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootCommand.zombieBeheadeds + "\n" +
- EnumChatFormatting.RED + LootCommand.zombieRevCatas + "\n" +
- EnumChatFormatting.DARK_GREEN + LootCommand.zombieSnakes + "\n" +
- EnumChatFormatting.GOLD + LootCommand.zombieScythes + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
- break;
- case "zombie_session":
- if (LootCommand.zombieTimeSession == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.zombieTimeSession, timeNow);
- }
- if (LootCommand.zombieBossesSession == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.zombieBossesSession);
- }
- if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootCommand.zombieFoulFleshSession);
- } else {
- drop20 = nf.format(LootCommand.zombieFoulFleshDropsSession) + " times";
- }
-
- dropsText = EnumChatFormatting.GOLD + "Revs Killed:\n" +
- EnumChatFormatting.GREEN + "Revenant Flesh:\n" +
- EnumChatFormatting.BLUE + "Foul Flesh:\n" +
- EnumChatFormatting.DARK_GREEN + "Pestilence Runes:\n" +
- EnumChatFormatting.WHITE + "Smite VI Books:\n" +
- EnumChatFormatting.AQUA + "Undead Catalysts:\n" +
- EnumChatFormatting.DARK_PURPLE + "Beheaded Horrors:\n" +
- EnumChatFormatting.RED + "Revenant Catalysts:\n" +
- EnumChatFormatting.DARK_GREEN + "Snake Runes:\n" +
- EnumChatFormatting.GOLD + "Scythe Blades:\n" +
- EnumChatFormatting.AQUA + "Time Since RNG:\n" +
- EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.zombieRevsSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.zombieRevFleshSession) + "\n" +
- EnumChatFormatting.BLUE + drop20 + "\n" +
- EnumChatFormatting.DARK_GREEN + LootCommand.zombiePestilencesSession + "\n" +
- EnumChatFormatting.WHITE + LootCommand.zombieBooksSession + "\n" +
- EnumChatFormatting.AQUA + LootCommand.zombieUndeadCatasSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootCommand.zombieBeheadedsSession + "\n" +
- EnumChatFormatting.RED + LootCommand.zombieRevCatasSession + "\n" +
- EnumChatFormatting.DARK_GREEN + LootCommand.zombieSnakesSession + "\n" +
- EnumChatFormatting.GOLD + LootCommand.zombieScythes + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
- break;
- case "fishing":
- if (LootCommand.empTime == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.empTime, timeNow);
- }
- if (LootCommand.empSCs == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.empSCs);
- }
-
- dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
- EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
- EnumChatFormatting.GOLD + "Good Catches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
- EnumChatFormatting.GRAY + "Squids:\n" +
- EnumChatFormatting.GREEN + "Sea Walkers:\n" +
- EnumChatFormatting.DARK_GRAY + "Night Squids:\n" +
- EnumChatFormatting.DARK_AQUA + "Sea Guardians:\n" +
- EnumChatFormatting.BLUE + "Sea Witches:\n" +
- EnumChatFormatting.GREEN + "Sea Archers:";
- countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreatures) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestone) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatches) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootCommand.squids) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.seaWalkers) + "\n" +
- EnumChatFormatting.DARK_GRAY + nf.format(LootCommand.nightSquids) + "\n" +
- EnumChatFormatting.DARK_AQUA + nf.format(LootCommand.seaGuardians) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.seaWitches) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.seaArchers);
- // Seperated to save vertical space
- dropsTextTwo = EnumChatFormatting.GREEN + "Monster of Deeps:\n" +
- EnumChatFormatting.YELLOW + "Catfishes:\n" +
- EnumChatFormatting.GOLD + "Carrot Kings:\n" +
- EnumChatFormatting.GRAY + "Sea Leeches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Guardian Defenders:\n" +
- EnumChatFormatting.DARK_PURPLE + "Deep Sea Protectors:\n" +
- EnumChatFormatting.GOLD + "Hydras:\n" +
- EnumChatFormatting.GOLD + "Sea Emperors:\n" +
- EnumChatFormatting.AQUA + "Time Since Emp:\n" +
- EnumChatFormatting.AQUA + "Creatures Since Emp:";
- countTextTwo = EnumChatFormatting.GREEN + nf.format(LootCommand.monsterOfTheDeeps) + "\n" +
- EnumChatFormatting.YELLOW + nf.format(LootCommand.catfishes) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.carrotKings) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootCommand.seaLeeches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.guardianDefenders) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.deepSeaProtectors) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.hydras) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.seaEmperors) + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
-
- if (ToggleCommand.splitFishing) {
- new TextRenderer(mc, dropsTextTwo, (int) (MoveCommand.displayXY[0] + (160 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
- new TextRenderer(mc, countTextTwo, (int) (MoveCommand.displayXY[0] + (270 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
- } else {
- dropsText += "\n" + dropsTextTwo;
- countText += "\n" + countTextTwo;
- }
- break;
- case "fishing_session":
- if (LootCommand.empTimeSession == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.empTimeSession, timeNow);
- }
- if (LootCommand.empSCsSession == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.empSCsSession);
- }
-
- dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
- EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
- EnumChatFormatting.GOLD + "Good Catches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
- EnumChatFormatting.GRAY + "Squids:\n" +
- EnumChatFormatting.GREEN + "Sea Walkers:\n" +
- EnumChatFormatting.DARK_GRAY + "Night Squids:\n" +
- EnumChatFormatting.DARK_AQUA + "Sea Guardians:\n" +
- EnumChatFormatting.BLUE + "Sea Witches:\n" +
- EnumChatFormatting.GREEN + "Sea Archers:";
- countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreaturesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestoneSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatchesSession) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootCommand.squidsSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.seaWalkersSession) + "\n" +
- EnumChatFormatting.DARK_GRAY + nf.format(LootCommand.nightSquidsSession) + "\n" +
- EnumChatFormatting.DARK_AQUA + nf.format(LootCommand.seaGuardiansSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.seaWitchesSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootCommand.seaArchersSession);
- // Seperated to save vertical space
- dropsTextTwo = EnumChatFormatting.GREEN + "Monster of Deeps:\n" +
- EnumChatFormatting.YELLOW + "Catfishes:\n" +
- EnumChatFormatting.GOLD + "Carrot Kings:\n" +
- EnumChatFormatting.GRAY + "Sea Leeches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Guardian Defenders:\n" +
- EnumChatFormatting.DARK_PURPLE + "Deep Sea Protectors:\n" +
- EnumChatFormatting.GOLD + "Hydras:\n" +
- EnumChatFormatting.GOLD + "Sea Emperors:\n" +
- EnumChatFormatting.AQUA + "Time Since Emp:\n" +
- EnumChatFormatting.AQUA + "Creatures Since Emp:";
- countTextTwo = EnumChatFormatting.GREEN + nf.format(LootCommand.monsterOfTheDeepsSession) + "\n" +
- EnumChatFormatting.YELLOW + nf.format(LootCommand.catfishesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.carrotKingsSession) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootCommand.seaLeechesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.guardianDefendersSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.deepSeaProtectorsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.hydrasSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.seaEmperorsSession) + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
-
- if (ToggleCommand.splitFishing) {
- new TextRenderer(mc, dropsTextTwo, (int) (MoveCommand.displayXY[0] + (160 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
- new TextRenderer(mc, countTextTwo, (int) (MoveCommand.displayXY[0] + (270 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
- } else {
- dropsText += "\n" + dropsTextTwo;
- countText += "\n" + countTextTwo;
- }
- break;
- case "fishing_winter":
- if (LootCommand.yetiTime == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.yetiTime, timeNow);
- }
- if (LootCommand.yetiSCs == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.yetiSCs);
- }
-
- dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
- EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
- EnumChatFormatting.GOLD + "Good Catches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
- EnumChatFormatting.AQUA + "Frozen Steves:\n" +
- EnumChatFormatting.WHITE + "Snowmans:\n" +
- EnumChatFormatting.DARK_GREEN + "Grinches:\n" +
- EnumChatFormatting.GOLD + "Yetis:\n" +
- EnumChatFormatting.AQUA + "Time Since Yeti:\n" +
- EnumChatFormatting.AQUA + "Creatures Since Yeti:";
- countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreatures) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestone) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatches) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.frozenSteves) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootCommand.frostyTheSnowmans) + "\n" +
- EnumChatFormatting.DARK_GREEN + nf.format(LootCommand.grinches) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.yetis) + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
- break;
- case "fishing_winter_session":
- if (LootCommand.yetiTimeSession == -1) {
- timeBetween = "Never";
- } else {
- timeBetween = Utils.getTimeBetween(LootCommand.yetiTimeSession, timeNow);
- }
- if (LootCommand.yetiSCsSession == -1) {
- bossesBetween = "Never";
- } else {
- bossesBetween = nf.format(LootCommand.yetiSCsSession);
- }
-
- dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
- EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
- EnumChatFormatting.GOLD + "Good Catches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
- EnumChatFormatting.AQUA + "Frozen Steves:\n" +
- EnumChatFormatting.WHITE + "Snowmans:\n" +
- EnumChatFormatting.DARK_GREEN + "Grinches:\n" +
- EnumChatFormatting.GOLD + "Yetis:\n" +
- EnumChatFormatting.AQUA + "Time Since Yeti:\n" +
- EnumChatFormatting.AQUA + "Creatures Since Yeti:";
- countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreaturesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestoneSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatchesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.frozenStevesSession) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootCommand.frostyTheSnowmansSession) + "\n" +
- EnumChatFormatting.DARK_GREEN + nf.format(LootCommand.grinchesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.yetisSession) + "\n" +
- EnumChatFormatting.AQUA + timeBetween + "\n" +
- EnumChatFormatting.AQUA + bossesBetween;
- break;
- case "fishing_festival":
- dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
- EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
- EnumChatFormatting.GOLD + "Good Catches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
- EnumChatFormatting.LIGHT_PURPLE + "Nurse Sharks:\n" +
- EnumChatFormatting.BLUE + "Blue Sharks:\n" +
- EnumChatFormatting.GOLD + "Tiger Sharks:\n" +
- EnumChatFormatting.WHITE + "Great White Sharks:";
- countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreatures) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestone) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatches) + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + nf.format(LootCommand.nurseSharks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.blueSharks) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.tigerSharks) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootCommand.greatWhiteSharks);
- break;
- case "fishing_festival_session":
- dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
- EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
- EnumChatFormatting.GOLD + "Good Catches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
- EnumChatFormatting.LIGHT_PURPLE + "Nurse Sharks:\n" +
- EnumChatFormatting.BLUE + "Blue Sharks:\n" +
- EnumChatFormatting.GOLD + "Tiger Sharks:\n" +
- EnumChatFormatting.WHITE + "Great White Sharks:";
- countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreaturesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestoneSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatchesSession) + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + nf.format(LootCommand.nurseSharksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.blueSharksSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.tigerSharksSession) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootCommand.greatWhiteSharksSession);
- break;
- case "fishing_spooky":
- dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
- EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
- EnumChatFormatting.GOLD + "Good Catches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
- EnumChatFormatting.BLUE + "Scarecrows:\n" +
- EnumChatFormatting.GRAY + "Nightmares:\n" +
- EnumChatFormatting.DARK_PURPLE + "Werewolves:\n" +
- EnumChatFormatting.GOLD + "Phantom Fishers:\n" +
- EnumChatFormatting.GOLD + "Grim Reapers:";
- countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreatures) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestone) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatches) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.scarecrows) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootCommand.nightmares) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.werewolfs) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.phantomFishers) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.grimReapers);
- break;
- case "fishing_spooky_session":
- dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
- EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
- EnumChatFormatting.GOLD + "Good Catches:\n" +
- EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
- EnumChatFormatting.BLUE + "Scarecrows:\n" +
- EnumChatFormatting.GRAY + "Nightmares:\n" +
- EnumChatFormatting.DARK_PURPLE + "Werewolves:\n" +
- EnumChatFormatting.GOLD + "Phantom Fishers:\n" +
- EnumChatFormatting.GOLD + "Grim Reapers:";
- countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreaturesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestoneSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatchesSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.scarecrowsSession) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootCommand.nightmaresSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.werewolfsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.phantomFishersSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.grimReapersSession);
- break;
- case "mythological":
- dropsText = EnumChatFormatting.GOLD + "Coins:\n" +
- EnumChatFormatting.WHITE + "Griffin Feathers:\n" +
- EnumChatFormatting.GOLD + "Crown of Greeds:\n" +
- EnumChatFormatting.AQUA + "Washed up Souvenirs:\n" +
- EnumChatFormatting.RED + "Minos Hunters:\n" +
- EnumChatFormatting.GRAY + "Siamese Lynxes:\n" +
- EnumChatFormatting.RED + "Minotaurs:\n" +
- EnumChatFormatting.WHITE + "Gaia Constructs:\n" +
- EnumChatFormatting.DARK_PURPLE + "Minos Champions:\n" +
- EnumChatFormatting.GOLD + "Minos Inquisitors:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.mythCoins) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootCommand.griffinFeathers) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.crownOfGreeds) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.washedUpSouvenirs) + "\n" +
- EnumChatFormatting.RED + nf.format(LootCommand.minosHunters) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootCommand.siameseLynxes) + "\n" +
- EnumChatFormatting.RED + nf.format(LootCommand.minotaurs) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootCommand.gaiaConstructs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.minosChampions) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.minosInquisitors);
- break;
- case "mythological_session":
- dropsText = EnumChatFormatting.GOLD + "Coins:\n" +
- EnumChatFormatting.WHITE + "Griffin Feathers:\n" +
- EnumChatFormatting.GOLD + "Crown of Greeds:\n" +
- EnumChatFormatting.AQUA + "Washed up Souvenirs:\n" +
- EnumChatFormatting.RED + "Minos Hunters:\n" +
- EnumChatFormatting.GRAY + "Siamese Lynxes:\n" +
- EnumChatFormatting.RED + "Minotaurs:\n" +
- EnumChatFormatting.WHITE + "Gaia Constructs:\n" +
- EnumChatFormatting.DARK_PURPLE + "Minos Champions:\n" +
- EnumChatFormatting.GOLD + "Minos Inquisitors:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.mythCoinsSession) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootCommand.griffinFeathersSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.crownOfGreedsSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootCommand.washedUpSouvenirsSession) + "\n" +
- EnumChatFormatting.RED + nf.format(LootCommand.minosHuntersSession) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootCommand.siameseLynxesSession) + "\n" +
- EnumChatFormatting.RED + nf.format(LootCommand.minotaursSession) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootCommand.gaiaConstructsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.minosChampionsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.minosInquisitorsSession);
- break;
- case "catacombs_floor_one":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.BLUE + "Bonzo's Staffs:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.bonzoStaffs) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f1CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f1TimeSpent);
- break;
- case "catacombs_floor_one_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.BLUE + "Bonzo's Staffs:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.bonzoStaffsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f1CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f1TimeSpentSession);
- break;
- case "catacombs_floor_two":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.BLUE + "Scarf's Studies:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Blades:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.scarfStudies) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveSwords) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f2CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f2TimeSpent);
- break;
- case "catacombs_floor_two_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.BLUE + "Scarf's Studies:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Blades:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.scarfStudiesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveSwordsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f2CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f2TimeSpentSession);
- break;
- case "catacombs_floor_three":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Helmets:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Chestplates:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Leggings:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Boots:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveHelms) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveChests) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveLegs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveBoots) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f3CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f3TimeSpent);
- break;
- case "catacombs_floor_three_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Helmets:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Chestplates:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Leggings:\n" +
- EnumChatFormatting.DARK_PURPLE + "Adaptive Boots:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveHelmsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveChestsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveLegsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveBootsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f3CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f3TimeSpentSession);
- break;
- case "catacombs_floor_four":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.DARK_PURPLE + "Spirit Wings:\n" +
- EnumChatFormatting.DARK_PURPLE + "Spirit Bones:\n" +
- EnumChatFormatting.DARK_PURPLE + "Spirit Boots:\n" +
- EnumChatFormatting.DARK_PURPLE + "Spirit Swords:\n" +
- EnumChatFormatting.GOLD + "Spirit Bows:\n" +
- EnumChatFormatting.DARK_PURPLE + "Epic Spirit Pets:\n" +
- EnumChatFormatting.GOLD + "Leg Spirit Pets:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritWings) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritBones) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritBoots) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritSwords) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.spiritBows) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.epicSpiritPets) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.legSpiritPets) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f4CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f4TimeSpent);
- break;
- case "catacombs_floor_four_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.DARK_PURPLE + "Spirit Wings:\n" +
- EnumChatFormatting.DARK_PURPLE + "Spirit Bones:\n" +
- EnumChatFormatting.DARK_PURPLE + "Spirit Boots:\n" +
- EnumChatFormatting.DARK_PURPLE + "Spirit Swords:\n" +
- EnumChatFormatting.GOLD + "Spirit Bows:\n" +
- EnumChatFormatting.DARK_PURPLE + "Epic Spirit Pets:\n" +
- EnumChatFormatting.GOLD + "Leg Spirit Pets:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritWingsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritBonesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritBootsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritSwordsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.spiritBowsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.epicSpiritPetsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.legSpiritPetsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f4CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f4TimeSpentSession);
- break;
- case "catacombs_floor_five":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.BLUE + "Warped Stones:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Helmets:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Chestplates:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Leggings:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Boots:\n" +
- EnumChatFormatting.GOLD + "Last Breaths:\n" +
- EnumChatFormatting.GOLD + "Livid Daggers:\n" +
- EnumChatFormatting.GOLD + "Shadow Furys:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.warpedStones) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssHelms) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssChests) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssLegs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssBoots) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.lastBreaths) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.lividDaggers) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.shadowFurys) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f5CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f5TimeSpent);
- break;
- case "catacombs_floor_five_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.BLUE + "Warped Stones:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Helmets:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Chestplates:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Leggings:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Boots:\n" +
- EnumChatFormatting.GOLD + "Last Breaths:\n" +
- EnumChatFormatting.GOLD + "Livid Daggers:\n" +
- EnumChatFormatting.GOLD + "Shadow Furys:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.warpedStonesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssHelmsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssChestsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssLegsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssBootsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.lastBreathsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.lividDaggersSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.shadowFurysSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f5CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f5TimeSpentSession);
- break;
- case "catacombs_floor_six":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.BLUE + "Ancient Roses:\n" +
- EnumChatFormatting.GOLD + "Precursor Eyes:\n" +
- EnumChatFormatting.GOLD + "Giant's Swords:\n" +
- EnumChatFormatting.GOLD + "Necro Lord Helmets:\n" +
- EnumChatFormatting.GOLD + "Necro Lord Chests:\n" +
- EnumChatFormatting.GOLD + "Necro Lord Leggings:\n" +
- EnumChatFormatting.GOLD + "Necro Lord Boots:\n" +
- EnumChatFormatting.GOLD + "Necro Swords:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.ancientRoses) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.precursorEyes) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.giantsSwords) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordHelms) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordChests) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordLegs) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordBoots) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroSwords) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f6CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f6TimeSpent);
- break;
- case "catacombs_floor_six_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.BLUE + "Ancient Roses:\n" +
- EnumChatFormatting.GOLD + "Precursor Eyes:\n" +
- EnumChatFormatting.GOLD + "Giant's Swords:\n" +
- EnumChatFormatting.GOLD + "Necro Lord Helmets:\n" +
- EnumChatFormatting.GOLD + "Necro Lord Chests:\n" +
- EnumChatFormatting.GOLD + "Necro Lord Leggings:\n" +
- EnumChatFormatting.GOLD + "Necro Lord Boots:\n" +
- EnumChatFormatting.GOLD + "Necro Swords:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootCommand.ancientRosesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.precursorEyesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.giantsSwordsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordHelmsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordChestsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordLegsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordBootsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.necroSwordsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f6CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f6TimeSpentSession);
- break;
- case "catacombs_floor_seven":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.DARK_PURPLE + "Wither Bloods:\n" +
- EnumChatFormatting.DARK_PURPLE + "Wither Cloaks:\n" +
- EnumChatFormatting.DARK_PURPLE + "Implosions:\n" +
- EnumChatFormatting.DARK_PURPLE + "Wither Shields:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Warps:\n" +
- EnumChatFormatting.DARK_PURPLE + "Necron's Handles:\n" +
- EnumChatFormatting.GOLD + "Auto Recombobs:\n" +
- EnumChatFormatting.GOLD + "Wither Helmets:\n" +
- EnumChatFormatting.GOLD + "Wither Chests:\n" +
- EnumChatFormatting.GOLD + "Wither Leggings:\n" +
- EnumChatFormatting.GOLD + "Wither Boots:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherBloods) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherCloaks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.implosions) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherShields) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowWarps) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.necronsHandles) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.autoRecombs) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.witherHelms) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.witherChests) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.witherLegs) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.witherBoots) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f7CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f7TimeSpent);
- break;
- case "catacombs_floor_seven_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
- EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
- EnumChatFormatting.DARK_PURPLE + "Wither Bloods:\n" +
- EnumChatFormatting.DARK_PURPLE + "Wither Cloaks:\n" +
- EnumChatFormatting.DARK_PURPLE + "Implosions:\n" +
- EnumChatFormatting.DARK_PURPLE + "Wither Shields:\n" +
- EnumChatFormatting.DARK_PURPLE + "Shadow Warps:\n" +
- EnumChatFormatting.DARK_PURPLE + "Necron's Handles:\n" +
- EnumChatFormatting.GOLD + "Auto Recombobulators:\n" +
- EnumChatFormatting.GOLD + "Wither Helmets:\n" +
- EnumChatFormatting.GOLD + "Wither Chests:\n" +
- EnumChatFormatting.GOLD + "Wither Leggings:\n" +
- EnumChatFormatting.GOLD + "Wither Boots:\n" +
- EnumChatFormatting.AQUA + "Coins Spent:\n" +
- EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherBloodsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherCloaksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.implosionsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherShieldsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowWarpsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.necronsHandlesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.autoRecombsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.witherHelmsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.witherChestsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.witherLegsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootCommand.witherBootsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f7CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f7TimeSpentSession);
- break;
- default:
- System.out.println("Display was an unknown value, turning off.");
- DisplayCommand.display = "off";
- ConfigHandler.writeStringConfig("misc", "display", "off");
- }
- new TextRenderer(mc, dropsText, MoveCommand.displayXY[0], MoveCommand.displayXY[1], ScaleCommand.displayScale);
- new TextRenderer(mc, countText, (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
- }
-
- if (showTitle) {
- Utils.drawTitle(titleText);
- }
- if (showSkill) {
- new TextRenderer(mc, skillText, MoveCommand.skill50XY[0], MoveCommand.skill50XY[1], ScaleCommand.skill50Scale);
- }
- }
-
- @SubscribeEvent(priority = EventPriority.HIGHEST)
- public void onSound(final PlaySoundEvent event) {
- if (!Utils.inSkyblock) return;
- if (event.name.equals("note.pling")) {
- // Don't check twice within 3 seconds
- checkItemsNow = System.currentTimeMillis() / 1000;
- if (checkItemsNow - itemsChecked < 3) return;
-
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
-
- for (String line : scoreboard) {
- String cleanedLine = ScoreboardHandler.cleanSB(line);
- // If Hypixel lags and scoreboard doesn't update
- if (cleanedLine.contains("Boss slain!") || cleanedLine.contains("Slay the boss!")) {
- int itemTeeth = Utils.getItems("Wolf Tooth");
- int itemWheels = Utils.getItems("Hamster Wheel");
- int itemWebs = Utils.getItems("Tarantula Web");
- int itemTAP = Utils.getItems("Toxic Arrow Poison");
- int itemRev = Utils.getItems("Revenant Flesh");
- int itemFoul = Utils.getItems("Foul Flesh");
-
- // If no items, are detected, allow check again. Should fix items not being found
- if (itemTeeth + itemWheels + itemWebs + itemTAP + itemRev + itemFoul > 0) {
- itemsChecked = System.currentTimeMillis() / 1000;
- LootCommand.wolfTeeth += itemTeeth;
- LootCommand.wolfWheels += itemWheels;
- LootCommand.spiderWebs += itemWebs;
- LootCommand.spiderTAP += itemTAP;
- LootCommand.zombieRevFlesh += itemRev;
- LootCommand.zombieFoulFlesh += itemFoul;
- LootCommand.wolfTeethSession += itemTeeth;
- LootCommand.wolfWheelsSession += itemWheels;
- LootCommand.spiderWebsSession += itemWebs;
- LootCommand.spiderTAPSession += itemTAP;
- LootCommand.zombieRevFleshSession += itemRev;
- LootCommand.zombieFoulFleshSession += itemFoul;
-
- ConfigHandler.writeIntConfig("wolf", "teeth", LootCommand.wolfTeeth);
- ConfigHandler.writeIntConfig("wolf", "wheel", LootCommand.wolfWheels);
- ConfigHandler.writeIntConfig("spider", "web", LootCommand.spiderWebs);
- ConfigHandler.writeIntConfig("spider", "tap", LootCommand.spiderTAP);
- ConfigHandler.writeIntConfig("zombie", "revFlesh", LootCommand.zombieRevFlesh);
- ConfigHandler.writeIntConfig("zombie", "foulFlesh", LootCommand.zombieFoulFlesh);
- }
- }
- }
- }
- }
-
- @SubscribeEvent(priority = EventPriority.HIGHEST)
- public void onTooltip(ItemTooltipEvent event) {
- if (!Utils.inSkyblock) return;
- if (event.toolTip == null) return;
-
- ItemStack item = event.itemStack;
- Minecraft mc = Minecraft.getMinecraft();
- EntityPlayerSP player = mc.thePlayer;
+ if (ToggleCommand.coordsToggled) {
+ EntityPlayer player = mc.thePlayer;
- if (ToggleCommand.goldenToggled) {
- for (int i = 0; i < event.toolTip.size(); i++) {
- event.toolTip.set(i, Utils.returnGoldenEnchants(event.toolTip.get(i)));
- }
- }
-
- if (ToggleCommand.expertiseLoreToggled) {
- if (item.hasTagCompound()) {
- NBTTagCompound tags = item.getSubCompound("ExtraAttributes", false);
- if (tags != null) {
- if (tags.hasKey("expertise_kills")) {
- int index = 4;
- if (!Minecraft.getMinecraft().gameSettings.advancedItemTooltips) index -= 2;
-
- event.toolTip.add(event.toolTip.size() - index, "");
- event.toolTip.add(event.toolTip.size() - index, "Expertise Kills: " + EnumChatFormatting.RED + tags.getInteger("expertise_kills"));
- if (Utils.expertiseKillsLeft(tags.getInteger("expertise_kills")) != -1) {
- event.toolTip.add(event.toolTip.size() - index, Utils.expertiseKillsLeft(tags.getInteger("expertise_kills")) + " kills to tier up!");
- }
- }
- }
- }
- }
+ double xDir = (player.rotationYaw % 360 + 360) % 360;
+ if (xDir > 180) xDir -= 360;
+ xDir = (double) Math.round(xDir * 10d) / 10d;
+ double yDir = (double) Math.round(player.rotationPitch * 10d) / 10d;
- if (mc.currentScreen instanceof GuiChest) {
- ContainerChest chest = (ContainerChest) player.openContainer;
- IInventory inv = chest.getLowerChestInventory();
- String chestName = inv.getDisplayName().getUnformattedText();
- if (ToggleCommand.superpairsToggled && chestName.contains("Superpairs (")) {
- if (Item.getIdFromItem(item.getItem()) != 95) return;
- if (item.getDisplayName().contains("Click any button") || item.getDisplayName().contains("Click a second button") || item.getDisplayName().contains("Next button is instantly rewarded") || item.getDisplayName().contains("Stained Glass")) {
- Slot slot = ((GuiChest) mc.currentScreen).getSlotUnderMouse();
- ItemStack itemStack = experimentTableSlots[slot.getSlotIndex()];
- if (itemStack == null) return;
- String itemName = itemStack.getDisplayName();
-
- if (event.toolTip.stream().anyMatch(x->StringUtils.stripControlCodes(x).equals(StringUtils.stripControlCodes(itemName)))) return;
- event.toolTip.removeIf(x -> {
- x = StringUtils.stripControlCodes(x);
- if (x.equals("minecraft:stained_glass")) return true;
- return x.startsWith("NBT: ");
- });
- event.toolTip.add(itemName);
- event.toolTip.add(itemStack.getItem().getRegistryName());
- }
+ String coordText = COORDS_COLOUR + (int) player.posX + " / " + (int) player.posY + " / " + (int) player.posZ + " (" + xDir + " / " + yDir + ")";
+ new TextRenderer(mc, coordText, MoveCommand.coordsXY[0], MoveCommand.coordsXY[1], ScaleCommand.coordsScale);
+ }
- }
- }
+ if (ToggleCommand.dungeonTimerToggled && Utils.inDungeons) {
+ String dungeonTimerText = EnumChatFormatting.GRAY + "Wither Doors:\n" +
+ EnumChatFormatting.DARK_RED + "Blood Open:\n" +
+ EnumChatFormatting.RED + "Watcher Clear:\n" +
+ EnumChatFormatting.BLUE + "Boss Clear:\n" +
+ EnumChatFormatting.YELLOW + "Deaths:\n" +
+ EnumChatFormatting.YELLOW + "Puzzle Fails:";
+ String dungeonTimers = EnumChatFormatting.GRAY + "" + witherDoors + "\n" +
+ EnumChatFormatting.DARK_RED + Utils.getTimeBetween(dungeonStartTime, bloodOpenTime) + "\n" +
+ EnumChatFormatting.RED + Utils.getTimeBetween(dungeonStartTime, watcherClearTime) + "\n" +
+ EnumChatFormatting.BLUE + Utils.getTimeBetween(dungeonStartTime, bossClearTime) + "\n" +
+ EnumChatFormatting.YELLOW + dungeonDeaths + "\n" +
+ EnumChatFormatting.YELLOW + puzzleFails;
+ new TextRenderer(mc, dungeonTimerText, MoveCommand.dungeonTimerXY[0], MoveCommand.dungeonTimerXY[1], ScaleCommand.dungeonTimerScale);
+ new TextRenderer(mc, dungeonTimers, (int) (MoveCommand.dungeonTimerXY[0] + (80 * ScaleCommand.dungeonTimerScale)), MoveCommand.dungeonTimerXY[1], ScaleCommand.dungeonTimerScale);
+ }
- }
+ if (ToggleCommand.lividSolverToggled && foundLivid && livid != null) {
+ new TextRenderer(mc, livid.getName().replace("" + EnumChatFormatting.BOLD, ""), MoveCommand.lividHpXY[0], MoveCommand.lividHpXY[1], ScaleCommand.lividHpScale);
+ }
- @SubscribeEvent
- public void onTick(TickEvent.ClientTickEvent event) {
- if (event.phase != Phase.START) return;
-
- Minecraft mc = Minecraft.getMinecraft();
- World world = mc.theWorld;
- EntityPlayerSP player = mc.thePlayer;
-
- // Checks every second
- tickAmount++;
- if (tickAmount % 20 == 0) {
- if (player != null) {
- Utils.checkForSkyblock();
- Utils.checkForDungeons();
- }
+ if (ToggleCommand.cakeTimerToggled && Utils.inSkyblock) {
+ double scale = ScaleCommand.cakeTimerScale;
+ double scaleReset = Math.pow(scale, -1);
+ GL11.glScaled(scale, scale, scale);
- if (DisplayCommand.auto && world != null && player != null) {
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- boolean found = false;
- for (String s : scoreboard) {
- String sCleaned = ScoreboardHandler.cleanSB(s);
- if (sCleaned.contains("Sven Packmaster")) {
- DisplayCommand.display = "wolf";
- found = true;
- } else if (sCleaned.contains("Tarantula Broodfather")) {
- DisplayCommand.display = "spider";
- found = true;
- } else if (sCleaned.contains("Revenant Horror")) {
- DisplayCommand.display = "zombie";
- found = true;
- } else if (sCleaned.contains("The Catacombs (")) {
- if (sCleaned.contains("F1")) {
- DisplayCommand.display = "catacombs_floor_one";
- } else if (sCleaned.contains("F2")) {
- DisplayCommand.display = "catacombs_floor_two";
- } else if (sCleaned.contains("F3")) {
- DisplayCommand.display = "catacombs_floor_three";
- } else if (sCleaned.contains("F4")) {
- DisplayCommand.display = "catacombs_floor_four";
- } else if (sCleaned.contains("F5")) {
- DisplayCommand.display = "catacombs_floor_five";
- } else if (sCleaned.contains("F6")) {
- DisplayCommand.display = "catacombs_floor_six";
- } else if (sCleaned.contains("F7")) {
- DisplayCommand.display = "catacombs_floor_seven";
- }
- found = true;
- }
- }
- for (int i = 0; i < 8; i++) {
- ItemStack hotbarItem = player.inventory.getStackInSlot(i);
- if (hotbarItem == null) continue;
- if (hotbarItem.getDisplayName().contains("Ancestral Spade")) {
- DisplayCommand.display = "mythological";
- found = true;
- }
- }
- if (!found) DisplayCommand.display = "off";
- ConfigHandler.writeStringConfig("misc", "display", DisplayCommand.display);
- }
+ double timeNow = System.currentTimeMillis() / 1000;
+ mc.getTextureManager().bindTexture(CAKE_ICON);
+ Gui.drawModalRectWithCustomSizedTexture(MoveCommand.cakeTimerXY[0], MoveCommand.cakeTimerXY[1], 0, 0, 16, 16, 16, 16);
- if (ToggleCommand.creeperToggled && Utils.inDungeons && world != null && player != null) {
- double x = player.posX;
- double y = player.posY;
- double z = player.posZ;
- // Find creepers nearby
- AxisAlignedBB creeperScan = new AxisAlignedBB(x - 14, y - 8, z - 13, x + 14, y + 8, z + 13); // 28x16x26 cube
- List<EntityCreeper> creepers = world.getEntitiesWithinAABB(EntityCreeper.class, creeperScan);
- // Check if creeper is nearby
- if (creepers.size() > 0 && !creepers.get(0).isInvisible()) { // Don't show Wither Cloak creepers
- EntityCreeper creeper = creepers.get(0);
- // Start creeper line drawings
- creeperLines.clear();
- if (!drawCreeperLines) creeperLocation = new Vec3(creeper.posX, creeper.posY + 1, creeper.posZ);
- drawCreeperLines = true;
- // Search for nearby sea lanterns and prismarine blocks
- BlockPos point1 = new BlockPos(creeper.posX - 14, creeper.posY - 7, creeper.posZ - 13);
- BlockPos point2 = new BlockPos(creeper.posX + 14, creeper.posY + 10, creeper.posZ + 13);
- Iterable<BlockPos> blocks = BlockPos.getAllInBox(point1, point2);
- for (BlockPos blockPos : blocks) {
- Block block = world.getBlockState(blockPos).getBlock();
- if (block == Blocks.sea_lantern || block == Blocks.prismarine) {
- // Connect block to nearest block on opposite side
- Vec3 startBlock = new Vec3(blockPos.getX() + 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5);
- BlockPos oppositeBlock = Utils.getFirstBlockPosAfterVectors(mc, startBlock, creeperLocation, 10, 20);
- BlockPos endBlock = Utils.getNearbyBlock(mc, oppositeBlock, Blocks.sea_lantern, Blocks.prismarine);
- if (endBlock != null && startBlock.yCoord > 68 && endBlock.getY() > 68) { // Don't create line underground
- // Add to list for drawing
- Vec3[] insertArray = {startBlock, new Vec3(endBlock.getX() + 0.5, endBlock.getY() + 0.5, endBlock.getZ() + 0.5)};
- creeperLines.add(insertArray);
- }
- }
- }
- } else {
- drawCreeperLines = false;
- }
- }
+ String cakeText;
+ if (cakeTime - timeNow < 0) {
+ cakeText = EnumChatFormatting.RED + "NONE";
+ } else {
+ cakeText = CAKE_COLOUR + Utils.getTimeBetween(timeNow, cakeTime);
+ }
+ new TextRenderer(mc, cakeText, MoveCommand.cakeTimerXY[0] + 20, MoveCommand.cakeTimerXY[1] + 5, 1);
- if (ToggleCommand.waterToggled && Utils.inDungeons && world != null && player != null) {
- // multi thread block checking
- new Thread(() -> {
- prevInWaterRoom = inWaterRoom;
- inWaterRoom = false;
- boolean foundPiston = false;
- boolean done = false;
- for (int x = (int) (player.posX - 13); x <= player.posX + 13; x++) {
- for (int z = (int) (player.posZ - 13); z <= player.posZ + 13; z++) {
- BlockPos blockPos = new BlockPos(x, 54, z);
- if (world.getBlockState(blockPos).getBlock() == Blocks.sticky_piston) {
- foundPiston = true;
- break;
- }
- }
- if (foundPiston) break;
- }
+ GL11.glScaled(scaleReset, scaleReset, scaleReset);
+ }
- if (foundPiston) {
- for (int x = (int) (player.posX - 25); x <= player.posX + 25; x++) {
- for (int z = (int) (player.posZ - 25); z <= player.posZ + 25; z++) {
- BlockPos blockPos = new BlockPos(x, 82, z);
- if (world.getBlockState(blockPos).getBlock() == Blocks.piston_head) {
- inWaterRoom = true;
- if (!prevInWaterRoom) {
- boolean foundGold = false;
- boolean foundClay = false;
- boolean foundEmerald = false;
- boolean foundQuartz = false;
- boolean foundDiamond = false;
-
- // Detect first blocks near water stream
- BlockPos scan1 = new BlockPos(x + 1, 78, z + 1);
- BlockPos scan2 = new BlockPos(x - 1, 77, z - 1);
- Iterable<BlockPos> blocks = BlockPos.getAllInBox(scan1, scan2);
- for (BlockPos puzzleBlockPos : blocks) {
- Block block = world.getBlockState(puzzleBlockPos).getBlock();
- if (block == Blocks.gold_block) {
- foundGold = true;
- } else if (block == Blocks.hardened_clay) {
- foundClay = true;
- } else if (block == Blocks.emerald_block) {
- foundEmerald = true;
- } else if (block == Blocks.quartz_block) {
- foundQuartz = true;
- } else if (block == Blocks.diamond_block) {
- foundDiamond = true;
- }
- }
-
- int variant = 0;
- if (foundGold && foundClay) {
- variant = 1;
- } else if (foundEmerald && foundQuartz) {
- variant = 2;
- } else if (foundQuartz && foundDiamond) {
- variant = 3;
- } else if (foundGold && foundQuartz) {
- variant = 4;
- }
-
- // Return solution
- String purple;
- String orange;
- String blue;
- String green;
- String red;
- switch (variant) {
- case 1:
- purple = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.AQUA + "Diamond, " + EnumChatFormatting.RED + "Clay";
- orange = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.DARK_GRAY + "Coal, " + EnumChatFormatting.GREEN + "Emerald";
- blue = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
- green = EnumChatFormatting.GREEN + "Emerald";
- red = EnumChatFormatting.GRAY + "None";
- break;
- case 2:
- purple = EnumChatFormatting.DARK_GRAY + "Coal";
- orange = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
- blue = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.AQUA + "Diamond, " + EnumChatFormatting.GREEN + "Emerald";
- green = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.GREEN + "Emerald";
- red = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.DARK_GRAY + "Coal, " + EnumChatFormatting.GREEN + "Emerald";
- break;
- case 3:
- purple = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.AQUA + "Diamond";
- orange = EnumChatFormatting.GREEN + "Emerald";
- blue = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.AQUA + "Diamond";
- green = EnumChatFormatting.GRAY + "None";
- red = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald";
- break;
- case 4:
- purple = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
- orange = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.DARK_GRAY + "Coal";
- blue = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.DARK_GRAY + "Coal, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
- green = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald";
- red = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.AQUA + "Diamond, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
- break;
- default:
- purple = orange = blue = green = red = ERROR_COLOUR + "Error detecting water puzzle variant.";
- break;
- }
- waterAnswers = MAIN_COLOUR + "The following levers must be down:\n" +
- EnumChatFormatting.DARK_PURPLE + "Purple: " + purple + "\n" +
- EnumChatFormatting.GOLD + "Orange: " + orange + "\n" +
- EnumChatFormatting.BLUE + "Blue: " + blue + "\n" +
- EnumChatFormatting.GREEN + "Green: " + green + "\n" +
- EnumChatFormatting.RED + "Red: " + red;
- done = true;
- break;
- }
- }
- }
- if (done) break;
- }
- } else {
- waterAnswers = null;
- }
- }).start();
- }
+ if (ToggleCommand.bonzoTimerToggled && Utils.inDungeons) {
- if (ToggleCommand.lividSolverToggled && Utils.inDungeons && !foundLivid && world != null) {
- boolean inF5 = false;
+ ItemStack helmetSlot = mc.thePlayer.getCurrentArmor(3);
+ if ((helmetSlot != null && helmetSlot.getDisplayName().contains("Bonzo's Mask")) || nextBonzoUse > 0) {
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- for (String s : scoreboard) {
- String sCleaned = ScoreboardHandler.cleanSB(s);
- if (sCleaned.contains("The Catacombs (F5)")) {
- inF5 = true;
- break;
- }
- }
+ double scale = ScaleCommand.bonzoTimerScale;
+ double scaleReset = Math.pow(scale, -1);
+ GL11.glScaled(scale, scale, scale);
- if (inF5) {
- List<Entity> loadedLivids = new ArrayList<>();
- List<Entity> entities = world.getLoadedEntityList();
- for (Entity entity : entities) {
- String name = entity.getName();
- if (name.contains("Livid") && name.length() > 5 && name.charAt(1) == name.charAt(5) && !loadedLivids.contains(entity)) {
- loadedLivids.add(entity);
- }
- }
- if (loadedLivids.size() > 8) {
- livid = loadedLivids.get(0);
- foundLivid = true;
- }
- }
- }
+ double timeNow = System.currentTimeMillis() / 1000;
+ mc.getTextureManager().bindTexture(BONZO_ICON);
+ Gui.drawModalRectWithCustomSizedTexture(MoveCommand.bonzoTimerXY[0], MoveCommand.bonzoTimerXY[1], 0, 0, 16, 16, 16, 16);
- if (ToggleCommand.ticTacToeToggled && Utils.inDungeons && world != null && player != null) {
- correctTicTacToeButton = null;
- AxisAlignedBB aabb = new AxisAlignedBB(player.posX - 6, player.posY - 6, player.posZ - 6, player.posX + 6, player.posY + 6, player.posZ + 6);
- List<EntityItemFrame> itemFrames = world.getEntitiesWithinAABB(EntityItemFrame.class, aabb);
- List<EntityItemFrame> itemFramesWithMaps = new ArrayList<>();
- // Find how many item frames have maps already placed
- for (EntityItemFrame itemFrame : itemFrames) {
- ItemStack item = itemFrame.getDisplayedItem();
- if (item == null || !(item.getItem() instanceof ItemMap)) continue;
- MapData mapData = ((ItemMap) item.getItem()).getMapData(item, world);
- if (mapData == null) continue;
-
- itemFramesWithMaps.add(itemFrame);
- }
+ String bonzoText;
+ if (nextBonzoUse - timeNow < 0) {
+ bonzoText = EnumChatFormatting.GREEN + "READY";
+ } else {
+ bonzoText = BONZO_COLOR + Utils.getTimeBetween(timeNow, nextBonzoUse);
+ }
+ new TextRenderer(mc, bonzoText, MoveCommand.bonzoTimerXY[0] + 20, MoveCommand.bonzoTimerXY[1] + 5, 1);
- // Only run when it's your turn
- if (itemFramesWithMaps.size() != 9 && itemFramesWithMaps.size() % 2 == 1) {
- char[][] board = new char[3][3];
- BlockPos leftmostRow = null;
- int sign = 1;
- char facing = 'X';
- for (EntityItemFrame itemFrame : itemFramesWithMaps) {
- ItemStack map = itemFrame.getDisplayedItem();
- MapData mapData = ((ItemMap) map.getItem()).getMapData(map, world);
-
- // Find position on board
- int row = 0;
- int column;
- sign = 1;
-
- if (itemFrame.facingDirection == EnumFacing.SOUTH || itemFrame.facingDirection == EnumFacing.WEST) {
- sign = -1;
- }
+ GL11.glScaled(scaleReset, scaleReset, scaleReset);
+ }
+ }
- BlockPos itemFramePos = new BlockPos(itemFrame.posX, Math.floor(itemFrame.posY), itemFrame.posZ);
- for (int i = 2; i >= 0; i--) {
- int realI = i * sign;
- BlockPos blockPos = itemFramePos;
- if (itemFrame.posX % 0.5 == 0) {
- blockPos = itemFramePos.add(realI, 0, 0);
- } else if (itemFrame.posZ % 0.5 == 0) {
- blockPos = itemFramePos.add(0, 0, realI);
- facing = 'Z';
- }
- Block block = world.getBlockState(blockPos).getBlock();
- if (block == Blocks.air || block == Blocks.stone_button) {
- leftmostRow = blockPos;
- row = i;
- break;
- }
- }
+ if (showSkillTracker && Utils.inSkyblock) {
+ int xpPerHour;
+ double xpToShow = 0;
+ switch (lastSkill) {
+ case "Farming":
+ xpToShow = farmingXPGained;
+ break;
+ case "Mining":
+ xpToShow = miningXPGained;
+ break;
+ case "Combat":
+ xpToShow = combatXPGained;
+ break;
+ case "Foraging":
+ xpToShow = foragingXPGained;
+ break;
+ case "Fishing":
+ xpToShow = fishingXPGained;
+ break;
+ case "Enchanting":
+ xpToShow = enchantingXPGained;
+ break;
+ case "Alchemy":
+ xpToShow = alchemyXPGained;
+ break;
+ default:
+ System.err.println("Unknown skill in rendering.");
+ }
+ xpPerHour = (int) Math.round(xpToShow / ((skillStopwatch.getTime() + 1) / 3600000d));
+ String skillTrackerText = SKILL_TRACKER_COLOUR + lastSkill + " XP Earned: " + NumberFormat.getNumberInstance(Locale.US).format(xpToShow) + "\n" +
+ SKILL_TRACKER_COLOUR + "Time Elapsed: " + Utils.getTimeBetween(0, skillStopwatch.getTime() / 1000d) + "\n" +
+ SKILL_TRACKER_COLOUR + "XP Per Hour: " + NumberFormat.getIntegerInstance(Locale.US).format(xpPerHour);
+ if (xpLeft >= 0) {
+ String time = xpPerHour == 0 ? "Never" : Utils.getTimeBetween(0, xpLeft / (xpPerHour / 3600D));
+ skillTrackerText += "\n" + SKILL_TRACKER_COLOUR + "Time Until Next Level: " + time;
+ }
+ if (!skillStopwatch.isStarted() || skillStopwatch.isSuspended()) {
+ skillTrackerText += "\n" + EnumChatFormatting.RED + "PAUSED";
+ }
+
+ new TextRenderer(mc, skillTrackerText, MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[1], ScaleCommand.skillTrackerScale);
+ }
- if (itemFrame.posY == 72.5) {
- column = 0;
- } else if (itemFrame.posY == 71.5) {
- column = 1;
- } else if (itemFrame.posY == 70.5) {
- column = 2;
- } else {
- continue;
- }
+ if (ToggleCommand.waterToggled && Utils.inDungeons && waterAnswers != null) {
+ new TextRenderer(mc, waterAnswers, MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], ScaleCommand.waterAnswerScale);
+ }
- // Get colour
- // Middle pixel = 64*128 + 64 = 8256
- int colourInt = mapData.colors[8256] & 255;
- if (colourInt == 114) {
- board[column][row] = 'X';
- } else if (colourInt == 33) {
- board[column][row] = 'O';
- }
- }
- System.out.println("Board: " + Arrays.deepToString(board));
+ if (!DisplayCommand.display.equals("off")) {
+ String dropsText = "";
+ String countText = "";
+ String dropsTextTwo;
+ String countTextTwo;
+ String timeBetween;
+ String bossesBetween;
+ String drop20;
+ double timeNow = System.currentTimeMillis() / 1000;
+ NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US);
+
+ switch (DisplayCommand.display) {
+ case "wolf":
+ if (LootCommand.wolfTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.wolfTime, timeNow);
+ }
+ if (LootCommand.wolfBosses == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.wolfBosses);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(LootCommand.wolfWheels);
+ } else {
+ drop20 = nf.format(LootCommand.wolfWheelsDrops) + " times";
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Svens Killed:\n" +
+ EnumChatFormatting.GREEN + "Wolf Teeth:\n" +
+ EnumChatFormatting.BLUE + "Hamster Wheels:\n" +
+ EnumChatFormatting.AQUA + "Spirit Runes:\n" +
+ EnumChatFormatting.WHITE + "Critical VI Books:\n" +
+ EnumChatFormatting.DARK_RED + "Red Claw Eggs:\n" +
+ EnumChatFormatting.GOLD + "Couture Runes:\n" +
+ EnumChatFormatting.AQUA + "Grizzly Baits:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Overfluxes:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.wolfSvens) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.wolfTeeth) + "\n" +
+ EnumChatFormatting.BLUE + drop20 + "\n" +
+ EnumChatFormatting.AQUA + LootCommand.wolfSpirits + "\n" +
+ EnumChatFormatting.WHITE + LootCommand.wolfBooks + "\n" +
+ EnumChatFormatting.DARK_RED + LootCommand.wolfEggs + "\n" +
+ EnumChatFormatting.GOLD + LootCommand.wolfCoutures + "\n" +
+ EnumChatFormatting.AQUA + LootCommand.wolfBaits + "\n" +
+ EnumChatFormatting.DARK_PURPLE + LootCommand.wolfFluxes + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "wolf_session":
+ if (LootCommand.wolfTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.wolfTimeSession, timeNow);
+ }
+ if (LootCommand.wolfBossesSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.wolfBossesSession);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(LootCommand.wolfWheelsSession);
+ } else {
+ drop20 = nf.format(LootCommand.wolfWheelsDropsSession) + " times";
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Svens Killed:\n" +
+ EnumChatFormatting.GREEN + "Wolf Teeth:\n" +
+ EnumChatFormatting.BLUE + "Hamster Wheels:\n" +
+ EnumChatFormatting.AQUA + "Spirit Runes:\n" +
+ EnumChatFormatting.WHITE + "Critical VI Books:\n" +
+ EnumChatFormatting.DARK_RED + "Red Claw Eggs:\n" +
+ EnumChatFormatting.GOLD + "Couture Runes:\n" +
+ EnumChatFormatting.AQUA + "Grizzly Baits:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Overfluxes:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.wolfSvensSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.wolfTeethSession) + "\n" +
+ EnumChatFormatting.BLUE + drop20 + "\n" +
+ EnumChatFormatting.AQUA + LootCommand.wolfSpiritsSession + "\n" +
+ EnumChatFormatting.WHITE + LootCommand.wolfBooksSession + "\n" +
+ EnumChatFormatting.DARK_RED + LootCommand.wolfEggsSession + "\n" +
+ EnumChatFormatting.GOLD + LootCommand.wolfCouturesSession + "\n" +
+ EnumChatFormatting.AQUA + LootCommand.wolfBaitsSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + LootCommand.wolfFluxesSession + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "spider":
+ if (LootCommand.spiderTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.spiderTime, timeNow);
+ }
+ if (LootCommand.spiderBosses == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.spiderBosses);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(LootCommand.spiderTAP);
+ } else {
+ drop20 = nf.format(LootCommand.spiderTAPDrops) + " times";
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Tarantulas Killed:\n" +
+ EnumChatFormatting.GREEN + "Tarantula Webs:\n" +
+ EnumChatFormatting.DARK_GREEN + "Arrow Poison:\n" +
+ EnumChatFormatting.DARK_GRAY + "Bite Runes:\n" +
+ EnumChatFormatting.WHITE + "Bane VI Books:\n" +
+ EnumChatFormatting.AQUA + "Spider Catalysts:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Tarantula Talismans:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Fly Swatters:\n" +
+ EnumChatFormatting.GOLD + "Digested Mosquitos:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.spiderTarantulas) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.spiderWebs) + "\n" +
+ EnumChatFormatting.DARK_GREEN + drop20 + "\n" +
+ EnumChatFormatting.DARK_GRAY + LootCommand.spiderBites + "\n" +
+ EnumChatFormatting.WHITE + LootCommand.spiderBooks + "\n" +
+ EnumChatFormatting.AQUA + LootCommand.spiderCatalysts + "\n" +
+ EnumChatFormatting.DARK_PURPLE + LootCommand.spiderTalismans + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + LootCommand.spiderSwatters + "\n" +
+ EnumChatFormatting.GOLD + LootCommand.spiderMosquitos + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "spider_session":
+ if (LootCommand.spiderTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.spiderTimeSession, timeNow);
+ }
+ if (LootCommand.spiderBossesSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.spiderBossesSession);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(LootCommand.spiderTAPSession);
+ } else {
+ drop20 = nf.format(LootCommand.spiderTAPDropsSession) + " times";
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Tarantulas Killed:\n" +
+ EnumChatFormatting.GREEN + "Tarantula Webs:\n" +
+ EnumChatFormatting.DARK_GREEN + "Arrow Poison:\n" +
+ EnumChatFormatting.DARK_GRAY + "Bite Runes:\n" +
+ EnumChatFormatting.WHITE + "Bane VI Books:\n" +
+ EnumChatFormatting.AQUA + "Spider Catalysts:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Tarantula Talismans:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Fly Swatters:\n" +
+ EnumChatFormatting.GOLD + "Digested Mosquitos:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.spiderTarantulasSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.spiderWebsSession) + "\n" +
+ EnumChatFormatting.DARK_GREEN + drop20 + "\n" +
+ EnumChatFormatting.DARK_GRAY + LootCommand.spiderBitesSession + "\n" +
+ EnumChatFormatting.WHITE + LootCommand.spiderBooksSession + "\n" +
+ EnumChatFormatting.AQUA + LootCommand.spiderCatalystsSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + LootCommand.spiderTalismansSession + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + LootCommand.spiderSwattersSession + "\n" +
+ EnumChatFormatting.GOLD + LootCommand.spiderMosquitosSession + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "zombie":
+ if (LootCommand.zombieTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.zombieTime, timeNow);
+ }
+ if (LootCommand.zombieBosses == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.zombieBosses);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(LootCommand.zombieFoulFlesh);
+ } else {
+ drop20 = nf.format(LootCommand.zombieFoulFleshDrops) + " times";
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Revs Killed:\n" +
+ EnumChatFormatting.GREEN + "Revenant Flesh:\n" +
+ EnumChatFormatting.BLUE + "Foul Flesh:\n" +
+ EnumChatFormatting.DARK_GREEN + "Pestilence Runes:\n" +
+ EnumChatFormatting.WHITE + "Smite VI Books:\n" +
+ EnumChatFormatting.AQUA + "Undead Catalysts:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Beheaded Horrors:\n" +
+ EnumChatFormatting.RED + "Revenant Catalysts:\n" +
+ EnumChatFormatting.DARK_GREEN + "Snake Runes:\n" +
+ EnumChatFormatting.GOLD + "Scythe Blades:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.zombieRevs) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.zombieRevFlesh) + "\n" +
+ EnumChatFormatting.BLUE + drop20 + "\n" +
+ EnumChatFormatting.DARK_GREEN + LootCommand.zombiePestilences + "\n" +
+ EnumChatFormatting.WHITE + LootCommand.zombieBooks + "\n" +
+ EnumChatFormatting.AQUA + LootCommand.zombieUndeadCatas + "\n" +
+ EnumChatFormatting.DARK_PURPLE + LootCommand.zombieBeheadeds + "\n" +
+ EnumChatFormatting.RED + LootCommand.zombieRevCatas + "\n" +
+ EnumChatFormatting.DARK_GREEN + LootCommand.zombieSnakes + "\n" +
+ EnumChatFormatting.GOLD + LootCommand.zombieScythes + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "zombie_session":
+ if (LootCommand.zombieTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.zombieTimeSession, timeNow);
+ }
+ if (LootCommand.zombieBossesSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.zombieBossesSession);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(LootCommand.zombieFoulFleshSession);
+ } else {
+ drop20 = nf.format(LootCommand.zombieFoulFleshDropsSession) + " times";
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Revs Killed:\n" +
+ EnumChatFormatting.GREEN + "Revenant Flesh:\n" +
+ EnumChatFormatting.BLUE + "Foul Flesh:\n" +
+ EnumChatFormatting.DARK_GREEN + "Pestilence Runes:\n" +
+ EnumChatFormatting.WHITE + "Smite VI Books:\n" +
+ EnumChatFormatting.AQUA + "Undead Catalysts:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Beheaded Horrors:\n" +
+ EnumChatFormatting.RED + "Revenant Catalysts:\n" +
+ EnumChatFormatting.DARK_GREEN + "Snake Runes:\n" +
+ EnumChatFormatting.GOLD + "Scythe Blades:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.zombieRevsSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.zombieRevFleshSession) + "\n" +
+ EnumChatFormatting.BLUE + drop20 + "\n" +
+ EnumChatFormatting.DARK_GREEN + LootCommand.zombiePestilencesSession + "\n" +
+ EnumChatFormatting.WHITE + LootCommand.zombieBooksSession + "\n" +
+ EnumChatFormatting.AQUA + LootCommand.zombieUndeadCatasSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + LootCommand.zombieBeheadedsSession + "\n" +
+ EnumChatFormatting.RED + LootCommand.zombieRevCatasSession + "\n" +
+ EnumChatFormatting.DARK_GREEN + LootCommand.zombieSnakesSession + "\n" +
+ EnumChatFormatting.GOLD + LootCommand.zombieScythes + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "fishing":
+ if (LootCommand.empTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.empTime, timeNow);
+ }
+ if (LootCommand.empSCs == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.empSCs);
+ }
+
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.GRAY + "Squids:\n" +
+ EnumChatFormatting.GREEN + "Sea Walkers:\n" +
+ EnumChatFormatting.DARK_GRAY + "Night Squids:\n" +
+ EnumChatFormatting.DARK_AQUA + "Sea Guardians:\n" +
+ EnumChatFormatting.BLUE + "Sea Witches:\n" +
+ EnumChatFormatting.GREEN + "Sea Archers:";
+ countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatches) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(LootCommand.squids) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.seaWalkers) + "\n" +
+ EnumChatFormatting.DARK_GRAY + nf.format(LootCommand.nightSquids) + "\n" +
+ EnumChatFormatting.DARK_AQUA + nf.format(LootCommand.seaGuardians) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.seaWitches) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.seaArchers);
+ // Seperated to save vertical space
+ dropsTextTwo = EnumChatFormatting.GREEN + "Monster of Deeps:\n" +
+ EnumChatFormatting.YELLOW + "Catfishes:\n" +
+ EnumChatFormatting.GOLD + "Carrot Kings:\n" +
+ EnumChatFormatting.GRAY + "Sea Leeches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Guardian Defenders:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Deep Sea Protectors:\n" +
+ EnumChatFormatting.GOLD + "Hydras:\n" +
+ EnumChatFormatting.GOLD + "Sea Emperors:\n" +
+ EnumChatFormatting.AQUA + "Time Since Emp:\n" +
+ EnumChatFormatting.AQUA + "Creatures Since Emp:";
+ countTextTwo = EnumChatFormatting.GREEN + nf.format(LootCommand.monsterOfTheDeeps) + "\n" +
+ EnumChatFormatting.YELLOW + nf.format(LootCommand.catfishes) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.carrotKings) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(LootCommand.seaLeeches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.guardianDefenders) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.deepSeaProtectors) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.hydras) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.seaEmperors) + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+
+ if (ToggleCommand.splitFishing) {
+ new TextRenderer(mc, dropsTextTwo, (int) (MoveCommand.displayXY[0] + (160 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
+ new TextRenderer(mc, countTextTwo, (int) (MoveCommand.displayXY[0] + (270 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
+ } else {
+ dropsText += "\n" + dropsTextTwo;
+ countText += "\n" + countTextTwo;
+ }
+ break;
+ case "fishing_session":
+ if (LootCommand.empTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.empTimeSession, timeNow);
+ }
+ if (LootCommand.empSCsSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.empSCsSession);
+ }
+
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.GRAY + "Squids:\n" +
+ EnumChatFormatting.GREEN + "Sea Walkers:\n" +
+ EnumChatFormatting.DARK_GRAY + "Night Squids:\n" +
+ EnumChatFormatting.DARK_AQUA + "Sea Guardians:\n" +
+ EnumChatFormatting.BLUE + "Sea Witches:\n" +
+ EnumChatFormatting.GREEN + "Sea Archers:";
+ countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatchesSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(LootCommand.squidsSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.seaWalkersSession) + "\n" +
+ EnumChatFormatting.DARK_GRAY + nf.format(LootCommand.nightSquidsSession) + "\n" +
+ EnumChatFormatting.DARK_AQUA + nf.format(LootCommand.seaGuardiansSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.seaWitchesSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(LootCommand.seaArchersSession);
+ // Seperated to save vertical space
+ dropsTextTwo = EnumChatFormatting.GREEN + "Monster of Deeps:\n" +
+ EnumChatFormatting.YELLOW + "Catfishes:\n" +
+ EnumChatFormatting.GOLD + "Carrot Kings:\n" +
+ EnumChatFormatting.GRAY + "Sea Leeches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Guardian Defenders:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Deep Sea Protectors:\n" +
+ EnumChatFormatting.GOLD + "Hydras:\n" +
+ EnumChatFormatting.GOLD + "Sea Emperors:\n" +
+ EnumChatFormatting.AQUA + "Time Since Emp:\n" +
+ EnumChatFormatting.AQUA + "Creatures Since Emp:";
+ countTextTwo = EnumChatFormatting.GREEN + nf.format(LootCommand.monsterOfTheDeepsSession) + "\n" +
+ EnumChatFormatting.YELLOW + nf.format(LootCommand.catfishesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.carrotKingsSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(LootCommand.seaLeechesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.guardianDefendersSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.deepSeaProtectorsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.hydrasSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.seaEmperorsSession) + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+
+ if (ToggleCommand.splitFishing) {
+ new TextRenderer(mc, dropsTextTwo, (int) (MoveCommand.displayXY[0] + (160 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
+ new TextRenderer(mc, countTextTwo, (int) (MoveCommand.displayXY[0] + (270 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
+ } else {
+ dropsText += "\n" + dropsTextTwo;
+ countText += "\n" + countTextTwo;
+ }
+ break;
+ case "fishing_winter":
+ if (LootCommand.yetiTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.yetiTime, timeNow);
+ }
+ if (LootCommand.yetiSCs == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.yetiSCs);
+ }
+
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.AQUA + "Frozen Steves:\n" +
+ EnumChatFormatting.WHITE + "Snowmans:\n" +
+ EnumChatFormatting.DARK_GREEN + "Grinches:\n" +
+ EnumChatFormatting.GOLD + "Yetis:\n" +
+ EnumChatFormatting.AQUA + "Time Since Yeti:\n" +
+ EnumChatFormatting.AQUA + "Creatures Since Yeti:";
+ countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatches) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.frozenSteves) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(LootCommand.frostyTheSnowmans) + "\n" +
+ EnumChatFormatting.DARK_GREEN + nf.format(LootCommand.grinches) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.yetis) + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "fishing_winter_session":
+ if (LootCommand.yetiTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(LootCommand.yetiTimeSession, timeNow);
+ }
+ if (LootCommand.yetiSCsSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(LootCommand.yetiSCsSession);
+ }
+
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.AQUA + "Frozen Steves:\n" +
+ EnumChatFormatting.WHITE + "Snowmans:\n" +
+ EnumChatFormatting.DARK_GREEN + "Grinches:\n" +
+ EnumChatFormatting.GOLD + "Yetis:\n" +
+ EnumChatFormatting.AQUA + "Time Since Yeti:\n" +
+ EnumChatFormatting.AQUA + "Creatures Since Yeti:";
+ countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatchesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.frozenStevesSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(LootCommand.frostyTheSnowmansSession) + "\n" +
+ EnumChatFormatting.DARK_GREEN + nf.format(LootCommand.grinchesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.yetisSession) + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "fishing_festival":
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Nurse Sharks:\n" +
+ EnumChatFormatting.BLUE + "Blue Sharks:\n" +
+ EnumChatFormatting.GOLD + "Tiger Sharks:\n" +
+ EnumChatFormatting.WHITE + "Great White Sharks:";
+ countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatches) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(LootCommand.nurseSharks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.blueSharks) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.tigerSharks) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(LootCommand.greatWhiteSharks);
+ break;
+ case "fishing_festival_session":
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Nurse Sharks:\n" +
+ EnumChatFormatting.BLUE + "Blue Sharks:\n" +
+ EnumChatFormatting.GOLD + "Tiger Sharks:\n" +
+ EnumChatFormatting.WHITE + "Great White Sharks:";
+ countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatchesSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(LootCommand.nurseSharksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.blueSharksSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.tigerSharksSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(LootCommand.greatWhiteSharksSession);
+ break;
+ case "fishing_spooky":
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.BLUE + "Scarecrows:\n" +
+ EnumChatFormatting.GRAY + "Nightmares:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Werewolves:\n" +
+ EnumChatFormatting.GOLD + "Phantom Fishers:\n" +
+ EnumChatFormatting.GOLD + "Grim Reapers:";
+ countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatches) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.scarecrows) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(LootCommand.nightmares) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.werewolfs) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.phantomFishers) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.grimReapers);
+ break;
+ case "fishing_spooky_session":
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.BLUE + "Scarecrows:\n" +
+ EnumChatFormatting.GRAY + "Nightmares:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Werewolves:\n" +
+ EnumChatFormatting.GOLD + "Phantom Fishers:\n" +
+ EnumChatFormatting.GOLD + "Grim Reapers:";
+ countText = EnumChatFormatting.AQUA + nf.format(LootCommand.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.greatCatchesSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.scarecrowsSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(LootCommand.nightmaresSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.werewolfsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.phantomFishersSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.grimReapersSession);
+ break;
+ case "mythological":
+ dropsText = EnumChatFormatting.GOLD + "Coins:\n" +
+ EnumChatFormatting.WHITE + "Griffin Feathers:\n" +
+ EnumChatFormatting.GOLD + "Crown of Greeds:\n" +
+ EnumChatFormatting.AQUA + "Washed up Souvenirs:\n" +
+ EnumChatFormatting.RED + "Minos Hunters:\n" +
+ EnumChatFormatting.GRAY + "Siamese Lynxes:\n" +
+ EnumChatFormatting.RED + "Minotaurs:\n" +
+ EnumChatFormatting.WHITE + "Gaia Constructs:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Minos Champions:\n" +
+ EnumChatFormatting.GOLD + "Minos Inquisitors:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.mythCoins) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(LootCommand.griffinFeathers) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.crownOfGreeds) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.washedUpSouvenirs) + "\n" +
+ EnumChatFormatting.RED + nf.format(LootCommand.minosHunters) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(LootCommand.siameseLynxes) + "\n" +
+ EnumChatFormatting.RED + nf.format(LootCommand.minotaurs) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(LootCommand.gaiaConstructs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.minosChampions) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.minosInquisitors);
+ break;
+ case "mythological_session":
+ dropsText = EnumChatFormatting.GOLD + "Coins:\n" +
+ EnumChatFormatting.WHITE + "Griffin Feathers:\n" +
+ EnumChatFormatting.GOLD + "Crown of Greeds:\n" +
+ EnumChatFormatting.AQUA + "Washed up Souvenirs:\n" +
+ EnumChatFormatting.RED + "Minos Hunters:\n" +
+ EnumChatFormatting.GRAY + "Siamese Lynxes:\n" +
+ EnumChatFormatting.RED + "Minotaurs:\n" +
+ EnumChatFormatting.WHITE + "Gaia Constructs:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Minos Champions:\n" +
+ EnumChatFormatting.GOLD + "Minos Inquisitors:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.mythCoinsSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(LootCommand.griffinFeathersSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.crownOfGreedsSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(LootCommand.washedUpSouvenirsSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(LootCommand.minosHuntersSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(LootCommand.siameseLynxesSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(LootCommand.minotaursSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(LootCommand.gaiaConstructsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.minosChampionsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.minosInquisitorsSession);
+ break;
+ case "catacombs_floor_one":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.BLUE + "Bonzo's Staffs:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.bonzoStaffs) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f1CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f1TimeSpent);
+ break;
+ case "catacombs_floor_one_session":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.BLUE + "Bonzo's Staffs:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.bonzoStaffsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f1CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f1TimeSpentSession);
+ break;
+ case "catacombs_floor_two":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.BLUE + "Scarf's Studies:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Blades:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.scarfStudies) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveSwords) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f2CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f2TimeSpent);
+ break;
+ case "catacombs_floor_two_session":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.BLUE + "Scarf's Studies:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Blades:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.scarfStudiesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveSwordsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f2CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f2TimeSpentSession);
+ break;
+ case "catacombs_floor_three":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Helmets:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Chestplates:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Leggings:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Boots:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveHelms) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveChests) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveLegs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveBoots) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f3CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f3TimeSpent);
+ break;
+ case "catacombs_floor_three_session":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Helmets:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Chestplates:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Leggings:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Adaptive Boots:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveHelmsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveChestsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveLegsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.adaptiveBootsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f3CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f3TimeSpentSession);
+ break;
+ case "catacombs_floor_four":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Spirit Wings:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Spirit Bones:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Spirit Boots:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Spirit Swords:\n" +
+ EnumChatFormatting.GOLD + "Spirit Bows:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Epic Spirit Pets:\n" +
+ EnumChatFormatting.GOLD + "Leg Spirit Pets:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritWings) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritBones) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritBoots) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritSwords) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.spiritBows) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.epicSpiritPets) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.legSpiritPets) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f4CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f4TimeSpent);
+ break;
+ case "catacombs_floor_four_session":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Spirit Wings:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Spirit Bones:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Spirit Boots:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Spirit Swords:\n" +
+ EnumChatFormatting.GOLD + "Spirit Bows:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Epic Spirit Pets:\n" +
+ EnumChatFormatting.GOLD + "Leg Spirit Pets:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritWingsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritBonesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritBootsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.spiritSwordsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.spiritBowsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.epicSpiritPetsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.legSpiritPetsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f4CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f4TimeSpentSession);
+ break;
+ case "catacombs_floor_five":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.BLUE + "Warped Stones:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Helmets:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Chestplates:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Leggings:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Boots:\n" +
+ EnumChatFormatting.GOLD + "Last Breaths:\n" +
+ EnumChatFormatting.GOLD + "Livid Daggers:\n" +
+ EnumChatFormatting.GOLD + "Shadow Furys:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.warpedStones) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssHelms) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssChests) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssLegs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssBoots) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.lastBreaths) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.lividDaggers) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.shadowFurys) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f5CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f5TimeSpent);
+ break;
+ case "catacombs_floor_five_session":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.BLUE + "Warped Stones:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Helmets:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Chestplates:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Leggings:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Boots:\n" +
+ EnumChatFormatting.GOLD + "Last Breaths:\n" +
+ EnumChatFormatting.GOLD + "Livid Daggers:\n" +
+ EnumChatFormatting.GOLD + "Shadow Furys:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.warpedStonesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssHelmsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssChestsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssLegsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowAssBootsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.lastBreathsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.lividDaggersSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.shadowFurysSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f5CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f5TimeSpentSession);
+ break;
+ case "catacombs_floor_six":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.BLUE + "Ancient Roses:\n" +
+ EnumChatFormatting.GOLD + "Precursor Eyes:\n" +
+ EnumChatFormatting.GOLD + "Giant's Swords:\n" +
+ EnumChatFormatting.GOLD + "Necro Lord Helmets:\n" +
+ EnumChatFormatting.GOLD + "Necro Lord Chests:\n" +
+ EnumChatFormatting.GOLD + "Necro Lord Leggings:\n" +
+ EnumChatFormatting.GOLD + "Necro Lord Boots:\n" +
+ EnumChatFormatting.GOLD + "Necro Swords:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.ancientRoses) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.precursorEyes) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.giantsSwords) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordHelms) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordChests) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordLegs) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordBoots) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroSwords) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f6CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f6TimeSpent);
+ break;
+ case "catacombs_floor_six_session":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.BLUE + "Ancient Roses:\n" +
+ EnumChatFormatting.GOLD + "Precursor Eyes:\n" +
+ EnumChatFormatting.GOLD + "Giant's Swords:\n" +
+ EnumChatFormatting.GOLD + "Necro Lord Helmets:\n" +
+ EnumChatFormatting.GOLD + "Necro Lord Chests:\n" +
+ EnumChatFormatting.GOLD + "Necro Lord Leggings:\n" +
+ EnumChatFormatting.GOLD + "Necro Lord Boots:\n" +
+ EnumChatFormatting.GOLD + "Necro Swords:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(LootCommand.ancientRosesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.precursorEyesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.giantsSwordsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordHelmsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordChestsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordLegsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroLordBootsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.necroSwordsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f6CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f6TimeSpentSession);
+ break;
+ case "catacombs_floor_seven":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Wither Bloods:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Wither Cloaks:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Implosions:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Wither Shields:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Warps:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Necron's Handles:\n" +
+ EnumChatFormatting.GOLD + "Auto Recombobs:\n" +
+ EnumChatFormatting.GOLD + "Wither Helmets:\n" +
+ EnumChatFormatting.GOLD + "Wither Chests:\n" +
+ EnumChatFormatting.GOLD + "Wither Leggings:\n" +
+ EnumChatFormatting.GOLD + "Wither Boots:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherBloods) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherCloaks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.implosions) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherShields) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowWarps) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.necronsHandles) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.autoRecombs) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.witherHelms) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.witherChests) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.witherLegs) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.witherBoots) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f7CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f7TimeSpent);
+ break;
+ case "catacombs_floor_seven_session":
+ dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Wither Bloods:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Wither Cloaks:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Implosions:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Wither Shields:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Shadow Warps:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Necron's Handles:\n" +
+ EnumChatFormatting.GOLD + "Auto Recombobulators:\n" +
+ EnumChatFormatting.GOLD + "Wither Helmets:\n" +
+ EnumChatFormatting.GOLD + "Wither Chests:\n" +
+ EnumChatFormatting.GOLD + "Wither Leggings:\n" +
+ EnumChatFormatting.GOLD + "Wither Boots:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(LootCommand.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherBloodsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherCloaksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.implosionsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.witherShieldsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.shadowWarpsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(LootCommand.necronsHandlesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.autoRecombsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.witherHelmsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.witherChestsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.witherLegsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(LootCommand.witherBootsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(LootCommand.f7CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootCommand.f7TimeSpentSession);
+ break;
+ default:
+ System.out.println("Display was an unknown value, turning off.");
+ DisplayCommand.display = "off";
+ ConfigHandler.writeStringConfig("misc", "display", "off");
+ }
+ new TextRenderer(mc, dropsText, MoveCommand.displayXY[0], MoveCommand.displayXY[1], ScaleCommand.displayScale);
+ new TextRenderer(mc, countText, (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale);
+ }
- // Draw best move
- int bestMove = TicTacToeUtils.getBestMove(board) - 1;
- System.out.println("Best move slot: " + bestMove);
- if (leftmostRow != null) {
- double drawX = facing == 'X' ? leftmostRow.getX() - sign * (bestMove % 3) : leftmostRow.getX();
- double drawY = 72 - Math.floor(bestMove / 3);
- double drawZ = facing == 'Z' ? leftmostRow.getZ() - sign * (bestMove % 3) : leftmostRow.getZ();
+ if (showTitle) {
+ Utils.drawTitle(titleText);
+ }
+ if (showSkill) {
+ new TextRenderer(mc, skillText, MoveCommand.skill50XY[0], MoveCommand.skill50XY[1], ScaleCommand.skill50Scale);
+ }
+ }
+
+ @SubscribeEvent
+ public void onRenderEntity(RenderLivingEvent.Pre event) {
+ Entity entity = event.entity;
+ String name = entity.getName();
+ if (entity instanceof EntityArmorStand) {
+ if (ToggleCommand.lividSolverToggled && !entity.isEntityEqual(livid) && name.contains("Livid") && name.length() > 5 && name.charAt(1) == name.charAt(5)) {
+ event.setCanceled(true);
+ }
+ }
+ }
- correctTicTacToeButton = new AxisAlignedBB(drawX, drawY, drawZ, drawX + 1, drawY + 1, drawZ + 1);
- }
- }
- }
+ @SubscribeEvent(priority = EventPriority.HIGHEST)
+ public void onSound(final PlaySoundEvent event) {
+ if (!Utils.inSkyblock) return;
+ if (event.name.equals("note.pling")) {
+ // Don't check twice within 3 seconds
+ checkItemsNow = System.currentTimeMillis() / 1000;
+ if (checkItemsNow - itemsChecked < 3) return;
+
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+
+ for (String line : scoreboard) {
+ String cleanedLine = ScoreboardHandler.cleanSB(line);
+ // If Hypixel lags and scoreboard doesn't update
+ if (cleanedLine.contains("Boss slain!") || cleanedLine.contains("Slay the boss!")) {
+ int itemTeeth = Utils.getItems("Wolf Tooth");
+ int itemWheels = Utils.getItems("Hamster Wheel");
+ int itemWebs = Utils.getItems("Tarantula Web");
+ int itemTAP = Utils.getItems("Toxic Arrow Poison");
+ int itemRev = Utils.getItems("Revenant Flesh");
+ int itemFoul = Utils.getItems("Foul Flesh");
+
+ // If no items, are detected, allow check again. Should fix items not being found
+ if (itemTeeth + itemWheels + itemWebs + itemTAP + itemRev + itemFoul > 0) {
+ itemsChecked = System.currentTimeMillis() / 1000;
+ LootCommand.wolfTeeth += itemTeeth;
+ LootCommand.wolfWheels += itemWheels;
+ LootCommand.spiderWebs += itemWebs;
+ LootCommand.spiderTAP += itemTAP;
+ LootCommand.zombieRevFlesh += itemRev;
+ LootCommand.zombieFoulFlesh += itemFoul;
+ LootCommand.wolfTeethSession += itemTeeth;
+ LootCommand.wolfWheelsSession += itemWheels;
+ LootCommand.spiderWebsSession += itemWebs;
+ LootCommand.spiderTAPSession += itemTAP;
+ LootCommand.zombieRevFleshSession += itemRev;
+ LootCommand.zombieFoulFleshSession += itemFoul;
+
+ ConfigHandler.writeIntConfig("wolf", "teeth", LootCommand.wolfTeeth);
+ ConfigHandler.writeIntConfig("wolf", "wheel", LootCommand.wolfWheels);
+ ConfigHandler.writeIntConfig("spider", "web", LootCommand.spiderWebs);
+ ConfigHandler.writeIntConfig("spider", "tap", LootCommand.spiderTAP);
+ ConfigHandler.writeIntConfig("zombie", "revFlesh", LootCommand.zombieRevFlesh);
+ ConfigHandler.writeIntConfig("zombie", "foulFlesh", LootCommand.zombieFoulFlesh);
+ }
+ }
+ }
+ }
+ }
- tickAmount = 0;
- }
+ @SubscribeEvent(priority = EventPriority.HIGHEST)
+ public void onTooltip(ItemTooltipEvent event) {
+ if (!Utils.inSkyblock) return;
+ if (event.toolTip == null) return;
- // Checks 5 times per second
- if (tickAmount % 4 == 0) {
- if (ToggleCommand.blazeToggled && Utils.inDungeons && world != null) {
- List<Entity> entities = world.getLoadedEntityList();
- int highestHealth = 0;
- highestBlaze = null;
- int lowestHealth = 99999999;
- lowestBlaze = null;
-
- for (Entity entity : entities) {
- if (entity.getName().contains("Blaze") && entity.getName().contains("/")) {
- String blazeName = StringUtils.stripControlCodes(entity.getName());
- try {
- int health = Integer.parseInt(blazeName.substring(blazeName.indexOf("/") + 1, blazeName.length() - 1));
- if (health > highestHealth) {
- highestHealth = health;
- highestBlaze = entity;
- }
- if (health < lowestHealth) {
- lowestHealth = health;
- lowestBlaze = entity;
- }
- } catch (NumberFormatException ex) {
- ex.printStackTrace();
- }
- }
- }
- }
- }
+ ItemStack item = event.itemStack;
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
- // Checks 10 times per second
- if (tickAmount % 2 == 0) {
- if (ToggleCommand.lowHealthNotifyToggled && Utils.inDungeons && world != null) {
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- for (String score : scoreboard) {
- if (score.endsWith("❤") && score.matches(".*§c\\d.*")) {
- String name = score.substring(score.indexOf(" ") + 1);
- Utils.createTitle(EnumChatFormatting.RED + "LOW HEALTH!\n" + name, 1);
- break;
- }
- }
- }
- }
+ if (ToggleCommand.goldenToggled) {
+ for (int i = 0; i < event.toolTip.size(); i++) {
+ event.toolTip.set(i, Utils.returnGoldenEnchants(event.toolTip.get(i)));
+ }
+ }
- // Runs 20 times per second
- if (mc.currentScreen instanceof GuiChest) {
- if (player == null) return;
- ContainerChest chest = (ContainerChest) player.openContainer;
- List<Slot> invSlots = ((GuiChest) mc.currentScreen).inventorySlots.inventorySlots;
- String chestName = chest.getLowerChestInventory().getDisplayName().getUnformattedText().trim();
-
- if (ToggleCommand.ultrasequencerToggled && chestName.startsWith("Ultrasequencer (")) {
- if (invSlots.get(49).getStack() != null && invSlots.get(49).getStack().getDisplayName().equals("§aRemember the pattern!")) {
- for (int i = 9; i <= 44; i++) {
- if (invSlots.get(i) == null || invSlots.get(i).getStack() == null) continue;
- String itemName = StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName());
- if (itemName.matches("\\d+")) {
- int number = Integer.parseInt(itemName);
- clickInOrderSlots[number - 1] = invSlots.get(i);
- }
- }
- }
- }
+ if (ToggleCommand.expertiseLoreToggled) {
+ if (item.hasTagCompound()) {
+ NBTTagCompound tags = item.getSubCompound("ExtraAttributes", false);
+ if (tags != null) {
+ if (tags.hasKey("expertise_kills")) {
+ int index = 4;
+ if (!Minecraft.getMinecraft().gameSettings.advancedItemTooltips) index -= 2;
+
+ event.toolTip.add(event.toolTip.size() - index, "");
+ event.toolTip.add(event.toolTip.size() - index, "Expertise Kills: " + EnumChatFormatting.RED + tags.getInteger("expertise_kills"));
+ if (Utils.expertiseKillsLeft(tags.getInteger("expertise_kills")) != -1) {
+ event.toolTip.add(event.toolTip.size() - index, Utils.expertiseKillsLeft(tags.getInteger("expertise_kills")) + " kills to tier up!");
+ }
+ }
+ }
+ }
+ }
- if (ToggleCommand.superpairsToggled && chestName.startsWith("Superpairs (")) {
- for (int i = 0; i < 53; i++) {
- ItemStack itemStack = invSlots.get(i).getStack();
- if (itemStack == null) continue;
- String itemName = itemStack.getDisplayName();
- if (Item.getIdFromItem(itemStack.getItem()) == 95 || Item.getIdFromItem(itemStack.getItem()) == 160) continue;
- if (itemName.contains("Instant Find") || itemName.contains("Gained +")) continue;
- if (itemName.contains("Enchanted Book")) {
- itemName = itemStack.getTooltip(mc.thePlayer, false).get(3);
- }
- if (itemStack.stackSize > 1) {
- itemName = itemStack.stackSize + " " + itemName;
- }
- if (experimentTableSlots[i] != null) continue;
- experimentTableSlots[i] = itemStack.copy().setStackDisplayName(itemName);
- }
- }
- }
+ if (mc.currentScreen instanceof GuiChest) {
+ ContainerChest chest = (ContainerChest) player.openContainer;
+ IInventory inv = chest.getLowerChestInventory();
+ String chestName = inv.getDisplayName().getUnformattedText();
+
+ if (ToggleCommand.superpairsToggled && chestName.contains("Superpairs (")) {
+ if (Item.getIdFromItem(item.getItem()) != 95) return;
+ if (item.getDisplayName().contains("Click any button") || item.getDisplayName().contains("Click a second button") || item.getDisplayName().contains("Next button is instantly rewarded") || item.getDisplayName().contains("Stained Glass")) {
+ Slot slot = ((GuiChest) mc.currentScreen).getSlotUnderMouse();
+ ItemStack itemStack = experimentTableSlots[slot.getSlotIndex()];
+ if (itemStack == null) return;
+ String itemName = itemStack.getDisplayName();
+
+ if (event.toolTip.stream().anyMatch(x -> StringUtils.stripControlCodes(x).equals(StringUtils.stripControlCodes(itemName))))
+ return;
+ event.toolTip.removeIf(x -> {
+ x = StringUtils.stripControlCodes(x);
+ if (x.equals("minecraft:stained_glass")) return true;
+ return x.startsWith("NBT: ");
+ });
+ event.toolTip.add(itemName);
+ event.toolTip.add(itemStack.getItem().getRegistryName());
+ }
+
+ }
+ }
+ }
- if (titleTimer >= 0) {
- if (titleTimer == 0) {
- showTitle = false;
- }
- titleTimer--;
- }
- if (skillTimer >= 0) {
- if (skillTimer == 0) {
- showSkill = false;
- }
- skillTimer--;
- }
+ @SubscribeEvent(priority = EventPriority.LOW)
+ public void onTooltipLow(ItemTooltipEvent event) {
+ if (!Utils.inSkyblock) return;
+ if (event.toolTip == null) return;
+
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
+
+ if (mc.currentScreen instanceof GuiChest) {
+ ContainerChest chest = (ContainerChest) player.openContainer;
+ IInventory inv = chest.getLowerChestInventory();
+ String chestName = inv.getDisplayName().getUnformattedText();
+
+ if (ToggleCommand.hideTooltipsInExperimentAddonsToggled && (chestName.startsWith("Ultrasequencer (") || chestName.startsWith("Chronomatron ("))) {
+ event.toolTip.clear();
+ }
+
+ if (ToggleCommand.clickInOrderToggled && chestName.equals("Click in order!")) {
+ event.toolTip.clear();
+ }
+
+ }
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase != Phase.START) return;
+
+ Minecraft mc = Minecraft.getMinecraft();
+ World world = mc.theWorld;
+ EntityPlayerSP player = mc.thePlayer;
+
+ // Checks every second
+ tickAmount++;
+ if (tickAmount % 20 == 0) {
+ if (player != null) {
+ Utils.checkForSkyblock();
+ Utils.checkForDungeons();
+ }
+
+ if (DisplayCommand.auto && world != null && player != null) {
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ boolean found = false;
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+ if (sCleaned.contains("Sven Packmaster")) {
+ DisplayCommand.display = "wolf";
+ found = true;
+ } else if (sCleaned.contains("Tarantula Broodfather")) {
+ DisplayCommand.display = "spider";
+ found = true;
+ } else if (sCleaned.contains("Revenant Horror")) {
+ DisplayCommand.display = "zombie";
+ found = true;
+ } else if (sCleaned.contains("The Catacombs (")) {
+ if (sCleaned.contains("F1")) {
+ DisplayCommand.display = "catacombs_floor_one";
+ } else if (sCleaned.contains("F2")) {
+ DisplayCommand.display = "catacombs_floor_two";
+ } else if (sCleaned.contains("F3")) {
+ DisplayCommand.display = "catacombs_floor_three";
+ } else if (sCleaned.contains("F4")) {
+ DisplayCommand.display = "catacombs_floor_four";
+ } else if (sCleaned.contains("F5")) {
+ DisplayCommand.display = "catacombs_floor_five";
+ } else if (sCleaned.contains("F6")) {
+ DisplayCommand.display = "catacombs_floor_six";
+ } else if (sCleaned.contains("F7")) {
+ DisplayCommand.display = "catacombs_floor_seven";
+ }
+ found = true;
+ }
+ }
+ for (int i = 0; i < 8; i++) {
+ ItemStack hotbarItem = player.inventory.getStackInSlot(i);
+ if (hotbarItem == null) continue;
+ if (hotbarItem.getDisplayName().contains("Ancestral Spade")) {
+ DisplayCommand.display = "mythological";
+ found = true;
+ }
+ }
+ if (!found) DisplayCommand.display = "off";
+ ConfigHandler.writeStringConfig("misc", "display", DisplayCommand.display);
+ }
+
+ if (ToggleCommand.creeperToggled && Utils.inDungeons && world != null && player != null) {
+ double x = player.posX;
+ double y = player.posY;
+ double z = player.posZ;
+ // Find creepers nearby
+ AxisAlignedBB creeperScan = new AxisAlignedBB(x - 14, y - 8, z - 13, x + 14, y + 8, z + 13); // 28x16x26 cube
+ List<EntityCreeper> creepers = world.getEntitiesWithinAABB(EntityCreeper.class, creeperScan);
+ // Check if creeper is nearby
+ if (creepers.size() > 0 && !creepers.get(0).isInvisible()) { // Don't show Wither Cloak creepers
+ EntityCreeper creeper = creepers.get(0);
+ // Start creeper line drawings
+ creeperLines.clear();
+ if (!drawCreeperLines) creeperLocation = new Vec3(creeper.posX, creeper.posY + 1, creeper.posZ);
+ drawCreeperLines = true;
+ // Search for nearby sea lanterns and prismarine blocks
+ BlockPos point1 = new BlockPos(creeper.posX - 14, creeper.posY - 7, creeper.posZ - 13);
+ BlockPos point2 = new BlockPos(creeper.posX + 14, creeper.posY + 10, creeper.posZ + 13);
+ Iterable<BlockPos> blocks = BlockPos.getAllInBox(point1, point2);
+ for (BlockPos blockPos : blocks) {
+ Block block = world.getBlockState(blockPos).getBlock();
+ if (block == Blocks.sea_lantern || block == Blocks.prismarine) {
+ // Connect block to nearest block on opposite side
+ Vec3 startBlock = new Vec3(blockPos.getX() + 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5);
+ BlockPos oppositeBlock = Utils.getFirstBlockPosAfterVectors(mc, startBlock, creeperLocation, 10, 20);
+ BlockPos endBlock = Utils.getNearbyBlock(mc, oppositeBlock, Blocks.sea_lantern, Blocks.prismarine);
+ if (endBlock != null && startBlock.yCoord > 68 && endBlock.getY() > 68) { // Don't create line underground
+ // Add to list for drawing
+ Vec3[] insertArray = {startBlock, new Vec3(endBlock.getX() + 0.5, endBlock.getY() + 0.5, endBlock.getZ() + 0.5)};
+ creeperLines.add(insertArray);
+ }
+ }
+ }
+ } else {
+ drawCreeperLines = false;
+ }
+ }
+
+ if (ToggleCommand.waterToggled && Utils.inDungeons && world != null && player != null) {
+ // multi thread block checking
+ new Thread(() -> {
+ prevInWaterRoom = inWaterRoom;
+ inWaterRoom = false;
+ boolean foundPiston = false;
+ boolean done = false;
+ for (int x = (int) (player.posX - 13); x <= player.posX + 13; x++) {
+ for (int z = (int) (player.posZ - 13); z <= player.posZ + 13; z++) {
+ BlockPos blockPos = new BlockPos(x, 54, z);
+ if (world.getBlockState(blockPos).getBlock() == Blocks.sticky_piston) {
+ foundPiston = true;
+ break;
+ }
+ }
+ if (foundPiston) break;
+ }
+
+ if (foundPiston) {
+ for (int x = (int) (player.posX - 25); x <= player.posX + 25; x++) {
+ for (int z = (int) (player.posZ - 25); z <= player.posZ + 25; z++) {
+ BlockPos blockPos = new BlockPos(x, 82, z);
+ if (world.getBlockState(blockPos).getBlock() == Blocks.piston_head) {
+ inWaterRoom = true;
+ if (!prevInWaterRoom) {
+ boolean foundGold = false;
+ boolean foundClay = false;
+ boolean foundEmerald = false;
+ boolean foundQuartz = false;
+ boolean foundDiamond = false;
+
+ // Detect first blocks near water stream
+ BlockPos scan1 = new BlockPos(x + 1, 78, z + 1);
+ BlockPos scan2 = new BlockPos(x - 1, 77, z - 1);
+ Iterable<BlockPos> blocks = BlockPos.getAllInBox(scan1, scan2);
+ for (BlockPos puzzleBlockPos : blocks) {
+ Block block = world.getBlockState(puzzleBlockPos).getBlock();
+ if (block == Blocks.gold_block) {
+ foundGold = true;
+ } else if (block == Blocks.hardened_clay) {
+ foundClay = true;
+ } else if (block == Blocks.emerald_block) {
+ foundEmerald = true;
+ } else if (block == Blocks.quartz_block) {
+ foundQuartz = true;
+ } else if (block == Blocks.diamond_block) {
+ foundDiamond = true;
+ }
+ }
+
+ int variant = 0;
+ if (foundGold && foundClay) {
+ variant = 1;
+ } else if (foundEmerald && foundQuartz) {
+ variant = 2;
+ } else if (foundQuartz && foundDiamond) {
+ variant = 3;
+ } else if (foundGold && foundQuartz) {
+ variant = 4;
+ }
+
+ // Return solution
+ String purple;
+ String orange;
+ String blue;
+ String green;
+ String red;
+ switch (variant) {
+ case 1:
+ purple = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.AQUA + "Diamond, " + EnumChatFormatting.RED + "Clay";
+ orange = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.DARK_GRAY + "Coal, " + EnumChatFormatting.GREEN + "Emerald";
+ blue = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
+ green = EnumChatFormatting.GREEN + "Emerald";
+ red = EnumChatFormatting.GRAY + "None";
+ break;
+ case 2:
+ purple = EnumChatFormatting.DARK_GRAY + "Coal";
+ orange = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
+ blue = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.AQUA + "Diamond, " + EnumChatFormatting.GREEN + "Emerald";
+ green = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.GREEN + "Emerald";
+ red = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.DARK_GRAY + "Coal, " + EnumChatFormatting.GREEN + "Emerald";
+ break;
+ case 3:
+ purple = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.AQUA + "Diamond";
+ orange = EnumChatFormatting.GREEN + "Emerald";
+ blue = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.AQUA + "Diamond";
+ green = EnumChatFormatting.GRAY + "None";
+ red = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald";
+ break;
+ case 4:
+ purple = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
+ orange = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.DARK_GRAY + "Coal";
+ blue = EnumChatFormatting.WHITE + "Quartz, " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.DARK_GRAY + "Coal, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
+ green = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald";
+ red = EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.AQUA + "Diamond, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay";
+ break;
+ default:
+ purple = orange = blue = green = red = ERROR_COLOUR + "Error detecting water puzzle variant.";
+ break;
+ }
+ waterAnswers = MAIN_COLOUR + "The following levers must be down:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Purple: " + purple + "\n" +
+ EnumChatFormatting.GOLD + "Orange: " + orange + "\n" +
+ EnumChatFormatting.BLUE + "Blue: " + blue + "\n" +
+ EnumChatFormatting.GREEN + "Green: " + green + "\n" +
+ EnumChatFormatting.RED + "Red: " + red;
+ done = true;
+ break;
+ }
+ }
+ }
+ if (done) break;
+ }
+ } else {
+ waterAnswers = null;
+ }
+ }).start();
+ }
+
+ if (ToggleCommand.lividSolverToggled && Utils.inDungeons && !foundLivid && world != null) {
+ boolean inF5 = false;
+
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+ if (sCleaned.contains("The Catacombs (F5)")) {
+ inF5 = true;
+ break;
+ }
+ }
+
+ if (inF5) {
+ List<Entity> loadedLivids = new ArrayList<>();
+ List<Entity> entities = world.getLoadedEntityList();
+ for (Entity entity : entities) {
+ String name = entity.getName();
+ if (name.contains("Livid") && name.length() > 5 && name.charAt(1) == name.charAt(5) && !loadedLivids.contains(entity)) {
+ loadedLivids.add(entity);
+ }
+ }
+ if (loadedLivids.size() > 8) {
+ livid = loadedLivids.get(0);
+ foundLivid = true;
+ }
+ }
+ }
+
+ if (ToggleCommand.ticTacToeToggled && Utils.inDungeons && world != null && player != null) {
+ correctTicTacToeButton = null;
+ AxisAlignedBB aabb = new AxisAlignedBB(player.posX - 6, player.posY - 6, player.posZ - 6, player.posX + 6, player.posY + 6, player.posZ + 6);
+ List<EntityItemFrame> itemFrames = world.getEntitiesWithinAABB(EntityItemFrame.class, aabb);
+ List<EntityItemFrame> itemFramesWithMaps = new ArrayList<>();
+ // Find how many item frames have maps already placed
+ for (EntityItemFrame itemFrame : itemFrames) {
+ ItemStack item = itemFrame.getDisplayedItem();
+ if (item == null || !(item.getItem() instanceof ItemMap)) continue;
+ MapData mapData = ((ItemMap) item.getItem()).getMapData(item, world);
+ if (mapData == null) continue;
+
+ itemFramesWithMaps.add(itemFrame);
+ }
+
+ // Only run when it's your turn
+ if (itemFramesWithMaps.size() != 9 && itemFramesWithMaps.size() % 2 == 1) {
+ char[][] board = new char[3][3];
+ BlockPos leftmostRow = null;
+ int sign = 1;
+ char facing = 'X';
+ for (EntityItemFrame itemFrame : itemFramesWithMaps) {
+ ItemStack map = itemFrame.getDisplayedItem();
+ MapData mapData = ((ItemMap) map.getItem()).getMapData(map, world);
+
+ // Find position on board
+ int row = 0;
+ int column;
+ sign = 1;
+
+ if (itemFrame.facingDirection == EnumFacing.SOUTH || itemFrame.facingDirection == EnumFacing.WEST) {
+ sign = -1;
+ }
+
+ BlockPos itemFramePos = new BlockPos(itemFrame.posX, Math.floor(itemFrame.posY), itemFrame.posZ);
+ for (int i = 2; i >= 0; i--) {
+ int realI = i * sign;
+ BlockPos blockPos = itemFramePos;
+ if (itemFrame.posX % 0.5 == 0) {
+ blockPos = itemFramePos.add(realI, 0, 0);
+ } else if (itemFrame.posZ % 0.5 == 0) {
+ blockPos = itemFramePos.add(0, 0, realI);
+ facing = 'Z';
+ }
+ Block block = world.getBlockState(blockPos).getBlock();
+ if (block == Blocks.air || block == Blocks.stone_button) {
+ leftmostRow = blockPos;
+ row = i;
+ break;
+ }
+ }
+
+ if (itemFrame.posY == 72.5) {
+ column = 0;
+ } else if (itemFrame.posY == 71.5) {
+ column = 1;
+ } else if (itemFrame.posY == 70.5) {
+ column = 2;
+ } else {
+ continue;
+ }
+
+ // Get colour
+ // Middle pixel = 64*128 + 64 = 8256
+ int colourInt = mapData.colors[8256] & 255;
+ if (colourInt == 114) {
+ board[column][row] = 'X';
+ } else if (colourInt == 33) {
+ board[column][row] = 'O';
+ }
+ }
+ System.out.println("Board: " + Arrays.deepToString(board));
+
+ // Draw best move
+ int bestMove = TicTacToeUtils.getBestMove(board) - 1;
+ System.out.println("Best move slot: " + bestMove);
+ if (leftmostRow != null) {
+ double drawX = facing == 'X' ? leftmostRow.getX() - sign * (bestMove % 3) : leftmostRow.getX();
+ double drawY = 72 - Math.floor(bestMove / 3);
+ double drawZ = facing == 'Z' ? leftmostRow.getZ() - sign * (bestMove % 3) : leftmostRow.getZ();
+
+ correctTicTacToeButton = new AxisAlignedBB(drawX, drawY, drawZ, drawX + 1, drawY + 1, drawZ + 1);
+ }
+ }
+ }
+
+ tickAmount = 0;
+ }
+
+ // Checks 5 times per second
+ if (tickAmount % 4 == 0) {
+ if (ToggleCommand.blazeToggled && Utils.inDungeons && world != null) {
+ List<Entity> entities = world.getLoadedEntityList();
+ int highestHealth = 0;
+ highestBlaze = null;
+ int lowestHealth = 99999999;
+ lowestBlaze = null;
+
+ for (Entity entity : entities) {
+ if (entity.getName().contains("Blaze") && entity.getName().contains("/")) {
+ String blazeName = StringUtils.stripControlCodes(entity.getName());
+ try {
+ int health = Integer.parseInt(blazeName.substring(blazeName.indexOf("/") + 1, blazeName.length() - 1));
+ if (health > highestHealth) {
+ highestHealth = health;
+ highestBlaze = entity;
+ }
+ if (health < lowestHealth) {
+ lowestHealth = health;
+ lowestBlaze = entity;
+ }
+ } catch (NumberFormatException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+ }
+
+ // Checks 10 times per second
+ if (tickAmount % 2 == 0) {
+ if (ToggleCommand.lowHealthNotifyToggled && Utils.inDungeons && world != null) {
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ for (String score : scoreboard) {
+ if (score.endsWith("❤") && score.matches(".* §c\\d.*")) {
+ String name = score.substring(score.indexOf(" ") + 1);
+ Utils.createTitle(EnumChatFormatting.RED + "LOW HEALTH!\n" + name, 1);
+ break;
+ }
+ }
+ }
+ }
+
+ // Runs 20 times per second
+ if (mc.currentScreen instanceof GuiChest) {
+ if (player == null) return;
+ ContainerChest chest = (ContainerChest) player.openContainer;
+ List<Slot> invSlots = ((GuiChest) mc.currentScreen).inventorySlots.inventorySlots;
+ String chestName = chest.getLowerChestInventory().getDisplayName().getUnformattedText().trim();
+
+ if (ToggleCommand.ultrasequencerToggled && chestName.startsWith("Ultrasequencer (")) {
+ if (invSlots.get(49).getStack() != null && invSlots.get(49).getStack().getDisplayName().equals("§aRemember the pattern!")) {
+ for (int i = 9; i <= 44; i++) {
+ if (invSlots.get(i) == null || invSlots.get(i).getStack() == null) continue;
+ String itemName = StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName());
+ if (itemName.matches("\\d+")) {
+ int number = Integer.parseInt(itemName);
+ clickInOrderSlots[number - 1] = invSlots.get(i);
+ }
+ }
+ }
+ }
+
+ if (ToggleCommand.superpairsToggled && chestName.startsWith("Superpairs (")) {
+ for (int i = 0; i < 53; i++) {
+ ItemStack itemStack = invSlots.get(i).getStack();
+ if (itemStack == null) continue;
+ String itemName = itemStack.getDisplayName();
+ if (Item.getIdFromItem(itemStack.getItem()) == 95 || Item.getIdFromItem(itemStack.getItem()) == 160) continue;
+ if (itemName.contains("Instant Find") || itemName.contains("Gained +")) continue;
+ if (itemName.contains("Enchanted Book")) {
+ itemName = itemStack.getTooltip(mc.thePlayer, false).get(3);
+ }
+ if (itemStack.stackSize > 1) {
+ itemName = itemStack.stackSize + " " + itemName;
+ }
+ if (experimentTableSlots[i] != null) continue;
+ experimentTableSlots[i] = itemStack.copy().setStackDisplayName(itemName);
+ }
+ }
+
+ if (ToggleCommand.clickInOrderToggled && chestName.equals("Click in order!")) {
+ if (terminalNumberNeeded[0] == 0) terminalNumberNeeded[0] = 15;
+ if (terminalNumberNeeded[2] == 0) terminalNumberNeeded[2] = 15;
+ for (int i = 10; i <= 25; i++) {
+ if (i == 17 || i == 18) continue;
+ ItemStack prevStack = invSlots.get(terminalNumberNeeded[1]).getStack();
+ if (prevStack == null) terminalNumberNeeded[0] = 15;
+ else if (prevStack.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane)) terminalNumberNeeded[0] = 15;
+ else if (prevStack.getItemDamage() == 5) terminalNumberNeeded[0] = 15;
+
+ ItemStack itemStack = invSlots.get(i).getStack();
+ if (itemStack == null) continue;
+ if (itemStack.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane)) continue;
+ if (itemStack.getItemDamage() != 14) continue;
+ if (itemStack.stackSize < terminalNumberNeeded[0]) {
+ terminalNumberNeeded[0] = itemStack.stackSize;
+ terminalNumberNeeded[1] = i;
+ } else if (itemStack.stackSize == terminalNumberNeeded[0] + 1) {
+ terminalNumberNeeded[2] = itemStack.stackSize;
+ terminalNumberNeeded[3] = i;
+ }
+ }
+ }
+
+ }
+
+ if (titleTimer >= 0) {
+ if (titleTimer == 0) {
+ showTitle = false;
+ }
+ titleTimer--;
+ }
+ if (skillTimer >= 0) {
+ if (skillTimer == 0) {
+ showSkill = false;
+ }
+ skillTimer--;
+ }
}
// Delay GUI by 1 tick
@SubscribeEvent
public void onRenderTick(TickEvent.RenderTickEvent event) {
- if (guiToOpen != null) {
- Minecraft mc = Minecraft.getMinecraft();
- if (guiToOpen.startsWith("dankergui")) {
- int page = Character.getNumericValue(guiToOpen.charAt(guiToOpen.length() - 1));
- mc.displayGuiScreen(new DankerGui(page));
- } else {
- switch (guiToOpen) {
- case "displaygui":
- mc.displayGuiScreen(new DisplayGui());
- break;
- case "onlyslayergui":
- mc.displayGuiScreen(new OnlySlayerGui());
- break;
- case "editlocations":
- mc.displayGuiScreen(new EditLocationsGui());
- break;
- case "puzzlesolvers":
- mc.displayGuiScreen(new PuzzleSolversGui(1));
- break;
- case "experimentsolvers":
- mc.displayGuiScreen(new ExperimentsGui());
- break;
- case "skilltracker":
- mc.displayGuiScreen(new SkillTrackerGui());
- break;
- }
- }
- guiToOpen = null;
- }
+ if (guiToOpen != null) {
+ Minecraft mc = Minecraft.getMinecraft();
+ if (guiToOpen.startsWith("dankergui")) {
+ int page = Character.getNumericValue(guiToOpen.charAt(guiToOpen.length() - 1));
+ mc.displayGuiScreen(new DankerGui(page));
+ } else {
+ switch (guiToOpen) {
+ case "displaygui":
+ mc.displayGuiScreen(new DisplayGui());
+ break;
+ case "onlyslayergui":
+ mc.displayGuiScreen(new OnlySlayerGui());
+ break;
+ case "editlocations":
+ mc.displayGuiScreen(new EditLocationsGui());
+ break;
+ case "puzzlesolvers":
+ mc.displayGuiScreen(new PuzzleSolversGui(1));
+ break;
+ case "experimentsolvers":
+ mc.displayGuiScreen(new ExperimentsGui());
+ break;
+ case "skilltracker":
+ mc.displayGuiScreen(new SkillTrackerGui());
+ break;
+ }
+ }
+ guiToOpen = null;
+ }
}
@SubscribeEvent
public void onWorldRender(RenderWorldLastEvent event) {
- if (ToggleCommand.blazeToggled) {
- if (lowestBlaze != null) {
- BlockPos stringPos = new BlockPos(lowestBlaze.posX, lowestBlaze.posY + 1, lowestBlaze.posZ);
- Utils.draw3DString(stringPos, EnumChatFormatting.BOLD + "Smallest", LOWEST_BLAZE_COLOUR, event.partialTicks);
- AxisAlignedBB aabb = new AxisAlignedBB(lowestBlaze.posX - 0.5, lowestBlaze.posY - 2, lowestBlaze.posZ - 0.5, lowestBlaze.posX + 0.5, lowestBlaze.posY, lowestBlaze.posZ + 0.5);
- Utils.draw3DBox(aabb, LOWEST_BLAZE_COLOUR, event.partialTicks);
- }
- if (highestBlaze != null) {
- BlockPos stringPos = new BlockPos(highestBlaze.posX, highestBlaze.posY + 1, highestBlaze.posZ);
- Utils.draw3DString(stringPos, EnumChatFormatting.BOLD + "Biggest", HIGHEST_BLAZE_COLOUR, event.partialTicks);
- AxisAlignedBB aabb = new AxisAlignedBB(highestBlaze.posX - 0.5, highestBlaze.posY - 2, highestBlaze.posZ - 0.5, highestBlaze.posX + 0.5, highestBlaze.posY, highestBlaze.posZ + 0.5);
- Utils.draw3DBox(aabb, HIGHEST_BLAZE_COLOUR, event.partialTicks);
- }
- }
- if (ToggleCommand.creeperToggled && drawCreeperLines && !creeperLines.isEmpty()) {
- for (int i = 0; i < creeperLines.size(); i++) {
- Utils.draw3DLine(creeperLines.get(i)[0], creeperLines.get(i)[1], CREEPER_COLOURS[i % 10], event.partialTicks);
- }
- }
- if (ToggleCommand.ticTacToeToggled && correctTicTacToeButton != null) {
- Utils.draw3DBox(correctTicTacToeButton, 0x40FF40, event.partialTicks);
- }
+ if (ToggleCommand.threeManToggled && riddleChest != null) {
+ Utils.drawFilled3DBox(new AxisAlignedBB(riddleChest.getX() - 0.05, riddleChest.getY(), riddleChest.getZ() - 0.05, riddleChest.getX() + 1.05, riddleChest.getY() + 1, riddleChest.getZ() + 1.05), 0x197F19, true, event.partialTicks);
+ }
+
+ if (ToggleCommand.blazeToggled && Utils.inDungeons) {
+ if (lowestBlaze != null) {
+ BlockPos stringPos = new BlockPos(lowestBlaze.posX, lowestBlaze.posY + 1, lowestBlaze.posZ);
+ Utils.draw3DString(stringPos, EnumChatFormatting.BOLD + "Smallest", LOWEST_BLAZE_COLOUR, event.partialTicks);
+ AxisAlignedBB aabb = new AxisAlignedBB(lowestBlaze.posX - 0.5, lowestBlaze.posY - 2, lowestBlaze.posZ - 0.5, lowestBlaze.posX + 0.5, lowestBlaze.posY, lowestBlaze.posZ + 0.5);
+ Utils.draw3DBox(aabb, LOWEST_BLAZE_COLOUR, event.partialTicks);
+ }
+ if (highestBlaze != null) {
+ BlockPos stringPos = new BlockPos(highestBlaze.posX, highestBlaze.posY + 1, highestBlaze.posZ);
+ Utils.draw3DString(stringPos, EnumChatFormatting.BOLD + "Biggest", HIGHEST_BLAZE_COLOUR, event.partialTicks);
+ AxisAlignedBB aabb = new AxisAlignedBB(highestBlaze.posX - 0.5, highestBlaze.posY - 2, highestBlaze.posZ - 0.5, highestBlaze.posX + 0.5, highestBlaze.posY, highestBlaze.posZ + 0.5);
+ Utils.draw3DBox(aabb, HIGHEST_BLAZE_COLOUR, event.partialTicks);
+ }
+ }
+ if (ToggleCommand.creeperToggled && drawCreeperLines && !creeperLines.isEmpty()) {
+ for (int i = 0; i < creeperLines.size(); i++) {
+ Utils.draw3DLine(creeperLines.get(i)[0], creeperLines.get(i)[1], CREEPER_COLOURS[i % 10], event.partialTicks);
+ }
+ }
+ if (ToggleCommand.ticTacToeToggled && correctTicTacToeButton != null) {
+ Utils.draw3DBox(correctTicTacToeButton, 0x40FF40, event.partialTicks);
+ }
}
@SubscribeEvent
public void onInteract(PlayerInteractEvent event) {
- if (!Utils.inSkyblock || Minecraft.getMinecraft().thePlayer != event.entityPlayer) return;
- ItemStack item = event.entityPlayer.getHeldItem();
- if (item == null) return;
+ if (!Utils.inSkyblock || Minecraft.getMinecraft().thePlayer != event.entityPlayer) return;
+ ItemStack item = event.entityPlayer.getHeldItem();
+ if (item == null) return;
+
+ if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_AIR) {
+ if (ToggleCommand.aotdToggled && item.getDisplayName().contains("Aspect of the Dragons")) {
+ event.setCanceled(true);
+ }
+ if (ToggleCommand.lividDaggerToggled && item.getDisplayName().contains("Livid Dagger")) {
+ event.setCanceled(true);
+ }
+ if (ToggleCommand.notifySlayerSlainToggled) {
+ if (ScoreboardHandler.getSidebarLines().stream().anyMatch(x -> ScoreboardHandler.cleanSB(x).contains("Boss slain!"))) {
+ if (ScoreboardHandler.getSidebarLines().stream().anyMatch(x -> {
+ String line = ScoreboardHandler.cleanSB(x);
+ return Arrays.stream(new String[]{"Howling Cave", "Ruins", "Graveyard", "Coal Mine", "Spider's Den"}).anyMatch(line::contains);
+ })) {
+ if (Utils.hasRightClickAbility(item)) {
+ List<String> lore = Utils.getItemLore(item);
+
+ int abilityLine = -1;
+ for (int i = 0; i < lore.size(); i++) {
+ String line = StringUtils.stripControlCodes(lore.get(i));
+ if (line.startsWith("Item Ability:")) abilityLine = i;
+ if (abilityLine != -1 && i > abilityLine) {
+ if (line.toLowerCase().contains("damage")) {
+ Utils.createTitle(EnumChatFormatting.RED + "Boss slain!", 2);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
- if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_AIR) {
- if (ToggleCommand.aotdToggled && item.getDisplayName().contains("Aspect of the Dragons")) {
- event.setCanceled(true);
- }
- if (ToggleCommand.lividDaggerToggled && item.getDisplayName().contains("Livid Dagger")) {
- event.setCanceled(true);
- }
- }
+ if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
+ Block block = Minecraft.getMinecraft().theWorld.getBlockState(event.pos).getBlock();
+
+ ArrayList<Block> interactables = new ArrayList<>(Arrays.asList(
+ Blocks.acacia_door,
+ Blocks.anvil,
+ Blocks.beacon,
+ Blocks.bed,
+ Blocks.birch_door,
+ Blocks.brewing_stand,
+ Blocks.command_block,
+ Blocks.crafting_table,
+ Blocks.chest,
+ Blocks.dark_oak_door,
+ Blocks.daylight_detector,
+ Blocks.daylight_detector_inverted,
+ Blocks.dispenser,
+ Blocks.dropper,
+ Blocks.enchanting_table,
+ Blocks.ender_chest,
+ Blocks.furnace,
+ Blocks.hopper,
+ Blocks.jungle_door,
+ Blocks.lever,
+ Blocks.noteblock,
+ Blocks.powered_comparator,
+ Blocks.unpowered_comparator,
+ Blocks.powered_repeater,
+ Blocks.unpowered_repeater,
+ Blocks.standing_sign,
+ Blocks.wall_sign,
+ Blocks.trapdoor,
+ Blocks.trapped_chest,
+ Blocks.wooden_button,
+ Blocks.stone_button,
+ Blocks.oak_door,
+ Blocks.skull
+ ));
+ ArrayList<Block> flowerPlaceable = new ArrayList<>(Arrays.asList(
+ Blocks.grass,
+ Blocks.dirt,
+ Blocks.flower_pot,
+ Blocks.tallgrass,
+ Blocks.double_plant
+ ));
+ if (Utils.inDungeons) {
+ interactables.add(Blocks.coal_block);
+ interactables.add(Blocks.stained_hardened_clay);
+ }
+ if (flowerPlaceable.contains(block)) {
+ if (ToggleCommand.flowerWeaponsToggled && item.getDisplayName().contains("Flower of Truth")) {
+ event.setCanceled(true);
+ }
+ if (ToggleCommand.flowerWeaponsToggled && item.getDisplayName().contains("Spirit Sceptre")) {
+ event.setCanceled(true);
+ }
+ }
+ if (!interactables.contains(block)) {
+ if (ToggleCommand.aotdToggled && item.getDisplayName().contains("Aspect of the Dragons")) {
+ event.setCanceled(true);
+ }
+ if (ToggleCommand.lividDaggerToggled && item.getDisplayName().contains("Livid Dagger")) {
+ event.setCanceled(true);
+ }
+ }
+ }
+ }
- if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
- Block block = Minecraft.getMinecraft().theWorld.getBlockState(event.pos).getBlock();
- ArrayList<Block> interactables = new ArrayList<>(Arrays.asList(
- Blocks.acacia_door,
- Blocks.anvil,
- Blocks.beacon,
- Blocks.bed,
- Blocks.birch_door,
- Blocks.brewing_stand,
- Blocks.command_block,
- Blocks.crafting_table,
- Blocks.chest,
- Blocks.dark_oak_door,
- Blocks.daylight_detector,
- Blocks.daylight_detector_inverted,
- Blocks.dispenser,
- Blocks.dropper,
- Blocks.enchanting_table,
- Blocks.ender_chest,
- Blocks.furnace,
- Blocks.hopper,
- Blocks.jungle_door,
- Blocks.lever,
- Blocks.noteblock,
- Blocks.powered_comparator,
- Blocks.unpowered_comparator,
- Blocks.powered_repeater,
- Blocks.unpowered_repeater,
- Blocks.standing_sign,
- Blocks.wall_sign,
- Blocks.trapdoor,
- Blocks.trapped_chest,
- Blocks.wooden_button,
- Blocks.stone_button,
- Blocks.oak_door,
- Blocks.skull
- ));
- if (Utils.inDungeons) {
- interactables.add(Blocks.coal_block);
- interactables.add(Blocks.stained_hardened_clay);
- }
- if (!interactables.contains(block)) {
- if (ToggleCommand.aotdToggled && item.getDisplayName().contains("Aspect of the Dragons")) {
- event.setCanceled(true);
- }
- if (ToggleCommand.lividDaggerToggled && item.getDisplayName().contains("Livid Dagger")) {
- event.setCanceled(true);
- }
- }
- }
+ @SubscribeEvent
+ public void onArrowNock(ArrowNockEvent event) {
+ if (!Utils.inSkyblock || Minecraft.getMinecraft().thePlayer != event.entityPlayer) return;
+
+ if (ToggleCommand.notifySlayerSlainToggled) {
+ if (ScoreboardHandler.getSidebarLines().stream().anyMatch(x -> ScoreboardHandler.cleanSB(x).contains("Boss slain!"))) {
+ if (ScoreboardHandler.getSidebarLines().stream().anyMatch(x -> {
+ String line = ScoreboardHandler.cleanSB(x);
+ return Arrays.stream(new String[]{"Howling Cave", "Ruins", "Graveyard", "Coal Mine", "Spider's Den"}).anyMatch(line::contains);
+ })) {
+ Utils.createTitle(EnumChatFormatting.RED + "Boss slain!", 2);
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onAttackingEntity(AttackEntityEvent event) {
+ if (ToggleCommand.notifySlayerSlainToggled && (event.target instanceof EntityZombie || event.target instanceof EntitySpider || event.target instanceof EntityWolf)) {
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+
+ for (String line : scoreboard) {
+ String cleanedLine = ScoreboardHandler.cleanSB(line);
+ if (cleanedLine.contains("Boss slain!")) {
+ Utils.createTitle(EnumChatFormatting.RED + "Boss slain!", 2);
+ break;
+ }
+ }
+ }
}
@SubscribeEvent
public void onEntityInteract(EntityInteractEvent event) {
- Minecraft mc = Minecraft.getMinecraft();
- if (mc.thePlayer != event.entityPlayer) return;
-
- if (ToggleCommand.itemFrameOnSeaLanternsToggled && Utils.inDungeons && event.target instanceof EntityItemFrame) {
- EntityItemFrame itemFrame = (EntityItemFrame) event.target;
- ItemStack item = itemFrame.getDisplayedItem();
- if (item == null || item.getItem() != Items.arrow) return;
- BlockPos blockPos = Utils.getBlockUnderItemFrame(itemFrame);
- if (mc.theWorld.getBlockState(blockPos).getBlock() == Blocks.sea_lantern) {
- event.setCanceled(true);
- }
- }
+ Minecraft mc = Minecraft.getMinecraft();
+ if (mc.thePlayer != event.entityPlayer) return;
+
+ if (ToggleCommand.itemFrameOnSeaLanternsToggled && Utils.inDungeons && event.target instanceof EntityItemFrame) {
+ EntityItemFrame itemFrame = (EntityItemFrame) event.target;
+ ItemStack item = itemFrame.getDisplayedItem();
+ if (item == null || item.getItem() != Items.arrow) return;
+ BlockPos blockPos = Utils.getBlockUnderItemFrame(itemFrame);
+ if (mc.theWorld.getBlockState(blockPos).getBlock() == Blocks.sea_lantern) {
+ event.setCanceled(true);
+ }
+ }
}
@SubscribeEvent
public void onKey(KeyInputEvent event) {
- if (!Utils.inSkyblock) return;
+ if (!Utils.inSkyblock) return;
- EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
- if (keyBindings[0].isPressed()) {
- player.sendChatMessage(lastMaddoxCommand);
- }
- if (keyBindings[1].isPressed()) {
- if (skillStopwatch.isStarted() && skillStopwatch.isSuspended()) {
- skillStopwatch.resume();
- player.addChatMessage(new ChatComponentText(MAIN_COLOUR + "Skill tracker started."));
- } else if (!skillStopwatch.isStarted()) {
- skillStopwatch.start();
- player.addChatMessage(new ChatComponentText(MAIN_COLOUR + "Skill tracker started."));
- } else if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) {
- skillStopwatch.suspend();
- player.addChatMessage(new ChatComponentText(MAIN_COLOUR + "Skill tracker paused."));
- }
- }
+ EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+ if (keyBindings[0].isPressed()) {
+ player.sendChatMessage(lastMaddoxCommand);
+ }
+ if (keyBindings[1].isPressed()) {
+ if (Utils.inDungeons) {
+ player.dropOneItem(true);
+ }
+ }
+ if (keyBindings[2].isPressed()) {
+ if (skillStopwatch.isStarted() && skillStopwatch.isSuspended()) {
+ skillStopwatch.resume();
+ player.addChatMessage(new ChatComponentText(MAIN_COLOUR + "Skill tracker started."));
+ } else if (!skillStopwatch.isStarted()) {
+ skillStopwatch.start();
+ player.addChatMessage(new ChatComponentText(MAIN_COLOUR + "Skill tracker started."));
+ } else if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) {
+ skillStopwatch.suspend();
+ player.addChatMessage(new ChatComponentText(MAIN_COLOUR + "Skill tracker paused."));
+ }
+ }
}
@SubscribeEvent
public void onGuiMouseInputPre(GuiScreenEvent.MouseInputEvent.Pre event) {
- if (!Utils.inSkyblock) return;
- if (Mouse.getEventButton() != 0 && Mouse.getEventButton() != 1 && Mouse.getEventButton() != 2) return; // Left click, middle click or right click
- if (!Mouse.getEventButtonState()) return;
-
- if (event.gui instanceof GuiChest) {
- Container containerChest = ((GuiChest) event.gui).inventorySlots;
- if (containerChest instanceof ContainerChest) {
- // a lot of declarations here, if you get scarred, my bad
- GuiChest chest = (GuiChest) event.gui;
- IInventory inventory = ((ContainerChest) containerChest).getLowerChestInventory();
- Slot mouseSlot = chest.getSlotUnderMouse();
- if (mouseSlot == null) return;
- ItemStack item = mouseSlot.getStack();
- String inventoryName = inventory.getDisplayName().getUnformattedText();
-
- if (ToggleCommand.stopSalvageStarredToggled && inventoryName.startsWith("Salvage")) {
- if (item == null) return;
- boolean inSalvageGui = false;
- if (item.getDisplayName().contains("Salvage") || item.getDisplayName().contains("Essence")) {
- ItemStack salvageItem = inventory.getStackInSlot(13);
- if (salvageItem == null) return;
- item = salvageItem;
- inSalvageGui = true;
- }
- if (item.getDisplayName().contains("✪") && (mouseSlot.slotNumber > 53 || inSalvageGui)) {
- Minecraft.getMinecraft().thePlayer.playSound("note.bass", 1, 0.5f);
- Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(ERROR_COLOUR + "Danker's Skyblock Mod has stopped you from salvaging that item!"));
- event.setCanceled(true);
- return;
- }
- }
-
- if (inventoryName.endsWith(" Chest") && item != null && item.getDisplayName().contains("Open Reward Chest")) {
- List<String> tooltip = item.getTooltip(Minecraft.getMinecraft().thePlayer, Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
- for (String lineUnclean : tooltip) {
- String line = StringUtils.stripControlCodes(lineUnclean);
- if (line.contains("FREE")) {
- break;
- } else if (line.contains(" Coins")) {
- int coinsSpent = Integer.parseInt(line.substring(0, line.indexOf(" ")).replaceAll(",", ""));
-
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- for (String s : scoreboard) {
- String sCleaned = ScoreboardHandler.cleanSB(s);
- if (sCleaned.contains("The Catacombs (")) {
- if (sCleaned.contains("F1")) {
- LootCommand.f1CoinsSpent += coinsSpent;
- LootCommand.f1CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorOneCoins", LootCommand.f1CoinsSpent);
- } else if (sCleaned.contains("F2")) {
- LootCommand.f2CoinsSpent += coinsSpent;
- LootCommand.f2CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorTwoCoins", LootCommand.f2CoinsSpent);
- } else if (sCleaned.contains("F3")) {
- LootCommand.f3CoinsSpent += coinsSpent;
- LootCommand.f3CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorThreeCoins", LootCommand.f3CoinsSpent);
- } else if (sCleaned.contains("F4")) {
- LootCommand.f4CoinsSpent += coinsSpent;
- LootCommand.f4CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorFourCoins", LootCommand.f4CoinsSpent);
- } else if (sCleaned.contains("F5")) {
- LootCommand.f5CoinsSpent += coinsSpent;
- LootCommand.f5CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorFiveCoins", LootCommand.f5CoinsSpent);
- } else if (sCleaned.contains("F6")) {
- LootCommand.f6CoinsSpent += coinsSpent;
- LootCommand.f6CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorSixCoins", LootCommand.f6CoinsSpent);
- } else if (sCleaned.contains("F7")) {
- LootCommand.f7CoinsSpent += coinsSpent;
- LootCommand.f7CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorSevenCoins", LootCommand.f7CoinsSpent);
- }
- break;
- }
- }
- break;
- }
- }
- }
-
- if (ToggleCommand.chronomatronToggled && inventoryName.startsWith("Chronomatron (")) {
- if (item == null) {
- if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL)) event.setCanceled(true);
- return;
- }
- if (inventory.getStackInSlot(49).getDisplayName().startsWith("§7Timer: §a") && (item.getItem() == Item.getItemFromBlock(Blocks.stained_glass) || item.getItem() == Item.getItemFromBlock(Blocks.stained_hardened_clay))) {
- if (chronomatronPattern.size() > chronomatronMouseClicks && !item.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks))) {
- if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL)) event.setCanceled(true);
- return;
- }
- chronomatronMouseClicks++;
- } else if (inventory.getStackInSlot(49).getDisplayName().startsWith("§aRemember the pattern!")) {
- if (event.isCancelable()) event.setCanceled(true);
- return;
- }
- }
-
- if (ToggleCommand.ultrasequencerToggled && inventoryName.startsWith("Ultrasequencer (")) {
- if (item == null) {
- if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL))
- event.setCanceled(true);
- return;
- }
- if (inventory.getStackInSlot(49).getDisplayName().equals("§aRemember the pattern!")) {
- if (event.isCancelable()) event.setCanceled(true);
- return;
- } else if (inventory.getStackInSlot(49).getDisplayName().startsWith("§7Timer: §a")) {
- if (clickInOrderSlots[lastUltraSequencerClicked] != null && mouseSlot.getSlotIndex() != clickInOrderSlots[lastUltraSequencerClicked].getSlotIndex()) {
- if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL))
- event.setCanceled(true);
- return;
- }
- }
- }
-
- if (!BlockSlayerCommand.onlySlayerName.equals("") && item != null) {
- if (inventoryName.equals("Slayer")) {
- if (!item.getDisplayName().contains("Revenant Horror") && !item.getDisplayName().contains("Tarantula Broodfather") && !item.getDisplayName().contains("Sven Packmaster")) return;
- if (!item.getDisplayName().contains(BlockSlayerCommand.onlySlayerName)) {
- Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(ERROR_COLOUR + "Danker's Skyblock Mod has stopped you from starting this quest (Set to " + BlockSlayerCommand.onlySlayerName + " " + BlockSlayerCommand.onlySlayerNumber + ")"));
- Minecraft.getMinecraft().thePlayer.playSound("note.bass", 1, (float) 0.5);
- event.setCanceled(true);
- }
- } else if (inventoryName.equals("Revenant Horror") || inventoryName.equals("Tarantula Broodfather") || inventoryName.equals("Sven Packmaster")) {
- if (item.getDisplayName().contains("Revenant Horror") || item.getDisplayName().contains("Tarantula Broodfather") || item.getDisplayName().contains("Sven Packmaster")) {
- // Only check number as they passed the above check
- String slayerNumber = item.getDisplayName().substring(item.getDisplayName().lastIndexOf(" ") + 1);
- if (!slayerNumber.equals(BlockSlayerCommand.onlySlayerNumber)) {
- Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(ERROR_COLOUR + "Danker's Skyblock Mod has stopped you from starting this quest (Set to " + BlockSlayerCommand.onlySlayerName + " " + BlockSlayerCommand.onlySlayerNumber + ")"));
- Minecraft.getMinecraft().thePlayer.playSound("note.bass", 1, (float) 0.5);
- event.setCanceled(true);
- }
- }
- }
- }
- }
- }
+ if (!Utils.inSkyblock) return;
+ if (Mouse.getEventButton() != 0 && Mouse.getEventButton() != 1 && Mouse.getEventButton() != 2)
+ return; // Left click, middle click or right click
+ if (!Mouse.getEventButtonState()) return;
+
+ if (event.gui instanceof GuiChest) {
+ Container containerChest = ((GuiChest) event.gui).inventorySlots;
+ if (containerChest instanceof ContainerChest) {
+ // a lot of declarations here, if you get scarred, my bad
+ GuiChest chest = (GuiChest) event.gui;
+ IInventory inventory = ((ContainerChest) containerChest).getLowerChestInventory();
+ Slot mouseSlot = chest.getSlotUnderMouse();
+ if (mouseSlot == null) return;
+ ItemStack item = mouseSlot.getStack();
+ String inventoryName = inventory.getDisplayName().getUnformattedText();
+
+ if (ToggleCommand.stopSalvageStarredToggled && inventoryName.startsWith("Salvage")) {
+ if (item == null) return;
+ boolean inSalvageGui = false;
+ if (item.getDisplayName().contains("Salvage") || item.getDisplayName().contains("Essence")) {
+ ItemStack salvageItem = inventory.getStackInSlot(13);
+ if (salvageItem == null) return;
+ item = salvageItem;
+ inSalvageGui = true;
+ }
+ if (item.getDisplayName().contains("✪") && (mouseSlot.slotNumber > 53 || inSalvageGui)) {
+ Minecraft.getMinecraft().thePlayer.playSound("note.bass", 1, 0.5f);
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(ERROR_COLOUR + "Danker's Skyblock Mod has stopped you from salvaging that item!"));
+ event.setCanceled(true);
+ return;
+ }
+ }
+
+ if (inventoryName.endsWith(" Chest") && item != null && item.getDisplayName().contains("Open Reward Chest")) {
+ List<String> tooltip = item.getTooltip(Minecraft.getMinecraft().thePlayer, Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
+ for (String lineUnclean : tooltip) {
+ String line = StringUtils.stripControlCodes(lineUnclean);
+ if (line.contains("FREE")) {
+ break;
+ } else if (line.contains(" Coins")) {
+ int coinsSpent = Integer.parseInt(line.substring(0, line.indexOf(" ")).replaceAll(",", ""));
+
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+ if (sCleaned.contains("The Catacombs (")) {
+ if (sCleaned.contains("F1")) {
+ LootCommand.f1CoinsSpent += coinsSpent;
+ LootCommand.f1CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorOneCoins", LootCommand.f1CoinsSpent);
+ } else if (sCleaned.contains("F2")) {
+ LootCommand.f2CoinsSpent += coinsSpent;
+ LootCommand.f2CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorTwoCoins", LootCommand.f2CoinsSpent);
+ } else if (sCleaned.contains("F3")) {
+ LootCommand.f3CoinsSpent += coinsSpent;
+ LootCommand.f3CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorThreeCoins", LootCommand.f3CoinsSpent);
+ } else if (sCleaned.contains("F4")) {
+ LootCommand.f4CoinsSpent += coinsSpent;
+ LootCommand.f4CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFourCoins", LootCommand.f4CoinsSpent);
+ } else if (sCleaned.contains("F5")) {
+ LootCommand.f5CoinsSpent += coinsSpent;
+ LootCommand.f5CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFiveCoins", LootCommand.f5CoinsSpent);
+ } else if (sCleaned.contains("F6")) {
+ LootCommand.f6CoinsSpent += coinsSpent;
+ LootCommand.f6CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSixCoins", LootCommand.f6CoinsSpent);
+ } else if (sCleaned.contains("F7")) {
+ LootCommand.f7CoinsSpent += coinsSpent;
+ LootCommand.f7CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSevenCoins", LootCommand.f7CoinsSpent);
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ if (ToggleCommand.chronomatronToggled && inventoryName.startsWith("Chronomatron (")) {
+ if (item == null) {
+ if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL))
+ event.setCanceled(true);
+ return;
+ }
+ if (inventory.getStackInSlot(49).getDisplayName().startsWith("§7Timer: §a") && (item.getItem() == Item.getItemFromBlock(Blocks.stained_glass) || item.getItem() == Item.getItemFromBlock(Blocks.stained_hardened_clay))) {
+ if (chronomatronPattern.size() > chronomatronMouseClicks && !item.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks))) {
+ if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL))
+ event.setCanceled(true);
+ return;
+ }
+ chronomatronMouseClicks++;
+ } else if (inventory.getStackInSlot(49).getDisplayName().startsWith("§aRemember the pattern!")) {
+ if (event.isCancelable()) event.setCanceled(true);
+ return;
+ }
+ }
+
+ if (ToggleCommand.ultrasequencerToggled && inventoryName.startsWith("Ultrasequencer (")) {
+ if (item == null) {
+ if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL))
+ event.setCanceled(true);
+ return;
+ }
+ if (inventory.getStackInSlot(49).getDisplayName().equals("§aRemember the pattern!")) {
+ if (event.isCancelable()) event.setCanceled(true);
+ return;
+ } else if (inventory.getStackInSlot(49).getDisplayName().startsWith("§7Timer: §a")) {
+ if (clickInOrderSlots[lastUltraSequencerClicked] != null && mouseSlot.getSlotIndex() != clickInOrderSlots[lastUltraSequencerClicked].getSlotIndex()) {
+ if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL))
+ event.setCanceled(true);
+ return;
+ }
+ }
+ }
+
+ if (ToggleCommand.blockWrongTerminalClicksToggled && Utils.inDungeons) {
+ boolean shouldCancel = false;
+
+ if (item == null) return;
+
+ //most of these are extra but who cares
+
+ switch (inventoryName) {
+ case "Correct all the panes!":
+ shouldCancel = !StringUtils.stripControlCodes(item.getDisplayName()).startsWith("Off");
+ break;
+ case "Navigate the maze!":
+ if (item.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane)) {
+ shouldCancel = true;
+ break;
+ }
+
+ if (item.getItemDamage() != 0) {
+ shouldCancel = true;
+ break;
+ }
+
+ boolean isValid = false;
+
+ int slotIndex = mouseSlot.getSlotIndex();
+
+ if (slotIndex % 9 != 8 && slotIndex != 53) {
+ ItemStack itemStack = inventory.getStackInSlot(slotIndex + 1);
+ if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true;
+ }
+
+ if (!isValid && slotIndex % 9 != 0 && slotIndex != 0) {
+ ItemStack itemStack = inventory.getStackInSlot(slotIndex - 1);
+ if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true;
+ }
+
+ if (!isValid && slotIndex <= 44) {
+ ItemStack itemStack = inventory.getStackInSlot(slotIndex + 9);
+ if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true;
+ }
+
+ if (!isValid && slotIndex >= 9) {
+ ItemStack itemStack = inventory.getStackInSlot(slotIndex - 9);
+ if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true;
+ }
+
+ shouldCancel = !isValid;
+
+ break;
+ case "Click in order!":
+
+ if (mouseSlot.getSlotIndex() > 35) {
+ break;
+ }
+
+ if ((item.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane))) {
+ shouldCancel = true;
+ break;
+ }
+ if (item.getItemDamage() != 14) {
+ shouldCancel = true;
+ break;
+ }
+ int needed = terminalNumberNeeded[0];
+ if (needed == 0) break;
+ shouldCancel = needed != -1 && item.stackSize != needed;
+ break;
+ }
+
+ if (!shouldCancel) {
+ if (inventoryName.startsWith("What starts with:")) {
+ char letter = inventoryName.charAt(inventoryName.indexOf("'") + 1);
+ shouldCancel = !(StringUtils.stripControlCodes(item.getDisplayName()).charAt(0) == letter);
+ } else if (inventoryName.startsWith("Select all the")) {
+ if (terminalColorNeeded == null) return;
+ String itemName = StringUtils.stripControlCodes(item.getDisplayName()).toUpperCase();
+ shouldCancel = !(itemName.contains(terminalColorNeeded) ||
+ (terminalColorNeeded.equals("SILVER") && itemName.contains("LIGHT GRAY")) ||
+ (terminalColorNeeded.equals("WHITE") && (itemName.equals("WOOL") || itemName.equals("BONE MEAL"))) ||
+ (terminalColorNeeded.equals("BLACK") && itemName.equals("INK SACK")) ||
+ (terminalColorNeeded.equals("BLUE") && itemName.equals("LAPIS LAZULI")) ||
+ (terminalColorNeeded.equals("BROWN") && itemName.equals("COCOA BEANS")));
+ }
+ }
+
+ event.setCanceled(shouldCancel && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL));
+ }
+
+ if (!BlockSlayerCommand.onlySlayerName.equals("") && item != null) {
+ if (inventoryName.equals("Slayer")) {
+ if (!item.getDisplayName().contains("Revenant Horror") && !item.getDisplayName().contains("Tarantula Broodfather") && !item.getDisplayName().contains("Sven Packmaster"))
+ return;
+ if (!item.getDisplayName().contains(BlockSlayerCommand.onlySlayerName)) {
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(ERROR_COLOUR + "Danker's Skyblock Mod has stopped you from starting this quest (Set to " + BlockSlayerCommand.onlySlayerName + " " + BlockSlayerCommand.onlySlayerNumber + ")"));
+ Minecraft.getMinecraft().thePlayer.playSound("note.bass", 1, (float) 0.5);
+ event.setCanceled(true);
+ }
+ } else if (inventoryName.equals("Revenant Horror") || inventoryName.equals("Tarantula Broodfather") || inventoryName.equals("Sven Packmaster")) {
+ if (item.getDisplayName().contains("Revenant Horror") || item.getDisplayName().contains("Tarantula Broodfather") || item.getDisplayName().contains("Sven Packmaster")) {
+ // Only check number as they passed the above check
+ String slayerNumber = item.getDisplayName().substring(item.getDisplayName().lastIndexOf(" ") + 1);
+ if (!slayerNumber.equals(BlockSlayerCommand.onlySlayerNumber)) {
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(ERROR_COLOUR + "Danker's Skyblock Mod has stopped you from starting this quest (Set to " + BlockSlayerCommand.onlySlayerName + " " + BlockSlayerCommand.onlySlayerNumber + ")"));
+ Minecraft.getMinecraft().thePlayer.playSound("note.bass", 1, (float) 0.5);
+ event.setCanceled(true);
+ }
+ }
+ }
+ }
+ }
+ }
}
@SubscribeEvent
public void onMouseInputPost(GuiScreenEvent.MouseInputEvent.Post event) {
- if (!Utils.inSkyblock) return;
- if (Mouse.getEventButton() == 0 && event.gui instanceof GuiChat) {
- if (ToggleCommand.chatMaddoxToggled && System.currentTimeMillis() / 1000 - lastMaddoxTime < 10) {
- Minecraft.getMinecraft().thePlayer.sendChatMessage(lastMaddoxCommand);
- }
- }
+ if (!Utils.inSkyblock) return;
+ if (Mouse.getEventButton() == 0 && event.gui instanceof GuiChat) {
+ if (ToggleCommand.chatMaddoxToggled && System.currentTimeMillis() / 1000 - lastMaddoxTime < 10) {
+ Minecraft.getMinecraft().thePlayer.sendChatMessage(lastMaddoxCommand);
+ }
+ }
}
@SubscribeEvent
- public void onGuiOpen(GuiOpenEvent event) {
- Minecraft mc = Minecraft.getMinecraft();
- GameSettings gameSettings = mc.gameSettings;
- if (event.gui instanceof GuiChest) {
- Container containerChest = ((GuiChest) event.gui).inventorySlots;
- if (containerChest instanceof ContainerChest) {
- GuiChest chest = (GuiChest) event.gui;
- IInventory inventory = ((ContainerChest) containerChest).getLowerChestInventory();
- String inventoryName = inventory.getDisplayName().getUnformattedText();
- if (ToggleCommand.swapToPickBlockInExperimentsToggled) {
- if (inventoryName.startsWith("Chronomatron (") || inventoryName.startsWith("Superpairs (") || inventoryName.startsWith("Ultrasequencer (")) {
- if (!pickBlockBindSwapped) {
- pickBlockBind = gameSettings.keyBindPickBlock.getKeyCode();
- gameSettings.keyBindPickBlock.setKeyCode(-100);
- pickBlockBindSwapped = true;
- }
- } else {
- if (pickBlockBindSwapped) {
- gameSettings.keyBindPickBlock.setKeyCode(pickBlockBind);
- pickBlockBindSwapped = false;
- }
- }
- }
+ public void onGuiOpen(GuiOpenEvent event) {
+ Minecraft mc = Minecraft.getMinecraft();
+ GameSettings gameSettings = mc.gameSettings;
+ if (event.gui instanceof GuiChest) {
+ Container containerChest = ((GuiChest) event.gui).inventorySlots;
+ if (containerChest instanceof ContainerChest) {
+ GuiChest chest = (GuiChest) event.gui;
+ IInventory inventory = ((ContainerChest) containerChest).getLowerChestInventory();
+ String inventoryName = inventory.getDisplayName().getUnformattedText();
+
+ if (ToggleCommand.swapToPickBlockToggled) {
+ if (inventoryName.startsWith("Chronomatron (") || inventoryName.startsWith("Superpairs (") || inventoryName.startsWith("Ultrasequencer (") || inventoryName.startsWith("What starts with:") || inventoryName.startsWith("Select all the") || inventoryName.startsWith("Navigate the maze!") || inventoryName.startsWith("Correct all the panes!") || inventoryName.startsWith("Click in order!") || inventoryName.startsWith("Harp -")) {
+ if (!pickBlockBindSwapped) {
+ pickBlockBind = gameSettings.keyBindPickBlock.getKeyCode();
+ gameSettings.keyBindPickBlock.setKeyCode(-100);
+ pickBlockBindSwapped = true;
+ }
+ } else {
+ if (pickBlockBindSwapped) {
+ gameSettings.keyBindPickBlock.setKeyCode(pickBlockBind);
+ pickBlockBindSwapped = false;
+ }
+ }
+ }
+ }
+ } else {
+ if (pickBlockBindSwapped) {
+ gameSettings.keyBindPickBlock.setKeyCode(pickBlockBind);
+ pickBlockBindSwapped = false;
+ }
+ }
+
+ if (ToggleCommand.autoSkillTrackerToggled) {
+ if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) {
+ skillStopwatch.suspend();
}
}
- clickInOrderSlots = new Slot[36];
- lastChronomatronRound = 0;
- chronomatronPattern.clear();
- chronomatronMouseClicks = 0;
- experimentTableSlots = new ItemStack[54];
- }
+
+ clickInOrderSlots = new Slot[36];
+ lastChronomatronRound = 0;
+ chronomatronPattern.clear();
+ chronomatronMouseClicks = 0;
+ experimentTableSlots = new ItemStack[54];
+ terminalColorNeeded = null;
+ terminalNumberNeeded = new int[4];
+ }
@SubscribeEvent
public void onGuiRender(GuiScreenEvent.BackgroundDrawnEvent event) {
- if (!Utils.inSkyblock) return;
- if (event.gui instanceof GuiChest) {
- GuiChest inventory = (GuiChest) event.gui;
- Container containerChest = inventory.inventorySlots;
- if (containerChest instanceof ContainerChest) {
- Minecraft mc = Minecraft.getMinecraft();
- ScaledResolution sr = new ScaledResolution(mc);
- int guiLeft = (sr.getScaledWidth() - 176) / 2;
- int guiTop = (sr.getScaledHeight() - 222) / 2;
-
- List<Slot> invSlots = inventory.inventorySlots.inventorySlots;
- String displayName = ((ContainerChest) containerChest).getLowerChestInventory().getDisplayName().getUnformattedText().trim();
- int chestSize = inventory.inventorySlots.inventorySlots.size();
-
- if (ToggleCommand.petColoursToggled) {
- Pattern petPattern = Pattern.compile("\\[Lvl [\\d]{1,3}]");
- for (Slot slot : invSlots) {
- ItemStack item = slot.getStack();
- if (item == null) continue;
- String name = item.getDisplayName();
- if (petPattern.matcher(StringUtils.stripControlCodes(name)).find()) {
- if (name.endsWith("aHealer") || name.endsWith("aMage") || name.endsWith("aBerserk") || name.endsWith("aArcher") || name.endsWith("aTank")) continue;
- int colour;
- int petLevel = Integer.parseInt(item.getDisplayName().substring(item.getDisplayName().indexOf(" ") + 1, item.getDisplayName().indexOf("]")));
- if (petLevel == 100) {
- colour = 0xBFF2D249; // Gold
- } else if (petLevel >= 90) {
- colour = 0xBF9E794E; // Brown
- } else if (petLevel >= 80) {
- colour = 0xBF5C1F35; // idk weird magenta
- } else if (petLevel >= 70) {
- colour = 0xBFD64FC8; // Pink
- } else if (petLevel >= 60) {
- colour = 0xBF7E4FC6; // Purple
- } else if (petLevel >= 50) {
- colour = 0xBF008AD8; // Light Blue
- } else if (petLevel >= 40) {
- colour = 0xBF0EAC35; // Green
- } else if (petLevel >= 30) {
- colour = 0xBFFFC400; // Yellow
- } else if (petLevel >= 20) {
- colour = 0xBFEF5230; // Orange
- } else if (petLevel >= 10) {
- colour = 0xBFD62440; // Red
- } else {
- colour = 0xBF999999; // Gray
- }
- Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, colour);
- }
- }
- }
-
- if (ToggleCommand.startsWithToggled && Utils.inDungeons && displayName.startsWith("What starts with:")) {
- char letter = displayName.charAt(displayName.indexOf("'") + 1);
- for (Slot slot : invSlots) {
- ItemStack item = slot.getStack();
- if (item == null) continue;
- if (StringUtils.stripControlCodes(item.getDisplayName()).charAt(0) == letter) {
- Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0xBF40FF40);
- }
- }
- }
-
- if (ToggleCommand.selectAllToggled && Utils.inDungeons && displayName.startsWith("Select all the")) {
- String colour = displayName.split(" ")[3];
- for (Slot slot : invSlots) {
- ItemStack item = slot.getStack();
- if (item == null) continue;
- if (item.getDisplayName().toUpperCase().contains(colour)) {
- Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0xBF40FF40);
- }
- }
- }
-
- if (ToggleCommand.ultrasequencerToggled && displayName.startsWith("Ultrasequencer (")) {
- if (invSlots.size() > 48 && invSlots.get(49).getStack() != null) {
- if (invSlots.get(49).getStack().getDisplayName().startsWith("§7Timer: §a")) {
- lastUltraSequencerClicked = 0;
- for (Slot slot : clickInOrderSlots) {
- if (slot != null && slot.getStack() != null && StringUtils.stripControlCodes(slot.getStack().getDisplayName()).matches("\\d+")) {
- int number = Integer.parseInt(StringUtils.stripControlCodes(slot.getStack().getDisplayName()));
- if (number > lastUltraSequencerClicked) {
- lastUltraSequencerClicked = number;
- }
- }
- }
- if (clickInOrderSlots[lastUltraSequencerClicked] != null) {
- Slot nextSlot = clickInOrderSlots[lastUltraSequencerClicked];
- Utils.drawOnSlot(chestSize, nextSlot.xDisplayPosition, nextSlot.yDisplayPosition, 0xE540FF40);
- }
- }
- }
- }
-
- if (ToggleCommand.chronomatronToggled && displayName.startsWith("Chronomatron (")) {
- if (invSlots.size() > 48 && invSlots.get(49).getStack() != null) {
- if (invSlots.get(49).getStack().getDisplayName().startsWith("§7Timer: §a") && invSlots.get(4).getStack() != null) {
- int round = invSlots.get(4).getStack().stackSize;
- int timerSeconds = Integer.parseInt(StringUtils.stripControlCodes(invSlots.get(49).getStack().getDisplayName()).replaceAll("[^\\d]", ""));
- if (round != lastChronomatronRound && timerSeconds == round + 2) {
- lastChronomatronRound = round;
- for (int i = 10; i <= 43; i++) {
- ItemStack stack = invSlots.get(i).getStack();
- if (stack == null) continue;
- if (stack.getItem() == Item.getItemFromBlock(Blocks.stained_hardened_clay)) {
- chronomatronPattern.add(stack.getDisplayName());
- break;
- }
- }
- }
- if (chronomatronMouseClicks < chronomatronPattern.size()) {
- for (int i = 10; i <= 43; i++) {
- ItemStack glass = invSlots.get(i).getStack();
- if (glass == null) continue;
- Slot glassSlot = invSlots.get(i);
- if (glass.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks))) {
- Utils.drawOnSlot(chestSize, glassSlot.xDisplayPosition, glassSlot.yDisplayPosition, 0xE540FF40);
- }
- }
- }
- } else if (invSlots.get(49).getStack().getDisplayName().equals("§aRemember the pattern!")) {
- chronomatronMouseClicks = 0;
- }
- }
- new TextRenderer(mc, String.join("\n", chronomatronPattern), (int) (guiLeft * 0.8), 10, 1);
- }
-
- if (ToggleCommand.superpairsToggled && displayName.contains("Superpairs (")) {
- HashMap<String, HashSet<Integer>> matches = new HashMap<>();
- for(int i = 0; i<53; i++) {
- ItemStack itemStack = experimentTableSlots[i];
- if (itemStack == null) continue;
- Slot slot = invSlots.get(i);
- int x = guiLeft + slot.xDisplayPosition;
- int y = guiTop + slot.yDisplayPosition;
- if (chestSize != 90) y += (6 - (chestSize - 36) / 9) * 9;
-
- //Utils.renderItem(itemStack, x, y, -100);
-
- String itemName = itemStack.getDisplayName();
- String keyName = itemName + itemStack.getUnlocalizedName();
- matches.computeIfAbsent(keyName, k -> new HashSet<>());
- matches.get(keyName).add(i);
- }
-
- Color[] colors = {
- new Color(255, 0, 0, 100),
- new Color(0, 0, 255, 100),
- new Color(100, 179, 113, 100),
- new Color(255, 114, 255, 100),
- new Color(255, 199, 87, 100),
- new Color(119, 105, 198, 100),
- new Color(135, 199, 112, 100),
- new Color(240, 37, 240, 100),
- new Color(178, 132, 190, 100),
- new Color(63, 135, 163, 100),
- new Color(146, 74, 10, 100),
- new Color(255, 255, 255, 100),
- new Color(217, 252, 140, 100),
- new Color(255, 82, 82, 100)
- };
-
- Iterator<Color> colorIterator = Arrays.stream(colors).iterator();
-
- matches.forEach((itemName, slotSet)->{
- if (slotSet.size() < 2) return;
- ArrayList<Slot> slots = new ArrayList<>();
- slotSet.forEach(slotNum->slots.add(invSlots.get(slotNum)));
- Color color = colorIterator.next();
- slots.forEach(slot->{
- Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, color.getRGB());
- });
- });
- }
-
- }
- }
+ if (!Utils.inSkyblock) return;
+ if (event.gui instanceof GuiChest) {
+ GuiChest inventory = (GuiChest) event.gui;
+ Container containerChest = inventory.inventorySlots;
+ if (containerChest instanceof ContainerChest) {
+ Minecraft mc = Minecraft.getMinecraft();
+ ScaledResolution sr = new ScaledResolution(mc);
+ int guiLeft = (sr.getScaledWidth() - 176) / 2;
+ int guiTop = (sr.getScaledHeight() - 222) / 2;
+
+ List<Slot> invSlots = inventory.inventorySlots.inventorySlots;
+ String displayName = ((ContainerChest) containerChest).getLowerChestInventory().getDisplayName().getUnformattedText().trim();
+ int chestSize = inventory.inventorySlots.inventorySlots.size();
+
+ if (ToggleCommand.petColoursToggled) {
+ for (Slot slot : invSlots) {
+ ItemStack item = slot.getStack();
+ if (item == null) continue;
+ String name = item.getDisplayName();
+ if (petPattern.matcher(StringUtils.stripControlCodes(name)).find()) {
+ if (name.endsWith("aHealer") || name.endsWith("aMage") || name.endsWith("aBerserk") || name.endsWith("aArcher") || name.endsWith("aTank"))
+ continue;
+ int colour;
+ int petLevel = Integer.parseInt(item.getDisplayName().substring(item.getDisplayName().indexOf(" ") + 1, item.getDisplayName().indexOf("]")));
+ if (petLevel == 100) {
+ colour = PET_100;
+ } else if (petLevel >= 90) {
+ colour = PET_90_TO_99;
+ } else if (petLevel >= 80) {
+ colour = PET_80_TO_89;
+ } else if (petLevel >= 70) {
+ colour = PET_70_TO_79;
+ } else if (petLevel >= 60) {
+ colour = PET_60_TO_69;
+ } else if (petLevel >= 50) {
+ colour = PET_50_TO_59;
+ } else if (petLevel >= 40) {
+ colour = PET_40_TO_49;
+ } else if (petLevel >= 30) {
+ colour = PET_30_TO_39;
+ } else if (petLevel >= 20) {
+ colour = PET_20_TO_29;
+ } else if (petLevel >= 10) {
+ colour = PET_10_TO_19;
+ } else {
+ colour = PET_1_TO_9;
+ }
+ Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, colour + 0xBF000000);
+ }
+ }
+ }
+
+ if (ToggleCommand.startsWithToggled && Utils.inDungeons && displayName.startsWith("What starts with:")) {
+ char letter = displayName.charAt(displayName.indexOf("'") + 1);
+ for (Slot slot : invSlots) {
+ if (slot.inventory == mc.thePlayer.inventory) continue;
+ ItemStack item = slot.getStack();
+ if (item == null) continue;
+ if (item.isItemEnchanted()) continue;
+ if (StringUtils.stripControlCodes(item.getDisplayName()).charAt(0) == letter) {
+ Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0xBF40FF40);
+ }
+ }
+ }
+
+ if (ToggleCommand.selectAllToggled && Utils.inDungeons && displayName.startsWith("Select all the")) {
+ String colour;
+ List<String> colourParts = new ArrayList<>();
+ Matcher colourMatcher = startsWithTerminalPattern.matcher(displayName);
+ while (colourMatcher.find()) {
+ colourParts.add(colourMatcher.group());
+ }
+ colour = String.join(" ", colourParts);
+ terminalColorNeeded = colour;
+
+ for (Slot slot : invSlots) {
+ if (slot.inventory == mc.thePlayer.inventory) continue;
+ ItemStack item = slot.getStack();
+ if (item == null) continue;
+ if (item.isItemEnchanted()) continue;
+ String itemName = StringUtils.stripControlCodes(item.getDisplayName()).toUpperCase();
+ if (itemName.contains(terminalColorNeeded) ||
+ (terminalColorNeeded.equals("SILVER") && itemName.contains("LIGHT GRAY")) ||
+ (terminalColorNeeded.equals("WHITE") && (itemName.equals("WOOL") || itemName.equals("BONE MEAL"))) ||
+ (terminalColorNeeded.equals("BLACK") && itemName.equals("INK SACK")) ||
+ (terminalColorNeeded.equals("BLUE") && itemName.equals("LAPIS LAZULI")) ||
+ (terminalColorNeeded.equals("BROWN") && itemName.equals("COCOA BEANS"))) {
+ Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0xBF40FF40);
+ }
+ }
+ }
+
+ if (ToggleCommand.clickInOrderToggled && displayName.equals("Click in order!")) {
+ Slot slot = invSlots.get(terminalNumberNeeded[1]);
+ Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, CLICK_IN_ORDER_NEXT + 0xFF000000);
+ Slot nextSlot = invSlots.get(terminalNumberNeeded[3]);
+ if (nextSlot != slot && nextSlot.getSlotIndex() != 0) {
+ Utils.drawOnSlot(chestSize, nextSlot.xDisplayPosition, nextSlot.yDisplayPosition, CLICK_IN_ORDER_NEXT_TO_NEXT + 0xFF000000);
+ }
+ }
+
+ if (ToggleCommand.ultrasequencerToggled && displayName.startsWith("Ultrasequencer (")) {
+ if (invSlots.size() > 48 && invSlots.get(49).getStack() != null) {
+ if (invSlots.get(49).getStack().getDisplayName().startsWith("§7Timer: §a")) {
+ lastUltraSequencerClicked = 0;
+ for (Slot slot : clickInOrderSlots) {
+ if (slot != null && slot.getStack() != null && StringUtils.stripControlCodes(slot.getStack().getDisplayName()).matches("\\d+")) {
+ int number = Integer.parseInt(StringUtils.stripControlCodes(slot.getStack().getDisplayName()));
+ if (number > lastUltraSequencerClicked) {
+ lastUltraSequencerClicked = number;
+ }
+ }
+ }
+ if (clickInOrderSlots[lastUltraSequencerClicked] != null) {
+ Slot nextSlot = clickInOrderSlots[lastUltraSequencerClicked];
+ Utils.drawOnSlot(chestSize, nextSlot.xDisplayPosition, nextSlot.yDisplayPosition, ULTRASEQUENCER_NEXT + 0xE5000000);
+ }
+ if (lastUltraSequencerClicked + 1 < clickInOrderSlots.length) {
+ if (clickInOrderSlots[lastUltraSequencerClicked + 1] != null) {
+ Slot nextSlot = clickInOrderSlots[lastUltraSequencerClicked + 1];
+ Utils.drawOnSlot(chestSize, nextSlot.xDisplayPosition, nextSlot.yDisplayPosition, ULTRASEQUENCER_NEXT_TO_NEXT + 0xD7000000);
+ }
+ }
+ }
+ }
+ }
+
+ if (ToggleCommand.chronomatronToggled && displayName.startsWith("Chronomatron (")) {
+ if (invSlots.size() > 48 && invSlots.get(49).getStack() != null) {
+ if (invSlots.get(49).getStack().getDisplayName().startsWith("§7Timer: §a") && invSlots.get(4).getStack() != null) {
+ int round = invSlots.get(4).getStack().stackSize;
+ int timerSeconds = Integer.parseInt(StringUtils.stripControlCodes(invSlots.get(49).getStack().getDisplayName()).replaceAll("[^\\d]", ""));
+ if (round != lastChronomatronRound && timerSeconds == round + 2) {
+ lastChronomatronRound = round;
+ for (int i = 10; i <= 43; i++) {
+ ItemStack stack = invSlots.get(i).getStack();
+ if (stack == null) continue;
+ if (stack.getItem() == Item.getItemFromBlock(Blocks.stained_hardened_clay)) {
+ chronomatronPattern.add(stack.getDisplayName());
+ break;
+ }
+ }
+ }
+ if (chronomatronMouseClicks < chronomatronPattern.size()) {
+ for (int i = 10; i <= 43; i++) {
+ ItemStack glass = invSlots.get(i).getStack();
+ if (glass == null) continue;
+
+ Slot glassSlot = invSlots.get(i);
+
+ if (chronomatronMouseClicks + 1 < chronomatronPattern.size()) {
+ if (chronomatronPattern.get(chronomatronMouseClicks).equals(chronomatronPattern.get(chronomatronMouseClicks + 1))) {
+ if (glass.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks))) {
+ Utils.drawOnSlot(chestSize, glassSlot.xDisplayPosition, glassSlot.yDisplayPosition, CHRONOMATRON_NEXT + 0xE5000000);
+ }
+ } else if (glass.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks))) {
+ Utils.drawOnSlot(chestSize, glassSlot.xDisplayPosition, glassSlot.yDisplayPosition, CHRONOMATRON_NEXT + 0xE5000000);
+ } else if (glass.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks + 1))) {
+ Utils.drawOnSlot(chestSize, glassSlot.xDisplayPosition, glassSlot.yDisplayPosition, CHRONOMATRON_NEXT_TO_NEXT + 0XBE000000);
+ }
+ } else if (glass.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks))) {
+ Utils.drawOnSlot(chestSize, glassSlot.xDisplayPosition, glassSlot.yDisplayPosition, CHRONOMATRON_NEXT + 0xE5000000);
+ }
+ }
+ }
+ } else if (invSlots.get(49).getStack().getDisplayName().equals("§aRemember the pattern!")) {
+ chronomatronMouseClicks = 0;
+ }
+ }
+ new TextRenderer(mc, String.join("\n", chronomatronPattern), (int) (guiLeft * 0.8), 10, 1);
+ }
+
+ if (ToggleCommand.superpairsToggled && displayName.contains("Superpairs (")) {
+ HashMap<String, HashSet<Integer>> matches = new HashMap<>();
+ for (int i = 0; i < 53; i++) {
+ ItemStack itemStack = experimentTableSlots[i];
+ if (itemStack == null) continue;
+ Slot slot = invSlots.get(i);
+ int x = guiLeft + slot.xDisplayPosition;
+ int y = guiTop + slot.yDisplayPosition;
+ if (chestSize != 90) y += (6 - (chestSize - 36) / 9) * 9;
+
+ //Utils.renderItem(itemStack, x, y, -100);
+
+ String itemName = itemStack.getDisplayName();
+ String keyName = itemName + itemStack.getUnlocalizedName();
+ matches.computeIfAbsent(keyName, k -> new HashSet<>());
+ matches.get(keyName).add(i);
+ }
+
+ Color[] colors = {
+ new Color(255, 0, 0, 100),
+ new Color(0, 0, 255, 100),
+ new Color(100, 179, 113, 100),
+ new Color(255, 114, 255, 100),
+ new Color(255, 199, 87, 100),
+ new Color(119, 105, 198, 100),
+ new Color(135, 199, 112, 100),
+ new Color(240, 37, 240, 100),
+ new Color(178, 132, 190, 100),
+ new Color(63, 135, 163, 100),
+ new Color(146, 74, 10, 100),
+ new Color(255, 255, 255, 100),
+ new Color(217, 252, 140, 100),
+ new Color(255, 82, 82, 100)
+ };
+
+ Iterator<Color> colorIterator = Arrays.stream(colors).iterator();
+
+ matches.forEach((itemName, slotSet) -> {
+ if (slotSet.size() < 2) return;
+ ArrayList<Slot> slots = new ArrayList<>();
+ slotSet.forEach(slotNum -> slots.add(invSlots.get(slotNum)));
+ Color color = colorIterator.next();
+ slots.forEach(slot -> {
+ Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, color.getRGB());
+ });
+ });
+ }
+
+ }
+ }
}
-
+
@SubscribeEvent
public void onServerConnect(ClientConnectedToServerEvent event) {
event.manager.channel().pipeline().addBefore("packet_handler", "danker_packet_handler", new PacketHandler());
System.out.println("Added packet handler to channel pipeline.");
}
-
+
public void increaseSeaCreatures() {
- if (LootCommand.empSCs != -1) {
- LootCommand.empSCs++;
- }
- if (LootCommand.empSCsSession != -1) {
- LootCommand.empSCsSession++;
- }
- // Only increment Yetis when in Jerry's Workshop
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- for (String s : scoreboard) {
- String sCleaned = ScoreboardHandler.cleanSB(s);
- if (sCleaned.contains("Jerry's Workshop") || sCleaned.contains("Jerry Pond")) {
- if (LootCommand.yetiSCs != -1) {
- LootCommand.yetiSCs++;
- }
- if (LootCommand.yetiSCsSession != -1) {
- LootCommand.yetiSCsSession++;
- }
- }
- }
-
- LootCommand.seaCreatures++;
- LootCommand.fishingMilestone++;
- LootCommand.seaCreaturesSession++;
- LootCommand.fishingMilestoneSession++;
- ConfigHandler.writeIntConfig("fishing", "seaCreature", LootCommand.seaCreatures);
- ConfigHandler.writeIntConfig("fishing", "milestone", LootCommand.fishingMilestone);
- ConfigHandler.writeIntConfig("fishing", "empSC", LootCommand.empSCs);
- ConfigHandler.writeIntConfig("fishing", "yetiSC", LootCommand.yetiSCs);
-
+ if (LootCommand.empSCs != -1) {
+ LootCommand.empSCs++;
+ }
+ if (LootCommand.empSCsSession != -1) {
+ LootCommand.empSCsSession++;
+ }
+ // Only increment Yetis when in Jerry's Workshop
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+ if (sCleaned.contains("Jerry's Workshop") || sCleaned.contains("Jerry Pond")) {
+ if (LootCommand.yetiSCs != -1) {
+ LootCommand.yetiSCs++;
+ }
+ if (LootCommand.yetiSCsSession != -1) {
+ LootCommand.yetiSCsSession++;
+ }
+ }
+ }
+
+ LootCommand.seaCreatures++;
+ LootCommand.fishingMilestone++;
+ LootCommand.seaCreaturesSession++;
+ LootCommand.fishingMilestoneSession++;
+ ConfigHandler.writeIntConfig("fishing", "seaCreature", LootCommand.seaCreatures);
+ ConfigHandler.writeIntConfig("fishing", "milestone", LootCommand.fishingMilestone);
+ ConfigHandler.writeIntConfig("fishing", "empSC", LootCommand.empSCs);
+ ConfigHandler.writeIntConfig("fishing", "yetiSC", LootCommand.yetiSCs);
+
}
-
+
}
diff --git a/src/main/java/me/Danker/commands/DHelpCommand.java b/src/main/java/me/Danker/commands/DHelpCommand.java
index ee5958c..bcaf8b0 100644
--- a/src/main/java/me/Danker/commands/DHelpCommand.java
+++ b/src/main/java/me/Danker/commands/DHelpCommand.java
@@ -34,14 +34,14 @@ public class DHelpCommand extends CommandBase {
EnumChatFormatting.GOLD + " Commands, " + EnumChatFormatting.GREEN + " Keybinds.\n" +
EnumChatFormatting.GOLD + " /dhelp" + EnumChatFormatting.AQUA + " - Returns this message.\n" +
EnumChatFormatting.GOLD + " /dsm" + EnumChatFormatting.AQUA + " - Opens the GUI for Danker's Skyblock Mod.\n" +
- EnumChatFormatting.GOLD + " /toggle <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalerts/aotd/lividdagger/sceptremessages/midasstaffmessages/implosionmessages/healmessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/outlinetext/caketimer/lowhealthnotify/lividsolver/threemanpuzzle/oruopuzzle/blazepuzzle/creeperpuzzle/waterpuzzle/tictactoepuzzle/startswithterminal/selectallterminal/itemframeonsealanterns/ultrasequencer/chronomatron/superpairs/list>" + EnumChatFormatting.AQUA + " - Toggles features. /toggle list returns values of every toggle.\n" +
+ EnumChatFormatting.GOLD + " /toggle <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalerts/aotd/lividdagger/flowerweapons/sceptremessages/midasstaffmessages/implosionmessages/healmessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/outlinetext/caketimer/lowhealthnotify/lividsolver/stopsalvagestarred/notifyslayerslain/autoskilltracker/necronnotifications/bonzotimer/threemanpuzzle/oruopuzzle/blazepuzzle/creeperpuzzle/waterpuzzle/tictactoepuzzle/watchermessage/startswithterminal/selectallterminal/clickinorderterminal/blockwrongterminalclicks/itemframeonsealanterns/ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/list>" + EnumChatFormatting.AQUA + " - Toggles features. /toggle list returns values of every toggle.\n" +
EnumChatFormatting.GOLD + " /setkey <key>" + EnumChatFormatting.AQUA + " - Sets API key.\n" +
EnumChatFormatting.GOLD + " /getkey" + EnumChatFormatting.AQUA + " - Returns key set with /setkey and copies it to your clipboard.\n" +
EnumChatFormatting.GOLD + " /loot <zombie/spider/wolf/fishing/catacombs/mythological/> [winter/festival/spooky/f(1-7)/session]" + EnumChatFormatting.AQUA + " - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead.\n" +
EnumChatFormatting.GOLD + " /display <zombie/spider/wolf/fishing/catacombs/mythological/auto/off> [winter/festival/spooky/f(1-7)/session]" + EnumChatFormatting.AQUA + " - 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.\n" +
EnumChatFormatting.GOLD + " /resetloot <zombie/spider/wolf/fishing/catacombs/mythological/confirm/cancel>" + EnumChatFormatting.AQUA + " - Resets loot for trackers. /resetloot confirm confirms the reset.\n" +
- EnumChatFormatting.GOLD + " /move <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer> <x> <y>" + EnumChatFormatting.AQUA + " - Moves text display to specified X and Y coordinates.\n" +
- EnumChatFormatting.GOLD + " /scale <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer> <scale (0.1 - 10)>" + EnumChatFormatting.AQUA + " - Scales text display to a specified multipler between 0.1x and 10x.\n" +
+ EnumChatFormatting.GOLD + " /move <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/bonzotimer> <x> <y>" + EnumChatFormatting.AQUA + " - Moves text display to specified X and Y coordinates.\n" +
+ EnumChatFormatting.GOLD + " /scale <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/bonzotimer> <scale (0.1 - 10)>" + EnumChatFormatting.AQUA + " - Scales text display to a specified multipler between 0.1x and 10x.\n" +
EnumChatFormatting.GOLD + " /slayer [player]" + EnumChatFormatting.AQUA + " - Uses API to get slayer xp of a person. If no name is provided, it checks yours.\n" +
EnumChatFormatting.GOLD + " /skills [player]" + EnumChatFormatting.AQUA + " - Uses API to get skill levels of a person. If no name is provided, it checks yours.\n" +
EnumChatFormatting.GOLD + " /lobbyskills" + EnumChatFormatting.AQUA + " - Uses API to find the average skills of the lobby, as well the three players with the highest skill average.\n" +
diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java
index 18230e6..a6b200f 100644
--- a/src/main/java/me/Danker/commands/DankerGuiCommand.java
+++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java
@@ -1,9 +1,16 @@
package me.Danker.commands;
import me.Danker.DankersSkyblockMod;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.resources.ResourcePackRepository;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.StringUtils;
+
+import java.awt.*;
+import java.awt.datatransfer.StringSelection;
public class DankerGuiCommand extends CommandBase {
@@ -24,6 +31,84 @@ public class DankerGuiCommand extends CommandBase {
@Override
public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
+ if (arg1.length > 0 && arg1[0].equalsIgnoreCase("debug")) {
+ StringBuilder debug = new StringBuilder();
+ debug.append("```md\n");
+ debug.append("# Toggles\n");
+ debug.append("[gparty][").append(ToggleCommand.gpartyToggled).append("]\n");
+ debug.append("[coords][").append(ToggleCommand.coordsToggled).append("]\n");
+ debug.append("[golden][").append(ToggleCommand.goldenToggled).append("]\n");
+ debug.append("[slayercount][").append(ToggleCommand.slayerCountTotal).append("]\n");
+ debug.append("[rngesusalerts][").append(ToggleCommand.rngesusAlerts).append("]\n");
+ debug.append("[splitfishing][").append(ToggleCommand.splitFishing).append("]\n");
+ debug.append("[chatmaddox][").append(ToggleCommand.chatMaddoxToggled).append("]\n");
+ debug.append("[spiritbearalerts][").append(ToggleCommand.spiritBearAlerts).append("]\n");
+ debug.append("[aotd][").append(ToggleCommand.aotdToggled).append("]\n");
+ debug.append("[lividdagger][").append(ToggleCommand.lividDaggerToggled).append("]\n");
+ debug.append("[flowerweapons][").append(ToggleCommand.flowerWeaponsToggled).append("]\n");
+ debug.append("[sceptremessages][").append(ToggleCommand.sceptreMessages).append("]\n");
+ debug.append("[petcolors][").append(ToggleCommand.petColoursToggled).append("]\n");
+ debug.append("[dungeontimer][").append(ToggleCommand.dungeonTimerToggled).append("]\n");
+ debug.append("[golemalerts][").append(ToggleCommand.golemAlertToggled).append("]\n");
+ debug.append("[expertiselore][").append(ToggleCommand.expertiseLoreToggled).append("]\n");
+ debug.append("[skill50display][").append(ToggleCommand.skill50DisplayToggled).append("]\n");
+ debug.append("[outlinetext][").append(ToggleCommand.outlineTextToggled).append("]\n");
+ debug.append("[midasstaffmessages][").append(ToggleCommand.midasStaffMessages).append("]\n");
+ debug.append("[implosionmessages][").append(ToggleCommand.implosionMessages).append("]\n");
+ debug.append("[healmessages][").append(ToggleCommand.healMessages).append("]\n");
+ debug.append("[caketimer][").append(ToggleCommand.cakeTimerToggled).append("]\n");
+ debug.append("[lowhealthnotify][").append(ToggleCommand.lowHealthNotifyToggled).append("]\n");
+ debug.append("[lividsolver][").append(ToggleCommand.lividSolverToggled).append("]\n");
+ debug.append("[stopsalvagestarred][").append(ToggleCommand.stopSalvageStarredToggled).append("]\n");
+ debug.append("[notifyslayerslain][").append(ToggleCommand.notifySlayerSlainToggled).append("]\n");
+ debug.append("[necronnotifications][").append(ToggleCommand.necronNotificationsToggled).append("]\n");
+ debug.append("[bonzotimer][").append(ToggleCommand.bonzoTimerToggled).append("]\n");
+ debug.append("[autoskilltracker][").append(ToggleCommand.autoSkillTrackerToggled).append("]\n");
+ debug.append("[threemanpuzzle][").append(ToggleCommand.threeManToggled).append("]\n");
+ debug.append("[oruopuzzle][").append(ToggleCommand.oruoToggled).append("]\n");
+ debug.append("[blazepuzzle][").append(ToggleCommand.blazeToggled).append("]\n");
+ debug.append("[creeperpuzzle][").append(ToggleCommand.creeperToggled).append("]\n");
+ debug.append("[waterpuzzle][").append(ToggleCommand.waterToggled).append("]\n");
+ debug.append("[tictactoepuzzle][").append(ToggleCommand.ticTacToeToggled).append("]\n");
+ debug.append("[watchermessage][").append(ToggleCommand.watcherReadyToggled).append("]\n");
+ debug.append("[startswithterminal][").append(ToggleCommand.startsWithToggled).append("]\n");
+ debug.append("[selectallterminal][").append(ToggleCommand.selectAllToggled).append("]\n");
+ debug.append("[clickinorderterminal][").append(ToggleCommand.clickInOrderToggled).append("]\n");
+ debug.append("[blockwrongterminalclicks][").append(ToggleCommand.blockWrongTerminalClicksToggled).append("]\n");
+ debug.append("[itemframeonsealanterns][").append(ToggleCommand.itemFrameOnSeaLanternsToggled).append("]\n");
+ debug.append("[ultrasequencer][").append(ToggleCommand.ultrasequencerToggled).append("]\n");
+ debug.append("[chronomatron][").append(ToggleCommand.chronomatronToggled).append("]\n");
+ debug.append("[superpairs][").append(ToggleCommand.superpairsToggled).append("]\n");
+ debug.append("[hidetooltipsinaddons][").append(ToggleCommand.hideTooltipsInExperimentAddonsToggled).append("]\n");
+ debug.append("[pickblock][").append(ToggleCommand.swapToPickBlockToggled).append("]\n");
+ debug.append("# Locations\n");
+ debug.append("[coords][").append(MoveCommand.coordsXY[0]).append(", ").append(MoveCommand.coordsXY[1]).append("]\n");
+ debug.append("[display][").append(MoveCommand.displayXY[0]).append(", ").append(MoveCommand.displayXY[1]).append("]\n");
+ debug.append("[dungeontimer][").append(MoveCommand.dungeonTimerXY[0]).append(", ").append(MoveCommand.dungeonTimerXY[1]).append("]\n");
+ debug.append("[skill50][").append(MoveCommand.skill50XY[0]).append(", ").append(MoveCommand.skill50XY[1]).append("]\n");
+ debug.append("[lividhp][").append(MoveCommand.lividHpXY[0]).append(", ").append(MoveCommand.lividHpXY[1]).append("]\n");
+ debug.append("[caketimer][").append(MoveCommand.cakeTimerXY[0]).append(", ").append(MoveCommand.cakeTimerXY[1]).append("]\n");
+ debug.append("[skilltracker][").append(MoveCommand.skillTrackerXY[0]).append(", ").append(MoveCommand.skillTrackerXY[1]).append("]\n");
+ debug.append("[wateranswer][").append(MoveCommand.waterAnswerXY[0]).append(", ").append(MoveCommand.waterAnswerXY[1]).append("]\n");
+ debug.append("# Other Settings\n");
+ debug.append("[Current Display][").append(DisplayCommand.display).append("]\n");
+ debug.append("[Auto Display][").append(DisplayCommand.auto).append("]\n");
+ debug.append("[Skill Tracker Visible][").append(DankersSkyblockMod.showSkillTracker).append("]\n");
+ debug.append("# Resource Packs\n");
+ if (Minecraft.getMinecraft().getResourcePackRepository().getRepositoryEntries().size() == 0) {
+ debug.append("<None>\n");
+ } else {
+ for (ResourcePackRepository.Entry resource : Minecraft.getMinecraft().getResourcePackRepository().getRepositoryEntries()) {
+ debug.append("< ").append(StringUtils.stripControlCodes(resource.getResourcePackName())).append(" >\n");
+ }
+ }
+ debug.append("```");
+ StringSelection clipboard = new StringSelection(debug.toString());
+ Toolkit.getDefaultToolkit().getSystemClipboard().setContents(clipboard, clipboard);
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Debug stats copied to clipboard."));
+ return;
+ }
+
DankersSkyblockMod.guiToOpen = "dankergui1";
}
diff --git a/src/main/java/me/Danker/commands/DungeonsCommand.java b/src/main/java/me/Danker/commands/DungeonsCommand.java
index bdc1403..f9ad93e 100644
--- a/src/main/java/me/Danker/commands/DungeonsCommand.java
+++ b/src/main/java/me/Danker/commands/DungeonsCommand.java
@@ -9,6 +9,7 @@ import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.event.HoverEvent;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
@@ -77,6 +78,14 @@ public class DungeonsCommand extends CommandBase {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
return;
}
+
+ String playerURL = "https://api.hypixel.net/player?uuid=" + uuid + "&key=" + key;
+ System.out.println("Fetching player data...");
+ JsonObject playerResponse = APIHandler.getResponse(playerURL);
+ if(!playerResponse.get("success").getAsBoolean()){
+ String reason = playerResponse.get("cause").getAsString();
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "This player has not played on Hypixel."));
+ }
System.out.println("Fetching dungeon stats...");
JsonObject dungeonsObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject().get("dungeons").getAsJsonObject();
@@ -84,25 +93,56 @@ public class DungeonsCommand extends CommandBase {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "This player has not played dungeons."));
return;
}
-
- double catacombs = Utils.xpToDungeonsLevel(dungeonsObject.get("dungeon_types").getAsJsonObject().get("catacombs").getAsJsonObject().get("experience").getAsDouble());
+
+ JsonObject catacombsObject = dungeonsObject.get("dungeon_types").getAsJsonObject().get("catacombs").getAsJsonObject();
+ double catacombs = Utils.xpToDungeonsLevel(catacombsObject.get("experience").getAsDouble());
double healer = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("healer").getAsJsonObject().get("experience").getAsDouble());
double mage = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("mage").getAsJsonObject().get("experience").getAsDouble());
double berserk = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("berserk").getAsJsonObject().get("experience").getAsDouble());
double archer = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("archer").getAsJsonObject().get("experience").getAsDouble());
double tank = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("tank").getAsJsonObject().get("experience").getAsDouble());
String selectedClass = Utils.capitalizeString(dungeonsObject.get("selected_dungeon_class").getAsString());
-
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "" + EnumChatFormatting.BOLD + "-------------------\n" +
- EnumChatFormatting.RED + " Catacombs Level: " + catacombs + "\n" +
- EnumChatFormatting.GOLD + " Selected Class: " + selectedClass + "\n\n" +
- EnumChatFormatting.YELLOW + " Healer Level: " + healer + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + " Mage Level: " + mage + "\n" +
- EnumChatFormatting.RED + " Berserk Level: " + berserk + "\n" +
- EnumChatFormatting.GREEN + " Archer Level: " + archer + "\n" +
- EnumChatFormatting.BLUE + " Tank Level: " + tank + "\n" +
- DankersSkyblockMod.DELIMITER_COLOUR + " " + EnumChatFormatting.BOLD + "-------------------"));
+ int secrets = playerResponse.get("player").getAsJsonObject().get("achievements").getAsJsonObject().get("skyblock_treasure_hunter").getAsInt();
+
+ int highestFloor = catacombsObject.get("highest_tier_completed").getAsInt();
+ JsonObject completionObj = catacombsObject.get("tier_completions").getAsJsonObject();
+
+ String delimiter = DankersSkyblockMod.DELIMITER_COLOUR + "" + EnumChatFormatting.BOLD + "-------------------";
+
+ ChatComponentText classLevels = new ChatComponentText(
+ EnumChatFormatting.GOLD + " Selected Class: " + selectedClass + "\n\n" +
+ EnumChatFormatting.RED + " Catacombs Level: " + catacombs + "\n" +
+ EnumChatFormatting.YELLOW + " Healer Level: " + healer + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Mage Level: " + mage + "\n" +
+ EnumChatFormatting.RED + " Berserk Level: " + berserk + "\n" +
+ EnumChatFormatting.GREEN + " Archer Level: " + archer + "\n" +
+ EnumChatFormatting.BLUE + " Tank Level: " + tank + "\n\n" +
+ EnumChatFormatting.WHITE + " Secrets Found: " + secrets + "\n\n");
+
+ StringBuilder completionsHoverString = new StringBuilder();
+
+ for (int i = 0; i <= highestFloor; i++) {
+ completionsHoverString
+ .append(EnumChatFormatting.GOLD)
+ .append(i == 0 ? "Entrance: " : "Floor " + i + ": ")
+ .append(EnumChatFormatting.RESET)
+ .append(completionObj.get(String.valueOf(i)).getAsInt())
+ .append(i < highestFloor ? "\n": "");
+ }
+
+ ChatComponentText completions = new ChatComponentText(EnumChatFormatting.GOLD + " Highest Floor Completed: " + highestFloor);
+
+ completions.setChatStyle(completions.getChatStyle().setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(completionsHoverString.toString()))));
+
+
+ player.addChatMessage(
+ new ChatComponentText(delimiter)
+ .appendText("\n")
+ .appendSibling(classLevels)
+ .appendSibling(completions)
+ .appendText("\n")
+ .appendSibling(new ChatComponentText(delimiter))
+ );
}).start();
}
-
}
diff --git a/src/main/java/me/Danker/commands/FairySoulsCommand.java b/src/main/java/me/Danker/commands/FairySoulsCommand.java
new file mode 100644
index 0000000..77a7586
--- /dev/null
+++ b/src/main/java/me/Danker/commands/FairySoulsCommand.java
@@ -0,0 +1,92 @@
+package me.Danker.commands;
+
+import com.google.gson.JsonObject;
+import me.Danker.DankersSkyblockMod;
+import me.Danker.handlers.APIHandler;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.command.CommandBase;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.ChatComponentText;
+
+import java.util.List;
+
+public class FairySoulsCommand extends CommandBase {
+ @Override
+ public String getCommandName() {
+ return "fairysouls";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender sender) {
+ return "/" + getCommandName() + "[name]";
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
+ if (args.length == 1) {
+ return Utils.getMatchingPlayers(args[0]);
+ }
+ return null;
+ }
+
+ @Override
+ public void processCommand(ICommandSender sender, String[] args) throws CommandException {
+ EntityPlayer player = ((EntityPlayer) sender);
+ // MULTI THREAD DRIFTING
+ new Thread(() -> {
+
+ // Check key
+ String key = ConfigHandler.getString("api", "APIKey");
+ if(key.equals("")) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ }
+
+ // Get UUID for Hypixel API requests
+ String username;
+ String uuid;
+ if(args.length == 0) {
+ username = player.getName();
+ uuid = APIHandler.getUUID(username);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking fairy souls of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ } else {
+ username = args[0];
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking fairy souls of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ uuid = APIHandler.getUUID(username);
+ }
+
+ // Find fairy souls of latest profile
+ String latestProfile = APIHandler.getLatestProfileID(uuid, key);
+ if (latestProfile == null) return;
+
+ String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
+ System.out.println("Fetching profile...");
+
+ JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ if (!profileResponse.get("success").getAsBoolean()) {
+ String reason = profileResponse.get("cause").getAsString();
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
+ return;
+ }
+
+ // Extracting the fairy souls from the json data
+ System.out.println("Fetching fairy souls");
+ JsonObject userObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject();
+
+ int fairy_souls = userObject.get("fairy_souls_collected").getAsInt();
+ System.out.println(fairy_souls);
+
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "The player " + username + " has " + DankersSkyblockMod.VALUE_COLOUR + fairy_souls + DankersSkyblockMod.MAIN_COLOUR + "/220" + " collected"));
+
+ }).start();
+
+ }
+}
diff --git a/src/main/java/me/Danker/commands/LobbySkillsCommand.java b/src/main/java/me/Danker/commands/LobbySkillsCommand.java
index e5bf98c..61ceea7 100644
--- a/src/main/java/me/Danker/commands/LobbySkillsCommand.java
+++ b/src/main/java/me/Danker/commands/LobbySkillsCommand.java
@@ -100,7 +100,7 @@ public class LobbySkillsCommand extends CommandBase {
farmingLevel = (double) Math.round(farmingLevel * 100) / 100;
}
if (latestProfile.has("experience_skill_mining")) {
- miningLevel = Utils.xpToSkillLevel(latestProfile.get("experience_skill_mining").getAsDouble(), 50);
+ miningLevel = Utils.xpToSkillLevel(latestProfile.get("experience_skill_mining").getAsDouble(), 60);
miningLevel = (double) Math.round(miningLevel * 100) / 100;
}
if (latestProfile.has("experience_skill_combat")) {
@@ -143,7 +143,7 @@ public class LobbySkillsCommand extends CommandBase {
farmingLevel = achievementObject.get("skyblock_harvester").getAsInt();
}
if (achievementObject.has("skyblock_excavator")) {
- miningLevel = Math.min(achievementObject.get("skyblock_excavator").getAsInt(), 50);
+ miningLevel = achievementObject.get("skyblock_excavator").getAsInt();
}
if (achievementObject.has("skyblock_combat")) {
combatLevel = Math.min(achievementObject.get("skyblock_combat").getAsInt(), 50);
diff --git a/src/main/java/me/Danker/commands/MoveCommand.java b/src/main/java/me/Danker/commands/MoveCommand.java
index e9bfe61..55ad695 100644
--- a/src/main/java/me/Danker/commands/MoveCommand.java
+++ b/src/main/java/me/Danker/commands/MoveCommand.java
@@ -21,7 +21,8 @@ public class MoveCommand extends CommandBase {
public static int[] cakeTimerXY = {0, 0};
public static int[] skillTrackerXY = {0, 0};
public static int[] waterAnswerXY = {0, 0};
-
+ public static int[] bonzoTimerXY = {0, 0};
+
@Override
public String getCommandName() {
return "move";
@@ -29,7 +30,7 @@ public class MoveCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer> <x> <y>";
+ return "/" + getCommandName() + " <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/bonzotimer> <x> <y>";
}
@Override
@@ -40,7 +41,7 @@ public class MoveCommand extends CommandBase {
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
if (args.length == 1) {
- return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", "skilltracker", "wateranswer");
+ return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", "skilltracker", "wateranswer", "bonzotimer");
}
return null;
}
@@ -111,6 +112,13 @@ public class MoveCommand extends CommandBase {
ConfigHandler.writeIntConfig("locations", "waterAnswerY", waterAnswerXY[1]);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Water solver answer has been moved to " + DankersSkyblockMod.SECONDARY_COLOUR + arg1[1] + ", " + arg1[2]));
break;
+ case "bonzotimer":
+ bonzoTimerXY[0] = Integer.parseInt(arg1[1]);
+ bonzoTimerXY[1] = Integer.parseInt(arg1[2]);
+ ConfigHandler.writeIntConfig("locations", "bonzoTimerX", bonzoTimerXY[0]);
+ ConfigHandler.writeIntConfig("locations", "bonzoTimerX", bonzoTimerXY[1]);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Bonzo's Mask timer has been moved to " + DankersSkyblockMod.SECONDARY_COLOUR + arg1[1] + ", " + arg1[2]));
+ break;
default:
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
}
diff --git a/src/main/java/me/Danker/commands/PetsCommand.java b/src/main/java/me/Danker/commands/PetsCommand.java
index 7b1b52f..a7824e4 100644
--- a/src/main/java/me/Danker/commands/PetsCommand.java
+++ b/src/main/java/me/Danker/commands/PetsCommand.java
@@ -16,20 +16,21 @@ import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
public class PetsCommand extends CommandBase {
static int petXpToLevel(double xp, String rarity) {
int[] xpPerLevel = {100, 110, 120, 130, 145, 160, 175, 190, 210, 230, 250, 275, 300, 330, 360, 400, 440, 490, 540, 600, 660, 730,
- 800, 880, 960, 1050, 1150, 1260, 1380, 1510, 1650, 1800, 1960, 2130, 2310, 2500, 2700, 2920, 3160, 3420, 3700,
- 4000, 4350, 4750, 5200, 5700, 6300, 7000, 7800, 8700, 9700, 10800, 12000, 13300, 14700, 16200, 17800, 19500,
- 21300, 23200, 25200, 27400, 29800, 32400, 35200, 38200, 41400, 44800, 48400, 52200, 56200, 60400, 64800, 69400,
- 74200, 79200, 84700, 90700, 97200, 104200, 111700, 119700, 128200, 137200, 146700, 156700, 167700, 179700, 192700,
- 206700, 221700, 237700, 254700, 272700, 291700, 311700, 333700, 357700, 383700, 411700, 441700, 476700, 516700,
- 561700, 611700, 666700, 726700, 791700, 861700, 936700, 1016700, 1101700, 1191700, 1286700, 1386700, 1496700,
- 1616700, 1746700, 1886700};
-
+ 800, 880, 960, 1050, 1150, 1260, 1380, 1510, 1650, 1800, 1960, 2130, 2310, 2500, 2700, 2920, 3160, 3420, 3700,
+ 4000, 4350, 4750, 5200, 5700, 6300, 7000, 7800, 8700, 9700, 10800, 12000, 13300, 14700, 16200, 17800, 19500,
+ 21300, 23200, 25200, 27400, 29800, 32400, 35200, 38200, 41400, 44800, 48400, 52200, 56200, 60400, 64800, 69400,
+ 74200, 79200, 84700, 90700, 97200, 104200, 111700, 119700, 128200, 137200, 146700, 156700, 167700, 179700, 192700,
+ 206700, 221700, 237700, 254700, 272700, 291700, 311700, 333700, 357700, 383700, 411700, 441700, 476700, 516700,
+ 561700, 611700, 666700, 726700, 791700, 861700, 936700, 1016700, 1101700, 1191700, 1286700, 1386700, 1496700,
+ 1616700, 1746700, 1886700};
+
int levelOffset = 0;
switch (rarity) {
case "UNCOMMON":
@@ -44,8 +45,11 @@ public class PetsCommand extends CommandBase {
case "LEGENDARY":
levelOffset = 20;
break;
+ case "MYTHIC":
+ levelOffset = 20;
+ break;
}
-
+
for (int i = levelOffset, xpAdded = 0; i < levelOffset + 99; i++) {
xpAdded += xpPerLevel[i];
if (xp < xpAdded) {
@@ -54,7 +58,67 @@ public class PetsCommand extends CommandBase {
}
return 100;
}
-
+
+ enum Rarity {
+ COMMON,
+ UNCOMMON,
+ RARE,
+ EPIC,
+ LEGENDARY,
+ MYTHIC;
+
+ public Rarity nextRarity() {
+ if (this.ordinal() == Rarity.values().length) return this;
+ return Rarity.values()[this.ordinal() + 1];
+ }
+
+ public EnumChatFormatting getChatColor() {
+ if (this == Rarity.COMMON) return EnumChatFormatting.WHITE;
+ if (this == Rarity.UNCOMMON) return EnumChatFormatting.GREEN;
+ if (this == Rarity.RARE) return EnumChatFormatting.BLUE;
+ if (this == Rarity.EPIC) return EnumChatFormatting.DARK_PURPLE;
+ if (this == Rarity.LEGENDARY) return EnumChatFormatting.GOLD;
+ if (this == Rarity.MYTHIC) return EnumChatFormatting.LIGHT_PURPLE;
+ return null;
+ }
+ }
+
+ class Pet {
+
+ public Rarity rarity;
+ public double xp;
+ public boolean active;
+ public boolean rarityBoosted = false;
+ public String name;
+
+ Pet(JsonObject pet) {
+ Rarity rarity = Rarity.valueOf(pet.get("tier").getAsString());
+ if (!pet.get("heldItem").isJsonNull()) {
+ String petItemID = pet.get("heldItem").getAsString();
+ switch (petItemID) {
+ case "PET_ITEM_VAMPIRE_FANG":
+ case "PET_ITEM_TOY_JERRY":
+ case "PET_ITEM_TIER_BOOST":
+ rarityBoosted = true;
+ rarity = rarity.nextRarity();
+ }
+ }
+ this.active = pet.get("active").getAsBoolean();
+ this.name = Utils.capitalizeString(pet.get("type").getAsString());;
+ this.rarity = rarity;
+ this.xp = pet.get("exp").getAsDouble();
+ }
+
+ public String getStringToAdd() {
+ int level = petXpToLevel(this.xp, this.rarity.name());
+
+ String messageToAdd = rarity.getChatColor() + " " + (this.active ? EnumChatFormatting.BOLD + ">>> " : "") + Utils.capitalizeString(this.rarity.name()) + (this.rarityBoosted ? " ⇑" : "") + " " + this.name + " (" + level + ")" + (this.active ? " <<<" : "");
+
+ return messageToAdd + "\n";
+ }
+
+ }
+
@Override
public String getCommandName() {
return "petsof";
@@ -64,12 +128,12 @@ public class PetsCommand extends CommandBase {
public String getCommandUsage(ICommandSender arg0) {
return "/" + getCommandName() + " [name]";
}
-
+
@Override
public int getRequiredPermissionLevel() {
return 0;
}
-
+
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
if (args.length == 1) {
@@ -83,13 +147,13 @@ public class PetsCommand extends CommandBase {
// MULTI THREAD DRIFTING
new Thread(() -> {
EntityPlayer player = (EntityPlayer) arg0;
-
+
// Check key
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
}
-
+
// Get UUID for Hypixel API requests
String username;
String uuid;
@@ -102,11 +166,11 @@ public class PetsCommand extends CommandBase {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking pets of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
uuid = APIHandler.getUUID(username);
}
-
+
// Find stats of latest profile
String latestProfile = APIHandler.getLatestProfileID(uuid, key);
if (latestProfile == null) return;
-
+
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
JsonObject profileResponse = APIHandler.getResponse(profileURL);
@@ -115,137 +179,41 @@ public class PetsCommand extends CommandBase {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
return;
}
-
+
System.out.println("Fetching pets...");
JsonArray petsArray = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject().get("pets").getAsJsonArray();
if (petsArray.size() == 0) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + username + " has no pets."));
return;
}
-
+
System.out.println("Looping through pets...");
// Push each pet into list
- List<JsonElement> sortedPets = new ArrayList<>();
+ List<Pet> pets = new ArrayList<>();
for (JsonElement petElement : petsArray) {
- sortedPets.add(petElement);
+ pets.add(new Pet(petElement.getAsJsonObject()));
}
-
- // Sort pets by exp
- sortedPets.sort((pet1, pet2) -> {
- double petXp1 = pet1.getAsJsonObject().get("exp").getAsDouble();
- double petXp2 = pet2.getAsJsonObject().get("exp").getAsDouble();
- return -Double.compare(petXp1, petXp2);
+
+ // Sort pets by exp and rarity
+ pets.sort((pet1, pet2) -> {
+ int rarity = pet1.rarity.compareTo(pet2.rarity);
+ int xp = Double.compare(pet1.xp, pet2.xp);
+ if (rarity != 0) return -rarity;
+ return -xp;
});
-
- // Sort pets into rarities
- List<JsonObject> commonPets = new ArrayList<>();
- List<JsonObject> uncommonPets = new ArrayList<>();
- List<JsonObject> rarePets = new ArrayList<>();
- List<JsonObject> epicPets = new ArrayList<>();
- List<JsonObject> legendaryPets = new ArrayList<>();
-
- for (JsonElement petElement : sortedPets) {
- JsonObject pet = petElement.getAsJsonObject();
- String rarity = pet.get("tier").getAsString();
-
- switch (rarity) {
- case "COMMON":
- commonPets.add(pet);
- break;
- case "UNCOMMON":
- uncommonPets.add(pet);
- break;
- case "RARE":
- rarePets.add(pet);
- break;
- case "EPIC":
- epicPets.add(pet);
- break;
- case "LEGENDARY":
- legendaryPets.add(pet);
- break;
- }
- }
-
- int totalPets = commonPets.size() + uncommonPets.size() + rarePets.size() + epicPets.size() + legendaryPets.size();
+
String finalMessage = DankersSkyblockMod.DELIMITER_COLOUR + "" + EnumChatFormatting.BOLD + "-------------------\n" +
- EnumChatFormatting.AQUA + " " + username + "'s Pets (" + totalPets + "):\n";
-
- // Loop through pet rarities
- for (JsonObject legPet : legendaryPets) {
- String petName = Utils.capitalizeString(legPet.get("type").getAsString());
- int level = petXpToLevel(legPet.get("exp").getAsDouble(), "LEGENDARY");
-
- String messageToAdd;
- if (legPet.get("active").getAsBoolean()) {
- messageToAdd = EnumChatFormatting.GOLD + " " + EnumChatFormatting.BOLD + ">>> Legendary " + petName + " (" + level + ") <<<";
- } else {
- messageToAdd = EnumChatFormatting.GOLD + " Legendary " + petName + " (" + level + ")";
- }
-
- finalMessage += messageToAdd + "\n";
- }
-
- for (JsonObject epicPet: epicPets) {
- String petName = Utils.capitalizeString(epicPet.get("type").getAsString());
- int level = petXpToLevel(epicPet.get("exp").getAsDouble(), "EPIC");
-
- String messageToAdd;
- if (epicPet.get("active").getAsBoolean()) {
- messageToAdd = EnumChatFormatting.DARK_PURPLE + " " + EnumChatFormatting.BOLD + ">>> Epic " + petName + " (" + level + ") <<<";
- } else {
- messageToAdd = EnumChatFormatting.DARK_PURPLE + " Epic " + petName + " (" + level + ")";
- }
-
- finalMessage += messageToAdd + "\n";
- }
-
- for (JsonObject rarePet: rarePets) {
- String petName = Utils.capitalizeString(rarePet.get("type").getAsString());
- int level = petXpToLevel(rarePet.get("exp").getAsDouble(), "RARE");
-
- String messageToAdd;
- if (rarePet.get("active").getAsBoolean()) {
- messageToAdd = EnumChatFormatting.BLUE + " " + EnumChatFormatting.BOLD + ">>> Rare " + petName + " (" + level + ") <<<";
- } else {
- messageToAdd = EnumChatFormatting.BLUE + " Rare " + petName + " (" + level + ")";
- }
-
- finalMessage += messageToAdd + "\n";
- }
-
- for (JsonObject uncommonPet: uncommonPets) {
- String petName = Utils.capitalizeString(uncommonPet.get("type").getAsString());
- int level = petXpToLevel(uncommonPet.get("exp").getAsDouble(), "UNCOMMON");
-
- String messageToAdd;
- if (uncommonPet.get("active").getAsBoolean()) {
- messageToAdd = EnumChatFormatting.GREEN + " " + EnumChatFormatting.BOLD + ">>> Uncommon " + petName + " (" + level + ") <<<";
- } else {
- messageToAdd = EnumChatFormatting.GREEN + " Uncommon " + petName + " (" + level + ")";
- }
-
- finalMessage += messageToAdd + "\n";
- }
-
- for (JsonObject commonPet: commonPets) {
- String petName = Utils.capitalizeString(commonPet.get("type").getAsString());
- int level = petXpToLevel(commonPet.get("exp").getAsDouble(), "COMMON");
-
- String messageToAdd;
- if (commonPet.get("active").getAsBoolean()) {
- messageToAdd = EnumChatFormatting.BOLD + ">>> Common " + petName + " (" + level + ") <<<";
- } else {
- messageToAdd = " Common " + petName + " (" + level + ")";
- }
-
- finalMessage += messageToAdd + "\n";
+ EnumChatFormatting.AQUA + " " + username + "'s Pets (" + pets.size() + "):\n";
+
+ // Loop through pets
+ for(Pet pet : pets) {
+ finalMessage += pet.getStringToAdd();
}
-
+
finalMessage += DankersSkyblockMod.DELIMITER_COLOUR + " " + EnumChatFormatting.BOLD + "-------------------";
player.addChatMessage(new ChatComponentText(finalMessage));
-
+
}).start();
}
-}
+} \ No newline at end of file
diff --git a/src/main/java/me/Danker/commands/RepartyCommand.java b/src/main/java/me/Danker/commands/RepartyCommand.java
new file mode 100644
index 0000000..623ebf7
--- /dev/null
+++ b/src/main/java/me/Danker/commands/RepartyCommand.java
@@ -0,0 +1,135 @@
+package me.Danker.commands;
+
+import me.Danker.DankersSkyblockMod;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.client.gui.GuiNewChat;
+import net.minecraft.command.CommandBase;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommand;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.util.*;
+import net.minecraft.util.ChatComponentText;
+
+import java.util.*;
+import java.util.List;
+
+
+public class RepartyCommand extends CommandBase implements ICommand {
+ public static boolean gettingParty = false;
+ public static int Delimiter = 0;
+ public static boolean disbanding = false;
+ public static boolean inviting = false;
+ public static boolean failInviting = false;
+ public static List<String> party = new ArrayList<>();
+ public static List<String> repartyFailList = new ArrayList<>();
+ public static Thread partyThread = null;
+
+ @Override
+ public String getCommandName() {
+ return "reparty";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender sender) {
+ return "/" + getCommandName();
+ }
+
+ @Override
+ public List<String> getCommandAliases() {
+ return Collections.singletonList("rp");
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public void processCommand(ICommandSender sender, String[] args) throws CommandException {
+ if (args.length > 0 && (args[0].startsWith("fail") || args[0].equals("f"))) {
+ partyThread = new Thread(() -> {
+ EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+ GuiNewChat chat = Minecraft.getMinecraft().ingameGUI.getChatGUI();
+
+
+ try {
+ player.sendChatMessage("/p " + String.join(" ", repartyFailList));
+ String members = String.join(EnumChatFormatting.WHITE + "\n- " + EnumChatFormatting.YELLOW, repartyFailList);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "-----------------------------\n" +
+ DankersSkyblockMod.MAIN_COLOUR + "Partying:" + EnumChatFormatting.WHITE + "\n- " +
+ EnumChatFormatting.YELLOW + members + "\n" +
+ DankersSkyblockMod.DELIMITER_COLOUR + "-----------------------------"));
+ failInviting = true;
+ while (failInviting) {
+ Thread.sleep(10);
+ }
+ if (repartyFailList.size() > 0) {
+ String repartyFails = String.join("\n- " + EnumChatFormatting.RED, repartyFailList);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "-----------------------------\n" +
+ DankersSkyblockMod.MAIN_COLOUR + "Failed to invite:" + EnumChatFormatting.WHITE + "\n- " +
+ EnumChatFormatting.RED + repartyFails + "\n" +
+ DankersSkyblockMod.DELIMITER_COLOUR + "-----------------------------"));
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ });
+
+ partyThread.start();
+
+ return;
+ }
+
+ party.clear();
+ repartyFailList.clear();
+
+ // MULTI THREAD DRIFTING
+ partyThread = new Thread(() -> {
+ EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+
+
+ try {
+ player.sendChatMessage("/pl");
+ gettingParty = true;
+ while (gettingParty) {
+ Thread.sleep(10);
+ }
+ if (party.size() == 0) return;
+ player.sendChatMessage("/p disband");
+ disbanding = true;
+ while (disbanding) {
+ Thread.sleep(10);
+ }
+ String members = String.join(EnumChatFormatting.WHITE + "\n- " + EnumChatFormatting.YELLOW, RepartyCommand.party);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "-----------------------------\n" +
+ DankersSkyblockMod.MAIN_COLOUR + "Repartying:" + EnumChatFormatting.WHITE + "\n- " +
+ EnumChatFormatting.YELLOW + members + "\n" +
+ DankersSkyblockMod.DELIMITER_COLOUR + "-----------------------------"));
+ repartyFailList = new ArrayList<>(party);
+ for (String invitee : party) {
+ player.sendChatMessage("/p " + invitee);
+ inviting = true;
+ while (inviting) {
+ Thread.sleep(10);
+ }
+ Thread.sleep(100);
+ }
+ while (inviting) {
+ Thread.sleep(10);
+ }
+ if (repartyFailList.size() > 0) {
+ String repartyFails = String.join("\n- " + EnumChatFormatting.RED, repartyFailList);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "-----------------------------\n" +
+ DankersSkyblockMod.MAIN_COLOUR + "Failed to invite:" + EnumChatFormatting.WHITE + "\n- " +
+ EnumChatFormatting.RED + repartyFails + "\n" +
+ DankersSkyblockMod.DELIMITER_COLOUR + "-----------------------------"));
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ });
+
+ partyThread.start();
+ }
+} \ No newline at end of file
diff --git a/src/main/java/me/Danker/commands/ResetLootCommand.java b/src/main/java/me/Danker/commands/ResetLootCommand.java
index dc968e8..9b4ecfa 100644
--- a/src/main/java/me/Danker/commands/ResetLootCommand.java
+++ b/src/main/java/me/Danker/commands/ResetLootCommand.java
@@ -24,7 +24,7 @@ public class ResetLootCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + "<zombie/spider/wolf/fishing/catacombs/confirm/cancel>";
+ return "/" + getCommandName() + "<zombie/spider/wolf/fishing/mythological/catacombs/confirm/cancel>";
}
@Override
diff --git a/src/main/java/me/Danker/commands/ScaleCommand.java b/src/main/java/me/Danker/commands/ScaleCommand.java
index 85d0d5c..79b3cb1 100644
--- a/src/main/java/me/Danker/commands/ScaleCommand.java
+++ b/src/main/java/me/Danker/commands/ScaleCommand.java
@@ -8,7 +8,6 @@ import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
-import sun.security.krb5.Config;
import java.util.List;
@@ -22,6 +21,7 @@ public class ScaleCommand extends CommandBase {
public static double cakeTimerScale;
public static double skillTrackerScale;
public static double waterAnswerScale;
+ public static double bonzoTimerScale;
@Override
public String getCommandName() {
@@ -30,7 +30,7 @@ public class ScaleCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer> <size (0.1 - 10)>";
+ return "/" + getCommandName() + " <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/bonzotimer> <size (0.1 - 10)>";
}
@Override
@@ -41,7 +41,7 @@ public class ScaleCommand extends CommandBase {
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
if (args.length == 1) {
- return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", "skilltracker", "wateranswer");
+ return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", "skilltracker", "wateranswer", "bonzotimer");
}
return null;
}
@@ -102,6 +102,11 @@ public class ScaleCommand extends CommandBase {
ConfigHandler.writeDoubleConfig("scales", "waterAnswerScale", waterAnswerScale);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Water solver answer has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + waterAnswerScale + "x"));
break;
+ case "bonzotimer":
+ bonzoTimerScale = scaleAmount;
+ ConfigHandler.writeDoubleConfig("scales", "bonzoTimerScale", bonzoTimerScale);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Bonzo's Mask timer has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + bonzoTimerScale + "x"));
+ break;
default:
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
}
diff --git a/src/main/java/me/Danker/commands/SetkeyCommand.java b/src/main/java/me/Danker/commands/SetkeyCommand.java
index db5fb9a..ee4b5a5 100644
--- a/src/main/java/me/Danker/commands/SetkeyCommand.java
+++ b/src/main/java/me/Danker/commands/SetkeyCommand.java
@@ -38,5 +38,4 @@ public class SetkeyCommand extends CommandBase implements ICommand {
ConfigHandler.writeStringConfig("api", "APIKey", arg1[0]);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Set API key to " + DankersSkyblockMod.SECONDARY_COLOUR + arg1[0]));
}
-
}
diff --git a/src/main/java/me/Danker/commands/SkillTrackerCommand.java b/src/main/java/me/Danker/commands/SkillTrackerCommand.java
index 7642070..03753aa 100644
--- a/src/main/java/me/Danker/commands/SkillTrackerCommand.java
+++ b/src/main/java/me/Danker/commands/SkillTrackerCommand.java
@@ -13,6 +13,7 @@ import org.apache.commons.lang3.time.StopWatch;
import java.util.List;
public class SkillTrackerCommand extends CommandBase {
+ public static boolean running = false;
@Override
public String getCommandName() {
@@ -39,55 +40,63 @@ public class SkillTrackerCommand extends CommandBase {
@Override
public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
- EntityPlayer player = (EntityPlayer) arg0;
-
- if (arg1.length < 1) {
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
- return;
- }
-
- switch (arg1[0].toLowerCase()) {
- case "start":
- case "resume":
- if (DankersSkyblockMod.skillStopwatch.isStarted() && DankersSkyblockMod.skillStopwatch.isSuspended()) {
- DankersSkyblockMod.skillStopwatch.resume();
- } else if (!DankersSkyblockMod.skillStopwatch.isStarted()) {
- DankersSkyblockMod.skillStopwatch.start();
- }
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker started."));
- break;
- case "pause":
- case "stop":
- if (DankersSkyblockMod.skillStopwatch.isStarted() && !DankersSkyblockMod.skillStopwatch.isSuspended()) {
- DankersSkyblockMod.skillStopwatch.suspend();
- } else {
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker paused."));
- }
- break;
- case "reset":
- DankersSkyblockMod.skillStopwatch = new StopWatch();
- DankersSkyblockMod.farmingXPGained = 0;
- DankersSkyblockMod.miningXPGained = 0;
- DankersSkyblockMod.combatXPGained = 0;
- DankersSkyblockMod.foragingXPGained = 0;
- DankersSkyblockMod.fishingXPGained = 0;
- DankersSkyblockMod.enchantingXPGained = 0;
- DankersSkyblockMod.alchemyXPGained = 0;
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker reset."));
- break;
- case "hide":
- DankersSkyblockMod.showSkillTracker = false;
- ConfigHandler.writeBooleanConfig("misc", "showSkillTracker", false);
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker hidden."));
- break;
- case "show":
- DankersSkyblockMod.showSkillTracker = true;
- ConfigHandler.writeBooleanConfig("misc", "showSkillTracker", true);
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker shown."));
- break;
- default:
+ // MULTI THREAD DRIFTING
+ new Thread(() -> {
+ EntityPlayer player = (EntityPlayer) arg0;
+
+ if (arg1.length < 1) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
- }
- }
+ return;
+ }
+
+ try {
+ Thread.sleep(50);
+ switch (arg1[0].toLowerCase()) {
+ case "start":
+ case "resume":
+ if (DankersSkyblockMod.skillStopwatch.isStarted() && DankersSkyblockMod.skillStopwatch.isSuspended()) {
+ DankersSkyblockMod.skillStopwatch.resume();
+ } else if (!DankersSkyblockMod.skillStopwatch.isStarted()) {
+ DankersSkyblockMod.skillStopwatch.start();
+ }
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker started."));
+ break;
+ case "pause":
+ case "stop":
+ if (DankersSkyblockMod.skillStopwatch.isStarted() && !DankersSkyblockMod.skillStopwatch.isSuspended()) {
+ DankersSkyblockMod.skillStopwatch.suspend();
+ } else {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker paused."));
+ }
+ break;
+ case "reset":
+ DankersSkyblockMod.skillStopwatch = new StopWatch();
+ DankersSkyblockMod.farmingXPGained = 0;
+ DankersSkyblockMod.miningXPGained = 0;
+ DankersSkyblockMod.combatXPGained = 0;
+ DankersSkyblockMod.foragingXPGained = 0;
+ DankersSkyblockMod.fishingXPGained = 0;
+ DankersSkyblockMod.enchantingXPGained = 0;
+ DankersSkyblockMod.alchemyXPGained = 0;
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker reset."));
+ break;
+ case "hide":
+ DankersSkyblockMod.showSkillTracker = false;
+ ConfigHandler.writeBooleanConfig("misc", "showSkillTracker", false);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker hidden."));
+ break;
+ case "show":
+ DankersSkyblockMod.showSkillTracker = true;
+ ConfigHandler.writeBooleanConfig("misc", "showSkillTracker", true);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Skill tracker shown."));
+ break;
+ default:
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }).start();
+ }
}
diff --git a/src/main/java/me/Danker/commands/SkillsCommand.java b/src/main/java/me/Danker/commands/SkillsCommand.java
index 2d5cf78..6edbb4e 100644
--- a/src/main/java/me/Danker/commands/SkillsCommand.java
+++ b/src/main/java/me/Danker/commands/SkillsCommand.java
@@ -96,7 +96,7 @@ public class SkillsCommand extends CommandBase {
farmingLevel = (double) Math.round(farmingLevel * 100) / 100;
}
if (userObject.has("experience_skill_mining")) {
- miningLevel = Utils.xpToSkillLevel(userObject.get("experience_skill_mining").getAsDouble(), 50);
+ miningLevel = Utils.xpToSkillLevel(userObject.get("experience_skill_mining").getAsDouble(), 60);
miningLevel = (double) Math.round(miningLevel * 100) / 100;
}
if (userObject.has("experience_skill_combat")) {
@@ -141,7 +141,7 @@ public class SkillsCommand extends CommandBase {
farmingLevel = achievementObject.get("skyblock_harvester").getAsInt();
}
if (achievementObject.has("skyblock_excavator")) {
- miningLevel = Math.min(achievementObject.get("skyblock_excavator").getAsInt(), 50);
+ miningLevel = achievementObject.get("skyblock_excavator").getAsInt();
}
if (achievementObject.has("skyblock_combat")) {
combatLevel = Math.min(achievementObject.get("skyblock_combat").getAsInt(), 50);
diff --git a/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java b/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
index 9558d7d..c69ae6f 100644
--- a/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
+++ b/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
@@ -70,6 +70,7 @@ public class SkyblockPlayersCommand extends CommandBase {
int park = 0; // foraging_1
int goldMine = 0; // mining_1
int deepCaverns = 0; // mining_2
+ int dwarvenMines = 0; // mining_3
int spidersDen = 0; // combat_1
int blazingFortress = 0; // combat_2
int end = 0; // combat_3
@@ -101,6 +102,9 @@ public class SkyblockPlayersCommand extends CommandBase {
if (skyblockPlayers.has("mining_2")) {
deepCaverns = skyblockPlayers.get("mining_2").getAsInt();
}
+ if (skyblockPlayers.has("mining_3")) {
+ dwarvenMines = skyblockPlayers.get("mining_3").getAsInt();
+ }
if (skyblockPlayers.has("combat_1")) {
spidersDen = skyblockPlayers.get("combat_1").getAsInt();
}
@@ -135,6 +139,7 @@ public class SkyblockPlayersCommand extends CommandBase {
DankersSkyblockMod.TYPE_COLOUR + " Park: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(park) + " / " + Utils.getPercentage(park, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " Gold Mine: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(goldMine) + " / " + Utils.getPercentage(goldMine, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " Deep Caverns: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(deepCaverns) + " / " + Utils.getPercentage(deepCaverns, skyblockTotalPlayers) + "%\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Dwarven Mines: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(dwarvenMines) + " / " + Utils.getPercentage(dwarvenMines, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " Spider's Den: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(spidersDen) + " / " + Utils.getPercentage(spidersDen, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " Blazing Fortress: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(blazingFortress) + " / " + Utils.getPercentage(blazingFortress, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " The End: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(end) + " / " + Utils.getPercentage(end, skyblockTotalPlayers) + "%\n" +
diff --git a/src/main/java/me/Danker/commands/SlayerCommand.java b/src/main/java/me/Danker/commands/SlayerCommand.java
index 6c83934..e7f78f1 100644
--- a/src/main/java/me/Danker/commands/SlayerCommand.java
+++ b/src/main/java/me/Danker/commands/SlayerCommand.java
@@ -14,6 +14,7 @@ import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import java.text.NumberFormat;
+import java.util.Collections;
import java.util.List;
import java.util.Locale;
@@ -25,6 +26,11 @@ public class SlayerCommand extends CommandBase {
}
@Override
+ public List<String> getCommandAliases() {
+ return Collections.singletonList("slayer");
+ }
+
+ @Override
public String getCommandUsage(ICommandSender arg0) {
return "/" + getCommandName() + " [name]";
}
diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java
index 5c473e5..b632abc 100644
--- a/src/main/java/me/Danker/commands/ToggleCommand.java
+++ b/src/main/java/me/Danker/commands/ToggleCommand.java
@@ -23,20 +23,31 @@ public class ToggleCommand extends CommandBase implements ICommand {
public static boolean spiritBearAlerts;
public static boolean aotdToggled;
public static boolean lividDaggerToggled;
- public static boolean sceptreMessages;
public static boolean petColoursToggled;
public static boolean dungeonTimerToggled;
public static boolean golemAlertToggled;
public static boolean expertiseLoreToggled;
public static boolean skill50DisplayToggled;
public static boolean outlineTextToggled;
+ public static boolean cakeTimerToggled;
+ // Chat Messages
+ public static boolean sceptreMessages;
public static boolean midasStaffMessages;
public static boolean implosionMessages;
public static boolean healMessages;
- public static boolean cakeTimerToggled;
+ public static boolean cooldownMessages;
+ public static boolean manaMessages;
+ // Dungeons Messages
public static boolean lowHealthNotifyToggled;
public static boolean lividSolverToggled;
public static boolean stopSalvageStarredToggled;
+ public static boolean watcherReadyToggled;
+ public static boolean swapToPickBlockToggled;
+ public static boolean flowerWeaponsToggled;
+ public static boolean notifySlayerSlainToggled;
+ public static boolean necronNotificationsToggled;
+ public static boolean bonzoTimerToggled;
+ public static boolean autoSkillTrackerToggled;
// Puzzle Solvers
public static boolean threeManToggled;
public static boolean oruoToggled;
@@ -47,12 +58,14 @@ public class ToggleCommand extends CommandBase implements ICommand {
// Terminal Helpers
public static boolean startsWithToggled;
public static boolean selectAllToggled;
+ public static boolean clickInOrderToggled;
+ public static boolean blockWrongTerminalClicksToggled;
public static boolean itemFrameOnSeaLanternsToggled;
// Experiments
public static boolean ultrasequencerToggled;
public static boolean chronomatronToggled;
public static boolean superpairsToggled;
- public static boolean swapToPickBlockInExperimentsToggled;
+ public static boolean hideTooltipsInExperimentAddonsToggled;
@Override
public String getCommandName() {
@@ -61,30 +74,33 @@ public class ToggleCommand extends CommandBase implements ICommand {
@Override
public String getCommandUsage(ICommandSender arg0) {
+
return "/" + getCommandName() + " <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalert/" +
- "aotd/lividdagger/sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/" +
- "outlinetext/midasstaffmessages/implosionmessages/healmessages/caketimer/lowhealthnotify/" +
- "lividsolver/stopsalvagestarred/threemanpuzzle/oruopuzzle/blazepuzzle/creeperpuzzle/waterpuzzle/tictactoepuzzle/" +
- "startswithterminal/selectallterminal/itemframeonsealanterns/ultrasequencer/chronomatron/superpairs/pickblockinexperiments/list>";
+ "aotd/lividdagger/flowerweapons/sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/" +
+ "outlinetext/midasstaffmessages/implosionmessages/healmessages/cooldownmessages/manamessages/caketimer/lowhealthnotify/" +
+ "lividsolver/stopsalvagestarred/notifyslayerslain/necronnotifications/bonzotimer/threemanpuzzle/oruopuzzle/blazepuzzle/creeperpuzzle/waterpuzzle/tictactoepuzzle/" +
+ "watchermessage/startswithterminal/selectallterminal/clickinorderterminal/blockwrongterminalclicks/" +
+ "itemframeonsealanterns/ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/list>";
}
@Override
public int getRequiredPermissionLevel() {
return 0;
}
-
+
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
if (args.length == 1) {
return getListOfStringsMatchingLastWord(args, "gparty", "coords", "golden", "slayercount", "rngesusalerts",
"splitfishing", "chatmaddox", "spiritbearalerts", "aotd", "lividdagger",
- "sceptremessages", "petcolors", "dungeontimer", "golemalerts",
+ "flowerweapons", "sceptremessages", "petcolors", "dungeontimer", "golemalerts",
"expertiselore", "skill50display", "outlinetext", "midasstaffmessages",
- "implosionmessages", "healmessages", "caketimer", "lowhealthnotify",
- "lividsolver", "stopsalvagestarred", "threemanpuzzle", "oruopuzzle", "blazepuzzle",
- "creeperpuzzle", "waterpuzzle", "tictactoepuzzle", "startswithterminal",
- "selectallterminal", "itemframeonsealanterns", "ultrasequencer",
- "chronomatron", "superpairs", "pickblockinexperiments", "list");
+ "implosionmessages", "healmessages", "cooldownmessages", "manamessages", "caketimer", "lowhealthnotify", "autoskilltracker",
+ "lividsolver", "stopsalvagestarred", "notifyslayerslain", "necronnotifications",
+ "bonzotimer", "threemanpuzzle", "oruopuzzle", "blazepuzzle",
+ "creeperpuzzle", "waterpuzzle", "tictactoepuzzle", "watchermessage", "startswithterminal",
+ "selectallterminal", "clickinorderterminal", "blockwrongterminalclicks", "itemframeonsealanterns", "ultrasequencer",
+ "chronomatron", "superpairs", "hidetooltipsinaddons", "pickblock", "list");
}
return null;
}
@@ -149,6 +165,11 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "LividDagger", lividDaggerToggled);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Block Livid Dagger ability been set to " + DankersSkyblockMod.SECONDARY_COLOUR + lividDaggerToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
+ case "flowerweapons":
+ flowerWeaponsToggled = !flowerWeaponsToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "FlowerWeapons", flowerWeaponsToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Prevent Placing FoT/Spirit Sceptre been set to " + DankersSkyblockMod.SECONDARY_COLOUR + flowerWeaponsToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
case "sceptremessages":
sceptreMessages = !sceptreMessages;
ConfigHandler.writeBooleanConfig("toggles", "SceptreMessages", sceptreMessages);
@@ -169,6 +190,16 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "HealMessages", healMessages);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Heal messages have been set to " + DankersSkyblockMod.SECONDARY_COLOUR + healMessages + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
+ case "cooldownmessages":
+ cooldownMessages = !cooldownMessages;
+ ConfigHandler.writeBooleanConfig("toggles", "CooldownMessages", cooldownMessages);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Ability cooldown messages has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + cooldownMessages + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "manamessages":
+ manaMessages = !manaMessages;
+ ConfigHandler.writeBooleanConfig("toggles", "ManaMessages", manaMessages);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Out of mana messages has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + manaMessages + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
case "petcolors":
case "petcolours":
petColoursToggled = !petColoursToggled;
@@ -220,6 +251,26 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "StopSalvageStarred", stopSalvageStarredToggled);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Stop salvaging starred items has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + stopSalvageStarredToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
+ case "notifyslayerslain":
+ notifySlayerSlainToggled = !notifySlayerSlainToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "NotifySlayerSlain", notifySlayerSlainToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Notify when slayer slain has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + notifySlayerSlainToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "necronnotifications":
+ necronNotificationsToggled = !necronNotificationsToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "NecronNotifications", necronNotificationsToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Necron phase notifications has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + necronNotificationsToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "bonzotimer":
+ bonzoTimerToggled = !bonzoTimerToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "BonzoTimer", bonzoTimerToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Bonzo's Mask timer has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + necronNotificationsToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "autoskilltracker":
+ autoSkillTrackerToggled = !autoSkillTrackerToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "AutoSkillTracker", autoSkillTrackerToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Auto start/stop skill tracker has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + autoSkillTrackerToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
case "threemanpuzzle":
threeManToggled = !threeManToggled;
ConfigHandler.writeBooleanConfig("toggles", "ThreeManPuzzle", threeManToggled);
@@ -250,6 +301,11 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "TicTacToePuzzle", ticTacToeToggled);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Tic tac toe puzzle solver has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + ticTacToeToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
+ case "watchermessage":
+ watcherReadyToggled = !watcherReadyToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "WatcherReadyMessage", watcherReadyToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Display Watcher ready message has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + watcherReadyToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
case "startswithterminal":
startsWithToggled = !startsWithToggled;
ConfigHandler.writeBooleanConfig("toggles", "StartsWithTerminal", startsWithToggled);
@@ -260,6 +316,16 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "SelectAllTerminal", selectAllToggled);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Select all color items terminal solver has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + selectAllToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
+ case "clickinorderterminal":
+ clickInOrderToggled = !clickInOrderToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "ClickInOrderTerminal", clickInOrderToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Click in order terminal helper has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + selectAllToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "blockwrongterminalclicks":
+ blockWrongTerminalClicksToggled = !blockWrongTerminalClicksToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "BlockWrongTerminalClicks", blockWrongTerminalClicksToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Block wrong clicks on terminals has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + blockWrongTerminalClicksToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
case "itemframeonsealanterns":
itemFrameOnSeaLanternsToggled = !itemFrameOnSeaLanternsToggled;
ConfigHandler.writeBooleanConfig("toggles", "IgnoreItemFrameOnSeaLanterns", itemFrameOnSeaLanternsToggled);
@@ -280,10 +346,15 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "Superpairs", superpairsToggled);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Superpairs solver has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + superpairsToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
- case "pickblockinexperiments":
- swapToPickBlockInExperimentsToggled = !swapToPickBlockInExperimentsToggled;
- ConfigHandler.writeBooleanConfig("toggles", "PickBlockInExperiments", superpairsToggled);
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Auto-swap to pick block in experiments has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + swapToPickBlockInExperimentsToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ case "hidetooltipsinaddons":
+ hideTooltipsInExperimentAddonsToggled = !hideTooltipsInExperimentAddonsToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "HideTooltipsInExperimentAddons", hideTooltipsInExperimentAddonsToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Hide tooltips in ultrasequencer and chronomatron has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + hideTooltipsInExperimentAddonsToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "pickblock":
+ swapToPickBlockToggled = !swapToPickBlockToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "PickBlock", swapToPickBlockToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Auto-swap to pick block has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + swapToPickBlockToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
case "list":
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.TYPE_COLOUR + "Guild party notifications: " + DankersSkyblockMod.VALUE_COLOUR + gpartyToggled + "\n" +
@@ -296,10 +367,13 @@ public class ToggleCommand extends CommandBase implements ICommand {
DankersSkyblockMod.TYPE_COLOUR + " Spirit Bear alerts: " + DankersSkyblockMod.VALUE_COLOUR + spiritBearAlerts + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Block AOTD ability: " + DankersSkyblockMod.VALUE_COLOUR + aotdToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Block Livid Dagger ability: " + DankersSkyblockMod.VALUE_COLOUR + lividDaggerToggled + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Prevent Placing FoT/Spirit Sceptre: " + DankersSkyblockMod.VALUE_COLOUR + flowerWeaponsToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Spirit Sceptre messages: " + DankersSkyblockMod.VALUE_COLOUR + sceptreMessages + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Midas Staff messages: " + DankersSkyblockMod.VALUE_COLOUR + midasStaffMessages + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Implosion messages: " + DankersSkyblockMod.VALUE_COLOUR + implosionMessages + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Heal messages: " + DankersSkyblockMod.VALUE_COLOUR + healMessages + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Ability cooldown messages: " + DankersSkyblockMod.VALUE_COLOUR + cooldownMessages + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Out of mana messages: " + DankersSkyblockMod.VALUE_COLOUR + manaMessages + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Pet colours: " + DankersSkyblockMod.VALUE_COLOUR + petColoursToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Dungeon timer: " + DankersSkyblockMod.VALUE_COLOUR + dungeonTimerToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Golem spawn alerts: " + DankersSkyblockMod.VALUE_COLOUR + golemAlertToggled + "\n" +
@@ -308,6 +382,7 @@ public class ToggleCommand extends CommandBase implements ICommand {
DankersSkyblockMod.TYPE_COLOUR + " Outline displayed text: " + DankersSkyblockMod.VALUE_COLOUR + outlineTextToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Cake timer: " + DankersSkyblockMod.VALUE_COLOUR + cakeTimerToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Low health notify: " + DankersSkyblockMod.VALUE_COLOUR + lowHealthNotifyToggled + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Auto start/stop skill tracker: " + DankersSkyblockMod.VALUE_COLOUR + autoSkillTrackerToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Livid solver: " + DankersSkyblockMod.VALUE_COLOUR + lividSolverToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Three man puzzle solver: " + DankersSkyblockMod.VALUE_COLOUR + threeManToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Oruo trivia solver: " + DankersSkyblockMod.VALUE_COLOUR + oruoToggled + "\n" +
@@ -315,12 +390,15 @@ public class ToggleCommand extends CommandBase implements ICommand {
DankersSkyblockMod.TYPE_COLOUR + " Creeper puzzle solver: " + DankersSkyblockMod.VALUE_COLOUR + creeperToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Water puzzle solver: " + DankersSkyblockMod.VALUE_COLOUR + waterToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Tic tac toe puzzle solver: " + DankersSkyblockMod.VALUE_COLOUR + ticTacToeToggled + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Watcher ready message: " + DankersSkyblockMod.VALUE_COLOUR + watcherReadyToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Starts with letter terminal solver: " + DankersSkyblockMod.VALUE_COLOUR + startsWithToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Select all color items terminal solver: " + DankersSkyblockMod.VALUE_COLOUR + selectAllToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Ignore item frames on sea lanterns: " + DankersSkyblockMod.VALUE_COLOUR + itemFrameOnSeaLanternsToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Ultra sequencer solver: " + DankersSkyblockMod.VALUE_COLOUR + ultrasequencerToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Chronomatron solver: " + DankersSkyblockMod.VALUE_COLOUR + chronomatronToggled + "\n" +
- DankersSkyblockMod.TYPE_COLOUR + " Superpairs solver: " + DankersSkyblockMod.VALUE_COLOUR + superpairsToggled
+ DankersSkyblockMod.TYPE_COLOUR + " Superpairs solver: " + DankersSkyblockMod.VALUE_COLOUR + superpairsToggled + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Hide tooltips in experiment addons: " + DankersSkyblockMod.VALUE_COLOUR + hideTooltipsInExperimentAddonsToggled + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Auto-swap to pick block " + DankersSkyblockMod.VALUE_COLOUR + swapToPickBlockToggled
));
break;
default:
diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java
index 1c40dc4..90aa5e5 100644
--- a/src/main/java/me/Danker/gui/DankerGui.java
+++ b/src/main/java/me/Danker/gui/DankerGui.java
@@ -24,6 +24,7 @@ public class DankerGui extends GuiScreen {
private GuiButton nextPage;
private GuiButton githubLink;
private GuiButton discordLink;
+ private GuiButton editLocations;
private GuiButton changeDisplay;
private GuiButton onlySlayer;
private GuiButton puzzleSolvers;
@@ -39,21 +40,32 @@ public class DankerGui extends GuiScreen {
private GuiButton chatMaddox;
private GuiButton spiritBearAlert;
private GuiButton aotd;
- private GuiButton lividDagger;
- private GuiButton sceptreMessages;
- private GuiButton midasStaffMessages;
- private GuiButton implosionMessages;
- private GuiButton healMessages;
private GuiButton petColours;
- private GuiButton dungeonTimer;
private GuiButton golemAlerts;
private GuiButton expertiseLore;
private GuiButton skill50Display;
private GuiButton outlineText;
private GuiButton cakeTimer;
+ // Chat Messages
+ private GuiButton lividDagger;
+ private GuiButton sceptreMessages;
+ private GuiButton midasStaffMessages;
+ private GuiButton implosionMessages;
+ private GuiButton healMessages;
+ private GuiButton cooldownMessages;
+ private GuiButton manaMessages;
+ //Dungeons
+ private GuiButton dungeonTimer;
private GuiButton lowHealthNotify;
private GuiButton lividSolver;
private GuiButton stopSalvageStarred;
+ private GuiButton watcherReadyMessage;
+ private GuiButton flowerWeapons;
+ private GuiButton pickBlock;
+ private GuiButton notifySlayerSlain;
+ private GuiButton necronNotifications;
+ private GuiButton bonzoTimer;
+ private GuiButton autoSkillTracker;
public DankerGui(int page) {
this.page = page;
@@ -78,6 +90,7 @@ public class DankerGui extends GuiScreen {
nextPage = new GuiButton(0, width / 2 + 20, (int) (height * 0.8), 80, 20, "Next >");
githubLink = new GuiButton(0, 2, height - 50, 80, 20, "GitHub");
discordLink = new GuiButton(0, 2, height - 30, 80, 20, "Discord");
+ editLocations = new GuiButton(0, 2, 5, 100, 20, "Edit Locations");
// Page 1
changeDisplay = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Change Display Settings");
@@ -86,33 +99,43 @@ public class DankerGui extends GuiScreen {
experimentationTableSolvers = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Toggle Experimentation Table Solvers");
skillTracker = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Toggle Skill XP/Hour Tracking");
outlineText = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Outline Displayed Text: " + Utils.getColouredBoolean(ToggleCommand.outlineTextToggled));
- splitFishing = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Split Fishing Display: " + Utils.getColouredBoolean(ToggleCommand.splitFishing));
+ pickBlock = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Auto-Swap to Pick Block: " + Utils.getColouredBoolean(ToggleCommand.swapToPickBlockToggled));
// Page 2
coords = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Coordinate/Angle Display: " + Utils.getColouredBoolean(ToggleCommand.coordsToggled));
- dungeonTimer = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Display Dungeon Timers: " + Utils.getColouredBoolean(ToggleCommand.dungeonTimerToggled));
+ chatMaddox = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Click On-Screen to Open Maddox: " + Utils.getColouredBoolean(ToggleCommand.chatMaddoxToggled));
cakeTimer = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Cake Timer: " + Utils.getColouredBoolean(ToggleCommand.cakeTimerToggled));
skill50Display = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Display Progress To Skill Level 50: " + Utils.getColouredBoolean(ToggleCommand.skill50DisplayToggled));
slayerCount = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Count Total 20% Drops: " + Utils.getColouredBoolean(ToggleCommand.slayerCountTotal));
aotd = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Disable AOTD Ability: " + Utils.getColouredBoolean(ToggleCommand.aotdToggled));
lividDagger = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Disable Livid Dagger Ability: " + Utils.getColouredBoolean(ToggleCommand.lividDaggerToggled));
// Page 3
- chatMaddox = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Click On-Screen to Open Maddox: " + Utils.getColouredBoolean(ToggleCommand.chatMaddoxToggled));
- gparty = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Guild Party Notifications: " + Utils.getColouredBoolean(ToggleCommand.gpartyToggled));
- spiritBearAlert = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Spirit Bear Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.spiritBearAlerts));
- sceptreMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Spirit Sceptre Messages: " + Utils.getColouredBoolean(ToggleCommand.sceptreMessages));
- midasStaffMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Midas Staff Messages: " + Utils.getColouredBoolean(ToggleCommand.midasStaffMessages));
- implosionMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Implosion Messages: " + Utils.getColouredBoolean(ToggleCommand.implosionMessages));
- healMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Heal Messages: " + Utils.getColouredBoolean(ToggleCommand.healMessages));
+ spiritBearAlert = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Spirit Bear Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.spiritBearAlerts));
+ sceptreMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Spirit Sceptre Messages: " + Utils.getColouredBoolean(ToggleCommand.sceptreMessages));
+ midasStaffMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Midas Staff Messages: " + Utils.getColouredBoolean(ToggleCommand.midasStaffMessages));
+ implosionMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Implosion Messages: " + Utils.getColouredBoolean(ToggleCommand.implosionMessages));
+ healMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Heal Messages: " + Utils.getColouredBoolean(ToggleCommand.healMessages));
+ cooldownMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Cooldown Messages: " + Utils.getColouredBoolean(ToggleCommand.cooldownMessages));
+ manaMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Mana Messages: " + Utils.getColouredBoolean((ToggleCommand.manaMessages)));
// Page 4
goldenEnch = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Golden T10/T6/T4 Enchantments: " + Utils.getColouredBoolean(ToggleCommand.goldenToggled));
petColours = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Colour Pet Backgrounds: " + Utils.getColouredBoolean(ToggleCommand.petColoursToggled));
expertiseLore = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Expertise Kills In Lore: " + Utils.getColouredBoolean(ToggleCommand.expertiseLoreToggled));
- lividSolver = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Find Correct Livid: " + Utils.getColouredBoolean(ToggleCommand.lividSolverToggled));
+ gparty = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Guild Party Notifications: " + Utils.getColouredBoolean(ToggleCommand.gpartyToggled));
golemAlerts = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Alert When Golem Spawns: " + Utils.getColouredBoolean(ToggleCommand.golemAlertToggled));
rngesusAlert = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "RNGesus Alerts: " + Utils.getColouredBoolean(ToggleCommand.rngesusAlerts));
- lowHealthNotify = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Low Health Notifications: " + Utils.getColouredBoolean(ToggleCommand.lowHealthNotifyToggled));
+ splitFishing = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Split Fishing Display: " + Utils.getColouredBoolean(ToggleCommand.splitFishing));
// Page 5
- stopSalvageStarred = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Stop Salvaging Starred Items: " + Utils.getColouredBoolean(ToggleCommand.stopSalvageStarredToggled));
+ lowHealthNotify = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Low Health Notifications: " + Utils.getColouredBoolean(ToggleCommand.lowHealthNotifyToggled));
+ lividSolver = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Find Correct Livid: " + Utils.getColouredBoolean(ToggleCommand.lividSolverToggled));
+ dungeonTimer = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Display Dungeon Timers: " + Utils.getColouredBoolean(ToggleCommand.dungeonTimerToggled));
+ stopSalvageStarred = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Stop Salvaging Starred Items: " + Utils.getColouredBoolean(ToggleCommand.stopSalvageStarredToggled));
+ watcherReadyMessage = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Display Watcher Ready Message: " + Utils.getColouredBoolean(ToggleCommand.watcherReadyToggled));
+ flowerWeapons = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Prevent Placing FoT/Spirit Sceptre: " + Utils.getColouredBoolean(ToggleCommand.flowerWeaponsToggled));
+ notifySlayerSlain = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Notify when Slayer Slain: " + Utils.getColouredBoolean(ToggleCommand.notifySlayerSlainToggled));
+ //Page 6
+ necronNotifications = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Necron Phase Notifications: " + Utils.getColouredBoolean(ToggleCommand.necronNotificationsToggled));
+ bonzoTimer = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Bonzo's Mask Timer: " + Utils.getColouredBoolean(ToggleCommand.bonzoTimerToggled));
+ autoSkillTracker = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Auto Start/Stop Skill Tracker: " + Utils.getColouredBoolean(ToggleCommand.autoSkillTrackerToggled));
switch (page) {
case 1:
@@ -122,12 +145,12 @@ public class DankerGui extends GuiScreen {
this.buttonList.add(experimentationTableSolvers);
this.buttonList.add(skillTracker);
this.buttonList.add(outlineText);
- this.buttonList.add(splitFishing);
+ this.buttonList.add(pickBlock);
this.buttonList.add(nextPage);
break;
case 2:
this.buttonList.add(coords);
- this.buttonList.add(dungeonTimer);
+ this.buttonList.add(chatMaddox);
this.buttonList.add(cakeTimer);
this.buttonList.add(skill50Display);
this.buttonList.add(slayerCount);
@@ -137,13 +160,13 @@ public class DankerGui extends GuiScreen {
this.buttonList.add(backPage);
break;
case 3:
- this.buttonList.add(chatMaddox);
- this.buttonList.add(gparty);
this.buttonList.add(spiritBearAlert);
this.buttonList.add(sceptreMessages);
this.buttonList.add(midasStaffMessages);
this.buttonList.add(implosionMessages);
this.buttonList.add(healMessages);
+ this.buttonList.add(cooldownMessages);
+ this.buttonList.add(manaMessages);
this.buttonList.add(nextPage);
this.buttonList.add(backPage);
break;
@@ -151,15 +174,28 @@ public class DankerGui extends GuiScreen {
this.buttonList.add(goldenEnch);
this.buttonList.add(petColours);
this.buttonList.add(expertiseLore);
- this.buttonList.add(lividSolver);
+ this.buttonList.add(gparty);
this.buttonList.add(golemAlerts);
this.buttonList.add(rngesusAlert);
- this.buttonList.add(lowHealthNotify);
+ this.buttonList.add(splitFishing);
this.buttonList.add(nextPage);
this.buttonList.add(backPage);
break;
case 5:
+ this.buttonList.add(lowHealthNotify);
+ this.buttonList.add(lividSolver);
+ this.buttonList.add(dungeonTimer);
this.buttonList.add(stopSalvageStarred);
+ this.buttonList.add(watcherReadyMessage);
+ this.buttonList.add(flowerWeapons);
+ this.buttonList.add(notifySlayerSlain);
+ this.buttonList.add(nextPage);
+ this.buttonList.add(backPage);
+ break;
+ case 6:
+ this.buttonList.add(necronNotifications);
+ this.buttonList.add(bonzoTimer);
+ this.buttonList.add(autoSkillTracker);
this.buttonList.add(backPage);
break;
}
@@ -167,12 +203,13 @@ public class DankerGui extends GuiScreen {
this.buttonList.add(githubLink);
this.buttonList.add(discordLink);
this.buttonList.add(closeGUI);
+ this.buttonList.add(editLocations);
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
this.drawDefaultBackground();
- String pageText = "Page: " + page + "/5";
+ String pageText = "Page: " + page + "/6";
int pageWidth = mc.fontRendererObj.getStringWidth(pageText);
new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 10, 1D);
super.drawScreen(mouseX, mouseY, partialTicks);
@@ -186,6 +223,8 @@ public class DankerGui extends GuiScreen {
DankersSkyblockMod.guiToOpen = "dankergui" + (page + 1);
} else if (button == backPage) {
DankersSkyblockMod.guiToOpen = "dankergui" + (page - 1);
+ } else if (button == editLocations) {
+ DankersSkyblockMod.guiToOpen = "editlocations";
} else if (button == githubLink) {
try {
Desktop.getDesktop().browse(new URI("https://github.com/bowser0000/SkyblockMod"));
@@ -292,6 +331,14 @@ public class DankerGui extends GuiScreen {
ToggleCommand.healMessages = !ToggleCommand.healMessages;
ConfigHandler.writeBooleanConfig("toggles", "HealMessages", ToggleCommand.healMessages);
healMessages.displayString = "Heal Messages: " + Utils.getColouredBoolean(ToggleCommand.healMessages);
+ } else if (button == cooldownMessages) {
+ ToggleCommand.cooldownMessages = !ToggleCommand.cooldownMessages;
+ ConfigHandler.writeBooleanConfig("toggles", "CooldownMessages", ToggleCommand.cooldownMessages);
+ cooldownMessages.displayString = "Cooldown Messages: " + Utils.getColouredBoolean(ToggleCommand.cooldownMessages);
+ } else if (button == manaMessages) {
+ ToggleCommand.manaMessages = !ToggleCommand.manaMessages;
+ ConfigHandler.writeBooleanConfig("toggles", "ManaMessages", ToggleCommand.manaMessages);
+ manaMessages.displayString = "Mana Messages: " + Utils.getColouredBoolean(ToggleCommand.manaMessages);
} else if (button == lowHealthNotify) {
ToggleCommand.lowHealthNotifyToggled = !ToggleCommand.lowHealthNotifyToggled;
ConfigHandler.writeBooleanConfig("toggles", "LowHealthNotify", ToggleCommand.lowHealthNotifyToggled);
@@ -304,6 +351,34 @@ public class DankerGui extends GuiScreen {
ToggleCommand.stopSalvageStarredToggled = !ToggleCommand.stopSalvageStarredToggled;
ConfigHandler.writeBooleanConfig("toggles", "StopSalvageStarred", ToggleCommand.stopSalvageStarredToggled);
stopSalvageStarred.displayString = "Stop Salvaging Starred Items: " + Utils.getColouredBoolean(ToggleCommand.stopSalvageStarredToggled);
+ } else if (button == watcherReadyMessage) {
+ ToggleCommand.watcherReadyToggled = !ToggleCommand.watcherReadyToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "WatcherReadyMessage", ToggleCommand.watcherReadyToggled);
+ watcherReadyMessage.displayString = "Display Watcher Ready Message: " + Utils.getColouredBoolean(ToggleCommand.watcherReadyToggled);
+ } else if (button == notifySlayerSlain) {
+ ToggleCommand.notifySlayerSlainToggled = !ToggleCommand.notifySlayerSlainToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "NotifySlayerSlain", ToggleCommand.notifySlayerSlainToggled);
+ notifySlayerSlain.displayString = "Notify when Slayer Slain: " + Utils.getColouredBoolean(ToggleCommand.notifySlayerSlainToggled);
+ } else if (button == necronNotifications) {
+ ToggleCommand.necronNotificationsToggled = !ToggleCommand.necronNotificationsToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "NecronNotifications", ToggleCommand.necronNotificationsToggled);
+ necronNotifications.displayString = "Necron Phase Notifications: " + Utils.getColouredBoolean(ToggleCommand.necronNotificationsToggled);
+ } else if (button == bonzoTimer) {
+ ToggleCommand.bonzoTimerToggled = !ToggleCommand.bonzoTimerToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "BonzoTimer", ToggleCommand.bonzoTimerToggled);
+ bonzoTimer.displayString = "Bonzo's Mask Timer: " + Utils.getColouredBoolean(ToggleCommand.bonzoTimerToggled);
+ } else if (button == pickBlock) {
+ ToggleCommand.swapToPickBlockToggled = !ToggleCommand.swapToPickBlockToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "PickBlock", ToggleCommand.swapToPickBlockToggled);
+ pickBlock.displayString = "Auto-Swap to Pick Block: " + Utils.getColouredBoolean(ToggleCommand.swapToPickBlockToggled);
+ } else if (button == flowerWeapons) {
+ ToggleCommand.flowerWeaponsToggled = !ToggleCommand.flowerWeaponsToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "FlowerWeapons", ToggleCommand.flowerWeaponsToggled);
+ flowerWeapons.displayString = "Prevent Placing FoT/Spirit Sceptre: " + Utils.getColouredBoolean(ToggleCommand.flowerWeaponsToggled);
+ } else if (button == autoSkillTracker) {
+ ToggleCommand.autoSkillTrackerToggled = !ToggleCommand.autoSkillTrackerToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "AutoSkillTracker", ToggleCommand.autoSkillTrackerToggled);
+ autoSkillTracker.displayString = "Auto Start/Stop Skill Tracker: " + Utils.getColouredBoolean(ToggleCommand.autoSkillTrackerToggled);
}
}
diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java
index f498a67..2f704b3 100644
--- a/src/main/java/me/Danker/gui/DisplayGui.java
+++ b/src/main/java/me/Danker/gui/DisplayGui.java
@@ -15,7 +15,6 @@ public class DisplayGui extends GuiScreen {
private boolean addSession = false;
private GuiButton goBack;
- private GuiButton editLocations;
private GuiButton off;
private GuiButton showSession;
private GuiButton zombie;
@@ -49,7 +48,6 @@ public class DisplayGui extends GuiScreen {
int width = sr.getScaledWidth();
goBack = new GuiButton(0, 2, height - 30, 100, 20, "Go Back");
- editLocations = new GuiButton(0, 2, height - 55, 100, 20, "Edit Locations");
showSession = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Current Session Only: " + Utils.getColouredBoolean(addSession));
off = new GuiButton(0, width / 2 - 210, (int) (height * 0.2), "Off");
auto = new GuiButton(0, width / 2 + 10, (int) (height * 0.2), "Auto");
@@ -87,7 +85,6 @@ public class DisplayGui extends GuiScreen {
this.buttonList.add(catacombsF5);
this.buttonList.add(catacombsF6);
this.buttonList.add(catacombsF7);
- this.buttonList.add(editLocations);
this.buttonList.add(goBack);
}
@@ -116,8 +113,6 @@ public class DisplayGui extends GuiScreen {
public void actionPerformed(GuiButton button) {
if (button == goBack) {
DankersSkyblockMod.guiToOpen = "dankergui1";
- } else if (button == editLocations) {
- DankersSkyblockMod.guiToOpen = "editlocations";
} else if (button == showSession) {
addSession = !addSession;
showSession.displayString = "Current Session Only: " + Utils.getColouredBoolean(addSession);
diff --git a/src/main/java/me/Danker/gui/EditLocationsGui.java b/src/main/java/me/Danker/gui/EditLocationsGui.java
index 8519f1a..e3d6b73 100644
--- a/src/main/java/me/Danker/gui/EditLocationsGui.java
+++ b/src/main/java/me/Danker/gui/EditLocationsGui.java
@@ -26,6 +26,7 @@ public class EditLocationsGui extends GuiScreen {
private LocationButton cakeTimer;
private LocationButton skillTracker;
private LocationButton waterAnswer;
+ private LocationButton bonzoTimer;
@Override
public boolean doesGuiPauseGame() {
@@ -91,6 +92,8 @@ public class EditLocationsGui extends GuiScreen {
cakeTimer = new LocationButton(0, MoveCommand.cakeTimerXY[0], MoveCommand.cakeTimerXY[1] + 5, 85 * ScaleCommand.cakeTimerScale, 18 * ScaleCommand.cakeTimerScale, ScaleCommand.cakeTimerScale, DankersSkyblockMod.CAKE_COLOUR + " 11h16m", null, null);
skillTracker = new LocationButton(0, MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[1], 150 * ScaleCommand.skillTrackerScale, 28 * ScaleCommand.skillTrackerScale, ScaleCommand.skillTrackerScale, skillTrackerText, null, null);
waterAnswer = new LocationButton(0, MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], 190 * ScaleCommand.waterAnswerScale, 54 * ScaleCommand.waterAnswerScale, ScaleCommand.waterAnswerScale, waterAnswerText, null, null);
+ bonzoTimer = new LocationButton(0, MoveCommand.bonzoTimerXY[0], MoveCommand.bonzoTimerXY[1] + 5, 85 * ScaleCommand.bonzoTimerScale, 18 * ScaleCommand.bonzoTimerScale, ScaleCommand.bonzoTimerScale, DankersSkyblockMod.BONZO_COLOR + " 3m30s", null, null);
+
this.buttonList.add(coords);
this.buttonList.add(dungeonTimer);
@@ -98,6 +101,7 @@ public class EditLocationsGui extends GuiScreen {
this.buttonList.add(cakeTimer);
this.buttonList.add(skillTracker);
this.buttonList.add(waterAnswer);
+ this.buttonList.add(bonzoTimer);
this.buttonList.add(display);
this.buttonList.add(skill50);
}
@@ -107,13 +111,21 @@ public class EditLocationsGui extends GuiScreen {
this.drawDefaultBackground();
mouseMoved(mouseX, mouseY);
- double scale = ScaleCommand.cakeTimerScale;
- double scaleReset = Math.pow(scale, -1);
- GL11.glScaled(scale, scale, scale);
+ double cakeTimerScale = ScaleCommand.cakeTimerScale;
+ double cakeTimerScaleReset = Math.pow(cakeTimerScale, -1);
+ GL11.glScaled(cakeTimerScale, cakeTimerScale, cakeTimerScale);
mc.getTextureManager().bindTexture(DankersSkyblockMod.CAKE_ICON);
Gui.drawModalRectWithCustomSizedTexture(MoveCommand.cakeTimerXY[0], MoveCommand.cakeTimerXY[1], 0, 0, 16, 16, 16, 16);
- GL11.glScaled(scaleReset, scaleReset, scaleReset);
-
+ GL11.glScaled(cakeTimerScaleReset, cakeTimerScaleReset, cakeTimerScaleReset);
+
+ double bonzoTimerScale = ScaleCommand.bonzoTimerScale;
+ double bonzoTimerScaleReset = Math.pow(bonzoTimerScale, -1);
+ GL11.glScaled(bonzoTimerScale, bonzoTimerScale, bonzoTimerScale);
+ mc.getTextureManager().bindTexture(DankersSkyblockMod.BONZO_ICON);
+ Gui.drawModalRectWithCustomSizedTexture(MoveCommand.bonzoTimerXY[0], MoveCommand.bonzoTimerXY[1], 0, 0, 16, 16, 16, 16);
+ GL11.glScaled(bonzoTimerScaleReset, bonzoTimerScaleReset, bonzoTimerScaleReset);
+
+
super.drawScreen(mouseX, mouseY, partialTicks);
}
@@ -171,6 +183,12 @@ public class EditLocationsGui extends GuiScreen {
waterAnswer.xPosition = MoveCommand.waterAnswerXY[0];
waterAnswer.yPosition = MoveCommand.waterAnswerXY[1];
break;
+ case "bonzoTimer":
+ MoveCommand.bonzoTimerXY[0] += xMoved;
+ MoveCommand.bonzoTimerXY[1] += yMoved;
+ bonzoTimer.xPosition = MoveCommand.bonzoTimerXY[0];
+ bonzoTimer.yPosition = MoveCommand.bonzoTimerXY[1];
+ break;
}
this.buttonList.clear();
initGui();
@@ -199,6 +217,8 @@ public class EditLocationsGui extends GuiScreen {
moving = "skillTracker";
} else if (button == waterAnswer) {
moving = "waterAnswer";
+ } else if (button == bonzoTimer) {
+ moving = "bonzoTimer";
}
}
}
@@ -221,8 +241,10 @@ public class EditLocationsGui extends GuiScreen {
ConfigHandler.writeIntConfig("locations", "cakeTimerY", MoveCommand.cakeTimerXY[1]);
ConfigHandler.writeIntConfig("locations", "skillTrackerX", MoveCommand.skillTrackerXY[0]);
ConfigHandler.writeIntConfig("locations", "skillTrackerY", MoveCommand.skillTrackerXY[1]);
- ConfigHandler.writeIntConfig("locations", "waterAnswerX", MoveCommand.waterAnswerXY[1]);
+ ConfigHandler.writeIntConfig("locations", "waterAnswerX", MoveCommand.waterAnswerXY[0]);
ConfigHandler.writeIntConfig("locations", "waterAnswerY", MoveCommand.waterAnswerXY[1]);
+ ConfigHandler.writeIntConfig("locations", "bonzoTimerX", MoveCommand.bonzoTimerXY[0]);
+ ConfigHandler.writeIntConfig("locations", "bonzoTimerY", MoveCommand.bonzoTimerXY[1]);
}
}
diff --git a/src/main/java/me/Danker/gui/ExperimentsGui.java b/src/main/java/me/Danker/gui/ExperimentsGui.java
index b27ff16..c3f4f47 100644
--- a/src/main/java/me/Danker/gui/ExperimentsGui.java
+++ b/src/main/java/me/Danker/gui/ExperimentsGui.java
@@ -15,7 +15,7 @@ public class ExperimentsGui extends GuiScreen {
private GuiButton ultrasequencer;
private GuiButton chronomatron;
private GuiButton superpairs;
- private GuiButton pickBlock;
+ private GuiButton hideTooltips;
@Override
public boolean doesGuiPauseGame() {
@@ -34,14 +34,13 @@ public class ExperimentsGui extends GuiScreen {
ultrasequencer = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Ultrasequencer Solver: " + Utils.getColouredBoolean(ToggleCommand.ultrasequencerToggled));
chronomatron = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Chronomatron Solver: " + Utils.getColouredBoolean(ToggleCommand.chronomatronToggled));
superpairs = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Superpairs Solver: " + Utils.getColouredBoolean(ToggleCommand.superpairsToggled));
- pickBlock = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Auto-Swap to Pick Block: " + Utils.getColouredBoolean(ToggleCommand.swapToPickBlockInExperimentsToggled));
-
+ hideTooltips = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Hide Tooltips in Addons: " + Utils.getColouredBoolean(ToggleCommand.hideTooltipsInExperimentAddonsToggled));
this.buttonList.add(goBack);
this.buttonList.add(ultrasequencer);
this.buttonList.add(chronomatron);
this.buttonList.add(superpairs);
- this.buttonList.add(pickBlock);
+ this.buttonList.add(hideTooltips);
}
@Override
@@ -66,10 +65,10 @@ public class ExperimentsGui extends GuiScreen {
ToggleCommand.superpairsToggled = !ToggleCommand.superpairsToggled;
ConfigHandler.writeBooleanConfig("toggles", "Superpairs", ToggleCommand.superpairsToggled);
superpairs.displayString = "Superpairs Solver: " + Utils.getColouredBoolean(ToggleCommand.superpairsToggled);
- } else if (button == pickBlock) {
- ToggleCommand.swapToPickBlockInExperimentsToggled = !ToggleCommand.swapToPickBlockInExperimentsToggled;
- ConfigHandler.writeBooleanConfig("toggles", "PickBlockInExperiments", ToggleCommand.swapToPickBlockInExperimentsToggled);
- pickBlock.displayString = "Auto-Swap to Pick Block: " + Utils.getColouredBoolean(ToggleCommand.swapToPickBlockInExperimentsToggled);
+ } else if (button == hideTooltips) {
+ ToggleCommand.hideTooltipsInExperimentAddonsToggled = !ToggleCommand.hideTooltipsInExperimentAddonsToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "HideTooltipsInExperimentAddons", ToggleCommand.hideTooltipsInExperimentAddonsToggled);
+ hideTooltips.displayString = "Hide Tooltips in Addons: " + Utils.getColouredBoolean(ToggleCommand.hideTooltipsInExperimentAddonsToggled);
}
}
diff --git a/src/main/java/me/Danker/gui/OnlySlayerGui.java b/src/main/java/me/Danker/gui/OnlySlayerGui.java
index 89c701d..a3c8ffc 100644
--- a/src/main/java/me/Danker/gui/OnlySlayerGui.java
+++ b/src/main/java/me/Danker/gui/OnlySlayerGui.java
@@ -95,6 +95,7 @@ public class OnlySlayerGui extends GuiScreen {
public void actionPerformed(GuiButton button) {
if (button == goBack) {
DankersSkyblockMod.guiToOpen = "dankergui1";
+ return;
} else if (button == off) {
BlockSlayerCommand.onlySlayerName = "";
BlockSlayerCommand.onlySlayerNumber = "";
diff --git a/src/main/java/me/Danker/gui/PuzzleSolversGui.java b/src/main/java/me/Danker/gui/PuzzleSolversGui.java
index 8701563..17eb433 100644
--- a/src/main/java/me/Danker/gui/PuzzleSolversGui.java
+++ b/src/main/java/me/Danker/gui/PuzzleSolversGui.java
@@ -24,6 +24,8 @@ public class PuzzleSolversGui extends GuiScreen {
private GuiButton ticTacToe;
private GuiButton startsWith;
private GuiButton selectAll;
+ private GuiButton clickOrder;
+ private GuiButton blockClicks;
private GuiButton itemFrameOnSeaLanterns;
public PuzzleSolversGui(int page) {
@@ -57,7 +59,9 @@ public class PuzzleSolversGui extends GuiScreen {
startsWith = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Starts With Letter Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.startsWithToggled));
// Page 2
selectAll = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Select All Color Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.selectAllToggled));
- itemFrameOnSeaLanterns = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Ignore Arrows On Sea Lanterns: " + Utils.getColouredBoolean(ToggleCommand.itemFrameOnSeaLanternsToggled));
+ clickOrder = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Click in Order Terminal Helper: " + Utils.getColouredBoolean(ToggleCommand.clickInOrderToggled));
+ blockClicks = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Block Wrong Clicks on Terminals: " + Utils.getColouredBoolean(ToggleCommand.blockWrongTerminalClicksToggled));
+ itemFrameOnSeaLanterns = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Ignore Arrows On Sea Lanterns: " + Utils.getColouredBoolean(ToggleCommand.itemFrameOnSeaLanternsToggled));
switch (page) {
case 1:
@@ -72,6 +76,8 @@ public class PuzzleSolversGui extends GuiScreen {
break;
case 2:
this.buttonList.add(selectAll);
+ this.buttonList.add(clickOrder);
+ this.buttonList.add(blockClicks);
this.buttonList.add(itemFrameOnSeaLanterns);
this.buttonList.add(backPage);
break;
@@ -125,6 +131,14 @@ public class PuzzleSolversGui extends GuiScreen {
ToggleCommand.selectAllToggled = !ToggleCommand.selectAllToggled;
ConfigHandler.writeBooleanConfig("toggles", "SelectAllTerminal", ToggleCommand.selectAllToggled);
selectAll.displayString = "Select All Color Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.selectAllToggled);
+ } else if (button == clickOrder) {
+ ToggleCommand.clickInOrderToggled = !ToggleCommand.clickInOrderToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "ClickInOrderTerminal", ToggleCommand.clickInOrderToggled);
+ clickOrder.displayString = "Click in Order Terminal Helper: " + Utils.getColouredBoolean(ToggleCommand.clickInOrderToggled);
+ } else if (button == blockClicks) {
+ ToggleCommand.blockWrongTerminalClicksToggled = !ToggleCommand.blockWrongTerminalClicksToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "BlockWrongTerminalClicks", ToggleCommand.blockWrongTerminalClicksToggled);
+ blockClicks.displayString = "Block Wrong Clicks on Terminals: " + Utils.getColouredBoolean(ToggleCommand.blockWrongTerminalClicksToggled);
} else if (button == itemFrameOnSeaLanterns) {
ToggleCommand.itemFrameOnSeaLanternsToggled = !ToggleCommand.itemFrameOnSeaLanternsToggled;
ConfigHandler.writeBooleanConfig("toggles", "IgnoreItemFrameOnSeaLanterns", ToggleCommand.itemFrameOnSeaLanternsToggled);
diff --git a/src/main/java/me/Danker/gui/WarningGui.java b/src/main/java/me/Danker/gui/WarningGui.java
new file mode 100644
index 0000000..63b4710
--- /dev/null
+++ b/src/main/java/me/Danker/gui/WarningGui.java
@@ -0,0 +1,61 @@
+package me.Danker.gui;
+
+import akka.event.Logging;
+import me.Danker.handlers.TextRenderer;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiLabel;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+
+import javax.xml.soap.Text;
+import java.util.ArrayList;
+import java.util.List;
+
+public class WarningGui extends GuiScreen {
+ private GuiButton close;
+
+ public WarningGui(){
+
+ }
+
+ @Override
+ public boolean doesGuiPauseGame() {
+ return false;
+ }
+
+ @Override
+ public void initGui() {
+ super.initGui();
+
+ ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
+ int height = sr.getScaledHeight();
+ int width = sr.getScaledWidth();
+
+ close = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Close");
+
+ this.buttonList.add(close);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ String text0 = "§cWARNING!§0";
+ int text0Width = mc.fontRendererObj.getStringWidth(text0);
+ new TextRenderer(mc, text0, (int)(width * 0.45) - text0Width / 2, (int) (height * 0.1), 2 );
+ String text1 = "You are using SpiderFrog's Old Animations mod.";
+ int text1Width = mc.fontRendererObj.getStringWidth(text1);
+ new TextRenderer(mc, text1, width / 2 - text1Width / 2, (int) (height * 0.3), 1D );
+ String text2 = "This mod breaks Danker's Skyblock Mod.";
+ int text2Width = mc.fontRendererObj.getStringWidth(text2);
+ new TextRenderer(mc, text2, width / 2 - text2Width / 2, (int) (height * 0.4), 1D);
+ super.drawScreen(mouseX, mouseY, partialTicks);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button){
+ if(button == close) {
+ Minecraft.getMinecraft().displayGuiScreen(null);
+ }
+ }
+}
diff --git a/src/main/java/me/Danker/gui/WarningGuiRedirect.java b/src/main/java/me/Danker/gui/WarningGuiRedirect.java
new file mode 100644
index 0000000..78e6f18
--- /dev/null
+++ b/src/main/java/me/Danker/gui/WarningGuiRedirect.java
@@ -0,0 +1,28 @@
+package me.Danker.gui;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiMainMenu;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+
+public class WarningGuiRedirect extends GuiMainMenu {
+ public GuiScreen guiToShow;
+ private GuiButton close;
+
+ protected void keyTyped(char par1, int par2){}
+ public WarningGuiRedirect(GuiScreen g){
+ guiToShow = g;
+ }
+
+ public void initGui(){
+ super.initGui();
+ }
+
+
+ public void drawScreen(int par1, int par2, float par3){
+ super.drawScreen(par1, par2, par3);
+
+ mc.displayGuiScreen(guiToShow);
+ }
+}
diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java
index 23bd6c4..d5ab40b 100644
--- a/src/main/java/me/Danker/handlers/ConfigHandler.java
+++ b/src/main/java/me/Danker/handlers/ConfigHandler.java
@@ -177,21 +177,35 @@ public class ConfigHandler {
if (!hasKey("toggles", "SpiritBearAlerts")) writeBooleanConfig("toggles", "SpiritBearAlerts", true);
if (!hasKey("toggles", "AOTD")) writeBooleanConfig("toggles", "AOTD", false);
if (!hasKey("toggles", "LividDagger")) writeBooleanConfig("toggles", "LividDagger", false);
- if (!hasKey("toggles", "SceptreMessages")) writeBooleanConfig("toggles", "SceptreMessages", true);
if (!hasKey("toggles", "MidasStaffMessages")) writeBooleanConfig("toggles", "MidasStaffMessages", true);
if (!hasKey("toggles", "ImplosionMessages")) writeBooleanConfig("toggles", "ImplosionMessages", true);
if (!hasKey("toggles", "HealMessages")) writeBooleanConfig("toggles", "HealMessages", true);
if (!hasKey("toggles", "PetColors")) writeBooleanConfig("toggles", "PetColors", false);
- if (!hasKey("toggles", "DungeonTimer")) writeBooleanConfig("toggles", "DungeonTimer", false);
if (!hasKey("toggles", "BlockSlayer")) writeStringConfig("toggles", "BlockSlayer", "");
if (!hasKey("toggles", "GolemAlerts")) writeBooleanConfig("toggles", "GolemAlerts", false);
if (!hasKey("toggles", "ExpertiseLore")) writeBooleanConfig("toggles", "ExpertiseLore", true);
if (!hasKey("toggles", "Skill50Display")) writeBooleanConfig("toggles", "Skill50Display", false);
if (!hasKey("toggles", "OutlineText")) writeBooleanConfig("toggles", "OutlineText", false);
if (!hasKey("toggles", "CakeTimer")) writeBooleanConfig("toggles", "CakeTimer", false);
+ // Chat Messages
+ if (!hasKey("toggles", "SceptreMessages")) writeBooleanConfig("toggles", "SceptreMessages", true);
+ if (!hasKey("toggles", "MidasStaffMessages")) writeBooleanConfig("toggles", "MidasStaffMessages", true);
+ if (!hasKey("toggles", "ImplosionMessages")) writeBooleanConfig("toggles", "ImplosionMessages", true);
+ if (!hasKey("toggles", "HealMessages")) writeBooleanConfig("toggles", "HealMessages", true);
+ if (!hasKey("toggles", "CooldownMessages")) writeBooleanConfig("toggles","CooldownMessages",true);
+ if (!hasKey("toggles", "ManaMessages")) writeBooleanConfig("toggles","ManaMessages",true);
+ // Dungeons
+ if (!hasKey("toggles", "DungeonTimer")) writeBooleanConfig("toggles", "DungeonTimer", false);
if (!hasKey("toggles", "LowHealthNotify")) writeBooleanConfig("toggles", "LowHealthNotify", false);
if (!hasKey("toggles", "LividSolver")) writeBooleanConfig("toggles", "LividSolver", false);
if (!hasKey("toggles", "StopSalvageStarred")) writeBooleanConfig("toggles", "StopSalvageStarred", false);
+ if (!hasKey("toggles", "WatcherReadyMessage")) writeBooleanConfig("toggles", "WatcherReadyMessage", false);
+ if (!hasKey("toggles", "PickBlock")) writeBooleanConfig("toggles", "PickBlock", false);
+ if (!hasKey("toggles", "FlowerWeapons")) writeBooleanConfig("toggles", "FlowerWeapons", false);
+ if (!hasKey("toggles", "NotifySlayerSlain")) writeBooleanConfig("toggles", "NotifySlayerSlain", false);
+ if (!hasKey("toggles", "NecronNotifications")) writeBooleanConfig("toggles", "NecronNotifications", false);
+ if (!hasKey("toggles", "BonzoTimer")) writeBooleanConfig("toggles", "BonzoTimer", false);
+ if (!hasKey("toggles", "AutoSkillTracker")) writeBooleanConfig("toggles", "AutoSkillTracker", false);
// Puzzle Solvers
if (!hasKey("toggles", "ThreeManPuzzle")) writeBooleanConfig("toggles", "ThreeManPuzzle", false);
if (!hasKey("toggles", "OruoPuzzle")) writeBooleanConfig("toggles", "OruoPuzzle", false);
@@ -201,12 +215,14 @@ public class ConfigHandler {
if (!hasKey("toggles", "TicTacToePuzzle")) writeBooleanConfig("toggles", "TicTacToePuzzle", false);
if (!hasKey("toggles", "StartsWithTerminal")) writeBooleanConfig("toggles", "StartsWithTerminal", false);
if (!hasKey("toggles", "SelectAllTerminal")) writeBooleanConfig("toggles", "SelectAllTerminal", false);
+ if (!hasKey("toggles", "ClickInOrderTerminal")) writeBooleanConfig("toggles", "ClickInOrderTerminal", false);
+ if (!hasKey("toggles", "BlockWrongTerminalClicks")) writeBooleanConfig("toggles", "BlockWrongTerminalClicks", false);
if (!hasKey("toggles", "IgnoreItemFrameOnSeaLanterns")) writeBooleanConfig("toggles", "IgnoreItemFrameOnSeaLanterns", false);
+ // Experiment Solvers
if (!hasKey("toggles", "UltraSequencer")) writeBooleanConfig("toggles", "UltraSequencer", false);
if (!hasKey("toggles", "Chronomatron")) writeBooleanConfig("toggles", "Chronomatron", false);
if (!hasKey("toggles", "Superpairs")) writeBooleanConfig("toggles", "Superpairs", false);
- if (!hasKey("toggles", "PickBlockInExperiments")) writeBooleanConfig("toggles", "PickBlockInExperiments", false);
-
+ if (!hasKey("toggles", "HideTooltipsInExperimentAddons")) writeBooleanConfig("toggles", "HideTooltipsInExperimentAddons", false);
if (!hasKey("api", "APIKey")) writeStringConfig("api", "APIKey", "");
@@ -374,7 +390,8 @@ public class ConfigHandler {
if (!hasKey("misc", "skill50Time")) writeIntConfig("misc", "skill50Time", 3);
if (!hasKey("misc", "cakeTime")) writeDoubleConfig("misc", "cakeTime", 0);
if (!hasKey("misc", "showSkillTracker")) writeBooleanConfig("misc", "showSkillTracker", false);
-
+ if (!hasKey("misc", "firstLaunch")) writeBooleanConfig("misc", "firstLaunch", true);
+
ScaledResolution scaled = new ScaledResolution(Minecraft.getMinecraft());
int height = scaled.getScaledHeight();
if (!hasKey("locations", "coordsX")) writeIntConfig("locations", "coordsX", 5);
@@ -393,6 +410,8 @@ public class ConfigHandler {
if (!hasKey("locations", "skillTrackerY")) writeIntConfig("locations", "skillTrackerY", 50);
if (!hasKey("locations", "waterAnswerX")) writeIntConfig("locations", "waterAnswerX", 100);
if (!hasKey("locations", "waterAnswerY")) writeIntConfig("locations", "waterAnswerY", 100);
+ if (!hasKey("locations", "bonzoTimerX")) writeIntConfig("locations", "bonzoTimerX", 40);
+ if (!hasKey("locations", "bonzoTimerY")) writeIntConfig("locations", "bonzoTimerY", 80);
if (!hasKey("scales", "coordsScale")) writeDoubleConfig("scales", "coordsScale", 1);
if (!hasKey("scales", "displayScale")) writeDoubleConfig("scales", "displayScale", 1);
if (!hasKey("scales", "dungeonTimerScale")) writeDoubleConfig("scales", "dungeonTimerScale", 1);
@@ -401,10 +420,11 @@ public class ConfigHandler {
if (!hasKey("scales", "cakeTimerScale")) writeDoubleConfig("scales", "cakeTimerScale", 1);
if (!hasKey("scales", "skillTrackerScale")) writeDoubleConfig("scales", "skillTrackerScale", 1);
if (!hasKey("scales", "waterAnswerScale")) writeDoubleConfig("scales", "waterAnswerScale", 1);
-
+ if (!hasKey("scales", "bonzoTimerScale")) writeDoubleConfig("scales", "bonzoTimerScale", 1);
+
if (!hasKey("colors", "main")) writeStringConfig("colors", "main", EnumChatFormatting.GREEN.toString());
if (!hasKey("colors", "secondary")) writeStringConfig("colors", "secondary", EnumChatFormatting.DARK_GREEN.toString());
- if (!hasKey("colors", "delimiter")) writeStringConfig("colors", "delimiter", EnumChatFormatting.AQUA.toString());
+ if (!hasKey("colors", "delimiter")) writeStringConfig("colors", "delimiter", EnumChatFormatting.AQUA.toString() + EnumChatFormatting.STRIKETHROUGH.toString());
if (!hasKey("colors", "error")) writeStringConfig("colors", "error", EnumChatFormatting.RED.toString());
if (!hasKey("colors", "type")) writeStringConfig("colors", "type", EnumChatFormatting.GREEN.toString());
if (!hasKey("colors", "value")) writeStringConfig("colors", "value", EnumChatFormatting.DARK_GREEN.toString());
@@ -415,8 +435,29 @@ public class ConfigHandler {
if (!hasKey("colors", "cakeDisplay")) writeStringConfig("colors", "cakeDisplay", EnumChatFormatting.GOLD.toString());
if (!hasKey("colors", "skillTracker")) writeStringConfig("colors", "skillTracker", EnumChatFormatting.AQUA.toString());
if (!hasKey("colors", "triviaWrongAnswer")) writeStringConfig("colors", "triviaWrongAnswer", EnumChatFormatting.RED.toString());
+ if (!hasKey("colors", "bonzoDisplay")) writeStringConfig("colors", "bonzoDisplay", EnumChatFormatting.RED.toString());
if (!hasKey("colors", "blazeLowest")) writeIntConfig("colors", "blazeLowest", 0xFF0000);
if (!hasKey("colors", "blazeHighest")) writeIntConfig("colors", "blazeHighest", 0x40FF40);
+ if (!hasKey("colors", "pet1To9")) writeIntConfig("colors", "pet1To9", 0x999999); // Gray
+ if (!hasKey("colors", "pet10To19")) writeIntConfig("colors", "pet10To19", 0xD62440); // Red
+ if (!hasKey("colors", "pet20To29")) writeIntConfig("colors", "pet20To29", 0xEF5230); // Orange
+ if (!hasKey("colors", "pet30To39")) writeIntConfig("colors", "pet30To39", 0xFFC400); // Yellow
+ if (!hasKey("colors", "pet40To49")) writeIntConfig("colors", "pet40To49", 0x0EAC35); // Green
+ if (!hasKey("colors", "pet50To59")) writeIntConfig("colors", "pet50To59", 0x008AD8); // Light Blue
+ if (!hasKey("colors", "pet60To69")) writeIntConfig("colors", "pet60To69", 0x7E4FC6); // Purple
+ if (!hasKey("colors", "pet70To79")) writeIntConfig("colors", "pet70To79", 0xD64FC8); // Pink
+ if (!hasKey("colors", "pet80To89")) writeIntConfig("colors", "pet80To89", 0x5C1F35); // idk weird magenta
+ if (!hasKey("colors", "pet90To99")) writeIntConfig("colors", "pet90To99", 0x9E794E); // Brown
+ if (!hasKey("colors", "pet100")) writeIntConfig("colors", "pet100", 0xF2D249); // Gold
+ if (!hasKey("colors", "ultrasequencerNext")) writeIntConfig("colors", "ultrasequencerNext", 0x40FF40);
+ if (!hasKey("colors", "ultrasequencerNextToNext")) writeIntConfig("colors", "ultrasequencerNextToNext", 0x40DAE6);
+ if (!hasKey("colors", "chronomatronNext")) writeIntConfig("colors", "chronomatronNext", 0x40FF40);
+ if (!hasKey("colors", "chronomatronNextToNext")) writeIntConfig("colors", "chronomatronNextToNext", 0x40DAE6);
+ if (!hasKey("colors", "clickInOrderNext")) writeIntConfig("colors", "clickInOrderNext", 0xFF00DD);
+ if (!hasKey("colors", "clickInOrderNextToNext")) writeIntConfig("colors", "clickInOrderNextToNext", 0x0BEFE7);
+
+ // Commands
+ if (!hasKey("commands", "reparty")) writeBooleanConfig("commands", "reparty", false);
ToggleCommand.gpartyToggled = getBoolean("toggles", "GParty");
ToggleCommand.coordsToggled = getBoolean("toggles", "Coords");
@@ -428,20 +469,31 @@ public class ConfigHandler {
ToggleCommand.spiritBearAlerts = getBoolean("toggles", "SpiritBearAlerts");
ToggleCommand.aotdToggled = getBoolean("toggles", "AOTD");
ToggleCommand.lividDaggerToggled = getBoolean("toggles", "LividDagger");
- ToggleCommand.sceptreMessages = getBoolean("toggles", "SceptreMessages");
- ToggleCommand.midasStaffMessages = getBoolean("toggles", "MidasStaffMessages");
- ToggleCommand.implosionMessages = getBoolean("toggles", "ImplosionMessages");
- ToggleCommand.healMessages = getBoolean("toggles", "HealMessages");
ToggleCommand.petColoursToggled = getBoolean("toggles", "PetColors");
- ToggleCommand.dungeonTimerToggled = getBoolean("toggles", "DungeonTimer");
ToggleCommand.golemAlertToggled = getBoolean("toggles", "GolemAlerts");
ToggleCommand.expertiseLoreToggled = getBoolean("toggles", "ExpertiseLore");
ToggleCommand.skill50DisplayToggled = getBoolean("toggles", "Skill50Display");
ToggleCommand.outlineTextToggled = getBoolean("toggles", "OutlineText");
ToggleCommand.cakeTimerToggled = getBoolean("toggles", "CakeTimer");
+ // Chat Messages
+ ToggleCommand.sceptreMessages = getBoolean("toggles", "SceptreMessages");
+ ToggleCommand.midasStaffMessages = getBoolean("toggles", "MidasStaffMessages");
+ ToggleCommand.implosionMessages = getBoolean("toggles", "ImplosionMessages");
+ ToggleCommand.healMessages = getBoolean("toggles", "HealMessages");
+ ToggleCommand.cooldownMessages = getBoolean("toggles", "CooldownMessages");
+ ToggleCommand.manaMessages = getBoolean("toggles", "ManaMessages");
+ //Dungeons
+ ToggleCommand.dungeonTimerToggled = getBoolean("toggles", "DungeonTimer");
ToggleCommand.lowHealthNotifyToggled = getBoolean("toggles", "LowHealthNotify");
ToggleCommand.lividSolverToggled = getBoolean("toggles", "LividSolver");
ToggleCommand.stopSalvageStarredToggled = getBoolean("toggles", "StopSalvageStarred");
+ ToggleCommand.watcherReadyToggled = getBoolean("toggles", "WatcherReadyMessage");
+ ToggleCommand.notifySlayerSlainToggled = getBoolean("toggles", "NotifySlayerSlain");
+ ToggleCommand.necronNotificationsToggled = getBoolean("toggles", "NecronNotifications");
+ ToggleCommand.bonzoTimerToggled = getBoolean("toggles", "BonzoTimer");
+ ToggleCommand.swapToPickBlockToggled = getBoolean("toggles", "PickBlock");
+ ToggleCommand.flowerWeaponsToggled = getBoolean("toggles", "FlowerWeapons");
+ ToggleCommand.autoSkillTrackerToggled = getBoolean("toggles", "AutoSkillTracker");
// Puzzle Solvers
ToggleCommand.threeManToggled = getBoolean("toggles", "ThreeManPuzzle");
ToggleCommand.oruoToggled = getBoolean("toggles", "OruoPuzzle");
@@ -451,11 +503,14 @@ public class ConfigHandler {
ToggleCommand.ticTacToeToggled = getBoolean("toggles", "TicTacToePuzzle");
ToggleCommand.startsWithToggled = getBoolean("toggles", "StartsWithTerminal");
ToggleCommand.selectAllToggled = getBoolean("toggles", "SelectAllTerminal");
+ ToggleCommand.clickInOrderToggled = getBoolean("toggles", "ClickInOrderTerminal");
+ ToggleCommand.blockWrongTerminalClicksToggled = getBoolean("toggles", "BlockWrongTerminalClicks");
ToggleCommand.itemFrameOnSeaLanternsToggled = getBoolean("toggles", "IgnoreItemFrameOnSeaLanterns");
+ // Experiment Solvers
ToggleCommand.ultrasequencerToggled = getBoolean("toggles", "UltraSequencer");
ToggleCommand.chronomatronToggled = getBoolean("toggles", "Chronomatron");
ToggleCommand.superpairsToggled = getBoolean("toggles", "Superpairs");
- ToggleCommand.swapToPickBlockInExperimentsToggled = getBoolean("toggles", "PickBlockInExperiments");
+ ToggleCommand.hideTooltipsInExperimentAddonsToggled = getBoolean("toggles", "HideTooltipsInExperimentAddons");
String onlySlayer = getString("toggles", "BlockSlayer");
if (!onlySlayer.equals("")) {
@@ -540,7 +595,7 @@ public class ConfigHandler {
// Spooky Fishing
LootCommand.scarecrows = getInt("fishing", "scarecrow");
LootCommand.nightmares = getInt("fishing", "nightmare");
- LootCommand.werewolfs = getInt("fishing", "nightmare");
+ LootCommand.werewolfs = getInt("fishing", "werewolf");
LootCommand.phantomFishers = getInt("fishing", "phantomFisher");
LootCommand.grimReapers = getInt("fishing", "grimReaper");
@@ -628,7 +683,8 @@ public class ConfigHandler {
DankersSkyblockMod.SKILL_TIME = getInt("misc", "skill50Time") * 20;
DankersSkyblockMod.cakeTime = getDouble("misc", "cakeTime");
DankersSkyblockMod.showSkillTracker = getBoolean("misc", "showSkillTracker");
-
+ DankersSkyblockMod.firstLaunch = getBoolean("misc", "firstLaunch");
+
MoveCommand.coordsXY[0] = getInt("locations", "coordsX");
MoveCommand.coordsXY[1] = getInt("locations", "coordsY");
MoveCommand.displayXY[0] = getInt("locations", "displayX");
@@ -645,7 +701,10 @@ public class ConfigHandler {
MoveCommand.skillTrackerXY[1] = getInt("locations", "skillTrackerY");
MoveCommand.waterAnswerXY[0] = getInt("locations", "waterAnswerX");
MoveCommand.waterAnswerXY[1] = getInt("locations", "waterAnswerY");
-
+ MoveCommand.bonzoTimerXY[0] = getInt("locations", "bonzoTimerX");
+ MoveCommand.bonzoTimerXY[1] = getInt("locations", "bonzoTimerY");
+
+
ScaleCommand.coordsScale = getDouble("scales", "coordsScale");
ScaleCommand.displayScale = getDouble("scales", "displayScale");
ScaleCommand.dungeonTimerScale = getDouble("scales", "dungeonTimerScale");
@@ -654,6 +713,7 @@ public class ConfigHandler {
ScaleCommand.cakeTimerScale = getDouble("scales", "cakeTimerScale");
ScaleCommand.skillTrackerScale = getDouble("scales", "skillTrackerScale");
ScaleCommand.waterAnswerScale = getDouble("scales", "waterAnswerScale");
+ ScaleCommand.bonzoTimerScale = getDouble("scales", "bonzoTimerScale");
DankersSkyblockMod.MAIN_COLOUR = getString("colors", "main");
DankersSkyblockMod.SECONDARY_COLOUR = getString("colors", "secondary");
@@ -668,8 +728,26 @@ public class ConfigHandler {
DankersSkyblockMod.CAKE_COLOUR = getString("colors", "cakeDisplay");
DankersSkyblockMod.SKILL_TRACKER_COLOUR = getString("colors", "skillTracker");
DankersSkyblockMod.TRIVIA_WRONG_ANSWER_COLOUR = getString("colors", "triviaWrongAnswer");
+ DankersSkyblockMod.BONZO_COLOR = getString("colors", "bonzoDisplay");
DankersSkyblockMod.LOWEST_BLAZE_COLOUR = getInt("colors", "blazeLowest");
DankersSkyblockMod.HIGHEST_BLAZE_COLOUR = getInt("colors", "blazeHighest");
+ DankersSkyblockMod.PET_1_TO_9 = getInt("colors", "pet1To9");
+ DankersSkyblockMod.PET_10_TO_19 = getInt("colors", "pet10To19");
+ DankersSkyblockMod.PET_20_TO_29 = getInt("colors", "pet20To29");
+ DankersSkyblockMod.PET_30_TO_39 = getInt("colors", "pet30To39");
+ DankersSkyblockMod.PET_40_TO_49 = getInt("colors", "pet40To49");
+ DankersSkyblockMod.PET_50_TO_59 = getInt("colors", "pet50To59");
+ DankersSkyblockMod.PET_60_TO_69 = getInt("colors", "pet60To69");
+ DankersSkyblockMod.PET_70_TO_79 = getInt("colors", "pet70To79");
+ DankersSkyblockMod.PET_80_TO_89 = getInt("colors", "pet80To89");
+ DankersSkyblockMod.PET_90_TO_99 = getInt("colors", "pet90To99");
+ DankersSkyblockMod.PET_100 = getInt("colors", "pet100");
+ DankersSkyblockMod.ULTRASEQUENCER_NEXT = getInt("colors", "ultrasequencerNext");
+ DankersSkyblockMod.ULTRASEQUENCER_NEXT_TO_NEXT = getInt("colors", "ultrasequencerNextToNext");
+ DankersSkyblockMod.CHRONOMATRON_NEXT = getInt("colors", "chronomatronNext");
+ DankersSkyblockMod.CHRONOMATRON_NEXT_TO_NEXT = getInt("colors", "chronomatronNextToNext");
+ DankersSkyblockMod.CLICK_IN_ORDER_NEXT = getInt("colors", "clickInOrderNext");
+ DankersSkyblockMod.CLICK_IN_ORDER_NEXT_TO_NEXT = getInt("colors", "clickInOrderNextToNext");
}
}
diff --git a/src/main/java/me/Danker/handlers/ScoreboardHandler.java b/src/main/java/me/Danker/handlers/ScoreboardHandler.java
index b81689c..c8bc7c7 100644
--- a/src/main/java/me/Danker/handlers/ScoreboardHandler.java
+++ b/src/main/java/me/Danker/handlers/ScoreboardHandler.java
@@ -31,6 +31,7 @@ public class ScoreboardHandler {
public static List<String> getSidebarLines() {
List<String> lines = new ArrayList<>();
+ if (Minecraft.getMinecraft().theWorld == null) return lines;
Scoreboard scoreboard = Minecraft.getMinecraft().theWorld.getScoreboard();
if (scoreboard == null) return lines;
diff --git a/src/main/java/me/Danker/handlers/TextRenderer.java b/src/main/java/me/Danker/handlers/TextRenderer.java
index cbf196b..769d164 100644
--- a/src/main/java/me/Danker/handlers/TextRenderer.java
+++ b/src/main/java/me/Danker/handlers/TextRenderer.java
@@ -3,6 +3,7 @@ package me.Danker.handlers;
import me.Danker.commands.ToggleCommand;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
+import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.util.StringUtils;
import org.lwjgl.opengl.GL11;
@@ -26,5 +27,6 @@ public class TextRenderer extends Gui {
}
}
GL11.glScaled(scaleReset, scaleReset, scaleReset);
+ GlStateManager.color(1, 1, 1, 1);
}
}
diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java
index fbd8e4c..b7c2ddf 100644
--- a/src/main/java/me/Danker/utils/Utils.java
+++ b/src/main/java/me/Danker/utils/Utils.java
@@ -8,10 +8,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.network.NetworkPlayerInfo;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.RenderHelper;
-import net.minecraft.client.renderer.Tessellator;
-import net.minecraft.client.renderer.WorldRenderer;
+import net.minecraft.client.renderer.*;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.Entity;
@@ -20,13 +17,14 @@ import net.minecraft.entity.item.EntityItemFrame;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
import net.minecraft.scoreboard.ScoreObjective;
import net.minecraft.util.*;
import org.lwjgl.opengl.GL11;
import java.awt.*;
-import java.util.ArrayList;
-import java.util.Collection;
+import java.util.*;
import java.util.List;
import java.util.regex.Matcher;
@@ -64,7 +62,7 @@ public class Utils {
}
public static String returnGoldenEnchants(String line) {
- Matcher matcher = DankersSkyblockMod.pattern.matcher(line);
+ Matcher matcher = DankersSkyblockMod.t6EnchantPattern.matcher(line);
StringBuffer out = new StringBuffer();
while (matcher.find()) {
@@ -119,7 +117,15 @@ public class Utils {
drawHeight += mc.fontRendererObj.FONT_HEIGHT;
}
}
-
+
+ public static boolean isOnHypixel () {
+ Minecraft mc = Minecraft.getMinecraft();
+ if (mc != null && mc.theWorld != null && !mc.isSingleplayer()) {
+ return mc.getCurrentServerData().serverIP.toLowerCase().contains("hypixel");
+ }
+ return false;
+ }
+
public static void checkForSkyblock() {
Minecraft mc = Minecraft.getMinecraft();
if (mc != null && mc.theWorld != null && !mc.isSingleplayer()) {
@@ -263,7 +269,40 @@ public class Utils {
public static String getColouredBoolean(boolean bool) {
return bool ? EnumChatFormatting.GREEN + "On" : EnumChatFormatting.RED + "Off";
}
-
+
+ //Taken from SkyblockAddons
+ public static List<String> getItemLore(ItemStack itemStack) {
+ final int NBT_INTEGER = 3;
+ final int NBT_STRING = 8;
+ final int NBT_LIST = 9;
+ final int NBT_COMPOUND = 10;
+
+ if (itemStack.hasTagCompound() && itemStack.getTagCompound().hasKey("display", NBT_COMPOUND)) {
+ NBTTagCompound display = itemStack.getTagCompound().getCompoundTag("display");
+
+ if (display.hasKey("Lore", NBT_LIST)) {
+ NBTTagList lore = display.getTagList("Lore", NBT_STRING);
+
+ List<String> loreAsList = new ArrayList<>();
+ for (int lineNumber = 0; lineNumber < lore.tagCount(); lineNumber++) {
+ loreAsList.add(lore.getStringTagAt(lineNumber));
+ }
+
+ return Collections.unmodifiableList(loreAsList);
+ }
+ }
+
+ return Collections.emptyList();
+ }
+
+ public static boolean hasRightClickAbility(ItemStack itemStack) {
+ return Utils.getItemLore(itemStack).stream().anyMatch(line->{
+ String stripped = StringUtils.stripControlCodes(line);
+ return stripped.startsWith("Item Ability:") && stripped.endsWith("RIGHT CLICK");
+ });
+ }
+
+
public static void draw3DLine(Vec3 pos1, Vec3 pos2, int colourInt, float partialTicks) {
Entity render = Minecraft.getMinecraft().getRenderViewEntity();
WorldRenderer worldRenderer = Tessellator.getInstance().getWorldRenderer();
@@ -280,7 +319,7 @@ public class Utils {
GlStateManager.disableAlpha();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
GL11.glLineWidth(2);
- GlStateManager.color(colour.getRed() / 255f, colour.getGreen() / 255f, colour.getBlue()/ 255f, colour.getAlpha() / 255f);
+ GlStateManager.color(colour.getRed() / 255f, colour.getGreen() / 255f, colour.getBlue() / 255f, colour.getAlpha() / 255f);
worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
worldRenderer.pos(pos1.xCoord, pos1.yCoord, pos1.zCoord).endVertex();
@@ -371,6 +410,67 @@ public class Utils {
GlStateManager.popMatrix();
}
+ public static void drawFilled3DBox(AxisAlignedBB aabb, int colourInt, boolean translucent, float partialTicks) {
+ Entity render = Minecraft.getMinecraft().getRenderViewEntity();
+ WorldRenderer worldRenderer = Tessellator.getInstance().getWorldRenderer();
+ Color colour = new Color(colourInt);
+
+ double realX = render.lastTickPosX + (render.posX - render.lastTickPosX) * partialTicks;
+ double realY = render.lastTickPosY + (render.posY - render.lastTickPosY) * partialTicks;
+ double realZ = render.lastTickPosZ + (render.posZ - render.lastTickPosZ) * partialTicks;
+
+ GlStateManager.pushMatrix();
+ GlStateManager.pushAttrib();
+ GlStateManager.translate(-realX, -realY, -realZ);
+ GlStateManager.disableTexture2D();
+ GlStateManager.enableAlpha();
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(770, translucent ? 1 : 771, 1, 0);
+ GlStateManager.disableCull();
+ GlStateManager.color(colour.getRed() / 255f, colour.getGreen() / 255f, colour.getBlue() / 255f, colour.getAlpha() / 255f);
+ worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
+ // Bottom
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex();
+ // Top
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex();
+ // West
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex();
+ // East
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex();
+ // North
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
+ // South
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex();
+ Tessellator.getInstance().draw();
+
+ GlStateManager.translate(realX, realY, realZ);
+ GlStateManager.enableCull();
+ GlStateManager.disableAlpha();
+ GlStateManager.disableBlend();
+ GlStateManager.enableTexture2D();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.popAttrib();
+ GlStateManager.popMatrix();
+ }
+
public static void renderItem(ItemStack item, float x, float y, float z) {
GlStateManager.enableRescaleNormal();
diff --git a/src/main/resources/assets/dsm/icons/bonzo.png b/src/main/resources/assets/dsm/icons/bonzo.png
new file mode 100644
index 0000000..e9537b4
--- /dev/null
+++ b/src/main/resources/assets/dsm/icons/bonzo.png
Binary files differ