aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorCuzImClicks <bruno778.whiteelfie@gmail.com>2022-04-22 17:46:57 +0200
committerCuzImClicks <bruno778.whiteelfie@gmail.com>2022-04-22 17:46:57 +0200
commitbe49b91e35d939fc4afff8179af6c3405964c35c (patch)
tree08df99fad8c211a85a17f5b05c86e10501ec7f67 /src/main
parentb443b1840760300d6a58951829911025b57f1bfb (diff)
parentc9c0ea6a3e3382fd236345b89bd0991c8b8cbb17 (diff)
downloadSkyblockMod-be49b91e35d939fc4afff8179af6c3405964c35c.tar.gz
SkyblockMod-be49b91e35d939fc4afff8179af6c3405964c35c.tar.bz2
SkyblockMod-be49b91e35d939fc4afff8179af6c3405964c35c.zip
Merge remote-tracking branch 'upstream/development' into development
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/DefenitlyNotAJoikedInstallerFrame.java25
-rw-r--r--src/main/java/me/Danker/DankersSkyblockMod.java176
-rw-r--r--src/main/java/me/Danker/commands/ArmourCommand.java3
-rw-r--r--src/main/java/me/Danker/commands/BankCommand.java3
-rw-r--r--src/main/java/me/Danker/commands/BlockSlayerCommand.java111
-rw-r--r--src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java64
-rw-r--r--src/main/java/me/Danker/commands/CustomMusicCommand.java106
-rw-r--r--src/main/java/me/Danker/commands/DHelpCommand.java8
-rw-r--r--src/main/java/me/Danker/commands/DankerGuiCommand.java73
-rw-r--r--src/main/java/me/Danker/commands/DisplayCommand.java53
-rw-r--r--src/main/java/me/Danker/commands/DungeonsCommand.java294
-rw-r--r--src/main/java/me/Danker/commands/FairySoulsCommand.java5
-rw-r--r--src/main/java/me/Danker/commands/FarmLengthCommand.java52
-rw-r--r--src/main/java/me/Danker/commands/GuildOfCommand.java3
-rw-r--r--src/main/java/me/Danker/commands/HOTMCommand.java136
-rw-r--r--src/main/java/me/Danker/commands/HOTMTreeCommand.java151
-rw-r--r--src/main/java/me/Danker/commands/ImportFishingCommand.java344
-rw-r--r--src/main/java/me/Danker/commands/InventoryCommand.java164
-rw-r--r--src/main/java/me/Danker/commands/LobbyBankCommand.java5
-rw-r--r--src/main/java/me/Danker/commands/LobbySkillsCommand.java6
-rw-r--r--src/main/java/me/Danker/commands/LootCommand.java1000
-rw-r--r--src/main/java/me/Danker/commands/MoveCommand.java22
-rw-r--r--src/main/java/me/Danker/commands/PetsCommand.java11
-rw-r--r--src/main/java/me/Danker/commands/PlayerCommand.java16
-rw-r--r--src/main/java/me/Danker/commands/ReloadRepoCommand.java42
-rw-r--r--src/main/java/me/Danker/commands/ResetLootCommand.java395
-rw-r--r--src/main/java/me/Danker/commands/ScaleCommand.java17
-rw-r--r--src/main/java/me/Danker/commands/SkillsCommand.java5
-rw-r--r--src/main/java/me/Danker/commands/SkyblockPlayersCommand.java27
-rw-r--r--src/main/java/me/Danker/commands/SlayerCommand.java21
-rw-r--r--src/main/java/me/Danker/commands/ToggleCommand.java228
-rw-r--r--src/main/java/me/Danker/commands/WeightCommand.java265
-rw-r--r--src/main/java/me/Danker/containers/GuiChestDynamic.java45
-rw-r--r--src/main/java/me/Danker/events/ChestSlotClickedEvent.java8
-rw-r--r--src/main/java/me/Danker/events/PacketReadEvent.java16
-rw-r--r--src/main/java/me/Danker/events/PacketWriteEvent.java16
-rw-r--r--src/main/java/me/Danker/events/RenderOverlayEvent.java (renamed from src/main/java/me/Danker/events/RenderOverlay.java)2
-rw-r--r--src/main/java/me/Danker/features/AbilityCooldowns.java129
-rw-r--r--src/main/java/me/Danker/features/Alerts.java119
-rw-r--r--src/main/java/me/Danker/features/ArachneESP.java15
-rw-r--r--src/main/java/me/Danker/features/AutoAcceptReparty.java36
-rw-r--r--src/main/java/me/Danker/features/AutoDisplay.java69
-rw-r--r--src/main/java/me/Danker/features/AutoJoinSkyblock.java41
-rw-r--r--src/main/java/me/Danker/features/AutoSwapToPickBlock.java25
-rw-r--r--src/main/java/me/Danker/features/BlockPlacingFlowers.java45
-rw-r--r--src/main/java/me/Danker/features/BlockWrongSlayer.java42
-rw-r--r--src/main/java/me/Danker/features/BonzoMaskTimer.java5
-rw-r--r--src/main/java/me/Danker/features/CakeTimer.java4
-rw-r--r--src/main/java/me/Danker/features/ColouredNames.java178
-rw-r--r--src/main/java/me/Danker/features/CrystalHollowWaypoints.java204
-rw-r--r--src/main/java/me/Danker/features/CustomMusic.java224
-rw-r--r--src/main/java/me/Danker/features/DungeonScore.java200
-rw-r--r--src/main/java/me/Danker/features/DungeonTimer.java4
-rw-r--r--src/main/java/me/Danker/features/EndOfFarmAlert.java40
-rw-r--r--src/main/java/me/Danker/features/GemstonesLore.java77
-rw-r--r--src/main/java/me/Danker/features/GiantHPDisplay.java8
-rw-r--r--src/main/java/me/Danker/features/GolemSpawningAlert.java4
-rw-r--r--src/main/java/me/Danker/features/HidePlayerArmour.java51
-rw-r--r--src/main/java/me/Danker/features/HighlightSkeletonMasters.java3
-rw-r--r--src/main/java/me/Danker/features/NecronNotifications.java79
-rw-r--r--src/main/java/me/Danker/features/NoF3Coords.java4
-rw-r--r--src/main/java/me/Danker/features/PetColours.java24
-rw-r--r--src/main/java/me/Danker/features/Skill50Display.java60
-rw-r--r--src/main/java/me/Danker/features/SkillTracker.java183
-rw-r--r--src/main/java/me/Danker/features/SlayerESP.java21
-rw-r--r--src/main/java/me/Danker/features/SpiritBootsFix.java32
-rw-r--r--src/main/java/me/Danker/features/TetherDisplay.java4
-rw-r--r--src/main/java/me/Danker/features/UpdateChecker.java2
-rw-r--r--src/main/java/me/Danker/features/loot/BlazeTracker.java184
-rw-r--r--src/main/java/me/Danker/features/loot/CatacombsTracker.java725
-rw-r--r--src/main/java/me/Danker/features/loot/EndermanTracker.java178
-rw-r--r--src/main/java/me/Danker/features/loot/FishingTracker.java413
-rw-r--r--src/main/java/me/Danker/features/loot/GhostTracker.java60
-rw-r--r--src/main/java/me/Danker/features/loot/LootDisplay.java1294
-rw-r--r--src/main/java/me/Danker/features/loot/LootTracker.java1148
-rw-r--r--src/main/java/me/Danker/features/loot/MythologicalTracker.java101
-rw-r--r--src/main/java/me/Danker/features/loot/SpiderTracker.java110
-rw-r--r--src/main/java/me/Danker/features/loot/WolfTracker.java112
-rw-r--r--src/main/java/me/Danker/features/loot/ZombieTracker.java145
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/ArrowTerminalSolver.java55
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/BlazeSolver.java82
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java93
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/BoulderSolver.java3
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/ChronomatronSolver.java37
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/ClickInOrderSolver.java5
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java8
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/IceWalkSolver.java7
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java6
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java153
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/SelectAllColourSolver.java3
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/SilverfishSolver.java3
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/StartsWithSolver.java3
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/SuperpairsSolver.java5
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/TeleportPadSolver.java45
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java5
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/TicTacToeSolver.java3
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/UltrasequencerSolver.java30
-rw-r--r--src/main/java/me/Danker/features/puzzlesolvers/WaterSolver.java4
-rw-r--r--src/main/java/me/Danker/gui/CustomMusicGui.java133
-rw-r--r--src/main/java/me/Danker/gui/DankerGui.java130
-rw-r--r--src/main/java/me/Danker/gui/DisplayGui.java128
-rw-r--r--src/main/java/me/Danker/gui/EditLocationsGui.java41
-rw-r--r--src/main/java/me/Danker/gui/ExperimentsGui.java3
-rw-r--r--src/main/java/me/Danker/gui/OnlySlayerGui.java162
-rw-r--r--src/main/java/me/Danker/gui/PuzzleSolversGui.java55
-rw-r--r--src/main/java/me/Danker/gui/SkillTrackerGui.java10
-rw-r--r--src/main/java/me/Danker/gui/WarningGui.java17
-rw-r--r--src/main/java/me/Danker/gui/alerts/AlertActionGui.java91
-rw-r--r--src/main/java/me/Danker/gui/alerts/AlertAddGui.java154
-rw-r--r--src/main/java/me/Danker/gui/alerts/AlertsGui.java103
-rw-r--r--src/main/java/me/Danker/gui/buttons/LocationButton.java15
-rw-r--r--src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java118
-rw-r--r--src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java93
-rw-r--r--src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java150
-rw-r--r--src/main/java/me/Danker/handlers/APIHandler.java40
-rw-r--r--src/main/java/me/Danker/handlers/ConfigHandler.java513
-rw-r--r--src/main/java/me/Danker/handlers/PacketHandler.java33
-rw-r--r--src/main/java/me/Danker/utils/BoulderUtils.java20
-rw-r--r--src/main/java/me/Danker/utils/RenderUtils.java388
-rw-r--r--src/main/java/me/Danker/utils/Utils.java419
-rw-r--r--src/main/resources/assets/dsm/textures/generic_63.pngbin0 -> 870 bytes
121 files changed, 10282 insertions, 3404 deletions
diff --git a/src/main/java/DefenitlyNotAJoikedInstallerFrame.java b/src/main/java/DefenitlyNotAJoikedInstallerFrame.java
index bd5e218..9d19f5f 100644
--- a/src/main/java/DefenitlyNotAJoikedInstallerFrame.java
+++ b/src/main/java/DefenitlyNotAJoikedInstallerFrame.java
@@ -80,7 +80,7 @@ public class DefenitlyNotAJoikedInstallerFrame extends JFrame implements ActionL
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
DefenitlyNotAJoikedInstallerFrame frame = new DefenitlyNotAJoikedInstallerFrame();
frame.centerFrame(frame);
- frame.show();
+ frame.setVisible(true);
} catch (Exception ex) {
showErrorPopup(ex);
@@ -421,10 +421,7 @@ public class DefenitlyNotAJoikedInstallerFrame extends JFrame implements ActionL
File thisFile = getThisFile();
if (thisFile != null) {
- boolean inSubFolder = false;
- if (IN_MODS_SUBFOLDER.matcher(modsFolder.getPath()).find()) {
- inSubFolder = true;
- }
+ boolean inSubFolder = IN_MODS_SUBFOLDER.matcher(modsFolder.getPath()).find();
File newFile = new File(modsFolder, "Danker's Skyblock Mod - " + DankersSkyblockMod.VERSION + ".jar");
@@ -627,24 +624,6 @@ public class DefenitlyNotAJoikedInstallerFrame extends JFrame implements ActionL
JOptionPane.showMessageDialog(null, errorScrollPane, "Error", JOptionPane.ERROR_MESSAGE);
}
- private String getVersionFromMcmodInfo() {
- String version = "";
- try {
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Objects.requireNonNull(getClass().
- getClassLoader().getResourceAsStream("mcmod.info"), "mcmod.info not found.")));
- while ((version = bufferedReader.readLine()) != null) {
- if (version.contains("\"version\": \"")) {
- version = version.split(Pattern.quote("\"version\": \""))[1];
- version = version.substring(0, version.length() - 2);
- break;
- }
- }
- } catch (Exception ex) {
- // It's okay, I guess just don't use the version lol.
- }
- return version;
- }
-
private String getModIDFromInputStream(InputStream inputStream) {
String version = "";
try {
diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java
index d26736b..6fa1995 100644
--- a/src/main/java/me/Danker/DankersSkyblockMod.java
+++ b/src/main/java/me/Danker/DankersSkyblockMod.java
@@ -5,15 +5,14 @@ import me.Danker.commands.*;
import me.Danker.commands.warp.*;
import me.Danker.events.ChestSlotClickedEvent;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.features.*;
-import me.Danker.features.loot.LootDisplay;
-import me.Danker.features.loot.LootTracker;
+import me.Danker.features.loot.*;
import me.Danker.features.puzzlesolvers.*;
import me.Danker.gui.*;
-import me.Danker.handlers.APIHandler;
import me.Danker.handlers.ConfigHandler;
import me.Danker.handlers.PacketHandler;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
@@ -60,16 +59,18 @@ import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.IOException;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
@Mod(modid = DankersSkyblockMod.MODID, version = DankersSkyblockMod.VERSION, clientSideOnly = true)
public class DankersSkyblockMod {
public static final String MODID = "Danker's Skyblock Mod";
- public static final String VERSION = "1.8.7-beta1";
+ public static final String VERSION = "1.8.7-beta5";
public static int titleTimer = -1;
public static boolean showTitle = false;
public static String titleText = "";
public static int tickAmount = 1;
+ public static int repoTickAmount = 1;
public static KeyBinding[] keyBindings = new KeyBinding[3];
public static boolean usingLabymod = false;
public static boolean usingOAM = false;
@@ -78,6 +79,15 @@ public class DankersSkyblockMod {
public static boolean firstLaunch = false;
public static String configDirectory;
public static JsonObject data = null;
+
+ public static int farmingLevel;
+ public static int miningLevel;
+ public static int combatLevel;
+ public static int foragingLevel;
+ public static int fishingLevel;
+ public static int enchantingLevel;
+ public static int alchemyLevel;
+ public static int carpentryLevel;
public static String MAIN_COLOUR;
public static String SECONDARY_COLOUR;
@@ -91,37 +101,50 @@ public class DankersSkyblockMod {
@EventHandler
public void init(FMLInitializationEvent event) throws UnsupportedAudioFileException, IOException, LineUnavailableException {
MinecraftForge.EVENT_BUS.register(this);
+ MinecraftForge.EVENT_BUS.register(new AbilityCooldowns());
+ MinecraftForge.EVENT_BUS.register(new Alerts());
MinecraftForge.EVENT_BUS.register(new ArachneESP());
+ MinecraftForge.EVENT_BUS.register(new ArrowTerminalSolver());
+ MinecraftForge.EVENT_BUS.register(new AutoAcceptReparty());
MinecraftForge.EVENT_BUS.register(new AutoDisplay());
+ MinecraftForge.EVENT_BUS.register(new AutoJoinSkyblock());
MinecraftForge.EVENT_BUS.register(new AutoSwapToPickBlock());
MinecraftForge.EVENT_BUS.register(new BlazeSolver());
+ MinecraftForge.EVENT_BUS.register(new BlockPlacingFlowers());
+ MinecraftForge.EVENT_BUS.register(new BlockWrongSlayer());
+ MinecraftForge.EVENT_BUS.register(new BlockWrongTerminalClicks());
MinecraftForge.EVENT_BUS.register(new BonzoMaskTimer());
MinecraftForge.EVENT_BUS.register(new BoulderSolver());
MinecraftForge.EVENT_BUS.register(new CakeTimer());
MinecraftForge.EVENT_BUS.register(new ChronomatronSolver());
MinecraftForge.EVENT_BUS.register(new ClickInOrderSolver());
+ MinecraftForge.EVENT_BUS.register(new ColouredNames());
MinecraftForge.EVENT_BUS.register(new CreeperSolver());
+ MinecraftForge.EVENT_BUS.register(new CrystalHollowWaypoints());
MinecraftForge.EVENT_BUS.register(new CustomMusic());
+ MinecraftForge.EVENT_BUS.register(new DungeonScore());
MinecraftForge.EVENT_BUS.register(new DungeonTimer());
+ MinecraftForge.EVENT_BUS.register(new EndOfFarmAlert());
MinecraftForge.EVENT_BUS.register(new ExpertiseLore());
MinecraftForge.EVENT_BUS.register(new FasterMaddoxCalling());
+ MinecraftForge.EVENT_BUS.register(new GemstonesLore());
MinecraftForge.EVENT_BUS.register(new GiantHPDisplay());
MinecraftForge.EVENT_BUS.register(new GoldenEnchants());
MinecraftForge.EVENT_BUS.register(new GolemSpawningAlert());
MinecraftForge.EVENT_BUS.register(new GpartyNotifications());
MinecraftForge.EVENT_BUS.register(new HidePetCandy());
+ MinecraftForge.EVENT_BUS.register(new HidePlayerArmour());
MinecraftForge.EVENT_BUS.register(new HideTooltipsInExperiments());
MinecraftForge.EVENT_BUS.register(new HighlightSkeletonMasters());
MinecraftForge.EVENT_BUS.register(new IceWalkSolver());
MinecraftForge.EVENT_BUS.register(new LividSolver());
- MinecraftForge.EVENT_BUS.register(new LootDisplay());
- MinecraftForge.EVENT_BUS.register(new LootTracker());
MinecraftForge.EVENT_BUS.register(new LowHealthNotifications());
MinecraftForge.EVENT_BUS.register(new NecronNotifications());
MinecraftForge.EVENT_BUS.register(new NoF3Coords());
MinecraftForge.EVENT_BUS.register(new NotifySlayerSlain());
MinecraftForge.EVENT_BUS.register(new PetColours());
MinecraftForge.EVENT_BUS.register(new Reparty());
+ MinecraftForge.EVENT_BUS.register(new SameColourSolver());
MinecraftForge.EVENT_BUS.register(new SelectAllColourSolver());
MinecraftForge.EVENT_BUS.register(new SilverfishSolver());
MinecraftForge.EVENT_BUS.register(new Skill50Display());
@@ -129,6 +152,7 @@ public class DankersSkyblockMod {
MinecraftForge.EVENT_BUS.register(new SlayerESP());
MinecraftForge.EVENT_BUS.register(new SpamHider());
MinecraftForge.EVENT_BUS.register(new SpiritBearAlert());
+ MinecraftForge.EVENT_BUS.register(new SpiritBootsFix());
MinecraftForge.EVENT_BUS.register(new StartsWithSolver());
MinecraftForge.EVENT_BUS.register(new StopSalvagingStarredItems());
MinecraftForge.EVENT_BUS.register(new SuperpairsSolver());
@@ -140,13 +164,26 @@ public class DankersSkyblockMod {
MinecraftForge.EVENT_BUS.register(new UpdateChecker());
MinecraftForge.EVENT_BUS.register(new WatcherReadyAlert());
MinecraftForge.EVENT_BUS.register(new WaterSolver());
-
MinecraftForge.EVENT_BUS.register(new HighlightCommissions());
+ MinecraftForge.EVENT_BUS.register(new LootDisplay());
+ MinecraftForge.EVENT_BUS.register(new LootTracker());
+ MinecraftForge.EVENT_BUS.register(new BlazeTracker());
+ MinecraftForge.EVENT_BUS.register(new CatacombsTracker());
+ MinecraftForge.EVENT_BUS.register(new EndermanTracker());
+ MinecraftForge.EVENT_BUS.register(new FishingTracker());
+ MinecraftForge.EVENT_BUS.register(new GhostTracker());
+ MinecraftForge.EVENT_BUS.register(new MythologicalTracker());
+ MinecraftForge.EVENT_BUS.register(new SpiderTracker());
+ MinecraftForge.EVENT_BUS.register(new WolfTracker());
+ MinecraftForge.EVENT_BUS.register(new ZombieTracker());
+
+ Alerts.configFile = configDirectory + "/dsmalerts.json";
ConfigHandler.reloadConfig();
GoldenEnchants.init();
TriviaSolver.init();
CustomMusic.init(configDirectory);
+ GemstonesLore.init();
keyBindings[0] = new KeyBinding("Open Maddox Menu", Keyboard.KEY_M, "Danker's Skyblock Mod");
keyBindings[1] = new KeyBinding("Regular Ability", Keyboard.KEY_NUMPAD4, "Danker's Skyblock Mod");
@@ -156,24 +193,27 @@ public class DankersSkyblockMod {
ClientRegistry.registerKeyBinding(keyBinding);
}
- new Thread(() -> {
- DankersSkyblockMod.data = APIHandler.getResponse("https://raw.githubusercontent.com/bowser0000/SkyblockMod-REPO/main/data.json");
- System.out.println("Loaded data from GitHub?: " + (DankersSkyblockMod.data != null && DankersSkyblockMod.data.has("trivia")));
- }).start();
+ new Thread(Utils::refreshRepo).start();
}
@EventHandler
public void preInit(final FMLPreInitializationEvent event) {
ClientCommandHandler.instance.registerCommand(new ArmourCommand());
ClientCommandHandler.instance.registerCommand(new BankCommand());
+ ClientCommandHandler.instance.registerCommand(new BlockSlayerCommand());
ClientCommandHandler.instance.registerCommand(new CustomMusicCommand());
+ ClientCommandHandler.instance.registerCommand(new CrystalHollowWaypointCommand());
ClientCommandHandler.instance.registerCommand(new DHelpCommand());
ClientCommandHandler.instance.registerCommand(new DankerGuiCommand());
ClientCommandHandler.instance.registerCommand(new DisplayCommand());
ClientCommandHandler.instance.registerCommand(new FairySoulsCommand());
+ ClientCommandHandler.instance.registerCommand(new FarmLengthCommand());
ClientCommandHandler.instance.registerCommand(new GetkeyCommand());
ClientCommandHandler.instance.registerCommand(new GuildOfCommand());
+ ClientCommandHandler.instance.registerCommand(new HOTMCommand());
+ ClientCommandHandler.instance.registerCommand(new HOTMTreeCommand());
ClientCommandHandler.instance.registerCommand(new ImportFishingCommand());
+ ClientCommandHandler.instance.registerCommand(new InventoryCommand());
ClientCommandHandler.instance.registerCommand(new LobbyBankCommand());
ClientCommandHandler.instance.registerCommand(new LobbySkillsCommand());
ClientCommandHandler.instance.registerCommand(new LootCommand());
@@ -181,6 +221,7 @@ public class DankersSkyblockMod {
ClientCommandHandler.instance.registerCommand(new PetsCommand());
ClientCommandHandler.instance.registerCommand(new PlayerCommand());
ClientCommandHandler.instance.registerCommand(new ReloadConfigCommand());
+ ClientCommandHandler.instance.registerCommand(new ReloadRepoCommand());
ClientCommandHandler.instance.registerCommand(new ResetLootCommand());
ClientCommandHandler.instance.registerCommand(new ScaleCommand());
ClientCommandHandler.instance.registerCommand(new SetkeyCommand());
@@ -189,6 +230,7 @@ public class DankersSkyblockMod {
ClientCommandHandler.instance.registerCommand(new SkyblockPlayersCommand());
ClientCommandHandler.instance.registerCommand(new SlayerCommand());
ClientCommandHandler.instance.registerCommand(new ToggleCommand());
+ ClientCommandHandler.instance.registerCommand(new WeightCommand());
ClientCommandHandler.instance.registerCommand(new Crypt());
ClientCommandHandler.instance.registerCommand(new DarkAuction());
@@ -271,12 +313,47 @@ public class DankersSkyblockMod {
@SubscribeEvent
public void onChat(ClientChatReceivedEvent event) {
- String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+ 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));
+ } else if (Utils.inSkyblock && !message.contains(":") && message.contains(" SKILL LEVEL UP ")) {
+ // Handle skill level ups
+ String skill = message.substring(message.indexOf("UP") + 3, message.lastIndexOf(" "));
+ int level = Utils.getIntFromString(message.substring(message.indexOf("➜") + 1), true);
+
+ switch (skill) {
+ case "Farming":
+ DankersSkyblockMod.farmingLevel = level;
+ break;
+ case "Mining":
+ DankersSkyblockMod.miningLevel = level;
+ break;
+ case "Combat":
+ DankersSkyblockMod.combatLevel = level;
+ break;
+ case "Foraging":
+ DankersSkyblockMod.foragingLevel = level;
+ break;
+ case "Fishing":
+ DankersSkyblockMod.fishingLevel = level;
+ break;
+ case "Enchanting":
+ DankersSkyblockMod.enchantingLevel = level;
+ break;
+ case "Alchemy":
+ DankersSkyblockMod.alchemyLevel = level;
+ break;
+ case "Carpentry":
+ DankersSkyblockMod.carpentryLevel = level;
+ break;
+ default:
+ System.err.println("Unknown skill leveled up.");
+ }
+
+ ConfigHandler.writeIntConfig("skills", skill.toLowerCase(Locale.US), level);
}
}
@@ -286,7 +363,7 @@ public class DankersSkyblockMod {
if (event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE && event.type != RenderGameOverlayEvent.ElementType.JUMPBAR)
return;
if (Minecraft.getMinecraft().currentScreen instanceof EditLocationsGui) return;
- MinecraftForge.EVENT_BUS.post(new RenderOverlay());
+ MinecraftForge.EVENT_BUS.post(new RenderOverlayEvent());
}
// LabyMod Support
@@ -295,13 +372,13 @@ public class DankersSkyblockMod {
if (!usingLabymod) return;
if (event.type != null) return;
if (Minecraft.getMinecraft().currentScreen instanceof EditLocationsGui) return;
- MinecraftForge.EVENT_BUS.post(new RenderOverlay());
+ MinecraftForge.EVENT_BUS.post(new RenderOverlayEvent());
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (showTitle) {
- Utils.drawTitle(titleText);
+ RenderUtils.drawTitle(titleText);
}
}
@@ -309,24 +386,55 @@ public class DankersSkyblockMod {
public void onTick(TickEvent.ClientTickEvent event) {
if (event.phase != Phase.START) return;
- EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
tickAmount++;
if (tickAmount % 20 == 0) {
+ repoTickAmount++;
if (player != null) {
Utils.checkForSkyblock();
Utils.checkForDungeons();
+ Utils.checkForDungeonFloor();
+ Utils.checkTabLocation();
}
tickAmount = 0;
}
+ if (repoTickAmount % 3601 == 0) {
+ // I didn't want to change everything so I just made a new tick variable
+ new Thread(Utils::refreshRepo).start();
+ repoTickAmount = 1;
+ }
+
if (titleTimer >= 0) {
if (titleTimer == 0) {
showTitle = false;
}
titleTimer--;
}
+
+ // New skill level detection
+ if (mc.currentScreen instanceof GuiChest && tickAmount % 5 == 0 && player != null) {
+ ContainerChest chest = (ContainerChest) player.openContainer;
+ String chestName = chest.getLowerChestInventory().getDisplayName().getUnformattedText().trim();
+
+ if (chestName.equals("Your Skills")) {
+ List<Slot> invSlots = ((GuiChest) mc.currentScreen).inventorySlots.inventorySlots;
+
+ farmingLevel = Utils.initializeSkill(invSlots.get(19).getStack(), "farming");
+ miningLevel = Utils.initializeSkill(invSlots.get(20).getStack(), "mining");
+ combatLevel = Utils.initializeSkill(invSlots.get(21).getStack(), "combat");
+ foragingLevel = Utils.initializeSkill(invSlots.get(22).getStack(), "foraging");
+ fishingLevel = Utils.initializeSkill(invSlots.get(23).getStack(), "fishing");
+ enchantingLevel = Utils.initializeSkill(invSlots.get(24).getStack(), "enchanting");
+ alchemyLevel = Utils.initializeSkill(invSlots.get(25).getStack(), "alchemy");
+ carpentryLevel = Utils.initializeSkill(invSlots.get(29).getStack(), "carpentry");
+
+ System.out.println("Updated skill levels.");
+ }
+ }
}
// Delay GUI by 1 tick
@@ -342,20 +450,11 @@ public class DankersSkyblockMod {
case "displaygui":
mc.displayGuiScreen(new DisplayGui());
break;
- case "editlocations":
- mc.displayGuiScreen(new EditLocationsGui());
- break;
- case "puzzlesolvers":
- mc.displayGuiScreen(new PuzzleSolversGui(1));
- break;
- case "experimentsolvers":
- mc.displayGuiScreen(new ExperimentsGui());
+ case "inventory":
+ mc.displayGuiScreen(InventoryCommand.chest);
break;
- case "skilltracker":
- mc.displayGuiScreen(new SkillTrackerGui());
- break;
- case "custommusic":
- mc.displayGuiScreen(new CustomMusicGui());
+ case "hotminventory":
+ mc.displayGuiScreen(HOTMTreeCommand.chest);
break;
}
}
@@ -377,11 +476,17 @@ public class DankersSkyblockMod {
@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 == InventoryCommand.chest || event.gui == HOTMTreeCommand.chest) {
+ event.setCanceled(true);
+ return;
+ }
+
+ if (!Utils.inSkyblock) return;
+
if (event.gui instanceof GuiChest) {
Container containerChest = ((GuiChest) event.gui).inventorySlots;
if (containerChest instanceof ContainerChest) {
@@ -392,11 +497,8 @@ public class DankersSkyblockMod {
if (slot == null) return;
ItemStack item = slot.getStack();
String inventoryName = inventory.getDisplayName().getUnformattedText();
- if (item == null) {
- if (MinecraftForge.EVENT_BUS.post(new ChestSlotClickedEvent(chest, inventory, inventoryName, slot))) event.setCanceled(true);
- } else {
- if (MinecraftForge.EVENT_BUS.post(new ChestSlotClickedEvent(chest, inventory, inventoryName, slot, item))) event.setCanceled(true);
- }
+
+ if (MinecraftForge.EVENT_BUS.post(new ChestSlotClickedEvent(chest, inventory, inventoryName, slot, item))) event.setCanceled(true);
}
}
}
diff --git a/src/main/java/me/Danker/commands/ArmourCommand.java b/src/main/java/me/Danker/commands/ArmourCommand.java
index 4597309..e9a20ee 100644
--- a/src/main/java/me/Danker/commands/ArmourCommand.java
+++ b/src/main/java/me/Danker/commands/ArmourCommand.java
@@ -67,6 +67,7 @@ public class ArmourCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
@@ -88,7 +89,7 @@ public class ArmourCommand extends CommandBase {
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
- JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
diff --git a/src/main/java/me/Danker/commands/BankCommand.java b/src/main/java/me/Danker/commands/BankCommand.java
index ddf9502..e4a8eee 100644
--- a/src/main/java/me/Danker/commands/BankCommand.java
+++ b/src/main/java/me/Danker/commands/BankCommand.java
@@ -62,6 +62,7 @@ public class BankCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
@@ -83,7 +84,7 @@ public class BankCommand extends CommandBase {
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
- JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Failed with reason: " + reason));
diff --git a/src/main/java/me/Danker/commands/BlockSlayerCommand.java b/src/main/java/me/Danker/commands/BlockSlayerCommand.java
new file mode 100644
index 0000000..37047c9
--- /dev/null
+++ b/src/main/java/me/Danker/commands/BlockSlayerCommand.java
@@ -0,0 +1,111 @@
+package me.Danker.commands;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.features.BlockWrongSlayer;
+import me.Danker.handlers.ConfigHandler;
+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 BlockSlayerCommand extends CommandBase {
+
+ @Override
+ public String getCommandName() {
+ return "onlyslayer";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName() + " <zombie/spider/wolf/enderman/blaze> <1/2/3/4/5>";
+ }
+
+ public static String usage(ICommandSender arg0) {
+ return new BlockSlayerCommand().getCommandUsage(arg0);
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
+ if (args.length == 1) {
+ return getListOfStringsMatchingLastWord(args, "zombie", "spider", "wolf", "enderman", "blaze");
+ } else if (args.length == 2) {
+ return getListOfStringsMatchingLastWord(args, "1", "2", "3", "4", "5");
+ }
+ return null;
+ }
+
+ @Override
+ public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
+ final EntityPlayer player = (EntityPlayer)arg0;
+
+ if (arg1.length == 0 || (arg1.length == 1 && !arg1[0].equalsIgnoreCase("off"))) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
+ return;
+ }
+
+ switch (arg1[0].toLowerCase()) {
+ case "zombie":
+ BlockWrongSlayer.onlySlayerName = "Revenant Horror";
+ break;
+ case "spider":
+ BlockWrongSlayer.onlySlayerName = "Tarantula Broodfather";
+ break;
+ case "wolf":
+ BlockWrongSlayer.onlySlayerName = "Sven Packmaster";
+ break;
+ case "enderman":
+ BlockWrongSlayer.onlySlayerName = "Voidgloom Seraph";
+ break;
+ case "blaze":
+ BlockWrongSlayer.onlySlayerName = "Inferno Demonlord";
+ break;
+ case "off":
+ BlockWrongSlayer.onlySlayerName = "";
+ BlockWrongSlayer.onlySlayerNumber = "";
+ ConfigHandler.writeStringConfig("toggles", "BlockSlayer", "");
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Slayer blocking turned off."));
+ return;
+ default:
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
+ return;
+ }
+
+ int slayerNumber = Integer.parseInt(arg1[1]);
+ // Just manually set to roman numeral, I don't wanna put a whole converter in here
+ switch (slayerNumber) {
+ case 1:
+ BlockWrongSlayer.onlySlayerNumber = "I";
+ break;
+ case 2:
+ BlockWrongSlayer.onlySlayerNumber = "II";
+ break;
+ case 3:
+ BlockWrongSlayer.onlySlayerNumber = "III";
+ break;
+ case 4:
+ BlockWrongSlayer.onlySlayerNumber = "IV";
+ break;
+ case 5:
+ BlockWrongSlayer.onlySlayerNumber = "V";
+ break;
+ default:
+ BlockWrongSlayer.onlySlayerName = "";
+ BlockWrongSlayer.onlySlayerNumber = "";
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
+ return;
+ }
+
+ ConfigHandler.writeStringConfig("toggles", "BlockSlayer", BlockWrongSlayer.onlySlayerName + " " + BlockWrongSlayer.onlySlayerNumber);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Slayer blocking set to " + DankersSkyblockMod.SECONDARY_COLOUR + BlockWrongSlayer.onlySlayerName + " " + BlockWrongSlayer.onlySlayerNumber));
+ }
+
+}
diff --git a/src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java b/src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java
new file mode 100644
index 0000000..f5dea9b
--- /dev/null
+++ b/src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java
@@ -0,0 +1,64 @@
+package me.Danker.commands;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.features.CrystalHollowWaypoints;
+import net.minecraft.client.Minecraft;
+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;
+
+public class CrystalHollowWaypointCommand extends CommandBase {
+
+ @Override
+ public String getCommandName() {
+ return "dsmaddcrystalhollowwaypoints";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName() + " <formatted waypoint>";
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
+ if (arg1.length == 0) return;
+ addWaypoints(String.join(" ", arg1), false);
+ }
+
+ public static void addWaypoints(String list, boolean auto) {
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+ String[] waypoints = list.split("\\\\n");
+
+ for (String waypoint : waypoints) {
+ String[] parts = waypoint.split("@-");
+ String[] coords = parts[1].split(",");
+
+ String location = parts[0];
+ BlockPos pos = new BlockPos(Integer.parseInt(coords[0]), Integer.parseInt(coords[1]), Integer.parseInt(coords[2]));
+ CrystalHollowWaypoints.Waypoint newWaypoint = new CrystalHollowWaypoints.Waypoint(location, pos);
+
+ if (auto) {
+ boolean contains = false;
+ for (CrystalHollowWaypoints.Waypoint existing : CrystalHollowWaypoints.waypoints) {
+ if (existing.location.equals(location)) {
+ contains = true;
+ break;
+ }
+ }
+ if (contains) continue;
+ }
+
+ CrystalHollowWaypoints.waypoints.add(newWaypoint);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Added " + newWaypoint.location + " @ " + newWaypoint.getPos()));
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/commands/CustomMusicCommand.java b/src/main/java/me/Danker/commands/CustomMusicCommand.java
index 0e80dd3..f0634fc 100644
--- a/src/main/java/me/Danker/commands/CustomMusicCommand.java
+++ b/src/main/java/me/Danker/commands/CustomMusicCommand.java
@@ -10,9 +10,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.UnsupportedAudioFileException;
-import java.io.IOException;
import java.util.List;
public class CustomMusicCommand extends CommandBase {
@@ -24,7 +21,8 @@ public class CustomMusicCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <stop/reload/volume> [dungeonboss/bloodroom/dungeon] [1-100]";
+ return "/" + getCommandName() + " <stop/reload/volume> [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/" +
+ "goldmine/deepcaverns/dwarvenmines/crystalhollows/spidersden/crimsonisle/end/park] [1-100]";
}
public static String usage(ICommandSender arg0) {
@@ -41,7 +39,8 @@ public class CustomMusicCommand extends CommandBase {
if (args.length == 1) {
return getListOfStringsMatchingLastWord(args, "stop", "reload", "volume");
} else if (args.length == 2) {
- return getListOfStringsMatchingLastWord(args, "dungeonboss", "bloodroom", "dungeon");
+ return getListOfStringsMatchingLastWord(args, "dungeonboss", "bloodroom", "dungeon", "hub", "island", "dungeonhub", "farmingislands", "goldmine",
+ "deepcaverns", "dwarvenmines", "crystalhollows", "spidersden", "crimsonisle", "end", "park");
}
return null;
}
@@ -61,13 +60,8 @@ public class CustomMusicCommand extends CommandBase {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Stopped custom music."));
break;
case "reload":
- try {
- CustomMusic.init(DankersSkyblockMod.configDirectory);
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Reloaded custom music."));
- } catch (IOException | LineUnavailableException | UnsupportedAudioFileException e) {
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "An error occurred while trying to reload music."));
- e.printStackTrace();
- }
+ CustomMusic.init(DankersSkyblockMod.configDirectory);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Reloaded custom music."));
break;
case "volume":
if (arg1.length < 3) {
@@ -76,36 +70,98 @@ public class CustomMusicCommand extends CommandBase {
}
int volume = Integer.parseInt(arg1[2]);
- boolean success;
switch (arg1[1].toLowerCase()) {
case "dungeonboss":
- success = CustomMusic.dungeonboss.setVolume(volume);
- if (!success) {
- return;
- }
+ if (!CustomMusic.dungeonboss.setVolume(volume)) return;
CustomMusic.dungeonbossVolume = volume;
ConfigHandler.writeIntConfig("music", "DungeonBossVolume", volume);
break;
case "bloodroom":
- success = CustomMusic.bloodroom.setVolume(volume);
- if (!success) {
- return;
- }
+ if (!CustomMusic.bloodroom.setVolume(volume)) return;
CustomMusic.bloodroomVolume = volume;
ConfigHandler.writeIntConfig("music", "BloodRoomVolume", volume);
break;
case "dungeon":
- success = CustomMusic.dungeon.setVolume(volume);
- if (!success) {
- return;
- }
+ if (!CustomMusic.dungeon.setVolume(volume)) return;
CustomMusic.dungeonVolume = volume;
ConfigHandler.writeIntConfig("music", "DungeonVolume", volume);
break;
+ case "hub":
+ if (!CustomMusic.hub.setVolume(volume)) return;
+
+ CustomMusic.hubVolume = volume;
+ ConfigHandler.writeIntConfig("music", "HubVolume", volume);
+ break;
+ case "island":
+ if (!CustomMusic.island.setVolume(volume)) return;
+
+ CustomMusic.islandVolume = volume;
+ ConfigHandler.writeIntConfig("music", "IslandVolume", volume);
+ break;
+ case "dungeonhub":
+ if (!CustomMusic.dungeonHub.setVolume(volume)) return;
+
+ CustomMusic.dungeonHubVolume = volume;
+ ConfigHandler.writeIntConfig("music", "DungeonHubVolume", volume);
+ break;
+ case "farmingislands":
+ if (!CustomMusic.farmingIslands.setVolume(volume)) return;
+
+ CustomMusic.farmingIslandsVolume = volume;
+ ConfigHandler.writeIntConfig("music", "FarmingIslandsVolume", volume);
+ break;
+ case "goldmine":
+ if (!CustomMusic.goldMine.setVolume(volume)) return;
+
+ CustomMusic.goldMineVolume = volume;
+ ConfigHandler.writeIntConfig("music", "GoldMineVolume", volume);
+ break;
+ case "deepcaverns":
+ if (!CustomMusic.deepCaverns.setVolume(volume)) return;
+
+ CustomMusic.deepCavernsVolume = volume;
+ ConfigHandler.writeIntConfig("music", "DeepCavernsVolume", volume);
+ break;
+ case "dwarvenmines":
+ if (!CustomMusic.dwarvenMines.setVolume(volume)) return;
+
+ CustomMusic.dwarvenMinesVolume = volume;
+ ConfigHandler.writeIntConfig("music", "DwarvenMinesVolume", volume);
+ break;
+ case "crystalhollows":
+ if (!CustomMusic.crystalHollows.setVolume(volume)) return;
+
+ CustomMusic.crystalHollowsVolume = volume;
+ ConfigHandler.writeIntConfig("music", "CrystalHollowsVolume", volume);
+ break;
+ case "spidersden":
+ if (!CustomMusic.spidersDen.setVolume(volume)) return;
+
+ CustomMusic.spidersDenVolume = volume;
+ ConfigHandler.writeIntConfig("music", "SpidersDenVolume", volume);
+ break;
+ case "crimsonisle":
+ if (!CustomMusic.crimsonIsle.setVolume(volume)) return;
+
+ CustomMusic.crimsonIsleVolume = volume;
+ ConfigHandler.writeIntConfig("music", "CrimsonIsleVolume", volume);
+ break;
+ case "end":
+ if (!CustomMusic.end.setVolume(volume)) return;
+
+ CustomMusic.endVolume = volume;
+ ConfigHandler.writeIntConfig("music", "EndVolume", volume);
+ break;
+ case "park":
+ if (!CustomMusic.park.setVolume(volume)) return;
+
+ CustomMusic.parkVolume = volume;
+ ConfigHandler.writeIntConfig("music", "ParkVolume", volume);
+ break;
default:
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
return;
diff --git a/src/main/java/me/Danker/commands/DHelpCommand.java b/src/main/java/me/Danker/commands/DHelpCommand.java
index efbf52d..db474c7 100644
--- a/src/main/java/me/Danker/commands/DHelpCommand.java
+++ b/src/main/java/me/Danker/commands/DHelpCommand.java
@@ -50,9 +50,11 @@ public class DHelpCommand extends CommandBase {
EnumChatFormatting.GOLD + PetsCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to get pets of a person. If no name is provided, it checks yours.\n" +
EnumChatFormatting.GOLD + BankCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to get bank and purse coins of a person. If no name is provided, it checks yours.\n" +
EnumChatFormatting.GOLD + ArmourCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to get armour of a person. If no name is provided, it checks yours.\n" +
- EnumChatFormatting.GOLD + DungeonHub.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to get dungeon levels of a person. If no name is provided, it checks yours.\n" +
+ EnumChatFormatting.GOLD + DungeonsCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to get dungeon levels of a person. If no name is provided, it checks yours.\n" +
+ EnumChatFormatting.GOLD + WeightCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to get weight of a person. If no name is provided, it checks yours. Adding lily uses lily's weight instead of Senither's.\n" +
EnumChatFormatting.GOLD + ImportFishingCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Imports your fishing stats from your latest profile to your fishing tracker using the API.\n" +
EnumChatFormatting.GOLD + SkyblockPlayersCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to find how many players are on each Skyblock island.\n" +
+ EnumChatFormatting.GOLD + BlockSlayerCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Stops you from starting a slayer quest other than the one specified.\n" +
EnumChatFormatting.GOLD + SkillTrackerCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Text display for skill xp/hour.\n" +
EnumChatFormatting.GOLD + LobbyBankCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to find the average bank total of the lobby, as well the three players with the highest total money in the bank(and purse).\n" +
EnumChatFormatting.GOLD + RepartyCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Disbands and reparties all members in the party.\n" +
@@ -65,6 +67,10 @@ public class DHelpCommand extends CommandBase {
EnumChatFormatting.GOLD + HowlingCave.usage(arg0) + EnumChatFormatting.AQUA + " - Warps you to the Howling Cave in the Park. \n" +
EnumChatFormatting.GOLD + Magma.usage(arg0) + EnumChatFormatting.AQUA + " - Warps you to the Magma Fields in the Blazing Fortress. \n" +
EnumChatFormatting.GOLD + SpidersNest.usage(arg0) + EnumChatFormatting.AQUA + " - Warps you to the Top of the Spider's Nest in the Spider's Den. \n" +
+ EnumChatFormatting.GOLD + ReloadConfigCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Reloads Danker's Skyblock Mod config.\n" +
+ EnumChatFormatting.GOLD + ReloadRepoCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Reloads Danker's Skyblock Mod repository.\n" +
+ EnumChatFormatting.GOLD + FarmLengthCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Sets coords to be used for end of farm alert.\n" +
+ EnumChatFormatting.GOLD + HOTMCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to find total powder and HotM tree of a person. If no name is provided, it checks yours.\n" +
EnumChatFormatting.GREEN + " Open Maddox Menu" + EnumChatFormatting.AQUA + " - M by default.\n" +
EnumChatFormatting.GREEN + " Start/Stop Skill Tracker" + EnumChatFormatting.AQUA + " - Numpad 5 by default.\n"));
}
diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java
index 6f548fa..14041d1 100644
--- a/src/main/java/me/Danker/commands/DankerGuiCommand.java
+++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java
@@ -1,6 +1,7 @@
package me.Danker.commands;
import me.Danker.DankersSkyblockMod;
+import me.Danker.features.EndOfFarmAlert;
import me.Danker.features.SkillTracker;
import me.Danker.features.loot.LootDisplay;
import net.minecraft.client.Minecraft;
@@ -13,6 +14,8 @@ import net.minecraft.util.StringUtils;
import java.awt.*;
import java.awt.datatransfer.StringSelection;
+import java.util.Collections;
+import java.util.List;
public class DankerGuiCommand extends CommandBase {
@@ -22,6 +25,11 @@ public class DankerGuiCommand extends CommandBase {
}
@Override
+ public List<String> getCommandAliases() {
+ return Collections.singletonList("dankersskyblockmod");
+ }
+
+ @Override
public String getCommandUsage(ICommandSender arg0) {
return "/" + getCommandName();
}
@@ -40,64 +48,6 @@ public class DankerGuiCommand extends CommandBase {
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("[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("[cooldownmessages][").append(ToggleCommand.cooldownMessages).append("]\n");
- debug.append("[manamessages][").append(ToggleCommand.manaMessages).append("]\n");
- debug.append("[killcombomessages][").append(ToggleCommand.killComboMessages).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("[boulderpuzzle][").append(ToggleCommand.boulderToggled).append("]\n");
- debug.append("[silverfishpuzzle][").append(ToggleCommand.silverfishToggled).append("]\n");
- debug.append("[icewalkpuzzle][").append(ToggleCommand.iceWalkToggled).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("[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("[melodytooltips][").append(ToggleCommand.melodyTooltips).append("]\n");
- debug.append("[highlightslayers][").append(ToggleCommand.highlightSlayers).append("]\n");
- debug.append("[highlightarachne][").append(ToggleCommand.highlightArachne).append("]\n");
- debug.append("[highlightskeletonmasters][").append(ToggleCommand.highlightSkeletonMasters).append("]\n");
- debug.append("[teammatesinradius][").append(ToggleCommand.teammatesInRadius).append("]\n");
- debug.append("[gianthp][").append(ToggleCommand.giantHP).append("]\n");
- debug.append("[hidepetcandy][").append(ToggleCommand.hidePetCandy).append("]\n");
- debug.append("[dungeonbossmusic][").append(ToggleCommand.dungeonBossMusic).append("]\n");
- debug.append("[bloodroommusic][").append(ToggleCommand.bloodRoomMusic).append("]\n");
- debug.append("[dungeonmusic][").append(ToggleCommand.dungeonMusic).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");
@@ -107,10 +57,17 @@ public class DankerGuiCommand extends CommandBase {
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("[bonzotimer][").append(MoveCommand.bonzoTimerXY[0]).append(", ").append(MoveCommand.bonzoTimerXY[1]).append("]\n");
+ debug.append("[golemtimer][").append(MoveCommand.golemTimerXY[0]).append(", ").append(MoveCommand.golemTimerXY[1]).append("]\n");
+ debug.append("[teammatesinradius][").append(MoveCommand.teammatesInRadiusXY[0]).append(", ").append(MoveCommand.teammatesInRadiusXY[1]).append("]\n");
+ debug.append("[gianthp][").append(MoveCommand.giantHPXY[0]).append(", ").append(MoveCommand.giantHPXY[1]).append("]\n");
+ debug.append("[abilitycooldowns][").append(MoveCommand.abilityCooldownsXY[0]).append(", ").append(MoveCommand.abilityCooldownsXY[1]).append("]\n");
+ debug.append("[dungeonscore][").append(MoveCommand.dungeonScoreXY[0]).append(", ").append(MoveCommand.dungeonScoreXY[1]).append("]\n");
debug.append("# Other Settings\n");
debug.append("[Current Display][").append(LootDisplay.display).append("]\n");
debug.append("[Auto Display][").append(LootDisplay.auto).append("]\n");
debug.append("[Skill Tracker Visible][").append(SkillTracker.showSkillTracker).append("]\n");
+ debug.append("[Farm Length][").append(EndOfFarmAlert.min).append(" to ").append(EndOfFarmAlert.max).append("]\n");
debug.append("# Problematic Mods\n");
debug.append("[LabyMod][").append(DankersSkyblockMod.usingLabymod).append("]\n");
debug.append("[OAM][").append(DankersSkyblockMod.usingOAM).append("]\n");
diff --git a/src/main/java/me/Danker/commands/DisplayCommand.java b/src/main/java/me/Danker/commands/DisplayCommand.java
index 990e9d1..21ada93 100644
--- a/src/main/java/me/Danker/commands/DisplayCommand.java
+++ b/src/main/java/me/Danker/commands/DisplayCommand.java
@@ -21,7 +21,7 @@ public class DisplayCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <zombie/spider/wolf/fishing/catacombs/mythological/ghost/auto/off> [winter/festival/spooky/session/f(1-7)]";
+ return "/" + getCommandName() + " <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological/ghost/auto/off> [winter/festival/spooky/ch/lava/session/f(1-7)/mm]";
}
public static String usage(ICommandSender arg0) {
@@ -36,11 +36,11 @@ public class DisplayCommand extends CommandBase {
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
if (args.length == 1) {
- return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "fishing", "catacombs", "mythological", "ghost", "auto", "off");
+ return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "blaze", "fishing", "catacombs", "mythological", "ghost", "auto", "off");
} else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) {
- return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "session");
+ return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "session");
} else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) {
- return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7");
+ return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7", "mm", "master");
} else if (args.length > 1) {
return getListOfStringsMatchingLastWord(args, "session");
}
@@ -56,10 +56,8 @@ public class DisplayCommand extends CommandBase {
return;
}
- boolean showSession = false;
-
- if (arg1[arg1.length - 1].equalsIgnoreCase("session")) showSession = true;
-
+ boolean showSession = arg1[arg1.length - 1].equalsIgnoreCase("session");
+
switch (arg1[0].toLowerCase()) {
case "wolf":
if (showSession) {
@@ -82,6 +80,20 @@ public class DisplayCommand extends CommandBase {
LootDisplay.display = "zombie";
}
break;
+ case "enderman":
+ if (showSession) {
+ LootDisplay.display = "enderman_session";
+ } else {
+ LootDisplay.display = "enderman";
+ }
+ break;
+ case "blaze":
+ if (showSession) {
+ LootDisplay.display = "blaze_session";
+ } else {
+ LootDisplay.display = "blaze";
+ }
+ break;
case "fishing":
if (arg1.length > 1) {
switch (arg1[1].toLowerCase()) {
@@ -106,6 +118,20 @@ public class DisplayCommand extends CommandBase {
LootDisplay.display = "fishing_spooky";
}
break;
+ case "ch":
+ if (showSession) {
+ LootDisplay.display = "fishing_ch_session";
+ } else {
+ LootDisplay.display = "fishing_ch";
+ }
+ break;
+ case "lava":
+ if (showSession) {
+ LootDisplay.display = "fishing_lava_session";
+ } else {
+ LootDisplay.display = "fishing_lava";
+ }
+ break;
default:
if (showSession) {
LootDisplay.display = "fishing_session";
@@ -191,8 +217,15 @@ public class DisplayCommand extends CommandBase {
LootDisplay.display = "catacombs_floor_seven";
}
break;
+ case "mm":
+ case "master":
+ if (showSession) {
+ LootDisplay.display = "catacombs_master_session";
+ } else {
+ LootDisplay.display = "catacombs_master";
+ }
default:
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /display catacombs <f1/f2/f3/f4/f5/f6/f7>"));
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /display catacombs <f1/f2/f3/f4/f5/f6/f7/mm>"));
return;
}
break;
@@ -202,7 +235,7 @@ public class DisplayCommand extends CommandBase {
} else {
LootDisplay.display = "ghost";
}
-
+ break;
case "auto":
LootDisplay.auto = true;
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Display set to " + DankersSkyblockMod.SECONDARY_COLOUR + "auto" + DankersSkyblockMod.MAIN_COLOUR + "."));
diff --git a/src/main/java/me/Danker/commands/DungeonsCommand.java b/src/main/java/me/Danker/commands/DungeonsCommand.java
index 9924a9d..75f6f46 100644
--- a/src/main/java/me/Danker/commands/DungeonsCommand.java
+++ b/src/main/java/me/Danker/commands/DungeonsCommand.java
@@ -13,140 +13,170 @@ import net.minecraft.event.HoverEvent;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.MathHelper;
+import java.text.NumberFormat;
import java.util.List;
+import java.util.Locale;
public class DungeonsCommand extends CommandBase {
- @Override
- public String getCommandName() {
- return "dungeons";
- }
-
- @Override
- public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " [name]";
- }
-
- public static String usage(ICommandSender arg0) {
- return new DungeonsCommand().getCommandUsage(arg0);
- }
-
- @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 arg0, String[] arg1) throws CommandException {
- // 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;
- if (arg1.length == 0) {
- username = player.getName();
- uuid = player.getUniqueID().toString().replaceAll("[\\-]", "");
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking dungeon stats of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
- } else {
- username = arg1[0];
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking dungeon stats 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);
- if (!profileResponse.get("success").getAsBoolean()) {
- String reason = profileResponse.get("cause").getAsString();
- 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();
- if (!dungeonsObject.get("dungeon_types").getAsJsonObject().get("catacombs").getAsJsonObject().has("experience")) {
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "This player has not played dungeons."));
- return;
- }
-
- 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());
- 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();
- }
-} \ No newline at end of file
+ @Override
+ public String getCommandName() {
+ return "dungeons";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName() + " [name]";
+ }
+
+ public static String usage(ICommandSender arg0) {
+ return new DungeonsCommand().getCommandUsage(arg0);
+ }
+
+ @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 arg0, String[] arg1) throws CommandException {
+ // 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."));
+ return;
+ }
+
+ // Get UUID for Hypixel API requests
+ String username;
+ String uuid;
+ if (arg1.length == 0) {
+ username = player.getName();
+ uuid = player.getUniqueID().toString().replaceAll("[\\-]", "");
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking dungeon stats of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ } else {
+ username = arg1[0];
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking dungeon stats 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, true);
+ if (!profileResponse.get("success").getAsBoolean()) {
+ String reason = profileResponse.get("cause").getAsString();
+ 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, true);
+ if (!playerResponse.get("success").getAsBoolean()) {
+ String reason = playerResponse.get("cause").getAsString();
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
+ return;
+ }
+
+ System.out.println("Fetching dungeon stats...");
+ JsonObject dungeonsObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject().get("dungeons").getAsJsonObject();
+ if (!dungeonsObject.get("dungeon_types").getAsJsonObject().get("catacombs").getAsJsonObject().has("experience")) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "This player has not played dungeons."));
+ return;
+ }
+
+ JsonObject catacombsObject = dungeonsObject.get("dungeon_types").getAsJsonObject().get("catacombs").getAsJsonObject();
+
+ double catacombs = Utils.xpToDungeonsLevel(catacombsObject.get("experience").getAsDouble());
+ double healer = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("healer").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double mage = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("mage").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double berserk = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("berserk").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double archer = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("archer").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double tank = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("tank").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double classAverage = Math.round((healer + mage + berserk + archer + tank) / 5D * 100D) / 100D;
+ String selectedClass = Utils.capitalizeString(dungeonsObject.get("selected_dungeon_class").getAsString());
+ 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();
+
+ JsonObject catacombsMasterObject = dungeonsObject.get("dungeon_types").getAsJsonObject().get("master_catacombs").getAsJsonObject();
+ boolean hasPlayedMaster = catacombsMasterObject.has("highest_tier_completed");
+
+ int highestMasterFloor = 0;
+ JsonObject completionMasterObj = null;
+ if (hasPlayedMaster) {
+ highestMasterFloor = catacombsMasterObject.get("highest_tier_completed").getAsInt();
+ completionMasterObj = catacombsMasterObject.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.RED + " Class Average: " + classAverage + "\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\n" +
+ EnumChatFormatting.WHITE + " Secrets Found: " + NumberFormat.getIntegerInstance(Locale.US).format(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 || hasPlayedMaster ? "\n": "");
+ }
+ for (int i = 1; i <= highestMasterFloor; i++) {
+ if (completionMasterObj != null && completionMasterObj.has(String.valueOf(i))) {
+ completionsHoverString
+ .append(EnumChatFormatting.GOLD)
+ .append("Master Floor ")
+ .append(i)
+ .append(": ")
+ .append(EnumChatFormatting.RESET)
+ .append(completionMasterObj.get(String.valueOf(i)).getAsInt())
+ .append(i < highestMasterFloor ? "\n": "");
+ }
+ }
+
+ ChatComponentText completions;
+ if (hasPlayedMaster) {
+ completions = new ChatComponentText(EnumChatFormatting.GOLD + " Highest Floor Completed: Master " + highestMasterFloor);
+ } else {
+ 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
index b93d596..b0c67b2 100644
--- a/src/main/java/me/Danker/commands/FairySoulsCommand.java
+++ b/src/main/java/me/Danker/commands/FairySoulsCommand.java
@@ -52,6 +52,7 @@ public class FairySoulsCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if(key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
@@ -74,7 +75,7 @@ public class FairySoulsCommand extends CommandBase {
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
- JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
@@ -88,7 +89,7 @@ public class FairySoulsCommand extends CommandBase {
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 + "/222" + " collected"));
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "The player " + username + " has " + DankersSkyblockMod.VALUE_COLOUR + fairy_souls + DankersSkyblockMod.MAIN_COLOUR + "/227" + " collected"));
}).start();
diff --git a/src/main/java/me/Danker/commands/FarmLengthCommand.java b/src/main/java/me/Danker/commands/FarmLengthCommand.java
new file mode 100644
index 0000000..c9c8e11
--- /dev/null
+++ b/src/main/java/me/Danker/commands/FarmLengthCommand.java
@@ -0,0 +1,52 @@
+package me.Danker.commands;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.features.EndOfFarmAlert;
+import me.Danker.handlers.ConfigHandler;
+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.ChatComponentText;
+
+public class FarmLengthCommand extends CommandBase {
+
+ @Override
+ public String getCommandName() {
+ return "dsmfarmlength";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName() + " <min coords> <max coords>";
+ }
+
+ public static String usage(ICommandSender arg0) {
+ return new FarmLengthCommand().getCommandUsage(arg0);
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
+ EntityPlayer player = (EntityPlayer) arg0;
+
+ if (arg1.length == 0) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Current Range: " + DankersSkyblockMod.SECONDARY_COLOUR + EndOfFarmAlert.min + DankersSkyblockMod.MAIN_COLOUR + " to " + DankersSkyblockMod.SECONDARY_COLOUR + EndOfFarmAlert.max));
+ return;
+ } else if (arg1.length < 2) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
+ return;
+ }
+
+ EndOfFarmAlert.min = Double.parseDouble(arg1[0]);
+ EndOfFarmAlert.max = Double.parseDouble(arg1[1]);
+ ConfigHandler.writeDoubleConfig("misc", "farmMin", EndOfFarmAlert.min);
+ ConfigHandler.writeDoubleConfig("misc", "farmMax", EndOfFarmAlert.max);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Farm length set to " + DankersSkyblockMod.SECONDARY_COLOUR + EndOfFarmAlert.min + DankersSkyblockMod.MAIN_COLOUR + " to " + DankersSkyblockMod.SECONDARY_COLOUR + EndOfFarmAlert.max));
+ }
+
+}
diff --git a/src/main/java/me/Danker/commands/GuildOfCommand.java b/src/main/java/me/Danker/commands/GuildOfCommand.java
index 1c9f1c4..a97196e 100644
--- a/src/main/java/me/Danker/commands/GuildOfCommand.java
+++ b/src/main/java/me/Danker/commands/GuildOfCommand.java
@@ -56,6 +56,7 @@ public class GuildOfCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
@@ -74,7 +75,7 @@ public class GuildOfCommand extends CommandBase {
// Find guild ID
System.out.println("Fetching guild...");
String guildURL = "https://api.hypixel.net/guild?player=" + uuid + "&key=" + key;
- JsonObject guildResponse = APIHandler.getResponse(guildURL);
+ JsonObject guildResponse = APIHandler.getResponse(guildURL, true);
if (!guildResponse.get("success").getAsBoolean()) {
String reason = guildResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
diff --git a/src/main/java/me/Danker/commands/HOTMCommand.java b/src/main/java/me/Danker/commands/HOTMCommand.java
new file mode 100644
index 0000000..7a8adb5
--- /dev/null
+++ b/src/main/java/me/Danker/commands/HOTMCommand.java
@@ -0,0 +1,136 @@
+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.event.ClickEvent;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+
+import java.text.NumberFormat;
+import java.util.List;
+import java.util.Locale;
+
+public class HOTMCommand extends CommandBase {
+
+ @Override
+ public String getCommandName() {
+ return "hotmof";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName() + " [name]";
+ }
+
+ public static String usage(ICommandSender arg0) {
+ return new HOTMCommand().getCommandUsage(arg0);
+ }
+
+ @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 arg0, String[] arg1) throws CommandException {
+ // MULTI THREAD DRIFTING
+ new Thread(() -> {
+ EntityPlayer player = (EntityPlayer) arg0;
+
+ // Check key
+ String key = ConfigHandler.getString("api", "APIKey");
+ if (key.equals("")) {
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "API key not set. Use /setkey."));
+ return;
+ }
+
+ // Get UUID for Hypixel API requests
+ String username;
+ String uuid;
+ if (arg1.length == 0) {
+ username = player.getName();
+ uuid = player.getUniqueID().toString().replaceAll("[\\-]", "");
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking HotM of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ } else {
+ username = arg1[0];
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking HotM 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, true);
+ if (!profileResponse.get("success").getAsBoolean()) {
+ String reason = profileResponse.get("cause").getAsString();
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Failed with reason: " + reason));
+ return;
+ }
+
+ System.out.println("Fetching mining stats...");
+ JsonObject miningCore = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject().get("mining_core").getAsJsonObject();
+
+ int mithril = 0;
+ if (miningCore.has("powder_mithril")) {
+ mithril = miningCore.get("powder_mithril").getAsInt();
+ if (miningCore.has("powder_spent_mithril")) mithril += miningCore.get("powder_spent_mithril").getAsInt();
+ }
+
+ int gemstone = 0;
+ if (miningCore.has("powder_gemstone")) {
+ gemstone = miningCore.get("powder_gemstone").getAsInt();
+ if (miningCore.has("powder_spent_gemstone")) gemstone += miningCore.get("powder_spent_gemstone").getAsInt();
+ }
+
+ String ability = EnumChatFormatting.RED + "None";
+ if (miningCore.has("selected_pickaxe_ability")) {
+ ability = Node.valueOf(miningCore.get("selected_pickaxe_ability").getAsString()).name;
+ }
+
+ ChatComponentText tree = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + "[CLICK]");
+ tree.setChatStyle(tree.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/hotmtree " + username + " " + latestProfile)));
+
+ NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.AQUA + username + "'s HotM:\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Mithril Powder: " + EnumChatFormatting.DARK_GREEN + nf.format(mithril) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Gemstone Powder: " + EnumChatFormatting.LIGHT_PURPLE + nf.format(gemstone) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Pickaxe Ability: " + DankersSkyblockMod.VALUE_COLOUR + ability + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "HotM Tree: ").appendSibling(tree)
+ .appendSibling(new ChatComponentText("\n" + DankersSkyblockMod.DELIMITER_COLOUR + EnumChatFormatting.BOLD + "-------------------")));
+ }).start();
+ }
+
+ enum Node {
+ mining_speed_boost("Mining Speed Boost"),
+ pickaxe_toss("Pickobulus"),
+ vein_seeker("Vein Seeker"),
+ maniac_miner("Maniac Miner");
+
+ public String name;
+
+ Node(String name) {
+ this.name = name;
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/commands/HOTMTreeCommand.java b/src/main/java/me/Danker/commands/HOTMTreeCommand.java
new file mode 100644
index 0000000..90b82d3
--- /dev/null
+++ b/src/main/java/me/Danker/commands/HOTMTreeCommand.java
@@ -0,0 +1,151 @@
+package me.Danker.commands;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import me.Danker.DankersSkyblockMod;
+import me.Danker.containers.GuiChestDynamic;
+import me.Danker.handlers.APIHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.command.CommandBase;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.enchantment.Enchantment;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.InventoryBasic;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.*;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.common.util.Constants;
+
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.List;
+import java.util.UUID;
+
+public class HOTMTreeCommand extends CommandBase {
+
+ public static GuiChestDynamic chest = null;
+
+ @Override
+ public String getCommandName() {
+ return "hotmtree";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return null;
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
+ // MULTI THREAD DRIFTING
+ new Thread(() -> {
+ EntityPlayer player = (EntityPlayer) arg0;
+
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking HotM tree of " + DankersSkyblockMod.SECONDARY_COLOUR + arg1[0]));
+
+ System.out.println("Fetching profile...");
+ String profileURL = "https://sky.shiiyu.moe/api/v2/profile/" + arg1[0];
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
+ if (profileResponse.has("error")) {
+ String reason = profileResponse.get("error").getAsString();
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Failed with reason: " + reason));
+ return;
+ }
+
+ System.out.println("Fetching HotM tree...");
+ JsonArray tree = profileResponse.get("profiles").getAsJsonObject().get(arg1[1]).getAsJsonObject().get("items").getAsJsonObject().get("hotm").getAsJsonArray();
+
+ IInventory inventory = new InventoryBasic(arg1[0] + "'s HotM Tree:", true, 63);
+
+ for (JsonElement e : tree) {
+ JsonObject node = e.getAsJsonObject();
+
+ if (!node.has("tag")) continue;
+
+ ItemStack item = new ItemStack(Item.getItemById(node.get("id").getAsInt()), node.get("Count").getAsInt(), node.get("Damage").getAsInt());
+
+ NBTTagCompound nbt = new NBTTagCompound();
+ try {
+ nbt = JsonToNBT.getTagFromJson(node.get("tag").toString());
+ removeDoubleQuotes(nbt);
+ nbt.getCompoundTag("display").getTagList("Lore", Constants.NBT.TAG_STRING).removeTag(0);
+ } catch (NBTException ex) {
+ ex.printStackTrace();
+ continue;
+ }
+
+ if (node.get("glowing").getAsBoolean()) {
+ nbt.setTag("HideFlags", new NBTTagShort((short) 1));
+ }
+
+ if (node.has("texture_path")) {
+ String path = node.get("texture_path").getAsString();
+ NBTTagCompound skullOwner = new NBTTagCompound();
+ NBTTagCompound properties = new NBTTagCompound();
+ NBTTagList textures = new NBTTagList();
+ NBTTagCompound value = new NBTTagCompound();
+ String texture = "{\"textures\":{\"SKIN\":{\"url\":\"http://textures.minecraft.net/texture/" + path.substring(path.lastIndexOf("/") + 1) + "\"}}}";
+ value.setTag("Value", new NBTTagString(Base64.getEncoder().encodeToString(texture.getBytes())));
+ textures.appendTag(value);
+ properties.setTag("textures", textures);
+ skullOwner.setTag("Properties", properties);
+ skullOwner.setTag("Id", new NBTTagString(UUID.randomUUID().toString()));
+ nbt.setTag("SkullOwner", skullOwner);
+ }
+
+ item.setTagCompound(nbt);
+
+ if (node.get("glowing").getAsBoolean()) {
+ item.addEnchantment(Enchantment.protection, 1);
+ }
+ item.setStackDisplayName(Utils.removeBold(item.getDisplayName()));
+
+ inventory.setInventorySlotContents(node.get("position").getAsInt() - 1, item);
+ }
+
+ chest = new GuiChestDynamic(player.inventory, inventory, new ResourceLocation("dsm", "textures/generic_63.png"));
+ DankersSkyblockMod.guiToOpen = "hotminventory";
+ }).start();
+ }
+
+ // https://bitbucket.org/hrznstudio/mo-legacy-edition/src/4cc47b2a792cc2ef19eb7e5db0169706ea2e48dd/src/main/java/matteroverdrive/util/MOJsonHelper.java#lines-164:179
+ public static void removeDoubleQuotes(NBTTagCompound tagCompound) {
+ List<String> cachedKeyList = new ArrayList<>();
+ cachedKeyList.addAll(tagCompound.getKeySet());
+ for (String key : cachedKeyList) {
+ NBTBase base = tagCompound.getTag(key);
+ tagCompound.removeTag(key);
+
+ key = key.replace("\"", "");
+ if (base instanceof NBTTagCompound) {
+ removeDoubleQuotes((NBTTagCompound) base);
+ } else if (base instanceof NBTTagList) {
+ removeDoubleQuotes((NBTTagList) base);
+ }
+ tagCompound.setTag(key, base);
+ }
+ }
+
+ // https://bitbucket.org/hrznstudio/mo-legacy-edition/src/4cc47b2a792cc2ef19eb7e5db0169706ea2e48dd/src/main/java/matteroverdrive/util/MOJsonHelper.java#lines-181:189
+ public static void removeDoubleQuotes(NBTTagList tagList) {
+ for (int i = 0; i < tagList.tagCount(); i++) {
+ if (tagList.get(i) instanceof NBTTagCompound) {
+ removeDoubleQuotes((NBTTagCompound) tagList.get(i));
+ } else if (tagList.get(i) instanceof NBTTagList) {
+ removeDoubleQuotes((NBTTagList) tagList.get(i));
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/commands/ImportFishingCommand.java b/src/main/java/me/Danker/commands/ImportFishingCommand.java
index 4aeff2c..f51e01f 100644
--- a/src/main/java/me/Danker/commands/ImportFishingCommand.java
+++ b/src/main/java/me/Danker/commands/ImportFishingCommand.java
@@ -2,7 +2,7 @@ package me.Danker.commands;
import com.google.gson.JsonObject;
import me.Danker.DankersSkyblockMod;
-import me.Danker.features.loot.LootTracker;
+import me.Danker.features.loot.FishingTracker;
import me.Danker.handlers.APIHandler;
import me.Danker.handlers.ConfigHandler;
import net.minecraft.command.CommandBase;
@@ -37,260 +37,148 @@ public class ImportFishingCommand 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."));
+ return;
}
-
+
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Importing your fishing stats..."));
-
+
// Get UUID for Hypixel API requests
String uuid = player.getUniqueID().toString().replaceAll("[\\-]", "");
-
+
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);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
return;
}
-
+
System.out.println("Fetching fishing stats...");
JsonObject statsObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject().get("stats").getAsJsonObject();
-
- LootTracker.greatCatches = 0;
- LootTracker.goodCatches = 0;
+
+ FishingTracker.greatCatches = 0;
+ FishingTracker.goodCatches = 0;
if (statsObject.has("items_fished_treasure")) {
if (statsObject.has("items_fished_large_treasure")) {
- LootTracker.greatCatches = statsObject.get("items_fished_large_treasure").getAsInt();
- LootTracker.goodCatches = statsObject.get("items_fished_treasure").getAsInt() - LootTracker.greatCatches;
- } else {
- LootTracker.goodCatches = statsObject.get("items_fished_treasure").getAsInt();
- }
- }
-
- LootTracker.seaCreatures = 0;
- LootTracker.squids = 0;
- if (statsObject.has("kills_pond_squid")) {
- LootTracker.squids = statsObject.get("kills_pond_squid").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.squids;
-
- LootTracker.seaWalkers = 0;
- if (statsObject.has("kills_sea_walker")) {
- LootTracker.seaWalkers = statsObject.get("kills_sea_walker").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.seaWalkers;
-
- LootTracker.nightSquids = 0;
- if (statsObject.has("kills_night_squid")) {
- LootTracker.nightSquids = statsObject.get("kills_night_squid").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.nightSquids;
-
- LootTracker.seaGuardians = 0;
- if (statsObject.has("kills_sea_guardian")) {
- LootTracker.seaGuardians = statsObject.get("kills_sea_guardian").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.seaGuardians;
-
- LootTracker.seaWitches = 0;
- if (statsObject.has("kills_sea_witch")) {
- LootTracker.seaWitches = statsObject.get("kills_sea_witch").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.seaWitches;
-
- LootTracker.seaArchers = 0;
- if (statsObject.has("kills_sea_archer")) {
- LootTracker.seaArchers = statsObject.get("kills_sea_archer").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.seaArchers;
-
- LootTracker.monsterOfTheDeeps = 0;
- if (statsObject.has("kills_zombie_deep")) {
- if (statsObject.has("kills_chicken_deep")) {
- LootTracker.monsterOfTheDeeps = statsObject.get("kills_zombie_deep").getAsInt() + statsObject.get("kills_chicken_deep").getAsInt();
- } else {
- LootTracker.monsterOfTheDeeps = statsObject.get("kills_zombie_deep").getAsInt();
- }
- } else if (statsObject.has("kills_chicken_deep")) {
- LootTracker.monsterOfTheDeeps = statsObject.get("kills_chicken_deep").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.monsterOfTheDeeps;
-
- LootTracker.catfishes = 0;
- if (statsObject.has("kills_catfish")) {
- LootTracker.catfishes = statsObject.get("kills_catfish").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.catfishes;
-
- LootTracker.carrotKings = 0;
- if (statsObject.has("kills_carrot_king")) {
- LootTracker.carrotKings = statsObject.get("kills_carrot_king").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.carrotKings;
-
- LootTracker.seaLeeches = 0;
- if (statsObject.has("kills_sea_leech")) {
- LootTracker.seaLeeches = statsObject.get("kills_sea_leech").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.seaLeeches;
-
- LootTracker.guardianDefenders = 0;
- if (statsObject.has("kills_guardian_defender")) {
- LootTracker.guardianDefenders = statsObject.get("kills_guardian_defender").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.guardianDefenders;
-
- LootTracker.deepSeaProtectors = 0;
- if (statsObject.has("kills_deep_sea_protector")) {
- LootTracker.deepSeaProtectors = statsObject.get("kills_deep_sea_protector").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.deepSeaProtectors;
-
- LootTracker.hydras = 0;
- if (statsObject.has("kills_water_hydra")) {
- // Hydra splits
- LootTracker.hydras = statsObject.get("kills_water_hydra").getAsInt() / 2;
- }
- LootTracker.seaCreatures += LootTracker.hydras;
-
- LootTracker.seaEmperors = 0;
- if (statsObject.has("kills_skeleton_emperor")) {
- if (statsObject.has("kills_guardian_emperor")) {
- LootTracker.seaEmperors = statsObject.get("kills_skeleton_emperor").getAsInt() + statsObject.get("kills_guardian_emperor").getAsInt();
+ FishingTracker.greatCatches = statsObject.get("items_fished_large_treasure").getAsInt();
+ FishingTracker.goodCatches = statsObject.get("items_fished_treasure").getAsInt() - FishingTracker.greatCatches;
} else {
- LootTracker.seaEmperors = statsObject.get("kills_skeleton_emperor").getAsInt();
+ FishingTracker.goodCatches = statsObject.get("items_fished_treasure").getAsInt();
}
- } else if (statsObject.has("kills_guardian_emperor")) {
- LootTracker.seaEmperors = statsObject.get("kills_guardian_emperor").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.seaEmperors;
-
- LootTracker.fishingMilestone = 0;
- if (statsObject.has("pet_milestone_sea_creatures_killed")) {
- LootTracker.fishingMilestone = statsObject.get("pet_milestone_sea_creatures_killed").getAsInt();
- }
-
- LootTracker.frozenSteves = 0;
- if (statsObject.has("kills_frozen_steve")) {
- LootTracker.frozenSteves = statsObject.get("kills_frozen_steve").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.frozenSteves;
-
- LootTracker.frostyTheSnowmans = 0;
- if (statsObject.has("kills_frosty_the_snowman")) {
- LootTracker.frostyTheSnowmans = statsObject.get("kills_frosty_the_snowman").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.frostyTheSnowmans;
-
- LootTracker.grinches = 0;
- if (statsObject.has("kills_grinch")) {
- LootTracker.grinches = statsObject.get("kills_grinch").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.grinches;
-
- LootTracker.yetis = 0;
- if (statsObject.has("kills_yeti")) {
- LootTracker.yetis = statsObject.get("kills_yeti").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.yetis;
-
- LootTracker.nurseSharks = 0;
- if (statsObject.has("kills_nurse_shark")) {
- LootTracker.nurseSharks = statsObject.get("kills_nurse_shark").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.nurseSharks;
-
- LootTracker.blueSharks = 0;
- if (statsObject.has("kills_nurse_shark")) {
- LootTracker.blueSharks = statsObject.get("kills_blue_shark").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.blueSharks;
-
- LootTracker.tigerSharks = 0;
- if (statsObject.has("kills_nurse_shark")) {
- LootTracker.tigerSharks = statsObject.get("kills_tiger_shark").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.tigerSharks;
-
- LootTracker.greatWhiteSharks = 0;
- if (statsObject.has("kills_nurse_shark")) {
- LootTracker.greatWhiteSharks = statsObject.get("kills_great_white_shark").getAsInt();
}
- LootTracker.seaCreatures += LootTracker.greatWhiteSharks;
-
- LootTracker.scarecrows = 0;
- if (statsObject.has("kills_scarecrow")) {
- LootTracker.scarecrows = statsObject.get("kills_scarecrow").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.scarecrows;
-
- LootTracker.nightmares = 0;
- if (statsObject.has("kills_nightmare")) {
- LootTracker.nightmares = statsObject.get("kills_nightmare").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.nightmares;
-
- LootTracker.werewolfs = 0;
- if (statsObject.has("kills_werewolf")) {
- LootTracker.werewolfs = statsObject.get("kills_werewolf").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.werewolfs;
-
- LootTracker.phantomFishers = 0;
- if (statsObject.has("kills_phantom_fisherman")) {
- LootTracker.phantomFishers = statsObject.get("kills_phantom_fisherman").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.phantomFishers;
-
- LootTracker.grimReapers = 0;
- if (statsObject.has("kills_grim_reaper")) {
- LootTracker.grimReapers = statsObject.get("kills_grim_reaper").getAsInt();
- }
- LootTracker.seaCreatures += LootTracker.grimReapers;
-
+
+ FishingTracker.seaCreatures = 0;
+
+ FishingTracker.squids = getSCFromApi(statsObject, "kills_pond_squid");
+ FishingTracker.seaWalkers = getSCFromApi(statsObject, "kills_sea_walker");
+ FishingTracker.nightSquids = getSCFromApi(statsObject, "kills_night_squid");
+ FishingTracker.seaGuardians = getSCFromApi(statsObject, "kills_sea_guardian");
+ FishingTracker.seaWitches = getSCFromApi(statsObject, "kills_sea_witch");
+ FishingTracker.seaArchers = getSCFromApi(statsObject, "kills_sea_archer");
+ FishingTracker.monsterOfTheDeeps = getSCFromApi(statsObject, "kills_zombie_deep") + getSCFromApi(statsObject, "kills_chicken_deep");
+ FishingTracker.catfishes = getSCFromApi(statsObject, "kills_catfish");
+ FishingTracker.carrotKings = getSCFromApi(statsObject, "kills_carrot_king");
+ FishingTracker.seaLeeches = getSCFromApi(statsObject, "kills_sea_leech");
+ FishingTracker.guardianDefenders = getSCFromApi(statsObject, "kills_guardian_defender");
+ FishingTracker.deepSeaProtectors = getSCFromApi(statsObject, "kills_deep_sea_protector");
+ FishingTracker.hydras = getSCFromApi(statsObject, "kills_water_hydra") / 2;
+ FishingTracker.seaEmperors = getSCFromApi(statsObject, "kills_skeleton_emperor") + getSCFromApi(statsObject, "kills_guardian_emperor");
+ FishingTracker.fishingMilestone = getSCFromApi(statsObject, "pet_milestone_sea_creatures_killed");
+ FishingTracker.frozenSteves = getSCFromApi(statsObject, "kills_frozen_steve");
+ FishingTracker.frostyTheSnowmans = getSCFromApi(statsObject, "kills_frosty_the_snowman");
+ FishingTracker.grinches = getSCFromApi(statsObject, "kills_grinch");
+ FishingTracker.yetis = getSCFromApi(statsObject, "kills_yeti");
+ FishingTracker.nurseSharks = getSCFromApi(statsObject, "kills_nurse_shark");
+ FishingTracker.blueSharks = getSCFromApi(statsObject, "kills_blue_shark");
+ FishingTracker.tigerSharks = getSCFromApi(statsObject, "kills_tiger_shark");
+ FishingTracker.greatWhiteSharks = getSCFromApi(statsObject, "kills_great_white_shark");
+ FishingTracker.scarecrows = getSCFromApi(statsObject, "kills_scarecrow");
+ FishingTracker.nightmares = getSCFromApi(statsObject, "kills_nightmare");
+ FishingTracker.werewolfs = getSCFromApi(statsObject, "kills_werewolf");
+ FishingTracker.phantomFishers = getSCFromApi(statsObject, "kills_phantom_fisherman");
+ FishingTracker.grimReapers = getSCFromApi(statsObject, "kills_grim_reaper");
+ FishingTracker.waterWorms = getSCFromApi(statsObject, "kills_water_worm");
+ FishingTracker.poisonedWaterWorms = getSCFromApi(statsObject, "kills_poisoned_water_worm");
+ FishingTracker.flamingWorms = getSCFromApi(statsObject, "kills_flaming_worm");
+ FishingTracker.lavaBlazes = getSCFromApi(statsObject, "kills_lava_blaze");
+ FishingTracker.lavaPigmen = getSCFromApi(statsObject, "kills_lava_pigman");
+ FishingTracker.zombieMiners = getSCFromApi(statsObject, "kills_zombie_miner");
+ FishingTracker.magmaSlugs = getSCFromApi(statsObject, "kills_magma_slug");
+ FishingTracker.moogmas = getSCFromApi(statsObject, "kills_moogma");
+ FishingTracker.lavaLeeches = getSCFromApi(statsObject, "kills_lava_leech");
+ FishingTracker.pyroclasticWorms = getSCFromApi(statsObject, "kills_pyroclastic_worm");
+ FishingTracker.lavaFlames = getSCFromApi(statsObject, "kills_lava_flame");
+ FishingTracker.fireEels = getSCFromApi(statsObject, "kills_fire_eel");
+ FishingTracker.tauruses = getSCFromApi(statsObject, "kills_taurus");
+ FishingTracker.thunders = getSCFromApi(statsObject, "kills_thunder");
+ FishingTracker.lordJawbuses = getSCFromApi(statsObject, "kills_lord_jawbus");
+
System.out.println("Writing to config...");
- ConfigHandler.writeIntConfig("fishing", "goodCatch", LootTracker.goodCatches);
- ConfigHandler.writeIntConfig("fishing", "greatCatch", LootTracker.greatCatches);
- ConfigHandler.writeIntConfig("fishing", "seaCreature", LootTracker.seaCreatures);
- ConfigHandler.writeIntConfig("fishing", "squid", LootTracker.squids);
- ConfigHandler.writeIntConfig("fishing", "seaWalker", LootTracker.seaWalkers);
- ConfigHandler.writeIntConfig("fishing", "nightSquid", LootTracker.nightSquids);
- ConfigHandler.writeIntConfig("fishing", "seaGuardian", LootTracker.seaGuardians);
- ConfigHandler.writeIntConfig("fishing", "seaWitch", LootTracker.seaWitches);
- ConfigHandler.writeIntConfig("fishing", "seaArcher", LootTracker.seaArchers);
- ConfigHandler.writeIntConfig("fishing", "monsterOfDeep", LootTracker.monsterOfTheDeeps);
- ConfigHandler.writeIntConfig("fishing", "catfish", LootTracker.catfishes);
- ConfigHandler.writeIntConfig("fishing", "carrotKing", LootTracker.carrotKings);
- ConfigHandler.writeIntConfig("fishing", "seaLeech", LootTracker.seaLeeches);
- ConfigHandler.writeIntConfig("fishing", "guardianDefender", LootTracker.guardianDefenders);
- ConfigHandler.writeIntConfig("fishing", "deepSeaProtector", LootTracker.deepSeaProtectors);
- ConfigHandler.writeIntConfig("fishing", "hydra", LootTracker.hydras);
- ConfigHandler.writeIntConfig("fishing", "seaEmperor", LootTracker.seaEmperors);
- ConfigHandler.writeIntConfig("fishing", "milestone", LootTracker.fishingMilestone);
- ConfigHandler.writeIntConfig("fishing", "frozenSteve", LootTracker.frozenSteves);
- ConfigHandler.writeIntConfig("fishing", "snowman", LootTracker.frostyTheSnowmans);
- ConfigHandler.writeIntConfig("fishing", "grinch", LootTracker.grinches);
- ConfigHandler.writeIntConfig("fishing", "yeti", LootTracker.yetis);
- ConfigHandler.writeIntConfig("fishing", "nurseShark", LootTracker.nurseSharks);
- ConfigHandler.writeIntConfig("fishing", "blueShark", LootTracker.blueSharks);
- ConfigHandler.writeIntConfig("fishing", "tigerShark", LootTracker.tigerSharks);
- ConfigHandler.writeIntConfig("fishing", "greatWhiteShark", LootTracker.greatWhiteSharks);
- ConfigHandler.writeIntConfig("fishing", "scarecrow", LootTracker.scarecrows);
- ConfigHandler.writeIntConfig("fishing", "nightmare", LootTracker.nightmares);
- ConfigHandler.writeIntConfig("fishing", "werewolf", LootTracker.werewolfs);
- ConfigHandler.writeIntConfig("fishing", "phantomFisher", LootTracker.phantomFishers);
- ConfigHandler.writeIntConfig("fishing", "grimReaper", LootTracker.grimReapers);
-
+ ConfigHandler.writeIntConfig("fishing", "goodCatch", FishingTracker.goodCatches);
+ ConfigHandler.writeIntConfig("fishing", "greatCatch", FishingTracker.greatCatches);
+ ConfigHandler.writeIntConfig("fishing", "seaCreature", FishingTracker.seaCreatures);
+ ConfigHandler.writeIntConfig("fishing", "squid", FishingTracker.squids);
+ ConfigHandler.writeIntConfig("fishing", "seaWalker", FishingTracker.seaWalkers);
+ ConfigHandler.writeIntConfig("fishing", "nightSquid", FishingTracker.nightSquids);
+ ConfigHandler.writeIntConfig("fishing", "seaGuardian", FishingTracker.seaGuardians);
+ ConfigHandler.writeIntConfig("fishing", "seaWitch", FishingTracker.seaWitches);
+ ConfigHandler.writeIntConfig("fishing", "seaArcher", FishingTracker.seaArchers);
+ ConfigHandler.writeIntConfig("fishing", "monsterOfDeep", FishingTracker.monsterOfTheDeeps);
+ ConfigHandler.writeIntConfig("fishing", "catfish", FishingTracker.catfishes);
+ ConfigHandler.writeIntConfig("fishing", "carrotKing", FishingTracker.carrotKings);
+ ConfigHandler.writeIntConfig("fishing", "seaLeech", FishingTracker.seaLeeches);
+ ConfigHandler.writeIntConfig("fishing", "guardianDefender", FishingTracker.guardianDefenders);
+ ConfigHandler.writeIntConfig("fishing", "deepSeaProtector", FishingTracker.deepSeaProtectors);
+ ConfigHandler.writeIntConfig("fishing", "hydra", FishingTracker.hydras);
+ ConfigHandler.writeIntConfig("fishing", "seaEmperor", FishingTracker.seaEmperors);
+ ConfigHandler.writeIntConfig("fishing", "milestone", FishingTracker.fishingMilestone);
+ ConfigHandler.writeIntConfig("fishing", "frozenSteve", FishingTracker.frozenSteves);
+ ConfigHandler.writeIntConfig("fishing", "snowman", FishingTracker.frostyTheSnowmans);
+ ConfigHandler.writeIntConfig("fishing", "grinch", FishingTracker.grinches);
+ ConfigHandler.writeIntConfig("fishing", "yeti", FishingTracker.yetis);
+ ConfigHandler.writeIntConfig("fishing", "nurseShark", FishingTracker.nurseSharks);
+ ConfigHandler.writeIntConfig("fishing", "blueShark", FishingTracker.blueSharks);
+ ConfigHandler.writeIntConfig("fishing", "tigerShark", FishingTracker.tigerSharks);
+ ConfigHandler.writeIntConfig("fishing", "greatWhiteShark", FishingTracker.greatWhiteSharks);
+ ConfigHandler.writeIntConfig("fishing", "scarecrow", FishingTracker.scarecrows);
+ ConfigHandler.writeIntConfig("fishing", "nightmare", FishingTracker.nightmares);
+ ConfigHandler.writeIntConfig("fishing", "werewolf", FishingTracker.werewolfs);
+ ConfigHandler.writeIntConfig("fishing", "phantomFisher", FishingTracker.phantomFishers);
+ ConfigHandler.writeIntConfig("fishing", "grimReaper", FishingTracker.grimReapers);
+ ConfigHandler.writeIntConfig("fishing", "waterWorm", FishingTracker.waterWorms);
+ ConfigHandler.writeIntConfig("fishing", "poisonedWaterWorm", FishingTracker.poisonedWaterWorms);
+ ConfigHandler.writeIntConfig("fishing", "flamingWorm", FishingTracker.flamingWorms);
+ ConfigHandler.writeIntConfig("fishing", "lavaBlaze", FishingTracker.lavaBlazes);
+ ConfigHandler.writeIntConfig("fishing", "lavaPigman", FishingTracker.lavaPigmen);
+ ConfigHandler.writeIntConfig("fishing", "zombieMiner", FishingTracker.zombieMiners);
+ ConfigHandler.writeIntConfig("fishing", "magmaSlug", FishingTracker.magmaSlugs);
+ ConfigHandler.writeIntConfig("fishing", "moogma", FishingTracker.moogmas);
+ ConfigHandler.writeIntConfig("fishing", "lavaLeech", FishingTracker.lavaLeeches);
+ ConfigHandler.writeIntConfig("fishing", "pyroclasticWorm", FishingTracker.pyroclasticWorms);
+ ConfigHandler.writeIntConfig("fishing", "lavaFlame", FishingTracker.lavaFlames);
+ ConfigHandler.writeIntConfig("fishing", "fireEel", FishingTracker.fireEels);
+ ConfigHandler.writeIntConfig("fishing", "taurus", FishingTracker.tauruses);
+ ConfigHandler.writeIntConfig("fishing", "thunder", FishingTracker.thunders);
+ ConfigHandler.writeIntConfig("fishing", "lordJawbus", FishingTracker.lordJawbuses);
+
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Fishing stats imported."));
}).start();
}
+ static int getSCFromApi(JsonObject obj, String key) {
+ int sc = 0;
+ if (obj.has(key)) sc = obj.get(key).getAsInt();
+ FishingTracker.seaCreatures += sc;
+ return sc;
+ }
+
}
diff --git a/src/main/java/me/Danker/commands/InventoryCommand.java b/src/main/java/me/Danker/commands/InventoryCommand.java
new file mode 100644
index 0000000..66a5725
--- /dev/null
+++ b/src/main/java/me/Danker/commands/InventoryCommand.java
@@ -0,0 +1,164 @@
+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.client.Minecraft;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.command.CommandBase;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.InventoryBasic;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.CompressedStreamTools;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Base64;
+import java.util.Collections;
+import java.util.List;
+
+public class InventoryCommand extends CommandBase {
+
+ public static GuiChest chest = null;
+
+ @Override
+ public String getCommandName() {
+ return "inventory";
+ }
+
+ @Override
+ public List<String> getCommandAliases() {
+ return Collections.singletonList("inv");
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName() + " [name]";
+ }
+
+ public static String usage(ICommandSender arg0) {
+ return new InventoryCommand().getCommandUsage(arg0);
+ }
+
+ @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 arg0, String[] arg1) throws CommandException {
+ // MULTI THREAD DRIFTING
+ new Thread(() -> {
+ EntityPlayer player = (EntityPlayer) arg0;
+ Minecraft mc = Minecraft.getMinecraft();
+
+ // Check key
+ String key = ConfigHandler.getString("api", "APIKey");
+ if (key.equals("")) {
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "API key not set. Use /setkey."));
+ return;
+ }
+
+ // Get UUID for Hypixel API requests
+ String username;
+ String uuid;
+ if (arg1.length == 0) {
+ username = player.getName();
+ uuid = player.getUniqueID().toString().replaceAll("[\\-]", "");
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking inventory of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ } else {
+ username = arg1[0];
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking inventory 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, true);
+ if (!profileResponse.get("success").getAsBoolean()) {
+ String reason = profileResponse.get("cause").getAsString();
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Failed with reason: " + reason));
+ return;
+ }
+
+ System.out.println("Fetching inventory...");
+ JsonObject userObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject();
+
+ IInventory inventory = new InventoryBasic(username + "'s Inventory:", true, 54);
+
+ String armourBase64 = userObject.get("inv_armor").getAsJsonObject().get("data").getAsString();
+ InputStream armourStream = new ByteArrayInputStream(Base64.getDecoder().decode(armourBase64));
+
+ try {
+ // Armour
+ NBTTagCompound armour = CompressedStreamTools.readCompressed(armourStream);
+ NBTTagList armourList = armour.getTagList("i", 10);
+
+ for (int i = 0; i < armourList.tagCount(); i++) {
+ NBTTagCompound item = armourList.getCompoundTagAt(i);
+ if (item.hasNoTags()) continue;
+ inventory.setInventorySlotContents(7 - i * 2, ItemStack.loadItemStackFromNBT(item));
+ }
+
+ ItemStack glass = new ItemStack(Blocks.stained_glass_pane, 1, 15);
+ glass.setStackDisplayName("");
+ for (int i = 0; i < 18; i++) {
+ if (i < 8 && i % 2 == 1) continue;
+ inventory.setInventorySlotContents(i, glass);
+ }
+
+ // Inventory
+ if (userObject.has("inv_contents")) {
+ String invBase64 = userObject.get("inv_contents").getAsJsonObject().get("data").getAsString();
+ InputStream invStream = new ByteArrayInputStream(Base64.getDecoder().decode(invBase64));
+
+ NBTTagCompound inv = CompressedStreamTools.readCompressed(invStream);
+ NBTTagList invList = inv.getTagList("i", 10);
+
+ for (int i = 0; i < invList.tagCount(); i++) {
+ NBTTagCompound item = invList.getCompoundTagAt(i);
+ if (item.hasNoTags()) continue;
+ inventory.setInventorySlotContents(i < 9 ? i + 45 : i + 9, ItemStack.loadItemStackFromNBT(item));
+ }
+ } else {
+ ItemStack notEnabled = new ItemStack(Blocks.barrier, 1, 0);
+ notEnabled.setStackDisplayName(EnumChatFormatting.RED + "Inventory API not enabled.");
+ for (int i = 18; i < 54; i++) {
+ inventory.setInventorySlotContents(i, notEnabled);
+ }
+ }
+ } catch (IOException ex) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "An error has occurred while reading inventory data. See logs for more info."));
+ ex.printStackTrace();
+ }
+
+ chest = new GuiChest(player.inventory, inventory);
+ DankersSkyblockMod.guiToOpen = "inventory";
+ }).start();
+ }
+
+}
diff --git a/src/main/java/me/Danker/commands/LobbyBankCommand.java b/src/main/java/me/Danker/commands/LobbyBankCommand.java
index 886077c..fc63d89 100644
--- a/src/main/java/me/Danker/commands/LobbyBankCommand.java
+++ b/src/main/java/me/Danker/commands/LobbyBankCommand.java
@@ -5,6 +5,7 @@ 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.client.Minecraft;
import net.minecraft.client.network.NetworkPlayerInfo;
import net.minecraft.command.CommandBase;
@@ -55,7 +56,7 @@ public class LobbyBankCommand extends CommandBase {
try {
// Create deep copy of players to prevent passing reference and ConcurrentModificationException
Collection<NetworkPlayerInfo> players = new ArrayList<>(Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap());
- playerSP.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking skill average of lobby. Estimated time: " + (int) (players.size() * 1.2 + 1) + " seconds."));
+ playerSP.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking bank of lobby. Estimated time: " + (int) (Utils.getMatchingPlayers("").size() * 1.2 + 1) + " seconds."));
// Send request every .6 seconds, leaving room for another 20 requests per minute
for (final NetworkPlayerInfo player : players) {
@@ -65,7 +66,7 @@ public class LobbyBankCommand extends CommandBase {
long biggestLastSave = 0;
int profileIndex = -1;
Thread.sleep(600);
- JsonObject profileResponse = APIHandler.getResponse("https://api.hypixel.net/skyblock/profiles?uuid=" + UUID + "&key=" + key);
+ JsonObject profileResponse = APIHandler.getResponse("https://api.hypixel.net/skyblock/profiles?uuid=" + UUID + "&key=" + key, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
System.out.println("User " + player.getGameProfile().getName() + " failed with reason: " + reason);
diff --git a/src/main/java/me/Danker/commands/LobbySkillsCommand.java b/src/main/java/me/Danker/commands/LobbySkillsCommand.java
index b6cd87d..f9f1271 100644
--- a/src/main/java/me/Danker/commands/LobbySkillsCommand.java
+++ b/src/main/java/me/Danker/commands/LobbySkillsCommand.java
@@ -58,7 +58,7 @@ public class LobbySkillsCommand extends CommandBase {
try {
// Create deep copy of players to prevent passing reference and ConcurrentModificationException
Collection<NetworkPlayerInfo> players = new ArrayList<>(Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap());
- playerSP.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking skill average of lobby. Estimated time: " + (int) (players.size() * 1.2 + 1) + " seconds."));
+ playerSP.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking skill average of lobby. Estimated time: " + (int) (Utils.getMatchingPlayers("").size() * 1.2 + 1) + " seconds."));
// Send request every .6 seconds, leaving room for another 20 requests per minute
for (final NetworkPlayerInfo player : players) {
@@ -68,7 +68,7 @@ public class LobbySkillsCommand extends CommandBase {
long biggestLastSave = 0;
int profileIndex = -1;
Thread.sleep(600);
- JsonObject profileResponse = APIHandler.getResponse("https://api.hypixel.net/skyblock/profiles?uuid=" + UUID + "&key=" + key);
+ JsonObject profileResponse = APIHandler.getResponse("https://api.hypixel.net/skyblock/profiles?uuid=" + UUID + "&key=" + key, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
System.out.println("User " + player.getGameProfile().getName() + " failed with reason: " + reason);
@@ -134,7 +134,7 @@ public class LobbySkillsCommand extends CommandBase {
} else {
Thread.sleep(600); // Sleep for another request
System.out.println("Fetching skills from achievement API");
- JsonObject playerObject = APIHandler.getResponse("https://api.hypixel.net/player?uuid=" + UUID + "&key=" + key);
+ JsonObject playerObject = APIHandler.getResponse("https://api.hypixel.net/player?uuid=" + UUID + "&key=" + key, true);
if (!playerObject.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
diff --git a/src/main/java/me/Danker/commands/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java
index 51347a3..3be46a4 100644
--- a/src/main/java/me/Danker/commands/LootCommand.java
+++ b/src/main/java/me/Danker/commands/LootCommand.java
@@ -1,7 +1,7 @@
package me.Danker.commands;
import me.Danker.DankersSkyblockMod;
-import me.Danker.features.loot.LootTracker;
+import me.Danker.features.loot.*;
import me.Danker.utils.Utils;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
@@ -24,7 +24,7 @@ public class LootCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <zombie/spider/wolf/fishing/catacombs/mythological> [winter/festival/spooky/f(1-7)/session]";
+ return "/" + getCommandName() + " <zombie/spider/wolf/enderman/blaze/fishing/catacombs/mythological> [winter/festival/spooky/ch/lava/f(1-7)/mm/session]";
}
public static String usage(ICommandSender arg0) {
@@ -39,11 +39,11 @@ public class LootCommand extends CommandBase {
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
if (args.length == 1) {
- return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "fishing", "catacombs", "mythological");
+ return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "blaze", "fishing", "catacombs", "mythological");
} else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) {
- return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "session");
+ return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "session");
} else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) {
- return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7");
+ return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7", "mm", "master");
} else if (args.length > 1) {
return getListOfStringsMatchingLastWord(args, "session");
}
@@ -64,259 +64,430 @@ public class LootCommand extends CommandBase {
String bossesBetween;
String drop20;
NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US);
- boolean showSession = false;
- if (arg1[arg1.length - 1].equalsIgnoreCase("session")) showSession = true;
+ boolean showSession = arg1[arg1.length - 1].equalsIgnoreCase("session");
switch (arg1[0].toLowerCase()) {
case "wolf":
if (showSession) {
- if (LootTracker.wolfTimeSession == -1) {
+ if (WolfTracker.wolfTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.wolfTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(WolfTracker.wolfTimeSession, timeNow);
}
- if (LootTracker.wolfBossesSession == -1) {
+ if (WolfTracker.wolfBossesSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.wolfBossesSession);
+ bossesBetween = nf.format(WolfTracker.wolfBossesSession);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.wolfWheelsSession);
+ drop20 = nf.format(WolfTracker.wolfWheelsSession);
} else {
- drop20 = nf.format(LootTracker.wolfWheelsDropsSession) + " times";
+ drop20 = nf.format(WolfTracker.wolfWheelsDropsSession) + " times";
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.DARK_AQUA + EnumChatFormatting.BOLD + " Sven Loot Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Svens Killed: " + nf.format(LootTracker.wolfSvensSession) + "\n" +
- EnumChatFormatting.GREEN + " Wolf Teeth: " + nf.format(LootTracker.wolfTeethSession) + "\n" +
+ EnumChatFormatting.GOLD + " Svens Killed: " + nf.format(WolfTracker.wolfSvensSession) + "\n" +
+ EnumChatFormatting.GREEN + " Wolf Teeth: " + nf.format(WolfTracker.wolfTeethSession) + "\n" +
EnumChatFormatting.BLUE + " Hamster Wheels: " + drop20 + "\n" +
- EnumChatFormatting.AQUA + " Spirit Runes: " + LootTracker.wolfSpiritsSession + "\n" +
- EnumChatFormatting.WHITE + " Critical VI Books: " + LootTracker.wolfBooksSession + "\n" +
- EnumChatFormatting.DARK_RED + " Red Claw Eggs: " + LootTracker.wolfEggsSession + "\n" +
- EnumChatFormatting.GOLD + " Couture Runes: " + LootTracker.wolfCouturesSession + "\n" +
- EnumChatFormatting.AQUA + " Grizzly Baits: " + LootTracker.wolfBaitsSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Overfluxes: " + LootTracker.wolfFluxesSession + "\n" +
+ EnumChatFormatting.AQUA + " Spirit Runes: " + WolfTracker.wolfSpiritsSession + "\n" +
+ EnumChatFormatting.WHITE + " Critical VI Books: " + WolfTracker.wolfBooksSession + "\n" +
+ EnumChatFormatting.DARK_RED + " Red Claw Eggs: " + WolfTracker.wolfEggsSession + "\n" +
+ EnumChatFormatting.GOLD + " Couture Runes: " + WolfTracker.wolfCouturesSession + "\n" +
+ EnumChatFormatting.AQUA + " Grizzly Baits: " + WolfTracker.wolfBaitsSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Overfluxes: " + WolfTracker.wolfFluxesSession + "\n" +
EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
return;
}
- if (LootTracker.wolfTime == -1) {
+ if (WolfTracker.wolfTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.wolfTime, timeNow);
+ timeBetween = Utils.getTimeBetween(WolfTracker.wolfTime, timeNow);
}
- if (LootTracker.wolfBosses == -1) {
+ if (WolfTracker.wolfBosses == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.wolfBosses);
+ bossesBetween = nf.format(WolfTracker.wolfBosses);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.wolfWheels);
+ drop20 = nf.format(WolfTracker.wolfWheels);
} else {
- drop20 = nf.format(LootTracker.wolfWheelsDrops) + " times";
+ drop20 = nf.format(WolfTracker.wolfWheelsDrops) + " times";
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.DARK_AQUA + EnumChatFormatting.BOLD + " Sven Loot Summary:\n" +
- EnumChatFormatting.GOLD + " Svens Killed: " + nf.format(LootTracker.wolfSvens) + "\n" +
- EnumChatFormatting.GREEN + " Wolf Teeth: " + nf.format(LootTracker.wolfTeeth) + "\n" +
+ EnumChatFormatting.GOLD + " Svens Killed: " + nf.format(WolfTracker.wolfSvens) + "\n" +
+ EnumChatFormatting.GREEN + " Wolf Teeth: " + nf.format(WolfTracker.wolfTeeth) + "\n" +
EnumChatFormatting.BLUE + " Hamster Wheels: " + drop20 + "\n" +
- EnumChatFormatting.AQUA + " Spirit Runes: " + LootTracker.wolfSpirits + "\n" +
- EnumChatFormatting.WHITE + " Critical VI Books: " + LootTracker.wolfBooks + "\n" +
- EnumChatFormatting.DARK_RED + " Red Claw Eggs: " + LootTracker.wolfEggs + "\n" +
- EnumChatFormatting.GOLD + " Couture Runes: " + LootTracker.wolfCoutures + "\n" +
- EnumChatFormatting.AQUA + " Grizzly Baits: " + LootTracker.wolfBaits + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Overfluxes: " + LootTracker.wolfFluxes + "\n" +
+ EnumChatFormatting.AQUA + " Spirit Runes: " + WolfTracker.wolfSpirits + "\n" +
+ EnumChatFormatting.WHITE + " Critical VI Books: " + WolfTracker.wolfBooks + "\n" +
+ EnumChatFormatting.DARK_RED + " Red Claw Eggs: " + WolfTracker.wolfEggs + "\n" +
+ EnumChatFormatting.GOLD + " Couture Runes: " + WolfTracker.wolfCoutures + "\n" +
+ EnumChatFormatting.AQUA + " Grizzly Baits: " + WolfTracker.wolfBaits + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Overfluxes: " + WolfTracker.wolfFluxes + "\n" +
EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
break;
case "spider":
if (showSession) {
- if (LootTracker.spiderTimeSession == -1) {
+ if (SpiderTracker.spiderTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.spiderTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(SpiderTracker.spiderTimeSession, timeNow);
}
- if (LootTracker.spiderBossesSession == -1) {
+ if (SpiderTracker.spiderBossesSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.spiderBossesSession);
+ bossesBetween = nf.format(SpiderTracker.spiderBossesSession);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.spiderTAPSession);
+ drop20 = nf.format(SpiderTracker.spiderTAPSession);
} else {
- drop20 = nf.format(LootTracker.spiderTAPDropsSession) + " times";
+ drop20 = nf.format(SpiderTracker.spiderTAPDropsSession) + " times";
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " Spider Loot Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Tarantulas Killed: " + nf.format(LootTracker.spiderTarantulasSession) + "\n" +
- EnumChatFormatting.GREEN + " Tarantula Webs: " + nf.format(LootTracker.spiderWebsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Tarantulas Killed: " + nf.format(SpiderTracker.spiderTarantulasSession) + "\n" +
+ EnumChatFormatting.GREEN + " Tarantula Webs: " + nf.format(SpiderTracker.spiderWebsSession) + "\n" +
EnumChatFormatting.DARK_GREEN + " Arrow Poison: " + drop20 + "\n" +
- EnumChatFormatting.DARK_GRAY + " Bite Runes: " + LootTracker.spiderBitesSession + "\n" +
- EnumChatFormatting.WHITE + " Bane VI Books: " + LootTracker.spiderBooksSession + "\n" +
- EnumChatFormatting.AQUA + " Spider Catalysts: " + LootTracker.spiderCatalystsSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Tarantula Talismans: " + LootTracker.spiderTalismansSession + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + " Fly Swatters: " + LootTracker.spiderSwattersSession + "\n" +
- EnumChatFormatting.GOLD + " Digested Mosquitos: " + LootTracker.spiderMosquitosSession + "\n" +
+ EnumChatFormatting.DARK_GRAY + " Bite Runes: " + SpiderTracker.spiderBitesSession + "\n" +
+ EnumChatFormatting.WHITE + " Bane VI Books: " + SpiderTracker.spiderBooksSession + "\n" +
+ EnumChatFormatting.AQUA + " Spider Catalysts: " + SpiderTracker.spiderCatalystsSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Tarantula Talismans: " + SpiderTracker.spiderTalismansSession + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Fly Swatters: " + SpiderTracker.spiderSwattersSession + "\n" +
+ EnumChatFormatting.GOLD + " Digested Mosquitos: " + SpiderTracker.spiderMosquitosSession + "\n" +
EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " -------------------"));
return;
}
- if (LootTracker.spiderTime == -1) {
+ if (SpiderTracker.spiderTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.spiderTime, timeNow);
+ timeBetween = Utils.getTimeBetween(SpiderTracker.spiderTime, timeNow);
}
- if (LootTracker.spiderBosses == -1) {
+ if (SpiderTracker.spiderBosses == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.spiderBosses);
+ bossesBetween = nf.format(SpiderTracker.spiderBosses);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.spiderTAP);
+ drop20 = nf.format(SpiderTracker.spiderTAP);
} else {
- drop20 = nf.format(LootTracker.spiderTAPDrops) + " times";
+ drop20 = nf.format(SpiderTracker.spiderTAPDrops) + " times";
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " Spider Loot Summary:\n" +
- EnumChatFormatting.GOLD + " Tarantulas Killed: " + nf.format(LootTracker.spiderTarantulas) + "\n" +
- EnumChatFormatting.GREEN + " Tarantula Webs: " + nf.format(LootTracker.spiderWebs) + "\n" +
+ EnumChatFormatting.GOLD + " Tarantulas Killed: " + nf.format(SpiderTracker.spiderTarantulas) + "\n" +
+ EnumChatFormatting.GREEN + " Tarantula Webs: " + nf.format(SpiderTracker.spiderWebs) + "\n" +
EnumChatFormatting.DARK_GREEN + " Arrow Poison: " + drop20 + "\n" +
- EnumChatFormatting.DARK_GRAY + " Bite Runes: " + LootTracker.spiderBites + "\n" +
- EnumChatFormatting.WHITE + " Bane VI Books: " + LootTracker.spiderBooks + "\n" +
- EnumChatFormatting.AQUA + " Spider Catalysts: " + LootTracker.spiderCatalysts + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Tarantula Talismans: " + LootTracker.spiderTalismans + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + " Fly Swatters: " + LootTracker.spiderSwatters + "\n" +
- EnumChatFormatting.GOLD + " Digested Mosquitos: " + LootTracker.spiderMosquitos + "\n" +
+ EnumChatFormatting.DARK_GRAY + " Bite Runes: " + SpiderTracker.spiderBites + "\n" +
+ EnumChatFormatting.WHITE + " Bane VI Books: " + SpiderTracker.spiderBooks + "\n" +
+ EnumChatFormatting.AQUA + " Spider Catalysts: " + SpiderTracker.spiderCatalysts + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Tarantula Talismans: " + SpiderTracker.spiderTalismans + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Fly Swatters: " + SpiderTracker.spiderSwatters + "\n" +
+ EnumChatFormatting.GOLD + " Digested Mosquitos: " + SpiderTracker.spiderMosquitos + "\n" +
EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " -------------------"));
break;
case "zombie":
if (showSession) {
- if (LootTracker.zombieTimeSession == -1) {
+ if (ZombieTracker.zombieTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.zombieTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(ZombieTracker.zombieTimeSession, timeNow);
}
- if (LootTracker.zombieBossesSession == -1) {
+ if (ZombieTracker.zombieBossesSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.zombieBossesSession);
+ bossesBetween = nf.format(ZombieTracker.zombieBossesSession);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.zombieFoulFleshSession);
+ drop20 = nf.format(ZombieTracker.zombieFoulFleshSession);
} else {
- drop20 = nf.format(LootTracker.zombieFoulFleshDropsSession) + " times";
+ drop20 = nf.format(ZombieTracker.zombieFoulFleshDropsSession) + " times";
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.DARK_GREEN + EnumChatFormatting.BOLD + " Zombie Loot Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Revs Killed: " + nf.format(LootTracker.zombieRevsSession) + "\n" +
- EnumChatFormatting.GREEN + " Revenant Flesh: " + nf.format(LootTracker.zombieRevFleshSession) + "\n" +
+ EnumChatFormatting.GOLD + " Revs Killed: " + nf.format(ZombieTracker.zombieRevsSession) + "\n" +
+ EnumChatFormatting.GREEN + " Revenant Flesh: " + nf.format(ZombieTracker.zombieRevFleshSession) + "\n" +
+ EnumChatFormatting.GREEN + " Revenant Viscera: " + nf.format(ZombieTracker.zombieRevVisceraSession) + "\n" +
EnumChatFormatting.BLUE + " Foul Flesh: " + drop20 + "\n" +
- EnumChatFormatting.DARK_GREEN + " Pestilence Runes: " +LootTracker.zombiePestilencesSession + "\n" +
- EnumChatFormatting.WHITE + " Smite VI Books: " + LootTracker.zombieBooksSession + "\n" +
- EnumChatFormatting.AQUA + " Undead Catalysts: " + LootTracker.zombieUndeadCatasSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Beheaded Horrors: " + LootTracker.zombieBeheadedsSession + "\n" +
- EnumChatFormatting.RED + " Revenant Catalysts: " + LootTracker.zombieRevCatasSession + "\n" +
- EnumChatFormatting.DARK_GREEN + " Snake Runes: " + LootTracker.zombieSnakesSession + "\n" +
- EnumChatFormatting.GOLD + " Scythe Blades: " + LootTracker.zombieScythesSession + "\n" +
- EnumChatFormatting.RED + " Shard of the Shreddeds: " + LootTracker.zombieShardsSession + "\n" +
- EnumChatFormatting.RED + " Warden Hearts: " + LootTracker.zombieWardenHeartsSession + "\n" +
+ EnumChatFormatting.DARK_GREEN + " Pestilence Runes: " +ZombieTracker.zombiePestilencesSession + "\n" +
+ EnumChatFormatting.WHITE + " Smite VI Books: " + ZombieTracker.zombieBooksSession + "\n" +
+ EnumChatFormatting.WHITE + " Smite VII Books: " + ZombieTracker.zombieBooksT7Session + "\n" +
+ EnumChatFormatting.AQUA + " Undead Catalysts: " + ZombieTracker.zombieUndeadCatasSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Beheaded Horrors: " + ZombieTracker.zombieBeheadedsSession + "\n" +
+ EnumChatFormatting.RED + " Revenant Catalysts: " + ZombieTracker.zombieRevCatasSession + "\n" +
+ EnumChatFormatting.DARK_GREEN + " Snake Runes: " + ZombieTracker.zombieSnakesSession + "\n" +
+ EnumChatFormatting.GOLD + " Scythe Blades: " + ZombieTracker.zombieScythesSession + "\n" +
+ EnumChatFormatting.RED + " Shard of the Shreddeds: " + ZombieTracker.zombieShardsSession + "\n" +
+ EnumChatFormatting.RED + " Warden Hearts: " + ZombieTracker.zombieWardenHeartsSession + "\n" +
EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
EnumChatFormatting.GREEN + EnumChatFormatting.BOLD + " -------------------"));
return;
}
- if (LootTracker.zombieTime == -1) {
+ if (ZombieTracker.zombieTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.zombieTime, timeNow);
+ timeBetween = Utils.getTimeBetween(ZombieTracker.zombieTime, timeNow);
}
- if (LootTracker.zombieBosses == -1) {
+ if (ZombieTracker.zombieBosses == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.zombieBosses);
+ bossesBetween = nf.format(ZombieTracker.zombieBosses);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.zombieFoulFlesh);
+ drop20 = nf.format(ZombieTracker.zombieFoulFlesh);
} else {
- drop20 = nf.format(LootTracker.zombieFoulFleshDrops) + " times";
+ drop20 = nf.format(ZombieTracker.zombieFoulFleshDrops) + " times";
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.DARK_GREEN + EnumChatFormatting.BOLD + " Zombie Loot Summary:\n" +
- EnumChatFormatting.GOLD + " Revs Killed: " + nf.format(LootTracker.zombieRevs) + "\n" +
- EnumChatFormatting.GREEN + " Revenant Flesh: " + nf.format(LootTracker.zombieRevFlesh) + "\n" +
+ EnumChatFormatting.GOLD + " Revs Killed: " + nf.format(ZombieTracker.zombieRevs) + "\n" +
+ EnumChatFormatting.GREEN + " Revenant Flesh: " + nf.format(ZombieTracker.zombieRevFlesh) + "\n" +
+ EnumChatFormatting.GREEN + " Revenant Viscera: " + nf.format(ZombieTracker.zombieRevViscera) + "\n" +
EnumChatFormatting.BLUE + " Foul Flesh: " + drop20 + "\n" +
- EnumChatFormatting.DARK_GREEN + " Pestilence Runes: " + LootTracker.zombiePestilences + "\n" +
- EnumChatFormatting.WHITE + " Smite VI Books: " + LootTracker.zombieBooks + "\n" +
- EnumChatFormatting.AQUA + " Undead Catalysts: " + LootTracker.zombieUndeadCatas + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Beheaded Horrors: " + LootTracker.zombieBeheadeds + "\n" +
- EnumChatFormatting.RED + " Revenant Catalysts: " + LootTracker.zombieRevCatas + "\n" +
- EnumChatFormatting.DARK_GREEN + " Snake Runes: " + LootTracker.zombieSnakes + "\n" +
- EnumChatFormatting.GOLD + " Scythe Blades: " + LootTracker.zombieScythes + "\n" +
- EnumChatFormatting.RED + " Shard of the Shreddeds: " + LootTracker.zombieShards + "\n" +
- EnumChatFormatting.RED + " Warden Hearts: " + LootTracker.zombieWardenHearts + "\n" +
+ EnumChatFormatting.DARK_GREEN + " Pestilence Runes: " + ZombieTracker.zombiePestilences + "\n" +
+ EnumChatFormatting.WHITE + " Smite VI Books: " + ZombieTracker.zombieBooks + "\n" +
+ EnumChatFormatting.WHITE + " Smite VII Books: " + ZombieTracker.zombieBooksT7 + "\n" +
+ EnumChatFormatting.AQUA + " Undead Catalysts: " + ZombieTracker.zombieUndeadCatas + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Beheaded Horrors: " + ZombieTracker.zombieBeheadeds + "\n" +
+ EnumChatFormatting.RED + " Revenant Catalysts: " + ZombieTracker.zombieRevCatas + "\n" +
+ EnumChatFormatting.DARK_GREEN + " Snake Runes: " + ZombieTracker.zombieSnakes + "\n" +
+ EnumChatFormatting.GOLD + " Scythe Blades: " + ZombieTracker.zombieScythes + "\n" +
+ EnumChatFormatting.RED + " Shard of the Shreddeds: " + ZombieTracker.zombieShards + "\n" +
+ EnumChatFormatting.RED + " Warden Hearts: " + ZombieTracker.zombieWardenHearts + "\n" +
EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
EnumChatFormatting.GREEN + EnumChatFormatting.BOLD + " -------------------"));
break;
+ case "enderman":
+ if (showSession) {
+ if (EndermanTracker.endermanTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(EndermanTracker.endermanTimeSession, timeNow);
+ }
+ if (EndermanTracker.endermanBossesSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(EndermanTracker.endermanBossesSession);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(EndermanTracker.endermanTAPSession);
+ } else {
+ drop20 = nf.format(EndermanTracker.endermanTAPDropsSession) + " times";
+ }
+
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.DARK_GREEN + EnumChatFormatting.BOLD + " Enderman Loot Summary (Current Session):\n" +
+ EnumChatFormatting.GOLD + " Voidglooms Killed: " + nf.format(EndermanTracker.endermanVoidgloomsSession) + "\n" +
+ EnumChatFormatting.DARK_GRAY + " Null Spheres: " + nf.format(EndermanTracker.endermanNullSpheresSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Arrow Poison: " + drop20 + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Endersnake Runes: " + EndermanTracker.endermanEndersnakesSession + "\n" +
+ EnumChatFormatting.DARK_GREEN + " Summoning Eyes: " + EndermanTracker.endermanSummoningEyesSession + "\n" +
+ EnumChatFormatting.AQUA + " Mana Steal Books: " + EndermanTracker.endermanManaBooksSession + "\n" +
+ EnumChatFormatting.BLUE + " Transmission Tuners: " + EndermanTracker.endermanTunersSession + "\n" +
+ EnumChatFormatting.YELLOW + " Null Atoms: " + EndermanTracker.endermanAtomsSession + "\n" +
+ EnumChatFormatting.AQUA + " Espresso Machines: " + EndermanTracker.endermanEspressoMachinesSession + "\n" +
+ EnumChatFormatting.WHITE + " Smarty Pants Books: " + EndermanTracker.endermanSmartyBooksSession + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " End Runes: " + EndermanTracker.endermanEndRunesSession + "\n" +
+ EnumChatFormatting.RED + " Blood Chalices: " + EndermanTracker.endermanChalicesSession + "\n" +
+ EnumChatFormatting.RED + " Sinful Dice: " + EndermanTracker.endermanDiceSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Artifact Upgrader: " + EndermanTracker.endermanArtifactsSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Enderman Skins: " + EndermanTracker.endermanSkinsSession + "\n" +
+ EnumChatFormatting.GRAY + " Enchant Runes: " + EndermanTracker.endermanEnchantRunesSession + "\n" +
+ EnumChatFormatting.GOLD + " Etherwarp Mergers: " + EndermanTracker.endermanMergersSession + "\n" +
+ EnumChatFormatting.GOLD + " Judgement Cores: " + EndermanTracker.endermanCoresSession + "\n" +
+ EnumChatFormatting.RED + " Ender Slayer VII Books: " + EndermanTracker.endermanEnderBooksSession + "\n" +
+ EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
+ EnumChatFormatting.DARK_PURPLE + EnumChatFormatting.BOLD + " -------------------"));
+ return;
+ }
+
+ if (EndermanTracker.endermanTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(EndermanTracker.endermanTime, timeNow);
+ }
+ if (EndermanTracker.endermanBosses == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(EndermanTracker.endermanBosses);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(EndermanTracker.endermanTAP);
+ } else {
+ drop20 = nf.format(EndermanTracker.endermanTAPDrops) + " times";
+ }
+
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.DARK_GREEN + EnumChatFormatting.BOLD + " Enderman Loot Summary:\n" +
+ EnumChatFormatting.GOLD + " Voidglooms Killed: " + nf.format(EndermanTracker.endermanVoidglooms) + "\n" +
+ EnumChatFormatting.DARK_GRAY + " Null Spheres: " + nf.format(EndermanTracker.endermanNullSpheres) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Arrow Poison: " + drop20 + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Endersnake Runes: " + EndermanTracker.endermanEndersnakes + "\n" +
+ EnumChatFormatting.DARK_GREEN + " Summoning Eyes: " + EndermanTracker.endermanSummoningEyes + "\n" +
+ EnumChatFormatting.AQUA + " Mana Steal Books: " + EndermanTracker.endermanManaBooks + "\n" +
+ EnumChatFormatting.BLUE + " Transmission Tuners: " + EndermanTracker.endermanTuners + "\n" +
+ EnumChatFormatting.YELLOW + " Null Atoms: " + EndermanTracker.endermanAtoms + "\n" +
+ EnumChatFormatting.AQUA + " Espresso Machines: " + EndermanTracker.endermanEspressoMachines + "\n" +
+ EnumChatFormatting.WHITE + " Smarty Pants Books: " + EndermanTracker.endermanSmartyBooks + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " End Runes: " + EndermanTracker.endermanEndRunes + "\n" +
+ EnumChatFormatting.RED + " Blood Chalices: " + EndermanTracker.endermanChalices + "\n" +
+ EnumChatFormatting.RED + " Sinful Dice: " + EndermanTracker.endermanDice + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Artifact Upgrader: " + EndermanTracker.endermanArtifacts + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Enderman Skins: " + EndermanTracker.endermanSkins + "\n" +
+ EnumChatFormatting.GRAY + " Enchant Runes: " + EndermanTracker.endermanEnchantRunes + "\n" +
+ EnumChatFormatting.GOLD + " Etherwarp Mergers: " + EndermanTracker.endermanMergers + "\n" +
+ EnumChatFormatting.GOLD + " Judgement Cores: " + EndermanTracker.endermanCores + "\n" +
+ EnumChatFormatting.RED + " Ender Slayer VII Books: " + EndermanTracker.endermanEnderBooks + "\n" +
+ EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
+ EnumChatFormatting.DARK_PURPLE + EnumChatFormatting.BOLD + " -------------------"));
+ break;
+ case "blaze":
+ if (showSession) {
+ if (BlazeTracker.timeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(BlazeTracker.timeSession, timeNow);
+ }
+ if (BlazeTracker.bossesSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(BlazeTracker.bossesSession);
+ }
+
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " Blaze Loot Summary (Current Session):\n" +
+ EnumChatFormatting.GOLD + " Demonlords Killed: " + nf.format(BlazeTracker.demonlordsSession) + "\n" +
+ EnumChatFormatting.GRAY + " Derelict Ashes: " + nf.format(BlazeTracker.derelictAshesSession) + "\n" +
+ EnumChatFormatting.RED + " Lavatear Runes: " + nf.format(BlazeTracker.lavatearRunesSession) + "\n" +
+ EnumChatFormatting.AQUA + " Splash Potions: " + nf.format(BlazeTracker.splashPotionsSession) + "\n" +
+ EnumChatFormatting.DARK_RED + " Magma Arrows: " + nf.format(BlazeTracker.magmaArrowsSession) + "\n" +
+ EnumChatFormatting.DARK_AQUA + " Mana Disintegrators: " + nf.format(BlazeTracker.manaDisintegratorsSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Scorched Books: " + nf.format(BlazeTracker.scorchedBooksSession) + "\n" +
+ EnumChatFormatting.WHITE + " Kelvin Inverters: " + nf.format(BlazeTracker.kelvinInvertersSession) + "\n" +
+ EnumChatFormatting.BLUE + " Blaze Rod Distillates: " + nf.format(BlazeTracker.blazeRodDistillatesSession) + "\n" +
+ EnumChatFormatting.BLUE + " Glowstone Distillates: " + nf.format(BlazeTracker.glowstoneDistillatesSession) + "\n" +
+ EnumChatFormatting.BLUE + " Magma Cream Distillates: " + nf.format(BlazeTracker.magmaCreamDistillatesSession) + "\n" +
+ EnumChatFormatting.BLUE + " Nether Wart Distillates: " + nf.format(BlazeTracker.netherWartDistillatesSession) + "\n" +
+ EnumChatFormatting.BLUE + " Gabagool Distillates: " + nf.format(BlazeTracker.gabagoolDistillatesSession) + "\n" +
+ EnumChatFormatting.RED + " Scorched Power Crystals: " + nf.format(BlazeTracker.scorchedPowerCrystalsSession) + "\n" +
+ EnumChatFormatting.RED + " Fire Aspect Books: " + nf.format(BlazeTracker.fireAspectBooksSession) + "\n" +
+ EnumChatFormatting.GOLD + " Fiery Burst Runes: " + nf.format(BlazeTracker.fieryBurstRunesSession) + "\n" +
+ EnumChatFormatting.WHITE + " Opal Gems: " + nf.format(BlazeTracker.opalGemsSession) + "\n" +
+ EnumChatFormatting.RED + " Archfiend Dice: " + nf.format(BlazeTracker.archfiendDiceSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Duplex Books: " + nf.format(BlazeTracker.duplexBooksSession) + "\n" +
+ EnumChatFormatting.GOLD + " High Class Archfiend Dice: " + nf.format(BlazeTracker.highClassArchfiendDiceSession) + "\n" +
+ EnumChatFormatting.GOLD + " Engineering Plans: " + nf.format(BlazeTracker.engineeringPlansSession) + "\n" +
+ EnumChatFormatting.GOLD + " Subzero Inverters: " + nf.format(BlazeTracker.subzeroInvertersSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
+ EnumChatFormatting.RED + EnumChatFormatting.BOLD + " -------------------"));
+ return;
+ }
+
+ if (BlazeTracker.time == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(BlazeTracker.time, timeNow);
+ }
+ if (BlazeTracker.bosses == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(BlazeTracker.bosses);
+ }
+
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " Blaze Loot Summary:\n" +
+ EnumChatFormatting.GOLD + " Demonlords Killed: " + nf.format(BlazeTracker.demonlords) + "\n" +
+ EnumChatFormatting.GRAY + " Derelict Ashes: " + nf.format(BlazeTracker.derelictAshes) + "\n" +
+ EnumChatFormatting.RED + " Lavatear Runes: " + nf.format(BlazeTracker.lavatearRunes) + "\n" +
+ EnumChatFormatting.AQUA + " Splash Potions: " + nf.format(BlazeTracker.splashPotions) + "\n" +
+ EnumChatFormatting.DARK_RED + " Magma Arrows: " + nf.format(BlazeTracker.magmaArrows) + "\n" +
+ EnumChatFormatting.DARK_AQUA + " Mana Disintegrators: " + nf.format(BlazeTracker.manaDisintegrators) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Scorched Books: " + nf.format(BlazeTracker.scorchedBooks) + "\n" +
+ EnumChatFormatting.WHITE + " Kelvin Inverters: " + nf.format(BlazeTracker.kelvinInverters) + "\n" +
+ EnumChatFormatting.BLUE + " Blaze Rod Distillates: " + nf.format(BlazeTracker.blazeRodDistillates) + "\n" +
+ EnumChatFormatting.BLUE + " Glowstone Distillates: " + nf.format(BlazeTracker.glowstoneDistillates) + "\n" +
+ EnumChatFormatting.BLUE + " Magma Cream Distillates: " + nf.format(BlazeTracker.magmaCreamDistillates) + "\n" +
+ EnumChatFormatting.BLUE + " Nether Wart Distillates: " + nf.format(BlazeTracker.netherWartDistillates) + "\n" +
+ EnumChatFormatting.BLUE + " Gabagool Distillates: " + nf.format(BlazeTracker.gabagoolDistillates) + "\n" +
+ EnumChatFormatting.RED + " Scorched Power Crystals: " + nf.format(BlazeTracker.scorchedPowerCrystals) + "\n" +
+ EnumChatFormatting.RED + " Fire Aspect Books: " + nf.format(BlazeTracker.fireAspectBooks) + "\n" +
+ EnumChatFormatting.GOLD + " Fiery Burst Runes: " + nf.format(BlazeTracker.fieryBurstRunes) + "\n" +
+ EnumChatFormatting.WHITE + " Opal Gems: " + nf.format(BlazeTracker.opalGems) + "\n" +
+ EnumChatFormatting.RED + " Archfiend Dice: " + nf.format(BlazeTracker.archfiendDice) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Duplex Books: " + nf.format(BlazeTracker.duplexBooks) + "\n" +
+ EnumChatFormatting.GOLD + " High Class Archfiend Dice: " + nf.format(BlazeTracker.highClassArchfiendDice) + "\n" +
+ EnumChatFormatting.GOLD + " Engineering Plans: " + nf.format(BlazeTracker.engineeringPlans) + "\n" +
+ EnumChatFormatting.GOLD + " Subzero Inverters: " + nf.format(BlazeTracker.subzeroInverters) + "\n" +
+ EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" +
+ EnumChatFormatting.RED + EnumChatFormatting.BOLD + " -------------------"));
+ break;
case "fishing":
if (arg1.length > 1) {
if (arg1[1].equalsIgnoreCase("winter")) {
if (showSession) {
- if (LootTracker.yetiTimeSession == -1) {
+ if (FishingTracker.yetiTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.yetiTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(FishingTracker.yetiTimeSession, timeNow);
}
- if (LootTracker.yetiSCsSession == -1) {
+ if (FishingTracker.yetiSCsSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.yetiSCsSession);
+ bossesBetween = nf.format(FishingTracker.yetiSCsSession);
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.WHITE + EnumChatFormatting.BOLD + " Winter Fishing Summary (Current Session):\n" +
- EnumChatFormatting.AQUA + " Frozen Steves: " + nf.format(LootTracker.frozenStevesSession) + "\n" +
- EnumChatFormatting.WHITE + " Snowmans: " + nf.format(LootTracker.frostyTheSnowmansSession) + "\n" +
- EnumChatFormatting.DARK_GREEN + " Grinches: " + nf.format(LootTracker.grinchesSession) + "\n" +
- EnumChatFormatting.GOLD + " Yetis: " + nf.format(LootTracker.yetisSession) + "\n" +
+ EnumChatFormatting.AQUA + " Frozen Steves: " + nf.format(FishingTracker.frozenStevesSession) + "\n" +
+ EnumChatFormatting.WHITE + " Snowmans: " + nf.format(FishingTracker.frostyTheSnowmansSession) + "\n" +
+ EnumChatFormatting.DARK_GREEN + " Grinches: " + nf.format(FishingTracker.grinchesSession) + "\n" +
+ EnumChatFormatting.GOLD + " Yetis: " + nf.format(FishingTracker.yetisSession) + "\n" +
EnumChatFormatting.AQUA + " Time Since Yeti: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Creatures Since Yeti: " + bossesBetween + "\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
return;
}
- if (LootTracker.yetiTime == -1) {
+ if (FishingTracker.yetiTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.yetiTime, timeNow);
+ timeBetween = Utils.getTimeBetween(FishingTracker.yetiTime, timeNow);
}
- if (LootTracker.yetiSCs == -1) {
+ if (FishingTracker.yetiSCs == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.yetiSCs);
+ bossesBetween = nf.format(FishingTracker.yetiSCs);
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.WHITE + EnumChatFormatting.BOLD + " Winter Fishing Summary:\n" +
- EnumChatFormatting.AQUA + " Frozen Steves: " + nf.format(LootTracker.frozenSteves) + "\n" +
- EnumChatFormatting.WHITE + " Snowmans: " + nf.format(LootTracker.frostyTheSnowmans) + "\n" +
- EnumChatFormatting.DARK_GREEN + " Grinches: " + nf.format(LootTracker.grinches) + "\n" +
- EnumChatFormatting.GOLD + " Yetis: " + nf.format(LootTracker.yetis) + "\n" +
+ EnumChatFormatting.AQUA + " Frozen Steves: " + nf.format(FishingTracker.frozenSteves) + "\n" +
+ EnumChatFormatting.WHITE + " Snowmans: " + nf.format(FishingTracker.frostyTheSnowmans) + "\n" +
+ EnumChatFormatting.DARK_GREEN + " Grinches: " + nf.format(FishingTracker.grinches) + "\n" +
+ EnumChatFormatting.GOLD + " Yetis: " + nf.format(FishingTracker.yetis) + "\n" +
EnumChatFormatting.AQUA + " Time Since Yeti: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Creatures Since Yeti: " + bossesBetween + "\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
@@ -325,112 +496,195 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.DARK_BLUE + EnumChatFormatting.BOLD + " Fishing Festival Summary (Current Session):\n" +
- EnumChatFormatting.LIGHT_PURPLE + " Nurse Sharks: " + nf.format(LootTracker.nurseSharksSession) + "\n" +
- EnumChatFormatting.BLUE + " Blue Sharks: " + nf.format(LootTracker.blueSharksSession) + "\n" +
- EnumChatFormatting.GOLD + " Tiger Sharks: " + nf.format(LootTracker.tigerSharksSession) + "\n" +
- EnumChatFormatting.WHITE + " Great White Sharks: " + nf.format(LootTracker.greatWhiteSharksSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Nurse Sharks: " + nf.format(FishingTracker.nurseSharksSession) + "\n" +
+ EnumChatFormatting.BLUE + " Blue Sharks: " + nf.format(FishingTracker.blueSharksSession) + "\n" +
+ EnumChatFormatting.GOLD + " Tiger Sharks: " + nf.format(FishingTracker.tigerSharksSession) + "\n" +
+ EnumChatFormatting.WHITE + " Great White Sharks: " + nf.format(FishingTracker.greatWhiteSharksSession) + "\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.DARK_BLUE + EnumChatFormatting.BOLD + " Fishing Festival Summary:\n" +
- EnumChatFormatting.LIGHT_PURPLE + " Nurse Sharks: " + nf.format(LootTracker.nurseSharks) + "\n" +
- EnumChatFormatting.BLUE + " Blue Sharks: " + nf.format(LootTracker.blueSharks) + "\n" +
- EnumChatFormatting.GOLD + " Tiger Sharks: " + nf.format(LootTracker.tigerSharks) + "\n" +
- EnumChatFormatting.WHITE + " Great White Sharks: " + nf.format(LootTracker.greatWhiteSharks) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Nurse Sharks: " + nf.format(FishingTracker.nurseSharks) + "\n" +
+ EnumChatFormatting.BLUE + " Blue Sharks: " + nf.format(FishingTracker.blueSharks) + "\n" +
+ EnumChatFormatting.GOLD + " Tiger Sharks: " + nf.format(FishingTracker.tigerSharks) + "\n" +
+ EnumChatFormatting.WHITE + " Great White Sharks: " + nf.format(FishingTracker.greatWhiteSharks) + "\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
+ return;
} else if (arg1[1].equalsIgnoreCase("spooky")) {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + " Spooky Fishing Summary (Current Session):\n" +
- EnumChatFormatting.BLUE + " Scarecrows: " + nf.format(LootTracker.scarecrowsSession) + "\n" +
- EnumChatFormatting.GRAY + " Nightmares: " + nf.format(LootTracker.nightmaresSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Werewolves: " + nf.format(LootTracker.werewolfsSession) + "\n" +
- EnumChatFormatting.GOLD + " Phantom Fishers: " + nf.format(LootTracker.phantomFishersSession) + "\n" +
- EnumChatFormatting.GOLD + " Grim Reapers: " + nf.format(LootTracker.grimReapersSession) + "\n" +
+ EnumChatFormatting.BLUE + " Scarecrows: " + nf.format(FishingTracker.scarecrowsSession) + "\n" +
+ EnumChatFormatting.GRAY + " Nightmares: " + nf.format(FishingTracker.nightmaresSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Werewolves: " + nf.format(FishingTracker.werewolfsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Phantom Fishers: " + nf.format(FishingTracker.phantomFishersSession) + "\n" +
+ EnumChatFormatting.GOLD + " Grim Reapers: " + nf.format(FishingTracker.grimReapersSession) + "\n" +
EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + " Spooky Fishing Summary:\n" +
- EnumChatFormatting.BLUE + " Scarecrows: " + nf.format(LootTracker.scarecrows) + "\n" +
- EnumChatFormatting.GRAY + " Nightmares: " + nf.format(LootTracker.nightmares) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Werewolves: " + nf.format(LootTracker.werewolfs) + "\n" +
- EnumChatFormatting.GOLD + " Phantom Fishers: " + nf.format(LootTracker.phantomFishers) + "\n" +
- EnumChatFormatting.GOLD + " Grim Reapers: " + nf.format(LootTracker.grimReapers) + "\n" +
+ EnumChatFormatting.BLUE + " Scarecrows: " + nf.format(FishingTracker.scarecrows) + "\n" +
+ EnumChatFormatting.GRAY + " Nightmares: " + nf.format(FishingTracker.nightmares) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Werewolves: " + nf.format(FishingTracker.werewolfs) + "\n" +
+ EnumChatFormatting.GOLD + " Phantom Fishers: " + nf.format(FishingTracker.phantomFishers) + "\n" +
+ EnumChatFormatting.GOLD + " Grim Reapers: " + nf.format(FishingTracker.grimReapers) + "\n" +
+ EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------"));
+ return;
+ } else if (arg1[1].equalsIgnoreCase("ch")) {
+ if (showSession) {
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + " Crystal Hollows Fishing Summary:\n" +
+ EnumChatFormatting.BLUE + " Water Worms: " + nf.format(FishingTracker.waterWormsSession) + "\n" +
+ EnumChatFormatting.GREEN + " Poisoned Water Worms: " + nf.format(FishingTracker.poisonedWaterWormsSession) + "\n" +
+ EnumChatFormatting.RED + " Flaming Worms: " + nf.format(FishingTracker.flamingWormsSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Lava Blazes: " + nf.format(FishingTracker.lavaBlazesSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Lava Pigmen: " + nf.format(FishingTracker.lavaPigmenSession) + "\n" +
+ EnumChatFormatting.GOLD + " Zombie Miners: " + nf.format(FishingTracker.zombieMinersSession) + "\n" +
+ EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------"));
+
+ return;
+ }
+
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + " Crystal Hollows Fishing Summary:\n" +
+ EnumChatFormatting.BLUE + " Water Worms: " + nf.format(FishingTracker.waterWorms) + "\n" +
+ EnumChatFormatting.GREEN + " Poisoned Water Worms: " + nf.format(FishingTracker.poisonedWaterWorms) + "\n" +
+ EnumChatFormatting.RED + " Flaming Worms: " + nf.format(FishingTracker.flamingWorms) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Lava Blazes: " + nf.format(FishingTracker.lavaBlazes) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Lava Pigmen: " + nf.format(FishingTracker.lavaPigmen) + "\n" +
+ EnumChatFormatting.GOLD + " Zombie Miners: " + nf.format(FishingTracker.zombieMiners) + "\n" +
EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------"));
+ return;
+ } else if (arg1[1].equalsIgnoreCase("lava")) {
+ if (showSession) {
+ if (FishingTracker.jawbusTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(FishingTracker.jawbusTimeSession, timeNow);
+ }
+ if (FishingTracker.jawbusSCsSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(FishingTracker.jawbusSCsSession);
+ }
+
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Lava Fishing Summary (Current Session):\n" +
+ EnumChatFormatting.DARK_RED + " Magma Slugs: " + nf.format(FishingTracker.magmaSlugsSession) + "\n" +
+ EnumChatFormatting.RED + " Moogmas: " + nf.format(FishingTracker.moogmasSession) + "\n" +
+ EnumChatFormatting.RED + " Lava Leeches: " + nf.format(FishingTracker.lavaLeechesSession) + "\n" +
+ EnumChatFormatting.RED + " Pyroclastic Worms: " + nf.format(FishingTracker.pyroclasticWormsSession) + "\n" +
+ EnumChatFormatting.DARK_RED + " Lava Flames: " + nf.format(FishingTracker.lavaFlamesSession) + "\n" +
+ EnumChatFormatting.RED + " Fire Eels: " + nf.format(FishingTracker.fireEelsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Tauruses: " + nf.format(FishingTracker.taurusesSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Thunders: " + nf.format(FishingTracker.thundersSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Lord Jawbuses: " + nf.format(FishingTracker.lordJawbusesSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Since Lord Jawbus: " + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + " Creatures Since Lord Jawbus: " + bossesBetween + "\n" +
+ EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
+ return;
+ }
+
+ if (FishingTracker.jawbusTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(FishingTracker.jawbusTime, timeNow);
+ }
+ if (FishingTracker.jawbusSCs == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(FishingTracker.jawbusSCs);
+ }
+
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Lava Fishing Summary:\n" +
+ EnumChatFormatting.DARK_RED + " Magma Slugs: " + nf.format(FishingTracker.magmaSlugs) + "\n" +
+ EnumChatFormatting.RED + " Moogmas: " + nf.format(FishingTracker.moogmas) + "\n" +
+ EnumChatFormatting.RED + " Lava Leeches: " + nf.format(FishingTracker.lavaLeeches) + "\n" +
+ EnumChatFormatting.RED + " Pyroclastic Worms: " + nf.format(FishingTracker.pyroclasticWorms) + "\n" +
+ EnumChatFormatting.DARK_RED + " Lava Flames: " + nf.format(FishingTracker.lavaFlames) + "\n" +
+ EnumChatFormatting.RED + " Fire Eels: " + nf.format(FishingTracker.fireEels) + "\n" +
+ EnumChatFormatting.GOLD + " Tauruses: " + nf.format(FishingTracker.tauruses) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Thunders: " + nf.format(FishingTracker.thunders) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Lord Jawbuses: " + nf.format(FishingTracker.lordJawbuses) + "\n" +
+ EnumChatFormatting.AQUA + " Time Since Lord Jawbus: " + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + " Creatures Since Lord Jawbus: " + bossesBetween + "\n" +
+ EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------"));
+ return;
}
}
if (showSession) {
- if (LootTracker.empTimeSession == -1) {
+ if (FishingTracker.empTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.empTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(FishingTracker.empTimeSession, timeNow);
}
- if (LootTracker.empSCsSession == -1) {
+ if (FishingTracker.empSCsSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.empSCsSession);
+ bossesBetween = nf.format(FishingTracker.empSCsSession);
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " Fishing Summary (Current Session):\n" +
- EnumChatFormatting.AQUA + " Sea Creatures Caught: " + nf.format(LootTracker.seaCreaturesSession) + "\n" +
- EnumChatFormatting.GOLD + " Good Catches: " + nf.format(LootTracker.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Great Catches: " + nf.format(LootTracker.greatCatchesSession) + "\n\n" +
- EnumChatFormatting.GRAY + " Squids: " + nf.format(LootTracker.squidsSession) + "\n" +
- EnumChatFormatting.GREEN + " Sea Walkers: " + nf.format(LootTracker.seaWalkersSession) + "\n" +
- EnumChatFormatting.DARK_GRAY + " Night Squids: " + nf.format(LootTracker.nightSquidsSession) + "\n" +
- EnumChatFormatting.DARK_AQUA + " Sea Guardians: " + nf.format(LootTracker.seaGuardiansSession) + "\n" +
- EnumChatFormatting.BLUE + " Sea Witches: " + nf.format(LootTracker.seaWitchesSession) + "\n" +
- EnumChatFormatting.GREEN + " Sea Archers: " + nf.format(LootTracker.seaArchersSession) + "\n" +
- EnumChatFormatting.GREEN + " Monster of the Deeps: " + nf.format(LootTracker.monsterOfTheDeepsSession) + "\n" +
- EnumChatFormatting.YELLOW + " Catfishes: " + nf.format(LootTracker.catfishesSession) + "\n" +
- EnumChatFormatting.GOLD + " Carrot Kings: " + nf.format(LootTracker.carrotKingsSession) + "\n" +
- EnumChatFormatting.GRAY + " Sea Leeches: " + nf.format(LootTracker.seaLeechesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Guardian Defenders: " + nf.format(LootTracker.guardianDefendersSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Deep Sea Protectors: " + nf.format(LootTracker.deepSeaProtectorsSession) + "\n" +
- EnumChatFormatting.GOLD + " Hydras: " + nf.format(LootTracker.hydrasSession) + "\n" +
- EnumChatFormatting.GOLD + " Sea Emperors: " + nf.format(LootTracker.seaEmperorsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Sea Creatures Caught: " + nf.format(FishingTracker.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.GOLD + " Good Catches: " + nf.format(FishingTracker.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Great Catches: " + nf.format(FishingTracker.greatCatchesSession) + "\n\n" +
+ EnumChatFormatting.GRAY + " Squids: " + nf.format(FishingTracker.squidsSession) + "\n" +
+ EnumChatFormatting.GREEN + " Sea Walkers: " + nf.format(FishingTracker.seaWalkersSession) + "\n" +
+ EnumChatFormatting.DARK_GRAY + " Night Squids: " + nf.format(FishingTracker.nightSquidsSession) + "\n" +
+ EnumChatFormatting.DARK_AQUA + " Sea Guardians: " + nf.format(FishingTracker.seaGuardiansSession) + "\n" +
+ EnumChatFormatting.BLUE + " Sea Witches: " + nf.format(FishingTracker.seaWitchesSession) + "\n" +
+ EnumChatFormatting.GREEN + " Sea Archers: " + nf.format(FishingTracker.seaArchersSession) + "\n" +
+ EnumChatFormatting.GREEN + " Monster of the Deeps: " + nf.format(FishingTracker.monsterOfTheDeepsSession) + "\n" +
+ EnumChatFormatting.YELLOW + " Catfishes: " + nf.format(FishingTracker.catfishesSession) + "\n" +
+ EnumChatFormatting.GOLD + " Carrot Kings: " + nf.format(FishingTracker.carrotKingsSession) + "\n" +
+ EnumChatFormatting.GRAY + " Sea Leeches: " + nf.format(FishingTracker.seaLeechesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Guardian Defenders: " + nf.format(FishingTracker.guardianDefendersSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Deep Sea Protectors: " + nf.format(FishingTracker.deepSeaProtectorsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Hydras: " + nf.format(FishingTracker.hydrasSession) + "\n" +
+ EnumChatFormatting.GOLD + " Sea Emperors: " + nf.format(FishingTracker.seaEmperorsSession) + "\n" +
EnumChatFormatting.AQUA + " Time Since Sea Emperor: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Sea Creatures Since Sea Emperor: " + bossesBetween + "\n" +
EnumChatFormatting.DARK_AQUA + EnumChatFormatting.BOLD + " -------------------"));
return;
}
- if (LootTracker.empTime == -1) {
+ if (FishingTracker.empTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.empTime, timeNow);
+ timeBetween = Utils.getTimeBetween(FishingTracker.empTime, timeNow);
}
- if (LootTracker.empSCs == -1) {
+ if (FishingTracker.empSCs == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.empSCs);
+ bossesBetween = nf.format(FishingTracker.empSCs);
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " Fishing Summary:\n" +
- EnumChatFormatting.AQUA + " Sea Creatures Caught: " + nf.format(LootTracker.seaCreatures) + "\n" +
- EnumChatFormatting.GOLD + " Good Catches: " + nf.format(LootTracker.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Great Catches: " + nf.format(LootTracker.greatCatches) + "\n\n" +
- EnumChatFormatting.GRAY + " Squids: " + nf.format(LootTracker.squids) + "\n" +
- EnumChatFormatting.GREEN + " Sea Walkers: " + nf.format(LootTracker.seaWalkers) + "\n" +
- EnumChatFormatting.DARK_GRAY + " Night Squids: " + nf.format(LootTracker.nightSquids) + "\n" +
- EnumChatFormatting.DARK_AQUA + " Sea Guardians: " + nf.format(LootTracker.seaGuardians) + "\n" +
- EnumChatFormatting.BLUE + " Sea Witches: " + nf.format(LootTracker.seaWitches) + "\n" +
- EnumChatFormatting.GREEN + " Sea Archers: " + nf.format(LootTracker.seaArchers) + "\n" +
- EnumChatFormatting.GREEN + " Monster of the Deeps: " + nf.format(LootTracker.monsterOfTheDeeps) + "\n" +
- EnumChatFormatting.YELLOW + " Catfishes: " + nf.format(LootTracker.catfishes) + "\n" +
- EnumChatFormatting.GOLD + " Carrot Kings: " + nf.format(LootTracker.carrotKings) + "\n" +
- EnumChatFormatting.GRAY + " Sea Leeches: " + nf.format(LootTracker.seaLeeches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Guardian Defenders: " + nf.format(LootTracker.guardianDefenders) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Deep Sea Protectors: " + nf.format(LootTracker.deepSeaProtectors) + "\n" +
- EnumChatFormatting.GOLD + " Hydras: " + nf.format(LootTracker.hydras) + "\n" +
- EnumChatFormatting.GOLD + " Sea Emperors: " + nf.format(LootTracker.seaEmperors) + "\n" +
+ EnumChatFormatting.AQUA + " Sea Creatures Caught: " + nf.format(FishingTracker.seaCreatures) + "\n" +
+ EnumChatFormatting.GOLD + " Good Catches: " + nf.format(FishingTracker.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Great Catches: " + nf.format(FishingTracker.greatCatches) + "\n\n" +
+ EnumChatFormatting.GRAY + " Squids: " + nf.format(FishingTracker.squids) + "\n" +
+ EnumChatFormatting.GREEN + " Sea Walkers: " + nf.format(FishingTracker.seaWalkers) + "\n" +
+ EnumChatFormatting.DARK_GRAY + " Night Squids: " + nf.format(FishingTracker.nightSquids) + "\n" +
+ EnumChatFormatting.DARK_AQUA + " Sea Guardians: " + nf.format(FishingTracker.seaGuardians) + "\n" +
+ EnumChatFormatting.BLUE + " Sea Witches: " + nf.format(FishingTracker.seaWitches) + "\n" +
+ EnumChatFormatting.GREEN + " Sea Archers: " + nf.format(FishingTracker.seaArchers) + "\n" +
+ EnumChatFormatting.GREEN + " Monster of the Deeps: " + nf.format(FishingTracker.monsterOfTheDeeps) + "\n" +
+ EnumChatFormatting.YELLOW + " Catfishes: " + nf.format(FishingTracker.catfishes) + "\n" +
+ EnumChatFormatting.GOLD + " Carrot Kings: " + nf.format(FishingTracker.carrotKings) + "\n" +
+ EnumChatFormatting.GRAY + " Sea Leeches: " + nf.format(FishingTracker.seaLeeches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Guardian Defenders: " + nf.format(FishingTracker.guardianDefenders) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Deep Sea Protectors: " + nf.format(FishingTracker.deepSeaProtectors) + "\n" +
+ EnumChatFormatting.GOLD + " Hydras: " + nf.format(FishingTracker.hydras) + "\n" +
+ EnumChatFormatting.GOLD + " Sea Emperors: " + nf.format(FishingTracker.seaEmperors) + "\n" +
EnumChatFormatting.AQUA + " Time Since Sea Emperor: " + timeBetween + "\n" +
EnumChatFormatting.AQUA + " Sea Creatures Since Sea Emperor: " + bossesBetween + "\n" +
EnumChatFormatting.DARK_AQUA + EnumChatFormatting.BOLD + " -------------------"));
@@ -440,31 +694,31 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.YELLOW + EnumChatFormatting.BOLD + " Mythological Event Summary (Current Session):\n" +
- EnumChatFormatting.YELLOW + " Coins: " + Utils.getMoneySpent(LootTracker.mythCoinsSession) + "\n" +
- EnumChatFormatting.WHITE + " Griffin Feathers: " + nf.format(LootTracker.griffinFeathersSession) + "\n" +
- EnumChatFormatting.GOLD + " Crown of Greeds: " + nf.format(LootTracker.crownOfGreedsSession) + "\n" +
- EnumChatFormatting.AQUA + " Washed-up Souvenirs: " + nf.format(LootTracker.washedUpSouvenirsSession) + "\n" +
- EnumChatFormatting.RED + " Minos Hunters: " + nf.format(LootTracker.minosHuntersSession) + "\n" +
- EnumChatFormatting.GRAY + " Siamese Lynxes: " + nf.format(LootTracker.siameseLynxesSession) + "\n" +
- EnumChatFormatting.RED + " Minotaurs: " + nf.format(LootTracker.minotaursSession) + "\n" +
- EnumChatFormatting.WHITE + " Gaia Constructs: " + nf.format(LootTracker.gaiaConstructsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Minos Champions: " + nf.format(LootTracker.minosChampionsSession) + "\n" +
- EnumChatFormatting.GOLD + " Minos Inquisitors: " + nf.format(LootTracker.minosInquisitorsSession) + "\n" +
+ EnumChatFormatting.YELLOW + " Coins: " + Utils.getMoneySpent(MythologicalTracker.mythCoinsSession) + "\n" +
+ EnumChatFormatting.WHITE + " Griffin Feathers: " + nf.format(MythologicalTracker.griffinFeathersSession) + "\n" +
+ EnumChatFormatting.GOLD + " Crown of Greeds: " + nf.format(MythologicalTracker.crownOfGreedsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Washed-up Souvenirs: " + nf.format(MythologicalTracker.washedUpSouvenirsSession) + "\n" +
+ EnumChatFormatting.RED + " Minos Hunters: " + nf.format(MythologicalTracker.minosHuntersSession) + "\n" +
+ EnumChatFormatting.GRAY + " Siamese Lynxes: " + nf.format(MythologicalTracker.siameseLynxesSession) + "\n" +
+ EnumChatFormatting.RED + " Minotaurs: " + nf.format(MythologicalTracker.minotaursSession) + "\n" +
+ EnumChatFormatting.WHITE + " Gaia Constructs: " + nf.format(MythologicalTracker.gaiaConstructsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Minos Champions: " + nf.format(MythologicalTracker.minosChampionsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Minos Inquisitors: " + nf.format(MythologicalTracker.minosInquisitorsSession) + "\n" +
EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + "-------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.YELLOW + EnumChatFormatting.BOLD + " Mythological Event Summary:\n" +
- EnumChatFormatting.YELLOW + " Coins: " + Utils.getMoneySpent(LootTracker.mythCoins) + "\n" +
- EnumChatFormatting.WHITE + " Griffin Feathers: " + nf.format(LootTracker.griffinFeathers) + "\n" +
- EnumChatFormatting.GOLD + " Crown of Greeds: " + nf.format(LootTracker.crownOfGreeds) + "\n" +
- EnumChatFormatting.AQUA + " Washed-up Souvenirs: " + nf.format(LootTracker.washedUpSouvenirs) + "\n" +
- EnumChatFormatting.RED + " Minos Hunters: " + nf.format(LootTracker.minosHunters) + "\n" +
- EnumChatFormatting.GRAY + " Siamese Lynxes: " + nf.format(LootTracker.siameseLynxes) + "\n" +
- EnumChatFormatting.RED + " Minotaurs: " + nf.format(LootTracker.minotaurs) + "\n" +
- EnumChatFormatting.WHITE + " Gaia Constructs: " + nf.format(LootTracker.gaiaConstructs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Minos Champions: " + nf.format(LootTracker.minosChampions) + "\n" +
- EnumChatFormatting.GOLD + " Minos Inquisitors: " + nf.format(LootTracker.minosInquisitors) + "\n" +
+ EnumChatFormatting.YELLOW + " Coins: " + Utils.getMoneySpent(MythologicalTracker.mythCoins) + "\n" +
+ EnumChatFormatting.WHITE + " Griffin Feathers: " + nf.format(MythologicalTracker.griffinFeathers) + "\n" +
+ EnumChatFormatting.GOLD + " Crown of Greeds: " + nf.format(MythologicalTracker.crownOfGreeds) + "\n" +
+ EnumChatFormatting.AQUA + " Washed-up Souvenirs: " + nf.format(MythologicalTracker.washedUpSouvenirs) + "\n" +
+ EnumChatFormatting.RED + " Minos Hunters: " + nf.format(MythologicalTracker.minosHunters) + "\n" +
+ EnumChatFormatting.GRAY + " Siamese Lynxes: " + nf.format(MythologicalTracker.siameseLynxes) + "\n" +
+ EnumChatFormatting.RED + " Minotaurs: " + nf.format(MythologicalTracker.minotaurs) + "\n" +
+ EnumChatFormatting.WHITE + " Gaia Constructs: " + nf.format(MythologicalTracker.gaiaConstructs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Minos Champions: " + nf.format(MythologicalTracker.minosChampions) + "\n" +
+ EnumChatFormatting.GOLD + " Minos Inquisitors: " + nf.format(MythologicalTracker.minosInquisitors) + "\n" +
EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + "-------------------"));
break;
case "catacombs":
@@ -478,21 +732,23 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F1 Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + " Bonzo's Staffs: " + nf.format(LootTracker.bonzoStaffsSession) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f1CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f1TimeSpentSession) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f1SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + " Bonzo's Staffs: " + nf.format(CatacombsTracker.bonzoStaffsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f1CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f1TimeSpentSession) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F1 Summary:\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + " Bonzo's Staffs: " + nf.format(LootTracker.bonzoStaffs) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f1CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f1TimeSpent) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f1SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + " Bonzo's Staffs: " + nf.format(CatacombsTracker.bonzoStaffs) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f1CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f1TimeSpent) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
break;
case "f2":
@@ -500,23 +756,25 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F2 Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + " Scarf's Studies: " + nf.format(LootTracker.scarfStudiesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Blades: " + nf.format(LootTracker.adaptiveSwordsSession) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f2CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f2TimeSpentSession) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f2SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + " Scarf's Studies: " + nf.format(CatacombsTracker.scarfStudiesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Blades: " + nf.format(CatacombsTracker.adaptiveSwordsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f2CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f2TimeSpentSession) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F2 Summary:\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + " Scarf's Studies: " + nf.format(LootTracker.scarfStudies) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Blades: " + nf.format(LootTracker.adaptiveSwords) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f2CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f2TimeSpent) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f2SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + " Scarf's Studies: " + nf.format(CatacombsTracker.scarfStudies) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Blades: " + nf.format(CatacombsTracker.adaptiveSwords) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f2CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f2TimeSpent) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
break;
case "f3":
@@ -524,27 +782,29 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F3 Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Helmets: " + nf.format(LootTracker.adaptiveHelmsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Chestplates: " + nf.format(LootTracker.adaptiveChestsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Leggings: " + nf.format(LootTracker.adaptiveLegsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Boots: " + nf.format(LootTracker.adaptiveBootsSession) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f3CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f3TimeSpentSession) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f3SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Helmets: " + nf.format(CatacombsTracker.adaptiveHelmsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Chestplates: " + nf.format(CatacombsTracker.adaptiveChestsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Leggings: " + nf.format(CatacombsTracker.adaptiveLegsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Boots: " + nf.format(CatacombsTracker.adaptiveBootsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f3CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f3TimeSpentSession) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F3 Summary:\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Helmets: " + nf.format(LootTracker.adaptiveHelms) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Chestplates: " + nf.format(LootTracker.adaptiveChests) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Leggings: " + nf.format(LootTracker.adaptiveLegs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Adaptive Boots: " + nf.format(LootTracker.adaptiveBoots) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f3CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f3TimeSpent) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f3SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Helmets: " + nf.format(CatacombsTracker.adaptiveHelms) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Chestplates: " + nf.format(CatacombsTracker.adaptiveChests) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Leggings: " + nf.format(CatacombsTracker.adaptiveLegs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Adaptive Boots: " + nf.format(CatacombsTracker.adaptiveBoots) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f3CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f3TimeSpent) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
break;
case "f4":
@@ -552,33 +812,35 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F4 Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Spirit Wings: " + nf.format(LootTracker.spiritWingsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Spirit Bones: " + nf.format(LootTracker.spiritBonesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Spirit Boots: " + nf.format(LootTracker.spiritBootsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Spirit Swords: " + nf.format(LootTracker.spiritSwordsSession) + "\n" +
- EnumChatFormatting.GOLD + " Spirit Bows: " + nf.format(LootTracker.spiritBowsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Epic Spirit Pets: " + nf.format(LootTracker.epicSpiritPetsSession) + "\n" +
- EnumChatFormatting.GOLD + " Leg Spirit Pets: " + nf.format(LootTracker.legSpiritPetsSession) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f4CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f4TimeSpentSession) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f4SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Spirit Wings: " + nf.format(CatacombsTracker.spiritWingsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Spirit Bones: " + nf.format(CatacombsTracker.spiritBonesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Spirit Boots: " + nf.format(CatacombsTracker.spiritBootsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Spirit Swords: " + nf.format(CatacombsTracker.spiritSwordsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Spirit Bows: " + nf.format(CatacombsTracker.spiritBowsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Epic Spirit Pets: " + nf.format(CatacombsTracker.epicSpiritPetsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Leg Spirit Pets: " + nf.format(CatacombsTracker.legSpiritPetsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f4CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f4TimeSpentSession) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F4 Summary:\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Spirit Wings: " + nf.format(LootTracker.spiritWings) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Spirit Bones: " + nf.format(LootTracker.spiritBones) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Spirit Boots: " + nf.format(LootTracker.spiritBoots) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Spirit Swords: " + nf.format(LootTracker.spiritSwords) + "\n" +
- EnumChatFormatting.GOLD + " Spirit Bows: " + nf.format(LootTracker.spiritBows) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Epic Spirit Pets: " + nf.format(LootTracker.epicSpiritPets) + "\n" +
- EnumChatFormatting.GOLD + " Leg Spirit Pets: " + nf.format(LootTracker.legSpiritPets) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f4CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f4TimeSpent) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f4SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Spirit Wings: " + nf.format(CatacombsTracker.spiritWings) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Spirit Bones: " + nf.format(CatacombsTracker.spiritBones) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Spirit Boots: " + nf.format(CatacombsTracker.spiritBoots) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Spirit Swords: " + nf.format(CatacombsTracker.spiritSwords) + "\n" +
+ EnumChatFormatting.GOLD + " Spirit Bows: " + nf.format(CatacombsTracker.spiritBows) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Epic Spirit Pets: " + nf.format(CatacombsTracker.epicSpiritPets) + "\n" +
+ EnumChatFormatting.GOLD + " Leg Spirit Pets: " + nf.format(CatacombsTracker.legSpiritPets) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f4CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f4TimeSpent) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
break;
case "f5":
@@ -586,35 +848,37 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F5 Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.BLUE + " Warped Stones: " + nf.format(LootTracker.warpedStonesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Helmets: " + nf.format(LootTracker.shadowAssHelmsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Chests: " + nf.format(LootTracker.shadowAssChestsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Legs: " + nf.format(LootTracker.shadowAssLegsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Boots: " + nf.format(LootTracker.shadowAssBootsSession) + "\n" +
- EnumChatFormatting.GOLD + " Last Breaths: " + nf.format(LootTracker.lastBreathsSession) + "\n" +
- EnumChatFormatting.GOLD + " Livid Daggers: " + nf.format(LootTracker.lividDaggersSession) + "\n" +
- EnumChatFormatting.GOLD + " Shadow Furys: " + nf.format(LootTracker.shadowFurysSession) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f5CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f5TimeSpentSession) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f5SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.BLUE + " Warped Stones: " + nf.format(CatacombsTracker.warpedStonesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Helmets: " + nf.format(CatacombsTracker.shadowAssHelmsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Chests: " + nf.format(CatacombsTracker.shadowAssChestsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Legs: " + nf.format(CatacombsTracker.shadowAssLegsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Boots: " + nf.format(CatacombsTracker.shadowAssBootsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Last Breaths: " + nf.format(CatacombsTracker.lastBreathsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Livid Daggers: " + nf.format(CatacombsTracker.lividDaggersSession) + "\n" +
+ EnumChatFormatting.GOLD + " Shadow Furys: " + nf.format(CatacombsTracker.shadowFurysSession) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f5CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f5TimeSpentSession) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F5 Summary:\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + " Warped Stones: " + nf.format(LootTracker.warpedStones) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Helmets: " + nf.format(LootTracker.shadowAssHelms) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Chests: " + nf.format(LootTracker.shadowAssChests) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Legs: " + nf.format(LootTracker.shadowAssLegs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Boots: " + nf.format(LootTracker.shadowAssBoots) + "\n" +
- EnumChatFormatting.GOLD + " Last Breaths: " + nf.format(LootTracker.lastBreaths) + "\n" +
- EnumChatFormatting.GOLD + " Livid Daggers: " + nf.format(LootTracker.lividDaggers) + "\n" +
- EnumChatFormatting.GOLD + " Shadow Furys: " + nf.format(LootTracker.shadowFurys) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f5CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f5TimeSpent) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f5SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + " Warped Stones: " + nf.format(CatacombsTracker.warpedStones) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Helmets: " + nf.format(CatacombsTracker.shadowAssHelms) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Chests: " + nf.format(CatacombsTracker.shadowAssChests) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Legs: " + nf.format(CatacombsTracker.shadowAssLegs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Assassin Boots: " + nf.format(CatacombsTracker.shadowAssBoots) + "\n" +
+ EnumChatFormatting.GOLD + " Last Breaths: " + nf.format(CatacombsTracker.lastBreaths) + "\n" +
+ EnumChatFormatting.GOLD + " Livid Daggers: " + nf.format(CatacombsTracker.lividDaggers) + "\n" +
+ EnumChatFormatting.GOLD + " Shadow Furys: " + nf.format(CatacombsTracker.shadowFurys) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f5CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f5TimeSpent) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
break;
case "f6":
@@ -622,35 +886,39 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F6 Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + " Ancient Roses: " + nf.format(LootTracker.ancientRosesSession) + "\n" +
- EnumChatFormatting.GOLD + " Precursor Eyes: " + nf.format(LootTracker.precursorEyesSession) + "\n" +
- EnumChatFormatting.GOLD + " Giant's Swords: " + nf.format(LootTracker.giantsSwordsSession) + "\n" +
- EnumChatFormatting.GOLD + " Necro Lord Helmets: " + nf.format(LootTracker.necroLordHelmsSession) + "\n" +
- EnumChatFormatting.GOLD + " Necro Lord Chestplates: " + nf.format(LootTracker.necroLordChestsSession) + "\n" +
- EnumChatFormatting.GOLD + " Necro Lord Leggings: " + nf.format(LootTracker.necroLordLegsSession) + "\n" +
- EnumChatFormatting.GOLD + " Necro Lord Boots: " + nf.format(LootTracker.necroLordBootsSession) + "\n" +
- EnumChatFormatting.GOLD + " Necro Swords: " + nf.format(LootTracker.necroSwordsSession) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f6CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f6TimeSpentSession) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f6SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + " Ancient Roses: " + nf.format(CatacombsTracker.ancientRosesSession) + "\n" +
+ EnumChatFormatting.GOLD + " Precursor Eyes: " + nf.format(CatacombsTracker.precursorEyesSession) + "\n" +
+ EnumChatFormatting.GOLD + " Giant's Swords: " + nf.format(CatacombsTracker.giantsSwordsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Lord Helmets: " + nf.format(CatacombsTracker.necroLordHelmsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Lord Chestplates: " + nf.format(CatacombsTracker.necroLordChestsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Lord Leggings: " + nf.format(CatacombsTracker.necroLordLegsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Lord Boots: " + nf.format(CatacombsTracker.necroLordBootsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Swords: " + nf.format(CatacombsTracker.necroSwordsSession) + "\n" +
+ EnumChatFormatting.WHITE + " Rerolls: " + nf.format(CatacombsTracker.f6RerollsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f6CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f6TimeSpentSession) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F6 Summary:\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + " Ancient Roses: " + nf.format(LootTracker.ancientRoses) + "\n" +
- EnumChatFormatting.GOLD + " Precursor Eyes: " + nf.format(LootTracker.precursorEyes) + "\n" +
- EnumChatFormatting.GOLD + " Giant's Swords: " + nf.format(LootTracker.giantsSwords) + "\n" +
- EnumChatFormatting.GOLD + " Necro Lord Helmets: " + nf.format(LootTracker.necroLordHelms) + "\n" +
- EnumChatFormatting.GOLD + " Necro Lord Chestplates: " + nf.format(LootTracker.necroLordChests) + "\n" +
- EnumChatFormatting.GOLD + " Necro Lord Leggings: " + nf.format(LootTracker.necroLordLegs) + "\n" +
- EnumChatFormatting.GOLD + " Necro Lord Boots: " + nf.format(LootTracker.necroLordBoots) + "\n" +
- EnumChatFormatting.GOLD + " Necro Swords: " + nf.format(LootTracker.necroSwords) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f6CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f6TimeSpent) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f6SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + " Ancient Roses: " + nf.format(CatacombsTracker.ancientRoses) + "\n" +
+ EnumChatFormatting.GOLD + " Precursor Eyes: " + nf.format(CatacombsTracker.precursorEyes) + "\n" +
+ EnumChatFormatting.GOLD + " Giant's Swords: " + nf.format(CatacombsTracker.giantsSwords) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Lord Helmets: " + nf.format(CatacombsTracker.necroLordHelms) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Lord Chestplates: " + nf.format(CatacombsTracker.necroLordChests) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Lord Leggings: " + nf.format(CatacombsTracker.necroLordLegs) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Lord Boots: " + nf.format(CatacombsTracker.necroLordBoots) + "\n" +
+ EnumChatFormatting.GOLD + " Necro Swords: " + nf.format(CatacombsTracker.necroSwords) + "\n" +
+ EnumChatFormatting.WHITE + " Rerolls: " + nf.format(CatacombsTracker.f6Rerolls) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f6CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f6TimeSpent) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
break;
case "f7":
@@ -658,45 +926,113 @@ public class LootCommand extends CommandBase {
if (showSession) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F7 Summary (Current Session):\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Wither Bloods: " + nf.format(LootTracker.witherBloodsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Wither Cloaks: " + nf.format(LootTracker.witherCloaksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Implosions: " + nf.format(LootTracker.implosionsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Wither Shields: " + nf.format(LootTracker.witherShieldsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Warps: " + nf.format(LootTracker.shadowWarpsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Necron's Handles: " + nf.format(LootTracker.necronsHandlesSession) + "\n" +
- EnumChatFormatting.GOLD + " Auto Recombobulator: " + nf.format(LootTracker.autoRecombsSession) + "\n" +
- EnumChatFormatting.GOLD + " Wither Helmets: " + nf.format(LootTracker.witherHelmsSession) + "\n" +
- EnumChatFormatting.GOLD + " Wither Chesplates: " + nf.format(LootTracker.witherChestsSession) + "\n" +
- EnumChatFormatting.GOLD + " Wither Leggings: " + nf.format(LootTracker.witherLegsSession) + "\n" +
- EnumChatFormatting.GOLD + " Wither Boots: " + nf.format(LootTracker.witherBootsSession) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f7CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f7TimeSpentSession) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f7SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Wither Bloods: " + nf.format(CatacombsTracker.witherBloodsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Wither Cloaks: " + nf.format(CatacombsTracker.witherCloaksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Implosions: " + nf.format(CatacombsTracker.implosionsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Wither Shields: " + nf.format(CatacombsTracker.witherShieldsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Warps: " + nf.format(CatacombsTracker.shadowWarpsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Necron's Handles: " + nf.format(CatacombsTracker.necronsHandlesSession) + "\n" +
+ EnumChatFormatting.GOLD + " Auto Recombobulator: " + nf.format(CatacombsTracker.autoRecombsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Wither Helmets: " + nf.format(CatacombsTracker.witherHelmsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Wither Chesplates: " + nf.format(CatacombsTracker.witherChestsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Wither Leggings: " + nf.format(CatacombsTracker.witherLegsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Wither Boots: " + nf.format(CatacombsTracker.witherBootsSession) + "\n" +
+ EnumChatFormatting.WHITE + " Rerolls: " + nf.format(CatacombsTracker.f7RerollsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f7CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f7TimeSpentSession) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
return;
}
player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs F7 Summary:\n" +
- EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Wither Bloods: " + nf.format(LootTracker.witherBloods) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Wither Cloaks: " + nf.format(LootTracker.witherCloaks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Implosions: " + nf.format(LootTracker.implosions) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Wither Shields: " + nf.format(LootTracker.witherShields) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Shadow Warps: " + nf.format(LootTracker.shadowWarps) + "\n" +
- EnumChatFormatting.DARK_PURPLE + " Necron's Handles: " + nf.format(LootTracker.necronsHandles) + "\n" +
- EnumChatFormatting.GOLD + " Auto Recombobulator: " + nf.format(LootTracker.autoRecombs) + "\n" +
- EnumChatFormatting.GOLD + " Wither Helmets: " + nf.format(LootTracker.witherHelms) + "\n" +
- EnumChatFormatting.GOLD + " Wither Chesplates: " + nf.format(LootTracker.witherChests) + "\n" +
- EnumChatFormatting.GOLD + " Wither Leggings: " + nf.format(LootTracker.witherLegs) + "\n" +
- EnumChatFormatting.GOLD + " Wither Boots: " + nf.format(LootTracker.witherBoots) + "\n" +
- EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(LootTracker.f7CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, LootTracker.f7TimeSpent) + "\n" +
+ EnumChatFormatting.GOLD + " S+ Runs: " + nf.format(CatacombsTracker.f7SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulator 3000s: " + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Wither Bloods: " + nf.format(CatacombsTracker.witherBloods) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Wither Cloaks: " + nf.format(CatacombsTracker.witherCloaks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Implosions: " + nf.format(CatacombsTracker.implosions) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Wither Shields: " + nf.format(CatacombsTracker.witherShields) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Shadow Warps: " + nf.format(CatacombsTracker.shadowWarps) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Necron's Handles: " + nf.format(CatacombsTracker.necronsHandles) + "\n" +
+ EnumChatFormatting.GOLD + " Auto Recombobulator: " + nf.format(CatacombsTracker.autoRecombs) + "\n" +
+ EnumChatFormatting.GOLD + " Wither Helmets: " + nf.format(CatacombsTracker.witherHelms) + "\n" +
+ EnumChatFormatting.GOLD + " Wither Chesplates: " + nf.format(CatacombsTracker.witherChests) + "\n" +
+ EnumChatFormatting.GOLD + " Wither Leggings: " + nf.format(CatacombsTracker.witherLegs) + "\n" +
+ EnumChatFormatting.GOLD + " Wither Boots: " + nf.format(CatacombsTracker.witherBoots) + "\n" +
+ EnumChatFormatting.WHITE + " Rerolls: " + nf.format(CatacombsTracker.f7Rerolls) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.f7CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.f7TimeSpent) + "\n" +
+ EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
+ break;
+ case "mm":
+ case "master":
+ if (showSession) {
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs MM Summary (Current Session):\n" +
+ EnumChatFormatting.GOLD + " Master One S Runs: " + nf.format(CatacombsTracker.m1SSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master One S+ Runs: " + nf.format(CatacombsTracker.m1SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Two S Runs: " + nf.format(CatacombsTracker.m2SSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Two S+ Runs: " + nf.format(CatacombsTracker.m2SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Three S Runs: " + nf.format(CatacombsTracker.m3SSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Three S+ Runs: " + nf.format(CatacombsTracker.m3SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Four S Runs: " + nf.format(CatacombsTracker.m4SSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Four S+ Runs: " + nf.format(CatacombsTracker.m4SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Five S Runs: " + nf.format(CatacombsTracker.m5SSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Five S+ Runs: " + nf.format(CatacombsTracker.m5SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Six S Runs: " + nf.format(CatacombsTracker.m6SSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Six S+ Runs: " + nf.format(CatacombsTracker.m6SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Seven S Runs: " + nf.format(CatacombsTracker.m7SSession) + "\n" +
+ EnumChatFormatting.GOLD + " Master Seven S+ Runs: " + nf.format(CatacombsTracker.m7SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulators: " + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 1st Master Stars: " + nf.format(CatacombsTracker.firstStarsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 2nd Master Stars: " + nf.format(CatacombsTracker.secondStarsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 3rd Master Stars: " + nf.format(CatacombsTracker.thirdStarsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 4th Master Stars: " + nf.format(CatacombsTracker.fourthStarsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 5th Master Stars: " + nf.format(CatacombsTracker.fifthStarsSession) + "\n" +
+ EnumChatFormatting.GOLD + " Necron Dyes: " + nf.format(CatacombsTracker.necronDyesSession) + "\n" +
+ EnumChatFormatting.GOLD + " Dark Claymores: " + nf.format(CatacombsTracker.darkClaymoresSession) + "\n" +
+ EnumChatFormatting.WHITE + " Rerolls: " + nf.format(CatacombsTracker.masterRerollsSession) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.masterCoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.masterTimeSpentSession) + "\n" +
+ EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
+ return;
+ }
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs MM Summary:\n" +
+ EnumChatFormatting.GOLD + " Master One S Runs: " + nf.format(CatacombsTracker.m1S) + "\n" +
+ EnumChatFormatting.GOLD + " Master One S+ Runs: " + nf.format(CatacombsTracker.m1SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Master Two S Runs: " + nf.format(CatacombsTracker.m2S) + "\n" +
+ EnumChatFormatting.GOLD + " Master Two S+ Runs: " + nf.format(CatacombsTracker.m2SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Master Three S Runs: " + nf.format(CatacombsTracker.m3S) + "\n" +
+ EnumChatFormatting.GOLD + " Master Three S+ Runs: " + nf.format(CatacombsTracker.m3SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Master Four S Runs: " + nf.format(CatacombsTracker.m4S) + "\n" +
+ EnumChatFormatting.GOLD + " Master Four S+ Runs: " + nf.format(CatacombsTracker.m4SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Master Five S Runs: " + nf.format(CatacombsTracker.m5S) + "\n" +
+ EnumChatFormatting.GOLD + " Master Five S+ Runs: " + nf.format(CatacombsTracker.m5SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Master Six S Runs: " + nf.format(CatacombsTracker.m6S) + "\n" +
+ EnumChatFormatting.GOLD + " Master Six S+ Runs: " + nf.format(CatacombsTracker.m6SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Master Seven S Runs: " + nf.format(CatacombsTracker.m7S) + "\n" +
+ EnumChatFormatting.GOLD + " Master Seven S+ Runs: " + nf.format(CatacombsTracker.m7SPlus) + "\n" +
+ EnumChatFormatting.GOLD + " Recombobulators: " + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " Fuming Potato Books: " + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 1st Master Stars: " + nf.format(CatacombsTracker.firstStars) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 2nd Master Stars: " + nf.format(CatacombsTracker.secondStars) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 3rd Master Stars: " + nf.format(CatacombsTracker.thirdStars) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 4th Master Stars: " + nf.format(CatacombsTracker.fourthStars) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + " 5th Master Stars: " + nf.format(CatacombsTracker.fifthStars) + "\n" +
+ EnumChatFormatting.GOLD + " Necron Dyes: " + nf.format(CatacombsTracker.necronDyes) + "\n" +
+ EnumChatFormatting.GOLD + " Dark Claymores: " + nf.format(CatacombsTracker.darkClaymores) + "\n" +
+ EnumChatFormatting.WHITE + " Rerolls: " + nf.format(CatacombsTracker.masterRerolls) + "\n" +
+ EnumChatFormatting.AQUA + " Coins Spent: " + Utils.getMoneySpent(CatacombsTracker.masterCoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + " Time Spent: " + Utils.getTimeBetween(0, CatacombsTracker.masterTimeSpent) + "\n" +
EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------"));
break;
default:
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /loot catacombs <f1/f2/f3/f4/f5/f6/f7>"));
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /loot catacombs <f1/f2/f3/f4/f5/f6/f7/mm>"));
}
break;
default:
diff --git a/src/main/java/me/Danker/commands/MoveCommand.java b/src/main/java/me/Danker/commands/MoveCommand.java
index b17794c..5a6c6a2 100644
--- a/src/main/java/me/Danker/commands/MoveCommand.java
+++ b/src/main/java/me/Danker/commands/MoveCommand.java
@@ -25,6 +25,8 @@ public class MoveCommand extends CommandBase {
public static int[] golemTimerXY = {0 ,0};
public static int[] teammatesInRadiusXY = {0, 0};
public static int[] giantHPXY = {0, 0};
+ public static int[] abilityCooldownsXY = {0, 0};
+ public static int[] dungeonScoreXY = {0, 0};
@Override
public String getCommandName() {
@@ -33,7 +35,9 @@ public class MoveCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/bonzotimer/golemtimer/teammatesinradius/gianthp> <x> <y>";
+ return "/" + getCommandName() + " <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/" +
+ "wateranswer/bonzotimer/golemtimer/teammatesinradius/gianthp/" +
+ "abilitycooldowns/dungeonscore> <x> <y>";
}
public static String usage(ICommandSender arg0) {
@@ -50,7 +54,7 @@ public class MoveCommand extends CommandBase {
if (args.length == 1) {
return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer",
"skilltracker", "wateranswer", "bonzotimer", "golemtimer", "teammatesinradius",
- "gianthp");
+ "gianthp", "abilitycooldowns", "dungeonscore");
}
return null;
}
@@ -149,6 +153,20 @@ public class MoveCommand extends CommandBase {
ConfigHandler.writeIntConfig("locations", "giantHPY", giantHPXY[1]);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Giant HP has been moved to " + DankersSkyblockMod.SECONDARY_COLOUR + arg1[1] + ", " + arg1[2]));
break;
+ case "abilitycooldowns":
+ abilityCooldownsXY[0] = Integer.parseInt(arg1[1]);
+ abilityCooldownsXY[1] = Integer.parseInt(arg1[2]);
+ ConfigHandler.writeIntConfig("locations", "abilityCooldownsX", abilityCooldownsXY[0]);
+ ConfigHandler.writeIntConfig("locations", "abilityCooldownsY", abilityCooldownsXY[1]);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Ability cooldowns has been moved to " + DankersSkyblockMod.SECONDARY_COLOUR + arg1[1] + ", " + arg1[2]));
+ break;
+ case "dungeonscore":
+ dungeonScoreXY[0] = Integer.parseInt(arg1[1]);
+ dungeonScoreXY[1] = Integer.parseInt(arg1[2]);
+ ConfigHandler.writeIntConfig("locations", "dungeonScoreX", dungeonScoreXY[0]);
+ ConfigHandler.writeIntConfig("locations", "dungeonScoreY", dungeonScoreXY[1]);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Dungeon score 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 fc2f691..de3aed9 100644
--- a/src/main/java/me/Danker/commands/PetsCommand.java
+++ b/src/main/java/me/Danker/commands/PetsCommand.java
@@ -14,6 +14,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.MathHelper;
import java.util.ArrayList;
import java.util.List;
@@ -82,7 +83,7 @@ public class PetsCommand extends CommandBase {
}
}
- class Pet {
+ static class Pet {
public Rarity rarity;
public double xp;
@@ -103,13 +104,16 @@ public class PetsCommand extends CommandBase {
}
}
this.active = pet.get("active").getAsBoolean();
- this.name = Utils.capitalizeString(pet.get("type").getAsString());;
+ 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());
+ if (this.name.equals("Golden Dragon") && this.xp > 25353230D) {
+ level = 100 + MathHelper.clamp_int((int) ((this.xp - 25353230) / 1886700) + 2, 0, 100);
+ }
String messageToAdd = rarity.getChatColor() + " " + (this.active ? EnumChatFormatting.BOLD + ">>> " : "") + Utils.capitalizeString(this.rarity.name()) + (this.rarityBoosted ? " ⇑" : "") + " " + this.name + " (" + level + ")" + (this.active ? " <<<" : "");
@@ -155,6 +159,7 @@ public class PetsCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
@@ -176,7 +181,7 @@ public class PetsCommand extends CommandBase {
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
- JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
diff --git a/src/main/java/me/Danker/commands/PlayerCommand.java b/src/main/java/me/Danker/commands/PlayerCommand.java
index ef0ed4c..f097501 100644
--- a/src/main/java/me/Danker/commands/PlayerCommand.java
+++ b/src/main/java/me/Danker/commands/PlayerCommand.java
@@ -78,7 +78,7 @@ public class PlayerCommand extends CommandBase {
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
- JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
@@ -136,7 +136,7 @@ public class PlayerCommand extends CommandBase {
String playerURL = "https://api.hypixel.net/player?uuid=" + uuid + "&key=" + key;
System.out.println("Fetching skills from achievement API");
- JsonObject playerObject = APIHandler.getResponse(playerURL);
+ JsonObject playerObject = APIHandler.getResponse(playerURL, true);
if (!playerObject.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
@@ -193,6 +193,11 @@ public class PlayerCommand extends CommandBase {
if (slayersObject.get("wolf").getAsJsonObject().has("xp")) {
wolfXP = slayersObject.get("wolf").getAsJsonObject().get("xp").getAsInt();
}
+ // Enderman
+ int endermanXP = 0;
+ if (slayersObject.get("enderman").getAsJsonObject().has("xp")) {
+ endermanXP = slayersObject.get("enderman").getAsJsonObject().get("xp").getAsInt();
+ }
// Bank
System.out.println("Fetching bank + purse coins...");
@@ -209,7 +214,7 @@ public class PlayerCommand extends CommandBase {
// Weight
System.out.println("Fetching weight from Senither API...");
String weightURL = "https://hypixel-api.senither.com/v1/profiles/" + uuid + "/weight?key=" + key;
- JsonObject weightResponse = APIHandler.getResponse(weightURL);
+ JsonObject weightResponse = APIHandler.getResponse(weightURL, true);
if (weightResponse.get("status").getAsInt() != 200) {
String reason = weightResponse.get("reason").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
@@ -233,10 +238,11 @@ public class PlayerCommand extends CommandBase {
DankersSkyblockMod.TYPE_COLOUR + " Taming: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + tamingLevel + "\n" +
EnumChatFormatting.AQUA + " Average Skill Level: " + DankersSkyblockMod.SKILL_AVERAGE_COLOUR + EnumChatFormatting.BOLD + skillAvg + "\n" +
EnumChatFormatting.AQUA + " True Average Skill Level: " + DankersSkyblockMod.SKILL_AVERAGE_COLOUR + EnumChatFormatting.BOLD + trueAvg + "\n\n" +
- EnumChatFormatting.AQUA + " " + username + "'s Total Slayer XP: " + EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + nf.format(zombieXP + spiderXP + wolfXP) + "\n" +
+ EnumChatFormatting.AQUA + " " + username + "'s Total Slayer XP: " + EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + nf.format(zombieXP + spiderXP + wolfXP + endermanXP) + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Zombie XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(zombieXP) + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Spider XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(spiderXP) + "\n" +
- DankersSkyblockMod.TYPE_COLOUR + " Wolf XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(wolfXP) + "\n\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Wolf XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(wolfXP) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Enderman XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(endermanXP) + "\n\n" +
EnumChatFormatting.AQUA + " " + username + "'s Coins:\n" +
DankersSkyblockMod.TYPE_COLOUR + " Bank: " + (bankCoins == 0 ? EnumChatFormatting.RED + "Bank API disabled." : EnumChatFormatting.GOLD + nf.format(bankCoins)) + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Purse: " + EnumChatFormatting.GOLD + nf.format(purseCoins) + "\n" +
diff --git a/src/main/java/me/Danker/commands/ReloadRepoCommand.java b/src/main/java/me/Danker/commands/ReloadRepoCommand.java
new file mode 100644
index 0000000..a50a5c8
--- /dev/null
+++ b/src/main/java/me/Danker/commands/ReloadRepoCommand.java
@@ -0,0 +1,42 @@
+package me.Danker.commands;
+
+import me.Danker.DankersSkyblockMod;
+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.ChatComponentText;
+
+public class ReloadRepoCommand extends CommandBase {
+
+ @Override
+ public String getCommandName() {
+ return "reloaddsmrepo";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName();
+ }
+
+ public static String usage(ICommandSender arg0) {
+ return new ReloadRepoCommand().getCommandUsage(arg0);
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
+ // MULTI THREAD DRIFTING
+ new Thread(() -> {
+ EntityPlayer player = (EntityPlayer) arg0;
+ Utils.refreshRepo();
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Refreshed Danker's Skyblock Mod repo."));
+ }).start();
+ }
+
+}
diff --git a/src/main/java/me/Danker/commands/ResetLootCommand.java b/src/main/java/me/Danker/commands/ResetLootCommand.java
index eac4c88..c17c2ae 100644
--- a/src/main/java/me/Danker/commands/ResetLootCommand.java
+++ b/src/main/java/me/Danker/commands/ResetLootCommand.java
@@ -1,7 +1,7 @@
package me.Danker.commands;
import me.Danker.DankersSkyblockMod;
-import me.Danker.features.loot.LootTracker;
+import me.Danker.features.loot.*;
import me.Danker.handlers.ConfigHandler;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
@@ -25,7 +25,7 @@ public class ResetLootCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + "<zombie/spider/wolf/fishing/mythological/catacombs/confirm/cancel>";
+ return "/" + getCommandName() + "<zombie/spider/wolf/enderman/blaze/fishing/mythological/catacombs/confirm/cancel>";
}
public static String usage(ICommandSender arg0) {
@@ -44,7 +44,7 @@ public class ResetLootCommand extends CommandBase {
if (confirmReset) {
return getListOfStringsMatchingLastWord(args, "confirm", "cancel");
} else {
- return getListOfStringsMatchingLastWord(args, "zombie", "spider", "wolf", "fishing", "mythological", "catacombs");
+ return getListOfStringsMatchingLastWord(args, "zombie", "spider", "wolf", "enderman", "blaze", "fishing", "mythological", "catacombs");
}
}
@@ -53,7 +53,7 @@ public class ResetLootCommand extends CommandBase {
final EntityPlayer player = (EntityPlayer) arg0;
if (arg1.length == 0) {
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /resetloot <zombie/spider/wolf/fishing/mythological/catacombs>"));
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /resetloot <zombie/spider/wolf/enderman/blaze/fishing/mythological/catacombs>"));
return;
}
@@ -72,6 +72,12 @@ public class ResetLootCommand extends CommandBase {
case "wolf":
resetWolf();
break;
+ case "enderman":
+ resetEnderman();
+ break;
+ case "blaze":
+ resetBlaze();
+ break;
case "fishing":
resetFishing();
break;
@@ -98,6 +104,8 @@ public class ResetLootCommand extends CommandBase {
case "zombie":
case "spider":
case "wolf":
+ case "enderman":
+ case "blaze":
case "fishing":
case "mythological":
case "catacombs":
@@ -118,167 +126,274 @@ public class ResetLootCommand extends CommandBase {
}
static void resetZombie() {
- LootTracker.zombieRevsSession = 0;
- LootTracker.zombieRevFleshSession = 0;
- LootTracker.zombieFoulFleshSession = 0;
- LootTracker.zombieFoulFleshDropsSession = 0;
- LootTracker.zombiePestilencesSession = 0;
- LootTracker.zombieUndeadCatasSession = 0;
- LootTracker.zombieBooksSession = 0;
- LootTracker.zombieBeheadedsSession = 0;
- LootTracker.zombieRevCatasSession = 0;
- LootTracker.zombieSnakesSession = 0;
- LootTracker.zombieScythesSession = 0;
- LootTracker.zombieTimeSession = -1;
- LootTracker.zombieBossesSession = -1;
+ ZombieTracker.zombieRevsSession = 0;
+ ZombieTracker.zombieRevFleshSession = 0;
+ ZombieTracker.zombieRevVisceraSession = 0;
+ ZombieTracker.zombieFoulFleshSession = 0;
+ ZombieTracker.zombieFoulFleshDropsSession = 0;
+ ZombieTracker.zombiePestilencesSession = 0;
+ ZombieTracker.zombieUndeadCatasSession = 0;
+ ZombieTracker.zombieBooksSession = 0;
+ ZombieTracker.zombieBooksT7Session = 0;
+ ZombieTracker.zombieBeheadedsSession = 0;
+ ZombieTracker.zombieRevCatasSession = 0;
+ ZombieTracker.zombieSnakesSession = 0;
+ ZombieTracker.zombieScythesSession = 0;
+ ZombieTracker.zombieTimeSession = -1;
+ ZombieTracker.zombieBossesSession = -1;
ConfigHandler.deleteCategory("zombie");
ConfigHandler.reloadConfig();
}
static void resetSpider() {
- LootTracker.spiderTarantulasSession = 0;
- LootTracker.spiderWebsSession = 0;
- LootTracker.spiderTAPSession = 0;
- LootTracker.spiderTAPDropsSession = 0;
- LootTracker.spiderBitesSession = 0;
- LootTracker.spiderCatalystsSession = 0;
- LootTracker.spiderBooksSession = 0;
- LootTracker.spiderSwattersSession = 0;
- LootTracker.spiderTalismansSession = 0;
- LootTracker.spiderMosquitosSession = 0;
- LootTracker.spiderTimeSession = -1;
- LootTracker.spiderBossesSession = -1;
+ SpiderTracker.spiderTarantulasSession = 0;
+ SpiderTracker.spiderWebsSession = 0;
+ SpiderTracker.spiderTAPSession = 0;
+ SpiderTracker.spiderTAPDropsSession = 0;
+ SpiderTracker.spiderBitesSession = 0;
+ SpiderTracker.spiderCatalystsSession = 0;
+ SpiderTracker.spiderBooksSession = 0;
+ SpiderTracker.spiderSwattersSession = 0;
+ SpiderTracker.spiderTalismansSession = 0;
+ SpiderTracker.spiderMosquitosSession = 0;
+ SpiderTracker.spiderTimeSession = -1;
+ SpiderTracker.spiderBossesSession = -1;
ConfigHandler.deleteCategory("spider");
ConfigHandler.reloadConfig();
}
static void resetWolf() {
- LootTracker.wolfSvensSession = 0;
- LootTracker.wolfTeethSession = 0;
- LootTracker.wolfWheelsSession = 0;
- LootTracker.wolfWheelsDropsSession = 0;
- LootTracker.wolfSpiritsSession = 0;
- LootTracker.wolfBooksSession = 0;
- LootTracker.wolfEggsSession = 0;
- LootTracker.wolfCouturesSession = 0;
- LootTracker.wolfBaitsSession = 0;
- LootTracker.wolfFluxesSession = 0;
- LootTracker.wolfTimeSession = -1;
- LootTracker.wolfBossesSession = -1;
+ WolfTracker.wolfSvensSession = 0;
+ WolfTracker.wolfTeethSession = 0;
+ WolfTracker.wolfWheelsSession = 0;
+ WolfTracker.wolfWheelsDropsSession = 0;
+ WolfTracker.wolfSpiritsSession = 0;
+ WolfTracker.wolfBooksSession = 0;
+ WolfTracker.wolfEggsSession = 0;
+ WolfTracker.wolfCouturesSession = 0;
+ WolfTracker.wolfBaitsSession = 0;
+ WolfTracker.wolfFluxesSession = 0;
+ WolfTracker.wolfTimeSession = -1;
+ WolfTracker.wolfBossesSession = -1;
ConfigHandler.deleteCategory("wolf");
ConfigHandler.reloadConfig();
}
+
+ static void resetEnderman() {
+ EndermanTracker.endermanVoidgloomsSession = 0;
+ EndermanTracker.endermanNullSpheresSession = 0;
+ EndermanTracker.endermanTAPSession = 0;
+ EndermanTracker.endermanTAPDropsSession = 0;
+ EndermanTracker.endermanEndersnakesSession = 0;
+ EndermanTracker.endermanSummoningEyesSession = 0;
+ EndermanTracker.endermanManaBooksSession = 0;
+ EndermanTracker.endermanTunersSession = 0;
+ EndermanTracker.endermanAtomsSession = 0;
+ EndermanTracker.endermanEspressoMachinesSession = 0;
+ EndermanTracker.endermanSmartyBooksSession = 0;
+ EndermanTracker.endermanEndRunesSession = 0;
+ EndermanTracker.endermanChalicesSession = 0;
+ EndermanTracker.endermanDiceSession = 0;
+ EndermanTracker.endermanArtifactsSession = 0;
+ EndermanTracker.endermanSkinsSession = 0;
+ EndermanTracker.endermanMergersSession = 0;
+ EndermanTracker.endermanCoresSession = 0;
+ EndermanTracker.endermanEnchantRunesSession = 0;
+ EndermanTracker.endermanEnderBooksSession = 0;
+ EndermanTracker.endermanTimeSession = -1;
+ EndermanTracker.endermanBossesSession = -1;
+ ConfigHandler.deleteCategory("enderman");
+ ConfigHandler.reloadConfig();
+ }
+
+ static void resetBlaze() {
+ BlazeTracker.demonlordsSession = 0;
+ BlazeTracker.derelictAshesSession = 0;
+ BlazeTracker.lavatearRunesSession = 0;
+ BlazeTracker.splashPotionsSession = 0;
+ BlazeTracker.magmaArrowsSession = 0;
+ BlazeTracker.manaDisintegratorsSession = 0;
+ BlazeTracker.scorchedBooksSession = 0;
+ BlazeTracker.kelvinInvertersSession = 0;
+ BlazeTracker.blazeRodDistillatesSession = 0;
+ BlazeTracker.glowstoneDistillatesSession = 0;
+ BlazeTracker.magmaCreamDistillatesSession = 0;
+ BlazeTracker.netherWartDistillatesSession = 0;
+ BlazeTracker.gabagoolDistillatesSession = 0;
+ BlazeTracker.scorchedPowerCrystalsSession = 0;
+ BlazeTracker.fireAspectBooksSession = 0;
+ BlazeTracker.fieryBurstRunesSession = 0;
+ BlazeTracker.opalGemsSession = 0;
+ BlazeTracker.archfiendDiceSession = 0;
+ BlazeTracker.duplexBooksSession = 0;
+ BlazeTracker.highClassArchfiendDiceSession = 0;
+ BlazeTracker.engineeringPlansSession = 0;
+ BlazeTracker.subzeroInvertersSession = 0;
+ BlazeTracker.timeSession = 0;
+ BlazeTracker.bossesSession = 0;
+ ConfigHandler.deleteCategory("blaze");
+ ConfigHandler.reloadConfig();
+ }
static void resetFishing() {
- LootTracker.seaCreaturesSession = 0;
- LootTracker.goodCatchesSession = 0;
- LootTracker.greatCatchesSession = 0;
- LootTracker.squidsSession = 0;
- LootTracker.seaWalkersSession = 0;
- LootTracker.nightSquidsSession = 0;
- LootTracker.seaGuardiansSession = 0;
- LootTracker.seaWitchesSession = 0;
- LootTracker.seaArchersSession = 0;
- LootTracker.monsterOfTheDeepsSession = 0;
- LootTracker.catfishesSession = 0;
- LootTracker.carrotKingsSession = 0;
- LootTracker.seaLeechesSession = 0;
- LootTracker.guardianDefendersSession = 0;
- LootTracker.deepSeaProtectorsSession = 0;
- LootTracker.hydrasSession = 0;
- LootTracker.seaEmperorsSession = 0;
- LootTracker.empTimeSession = -1;
- LootTracker.empSCsSession = -1;
- LootTracker.fishingMilestoneSession = 0;
- LootTracker.frozenStevesSession = 0;
- LootTracker.frostyTheSnowmansSession = 0;
- LootTracker.grinchesSession = 0;
- LootTracker.yetisSession = 0;
- LootTracker.yetiTimeSession = -1;
- LootTracker.yetiSCsSession = -1;
- LootTracker.nurseSharksSession = 0;
- LootTracker.blueSharksSession = 0;
- LootTracker.tigerSharksSession = 0;
- LootTracker.greatWhiteSharksSession = 0;
- LootTracker.scarecrowsSession = 0;
- LootTracker.nightmaresSession = 0;
- LootTracker.werewolfsSession = 0;
- LootTracker.phantomFishersSession = 0;
- LootTracker.grimReapersSession = 0;
+ FishingTracker.seaCreaturesSession = 0;
+ FishingTracker.goodCatchesSession = 0;
+ FishingTracker.greatCatchesSession = 0;
+ FishingTracker.squidsSession = 0;
+ FishingTracker.seaWalkersSession = 0;
+ FishingTracker.nightSquidsSession = 0;
+ FishingTracker.seaGuardiansSession = 0;
+ FishingTracker.seaWitchesSession = 0;
+ FishingTracker.seaArchersSession = 0;
+ FishingTracker.monsterOfTheDeepsSession = 0;
+ FishingTracker.catfishesSession = 0;
+ FishingTracker.carrotKingsSession = 0;
+ FishingTracker.seaLeechesSession = 0;
+ FishingTracker.guardianDefendersSession = 0;
+ FishingTracker.deepSeaProtectorsSession = 0;
+ FishingTracker.hydrasSession = 0;
+ FishingTracker.seaEmperorsSession = 0;
+ FishingTracker.empTimeSession = -1;
+ FishingTracker.empSCsSession = -1;
+ FishingTracker.fishingMilestoneSession = 0;
+ FishingTracker.frozenStevesSession = 0;
+ FishingTracker.frostyTheSnowmansSession = 0;
+ FishingTracker.grinchesSession = 0;
+ FishingTracker.yetisSession = 0;
+ FishingTracker.yetiTimeSession = -1;
+ FishingTracker.yetiSCsSession = -1;
+ FishingTracker.nurseSharksSession = 0;
+ FishingTracker.blueSharksSession = 0;
+ FishingTracker.tigerSharksSession = 0;
+ FishingTracker.greatWhiteSharksSession = 0;
+ FishingTracker.scarecrowsSession = 0;
+ FishingTracker.nightmaresSession = 0;
+ FishingTracker.werewolfsSession = 0;
+ FishingTracker.phantomFishersSession = 0;
+ FishingTracker.grimReapersSession = 0;
+ FishingTracker.waterWormsSession = 0;
+ FishingTracker.poisonedWaterWormsSession = 0;
+ FishingTracker.flamingWormsSession = 0;
+ FishingTracker.lavaBlazesSession = 0;
+ FishingTracker.lavaPigmenSession = 0;
+ FishingTracker.zombieMinersSession = 0;
+ FishingTracker.magmaSlugsSession = 0;
+ FishingTracker.moogmasSession = 0;
+ FishingTracker.lavaLeechesSession = 0;
+ FishingTracker.pyroclasticWormsSession = 0;
+ FishingTracker.lavaFlamesSession = 0;
+ FishingTracker.fireEelsSession = 0;
+ FishingTracker.taurusesSession = 0;
+ FishingTracker.thundersSession = 0;
+ FishingTracker.lordJawbusesSession = 0;
+ FishingTracker.jawbusTimeSession = 0;
+ FishingTracker.jawbusSCsSession = 0;
ConfigHandler.deleteCategory("fishing");
ConfigHandler.reloadConfig();
}
static void resetMythological() {
- LootTracker.mythCoinsSession = 0;
- LootTracker.griffinFeathersSession = 0;
- LootTracker.crownOfGreedsSession = 0;
- LootTracker.washedUpSouvenirsSession = 0;
- LootTracker.minosHuntersSession = 0;
- LootTracker.siameseLynxesSession = 0;
- LootTracker.minotaursSession = 0;
- LootTracker.gaiaConstructsSession = 0;
- LootTracker.minosChampionsSession = 0;
- LootTracker.minosInquisitorsSession = 0;
+ MythologicalTracker.mythCoinsSession = 0;
+ MythologicalTracker.griffinFeathersSession = 0;
+ MythologicalTracker.crownOfGreedsSession = 0;
+ MythologicalTracker.washedUpSouvenirsSession = 0;
+ MythologicalTracker.minosHuntersSession = 0;
+ MythologicalTracker.siameseLynxesSession = 0;
+ MythologicalTracker.minotaursSession = 0;
+ MythologicalTracker.gaiaConstructsSession = 0;
+ MythologicalTracker.minosChampionsSession = 0;
+ MythologicalTracker.minosInquisitorsSession = 0;
ConfigHandler.deleteCategory("mythological");
ConfigHandler.reloadConfig();
}
static void resetCatacombs() {
- LootTracker.recombobulatorsSession = 0;
- LootTracker.fumingPotatoBooksSession = 0;
- LootTracker.bonzoStaffsSession = 0;
- LootTracker.f1CoinsSpentSession = 0;
- LootTracker.f1TimeSpentSession = 0;
- LootTracker.scarfStudiesSession = 0;
- LootTracker.f2CoinsSpentSession = 0;
- LootTracker.f2TimeSpentSession = 0;
- LootTracker.adaptiveHelmsSession = 0;
- LootTracker.adaptiveChestsSession = 0;
- LootTracker.adaptiveLegsSession = 0;
- LootTracker.adaptiveBootsSession = 0;
- LootTracker.adaptiveSwordsSession = 0;
- LootTracker.f3CoinsSpentSession = 0;
- LootTracker.f3TimeSpentSession = 0;
- LootTracker.spiritWingsSession = 0;
- LootTracker.spiritBonesSession = 0;
- LootTracker.spiritBootsSession = 0;
- LootTracker.spiritSwordsSession = 0;
- LootTracker.epicSpiritPetsSession = 0;
- LootTracker.f4CoinsSpentSession = 0;
- LootTracker.f4TimeSpentSession = 0;
- LootTracker.warpedStonesSession = 0;
- LootTracker.shadowAssHelmsSession = 0;
- LootTracker.shadowAssChestsSession = 0;
- LootTracker.shadowAssLegsSession = 0;
- LootTracker.shadowAssBootsSession = 0;
- LootTracker.lividDaggersSession = 0;
- LootTracker.shadowFurysSession = 0;
- LootTracker.f5CoinsSpentSession = 0;
- LootTracker.f5TimeSpentSession = 0;
- LootTracker.ancientRosesSession = 0;
- LootTracker.precursorEyesSession = 0;
- LootTracker.giantsSwordsSession = 0;
- LootTracker.necroLordHelmsSession = 0;
- LootTracker.necroLordChestsSession = 0;
- LootTracker.necroLordLegsSession = 0;
- LootTracker.necroLordBootsSession = 0;
- LootTracker.necroSwordsSession = 0;
- LootTracker.f6CoinsSpentSession = 0;
- LootTracker.f6TimeSpentSession = 0;
- LootTracker.witherBloodsSession = 0;
- LootTracker.witherCloaksSession = 0;
- LootTracker.implosionsSession = 0;
- LootTracker.witherShieldsSession = 0;
- LootTracker.shadowWarpsSession = 0;
- LootTracker.necronsHandlesSession = 0;
- LootTracker.autoRecombsSession = 0;
- LootTracker.witherHelmsSession = 0;
- LootTracker.witherChestsSession = 0;
- LootTracker.witherLegsSession = 0;
- LootTracker.witherBootsSession = 0;
- LootTracker.f7CoinsSpentSession = 0;
- LootTracker.f7TimeSpentSession = 0;
+ CatacombsTracker.recombobulatorsSession = 0;
+ CatacombsTracker.fumingPotatoBooksSession = 0;
+ CatacombsTracker.f1SPlusSession = 0;
+ CatacombsTracker.bonzoStaffsSession = 0;
+ CatacombsTracker.f1CoinsSpentSession = 0;
+ CatacombsTracker.f1TimeSpentSession = 0;
+ CatacombsTracker.f2SPlusSession = 0;
+ CatacombsTracker.scarfStudiesSession = 0;
+ CatacombsTracker.f2CoinsSpentSession = 0;
+ CatacombsTracker.f2TimeSpentSession = 0;
+ CatacombsTracker.f3SPlusSession = 0;
+ CatacombsTracker.adaptiveHelmsSession = 0;
+ CatacombsTracker.adaptiveChestsSession = 0;
+ CatacombsTracker.adaptiveLegsSession = 0;
+ CatacombsTracker.adaptiveBootsSession = 0;
+ CatacombsTracker.adaptiveSwordsSession = 0;
+ CatacombsTracker.f3CoinsSpentSession = 0;
+ CatacombsTracker.f3TimeSpentSession = 0;
+ CatacombsTracker.f4SPlusSession = 0;
+ CatacombsTracker.spiritWingsSession = 0;
+ CatacombsTracker.spiritBonesSession = 0;
+ CatacombsTracker.spiritBootsSession = 0;
+ CatacombsTracker.spiritSwordsSession = 0;
+ CatacombsTracker.epicSpiritPetsSession = 0;
+ CatacombsTracker.f4CoinsSpentSession = 0;
+ CatacombsTracker.f4TimeSpentSession = 0;
+ CatacombsTracker.f5SPlusSession = 0;
+ CatacombsTracker.warpedStonesSession = 0;
+ CatacombsTracker.shadowAssHelmsSession = 0;
+ CatacombsTracker.shadowAssChestsSession = 0;
+ CatacombsTracker.shadowAssLegsSession = 0;
+ CatacombsTracker.shadowAssBootsSession = 0;
+ CatacombsTracker.lividDaggersSession = 0;
+ CatacombsTracker.shadowFurysSession = 0;
+ CatacombsTracker.f5CoinsSpentSession = 0;
+ CatacombsTracker.f5TimeSpentSession = 0;
+ CatacombsTracker.f6SPlusSession = 0;
+ CatacombsTracker.ancientRosesSession = 0;
+ CatacombsTracker.precursorEyesSession = 0;
+ CatacombsTracker.giantsSwordsSession = 0;
+ CatacombsTracker.necroLordHelmsSession = 0;
+ CatacombsTracker.necroLordChestsSession = 0;
+ CatacombsTracker.necroLordLegsSession = 0;
+ CatacombsTracker.necroLordBootsSession = 0;
+ CatacombsTracker.necroSwordsSession = 0;
+ CatacombsTracker.f6RerollsSession = 0;
+ CatacombsTracker.f6CoinsSpentSession = 0;
+ CatacombsTracker.f6TimeSpentSession = 0;
+ CatacombsTracker.f7SPlusSession = 0;
+ CatacombsTracker.witherBloodsSession = 0;
+ CatacombsTracker.witherCloaksSession = 0;
+ CatacombsTracker.implosionsSession = 0;
+ CatacombsTracker.witherShieldsSession = 0;
+ CatacombsTracker.shadowWarpsSession = 0;
+ CatacombsTracker.necronsHandlesSession = 0;
+ CatacombsTracker.autoRecombsSession = 0;
+ CatacombsTracker.witherHelmsSession = 0;
+ CatacombsTracker.witherChestsSession = 0;
+ CatacombsTracker.witherLegsSession = 0;
+ CatacombsTracker.witherBootsSession = 0;
+ CatacombsTracker.f7RerollsSession = 0;
+ CatacombsTracker.f7CoinsSpentSession = 0;
+ CatacombsTracker.f7TimeSpentSession = 0;
+ CatacombsTracker.m1SSession = 0;
+ CatacombsTracker.m1SPlusSession = 0;
+ CatacombsTracker.m2SSession = 0;
+ CatacombsTracker.m2SPlusSession = 0;
+ CatacombsTracker.m3SSession = 0;
+ CatacombsTracker.m3SPlusSession = 0;
+ CatacombsTracker.m4SSession = 0;
+ CatacombsTracker.m4SPlusSession = 0;
+ CatacombsTracker.m5SSession = 0;
+ CatacombsTracker.m5SPlusSession = 0;
+ CatacombsTracker.m6SSession = 0;
+ CatacombsTracker.m6SPlusSession = 0;
+ CatacombsTracker.m7SSession = 0;
+ CatacombsTracker.m7SPlusSession = 0;
+ CatacombsTracker.firstStarsSession = 0;
+ CatacombsTracker.secondStarsSession = 0;
+ CatacombsTracker.thirdStarsSession = 0;
+ CatacombsTracker.fourthStarsSession = 0;
+ CatacombsTracker.fifthStarsSession = 0;
+ CatacombsTracker.darkClaymoresSession = 0;
+ CatacombsTracker.masterRerollsSession = 0;
+ CatacombsTracker.masterCoinsSpentSession = 0;
+ CatacombsTracker.masterTimeSpentSession = 0;
ConfigHandler.deleteCategory("catacombs");
ConfigHandler.reloadConfig();
}
diff --git a/src/main/java/me/Danker/commands/ScaleCommand.java b/src/main/java/me/Danker/commands/ScaleCommand.java
index def0e57..9bb1f08 100644
--- a/src/main/java/me/Danker/commands/ScaleCommand.java
+++ b/src/main/java/me/Danker/commands/ScaleCommand.java
@@ -25,6 +25,8 @@ public class ScaleCommand extends CommandBase {
public static double golemTimerScale;
public static double teammatesInRadiusScale;
public static double giantHPScale;
+ public static double abilityCooldownsScale;
+ public static double dungeonScoreScale;
@Override
public String getCommandName() {
@@ -33,7 +35,8 @@ public class ScaleCommand extends CommandBase {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/bonzotimer/golemtimer/teammatesinradius/gianthp> <size (0.1 - 10)>";
+ return "/" + getCommandName() + " <coords/display/dungeontimer/skill50/lividhp/caketimer/skilltracker/wateranswer/" +
+ "bonzotimer/golemtimer/teammatesinradius/gianthp/abilitycooldown/dungeonscore> <size (0.1 - 10)>";
}
public static String usage(ICommandSender arg0) {
@@ -50,7 +53,7 @@ public class ScaleCommand extends CommandBase {
if (args.length == 1) {
return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer",
"skilltracker", "wateranswer", "bonzotimer", "golemtimer", "teammatesinradius",
- "gianthp");
+ "gianthp", "abilitycooldowns", "dungeonscore");
}
return null;
}
@@ -131,6 +134,16 @@ public class ScaleCommand extends CommandBase {
ConfigHandler.writeDoubleConfig("scales", "giantHPScale", giantHPScale);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Giant hp has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + giantHPScale + "x"));
break;
+ case "abilitycooldowns":
+ abilityCooldownsScale = scaleAmount;
+ ConfigHandler.writeDoubleConfig("scales", "abilityCooldownsScale", abilityCooldownsScale);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Ability cooldowns has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + abilityCooldownsScale + "x"));
+ break;
+ case "dungeonscore":
+ dungeonScoreScale = scaleAmount;
+ ConfigHandler.writeDoubleConfig("scales", "dungeonScoreScale", dungeonScoreScale);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Dungeon score has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + dungeonScoreScale + "x"));
+ break;
default:
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
}
diff --git a/src/main/java/me/Danker/commands/SkillsCommand.java b/src/main/java/me/Danker/commands/SkillsCommand.java
index 6195e81..f17c79d 100644
--- a/src/main/java/me/Danker/commands/SkillsCommand.java
+++ b/src/main/java/me/Danker/commands/SkillsCommand.java
@@ -54,6 +54,7 @@ public class SkillsCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
@@ -75,7 +76,7 @@ public class SkillsCommand extends CommandBase {
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
- JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
@@ -132,7 +133,7 @@ public class SkillsCommand extends CommandBase {
String playerURL = "https://api.hypixel.net/player?uuid=" + uuid + "&key=" + key;
System.out.println("Fetching skills from achievement API");
- JsonObject playerObject = APIHandler.getResponse(playerURL);
+ JsonObject playerObject = APIHandler.getResponse(playerURL, true);
if (!playerObject.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
diff --git a/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java b/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
index f8db0af..37e89c5 100644
--- a/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
+++ b/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
@@ -53,11 +53,12 @@ public class SkyblockPlayersCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
String playersURL = "https://api.hypixel.net/gameCounts?key=" + key;
System.out.println("Fetching player count...");
- JsonObject playersResponse = APIHandler.getResponse(playersURL);
+ JsonObject playersResponse = APIHandler.getResponse(playersURL, true);
if (!playersResponse.get("success").getAsBoolean()) {
String reason = playersResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
@@ -69,14 +70,14 @@ public class SkyblockPlayersCommand extends CommandBase {
int skyblockTotalPlayers = 0; // players
int privateIsland = 0; // dynamic
int hub = 0; // hub
- int barn = 0; // farming_1
- int mushroomDesert = 0; // farming_2
+ int farmingIslands = 0; // farming_1
int park = 0; // foraging_1
int goldMine = 0; // mining_1
int deepCaverns = 0; // mining_2
int dwarvenMines = 0; // mining_3
+ int crystalHollows = 0; // crystal_hollows
int spidersDen = 0; // combat_1
- int blazingFortress = 0; // combat_2
+ int crimsonIsle = 0; // crimson_isle
int end = 0; // combat_3
int dungeonsHub = 0; // dungeon_hub
int dungeons = 0; // dungeon
@@ -92,10 +93,7 @@ public class SkyblockPlayersCommand extends CommandBase {
hub = skyblockPlayers.get("hub").getAsInt();
}
if (skyblockPlayers.has("farming_1")) {
- barn = skyblockPlayers.get("farming_1").getAsInt();
- }
- if (skyblockPlayers.has("farming_2")) {
- mushroomDesert = skyblockPlayers.get("farming_2").getAsInt();
+ farmingIslands = skyblockPlayers.get("farming_1").getAsInt();
}
if (skyblockPlayers.has("foraging_1")) {
park = skyblockPlayers.get("foraging_1").getAsInt();
@@ -109,11 +107,14 @@ public class SkyblockPlayersCommand extends CommandBase {
if (skyblockPlayers.has("mining_3")) {
dwarvenMines = skyblockPlayers.get("mining_3").getAsInt();
}
+ if (skyblockPlayers.has("crystal_hollows")) {
+ crystalHollows = skyblockPlayers.get("crystal_hollows").getAsInt();
+ }
if (skyblockPlayers.has("combat_1")) {
spidersDen = skyblockPlayers.get("combat_1").getAsInt();
}
- if (skyblockPlayers.has("combat_2")) {
- blazingFortress = skyblockPlayers.get("combat_2").getAsInt();
+ if (skyblockPlayers.has("crimson_isle")) {
+ crimsonIsle = skyblockPlayers.get("crimson_isle").getAsInt();
}
if (skyblockPlayers.has("combat_3")) {
end = skyblockPlayers.get("combat_3").getAsInt();
@@ -138,14 +139,14 @@ public class SkyblockPlayersCommand extends CommandBase {
DankersSkyblockMod.TYPE_COLOUR + " Skyblock: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(skyblockTotalPlayers) + " / " + Utils.getPercentage(skyblockTotalPlayers, totalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " Private Island: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(privateIsland) + " / " + Utils.getPercentage(privateIsland, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " Hub: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(hub) + " / " + Utils.getPercentage(hub, skyblockTotalPlayers) + "%\n" +
- DankersSkyblockMod.TYPE_COLOUR + " Barn: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(barn) + " / " + Utils.getPercentage(barn, skyblockTotalPlayers) + "%\n" +
- DankersSkyblockMod.TYPE_COLOUR + " Mushroom Desert: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(mushroomDesert) + " / " + Utils.getPercentage(mushroomDesert, skyblockTotalPlayers) + "%\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Farming Islands: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(farmingIslands) + " / " + Utils.getPercentage(farmingIslands, skyblockTotalPlayers) + "%\n" +
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 + " Crystal Hollows: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(crystalHollows) + " / " + Utils.getPercentage(crystalHollows, 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 + " Crimson Isle: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(crimsonIsle) + " / " + Utils.getPercentage(crimsonIsle, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " The End: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(end) + " / " + Utils.getPercentage(end, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " Dungeons Hub: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(dungeonsHub) + " / " + Utils.getPercentage(dungeonsHub, skyblockTotalPlayers) + "%\n" +
DankersSkyblockMod.TYPE_COLOUR + " Dungeons: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(dungeons) + " / " + Utils.getPercentage(dungeons, skyblockTotalPlayers) + "%\n" +
diff --git a/src/main/java/me/Danker/commands/SlayerCommand.java b/src/main/java/me/Danker/commands/SlayerCommand.java
index 91a1a61..8ad87ae 100644
--- a/src/main/java/me/Danker/commands/SlayerCommand.java
+++ b/src/main/java/me/Danker/commands/SlayerCommand.java
@@ -27,7 +27,7 @@ public class SlayerCommand extends CommandBase {
@Override
public List<String> getCommandAliases() {
- return Collections.singletonList("slayer");
+ return Collections.singletonList("slayers");
}
@Override
@@ -62,6 +62,7 @@ public class SlayerCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
@@ -83,7 +84,7 @@ public class SlayerCommand extends CommandBase {
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
- JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
@@ -107,14 +108,26 @@ public class SlayerCommand extends CommandBase {
if (slayersObject.get("wolf").getAsJsonObject().has("xp")) {
wolfXP = slayersObject.get("wolf").getAsJsonObject().get("xp").getAsInt();
}
+ // Enderman
+ int endermanXP = 0;
+ if (slayersObject.get("enderman").getAsJsonObject().has("xp")) {
+ endermanXP = slayersObject.get("enderman").getAsJsonObject().get("xp").getAsInt();
+ }
+ // Blaze
+ int blazeXP = 0;
+ if (slayersObject.get("blaze").getAsJsonObject().has("xp")) {
+ blazeXP = slayersObject.get("blaze").getAsJsonObject().get("xp").getAsInt();
+ }
NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "" + EnumChatFormatting.BOLD + "-------------------\n" +
- EnumChatFormatting.AQUA + " " + username + "'s Total XP: " + EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + nf.format(zombieXP + spiderXP + wolfXP) + "\n" +
+ EnumChatFormatting.AQUA + " " + username + "'s Total XP: " + EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + nf.format(zombieXP + spiderXP + wolfXP + endermanXP + blazeXP) + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Zombie XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(zombieXP) + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Spider XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(spiderXP) + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Wolf XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(wolfXP) + "\n" +
- DankersSkyblockMod.DELIMITER_COLOUR + " " + EnumChatFormatting.BOLD + "-------------------"));
+ DankersSkyblockMod.TYPE_COLOUR + " Enderman XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(endermanXP) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Blaze XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(blazeXP) + "\n" +
+ DankersSkyblockMod.DELIMITER_COLOUR + EnumChatFormatting.BOLD + "-------------------"));
}).start();
}
diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java
index c04e0a8..6b659ab 100644
--- a/src/main/java/me/Danker/commands/ToggleCommand.java
+++ b/src/main/java/me/Danker/commands/ToggleCommand.java
@@ -14,10 +14,12 @@ import net.minecraft.util.ChatComponentText;
import java.util.List;
public class ToggleCommand extends CommandBase implements ICommand {
+ // Some of these end with toggled and some don't, I don't want to go back and fix them all for consistency
public static boolean gpartyToggled;
public static boolean coordsToggled;
public static boolean goldenToggled;
public static boolean slayerCountTotal;
+ public static boolean masterSPlusDisplay;
public static boolean rngesusAlerts;
public static boolean ghostDisplay;
public static boolean splitFishing;
@@ -38,6 +40,18 @@ public class ToggleCommand extends CommandBase implements ICommand {
public static boolean giantHP;
public static boolean hidePetCandy;
public static boolean highlightCommissions;
+ public static boolean customColouredNames;
+ public static boolean endOfFarmAlert;
+ public static boolean gemstoneLore;
+ public static boolean crystalHollowWaypoints;
+ public static boolean crystalAutoWaypoints;
+ public static boolean crystalAutoPlayerWaypoints;
+ public static boolean autoAcceptReparty;
+ public static boolean abilityCooldowns;
+ public static boolean alerts;
+ public static boolean dungeonScore;
+ public static boolean hideArmour;
+ public static boolean autoJoinSkyblock;
// Chat Messages
public static boolean sceptreMessages;
public static boolean midasStaffMessages;
@@ -46,12 +60,12 @@ public class ToggleCommand extends CommandBase implements ICommand {
public static boolean cooldownMessages;
public static boolean manaMessages;
public static boolean killComboMessages;
- // 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;
@@ -61,6 +75,7 @@ public class ToggleCommand extends CommandBase implements ICommand {
public static boolean oruoToggled;
public static boolean blazeToggled;
public static boolean creeperToggled;
+ public static boolean creeperLinesToggled;
public static boolean waterToggled;
public static boolean ticTacToeToggled;
public static boolean boulderToggled;
@@ -70,6 +85,9 @@ public class ToggleCommand extends CommandBase implements ICommand {
public static boolean startsWithToggled;
public static boolean selectAllToggled;
public static boolean clickInOrderToggled;
+ public static boolean sameColourToggled;
+ public static boolean blockWrongTerminalClicksToggled;
+ public static boolean itemFrameOnSeaLanternsToggled;
// Experiments
public static boolean ultrasequencerToggled;
public static boolean chronomatronToggled;
@@ -80,25 +98,28 @@ public class ToggleCommand extends CommandBase implements ICommand {
public static boolean dungeonBossMusic;
public static boolean bloodRoomMusic;
public static boolean dungeonMusic;
+ public static boolean hubMusic;
+ public static boolean islandMusic;
+ public static boolean dungeonHubMusic;
+ public static boolean farmingIslandsMusic;
+ public static boolean goldMineMusic;
+ public static boolean deepCavernsMusic;
+ public static boolean dwarvenMinesMusic;
+ public static boolean crystalHollowsMusic;
+ public static boolean spidersDenMusic;
+ public static boolean crimsonIsleMusic;
+ public static boolean endMusic;
+ public static boolean parkMusic;
- @Override
+ // NO LONGER UPDATED
+ @Override
public String getCommandName() {
return "toggle";
}
@Override
public String getCommandUsage(ICommandSender arg0) {
-
- return "/" + getCommandName() + " <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/ghostdisplay/chatmaddox/spiritbearalert/" +
- "sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/" + //ghosttimer
- "skill50display/outlinetext/midasstaffmessages/implosionmessages/healmessages/cooldownmessages/" +
- "manamessages/killcombomessages/caketimer/lowhealthnotify/lividsolver/stopsalvagestarred/" +
- "notifyslayerslain/necronnotifications/bonzotimer/threemanpuzzle/oruopuzzle/blazepuzzle/" +
- "creeperpuzzle/waterpuzzle/tictactoepuzzle/boulderpuzzle/silverfishpuzzle/icewalkpuzzle/watchermessage/" +
- "startswithterminal/selectallterminal/clickinorderterminal/" +
- "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" +
- "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" +
- "gianthp/hidepetcandy/dungeonbossmusic/bloodroommusic/dungeonmusic/highlightcommissions/list>";
+ return "/" + getCommandName() + " <too many to list>";
}
public static String usage(ICommandSender arg0) {
@@ -114,24 +135,28 @@ public class ToggleCommand extends CommandBase implements ICommand {
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
if (args.length == 1) {
return getListOfStringsMatchingLastWord(args, "gparty", "coords", "golden", "slayercount", "rngesusalerts", "highlightArachne",
- "splitfishing", "chatmaddox", "spiritbearalerts",
+ "splitfishing", "chatmaddox", "spiritbearalerts", "flowerweapons",
"sceptremessages", "petcolors", "dungeontimer", "golemalerts",
"expertiselore", "skill50display", "outlinetext", "midasstaffmessages",
"implosionmessages", "healmessages", "cooldownmessages", "manamessages",
"killcombomessages", "caketimer", "lowhealthnotify", "autoskilltracker", "lividsolver",
"stopsalvagestarred", "notifyslayerslain", "necronnotifications",
"bonzotimer", "threemanpuzzle", "oruopuzzle", "blazepuzzle",
- "creeperpuzzle", "waterpuzzle", "tictactoepuzzle", "boulderpuzzle",
+ "creeperpuzzle", "creeperlines", "waterpuzzle", "tictactoepuzzle", "boulderpuzzle",
"silverfishpuzzle", "icewalkpuzzle", "watchermessage", "startswithterminal",
- "selectallterminal", "clickinorderterminal",
- "ultrasequencer", "chronomatron", "superpairs",
+ "selectallterminal", "clickinorderterminal", "blockwrongterminalclicks",
+ "ultrasequencer", "chronomatron", "superpairs", "itemframeonsealanterns",
"hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers",
"highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic",
- "teammatesinradius", "gianthp", "hidepetcandy", "highlightcommissions", "list");
+ "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert",
+ "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "autoacceptreparty",
+ "itemcooldowns", "hubmusic", "islandmusic", "dungeonhubmusic", "farmingislandsmusic", "goldminemusic",
+ "deepcavernsmusic", "dwarvenminesmusic", "crystalhollowsmusic", "spidersdenmusic", "blazingfortressmusic",
+ "endmusic", "parkmusic", "alerts", "dungeonscore", "highlightcommissions", "list");
}
return null;
}
-
+
@Override
public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
final EntityPlayer player = (EntityPlayer)arg0;
@@ -192,6 +217,11 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "SceptreMessages", sceptreMessages);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Spirit Sceptre messages have been set to " + DankersSkyblockMod.SECONDARY_COLOUR + sceptreMessages + 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 "midasstaffmessages":
midasStaffMessages = !midasStaffMessages;
ConfigHandler.writeBooleanConfig("toggles", "MidasStaffMessages", midasStaffMessages);
@@ -291,7 +321,7 @@ public class ToggleCommand extends CommandBase implements ICommand {
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 + "."));
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Bonzo's Mask timer has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + bonzoTimerToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
case "autoskilltracker":
autoSkillTrackerToggled = !autoSkillTrackerToggled;
@@ -318,6 +348,11 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "CreeperPuzzle", creeperToggled);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Creeper puzzle solver has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + creeperToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
+ case "creeperlines":
+ creeperLinesToggled = !creeperLinesToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "CreeperLines", creeperLinesToggled);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Creeper lines has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + creeperLinesToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
case "waterpuzzle":
waterToggled = !waterToggled;
ConfigHandler.writeBooleanConfig("toggles", "WaterPuzzle", waterToggled);
@@ -363,6 +398,16 @@ public class ToggleCommand extends CommandBase implements ICommand {
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);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Ignore item frames on sea lanterns has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + itemFrameOnSeaLanternsToggled + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
case "ultrasequencer":
ultrasequencerToggled = !ultrasequencerToggled;
ConfigHandler.writeBooleanConfig("toggles", "UltraSequencer", ultrasequencerToggled);
@@ -427,6 +472,41 @@ public class ToggleCommand extends CommandBase implements ICommand {
highlightCommissions = !highlightCommissions;
ConfigHandler.writeBooleanConfig("toggles", "HighlightCommissions", highlightCommissions);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Commissions has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + highlightCommissions + DankersSkyblockMod.MAIN_COLOUR + "."));
+ case "customcolorednames":
+ case "customcolourednames":
+ customColouredNames = !customColouredNames;
+ ConfigHandler.writeBooleanConfig("toggles", "CustomColouredNames", customColouredNames);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom name colors has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + customColouredNames + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "endoffarmalert":
+ endOfFarmAlert = !endOfFarmAlert;
+ ConfigHandler.writeBooleanConfig("toggles", "EndOfFarmAlert", endOfFarmAlert);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "End of farm alert has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + endOfFarmAlert + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "gemstonelore":
+ gemstoneLore = !gemstoneLore;
+ ConfigHandler.writeBooleanConfig("toggles", "GemstoneLore", gemstoneLore);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Gemstone in lore has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + gemstoneLore + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "crystalhollowwaypoints":
+ crystalHollowWaypoints = !crystalHollowWaypoints;
+ ConfigHandler.writeBooleanConfig("toggles", "CrystalHollowWaypoints", crystalHollowWaypoints);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Crystal Hollows waypoints has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + crystalHollowWaypoints + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "crystalautowaypoints":
+ crystalAutoWaypoints = !crystalAutoWaypoints;
+ ConfigHandler.writeBooleanConfig("toggles", "CrystalAutoWaypoints", crystalAutoWaypoints);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Auto Crystal Hollows waypoints has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + crystalAutoWaypoints + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "autoacceptreparty":
+ autoAcceptReparty = !autoAcceptReparty;
+ ConfigHandler.writeBooleanConfig("toggles", "AutoAcceptReparty", autoAcceptReparty);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Auto accept reparty has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + autoAcceptReparty + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "abilitycooldowns":
+ abilityCooldowns = !abilityCooldowns;
+ ConfigHandler.writeBooleanConfig("toggles", "AbilityCooldowns", abilityCooldowns);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Ability cooldowns display as been set to " + DankersSkyblockMod.SECONDARY_COLOUR + abilityCooldowns + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
case "dungeonbossmusic":
dungeonBossMusic = !dungeonBossMusic;
@@ -446,6 +526,88 @@ public class ToggleCommand extends CommandBase implements ICommand {
ConfigHandler.writeBooleanConfig("toggles", "DungeonMusic", dungeonMusic);
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom dungeon music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + dungeonMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
break;
+ case "hubmusic":
+ hubMusic = !hubMusic;
+ CustomMusic.hub.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "HubMusic", hubMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom hub music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + hubMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "islandmusic":
+ islandMusic = !islandMusic;
+ CustomMusic.island.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "IslandMusic", islandMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom island music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + islandMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "dungeonhubmusic":
+ dungeonHubMusic = !dungeonHubMusic;
+ CustomMusic.dungeonHub.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "DungeonHubMusic", dungeonHubMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom dungeon hub music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + dungeonHubMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "farmingislandsmusic":
+ farmingIslandsMusic = !farmingIslandsMusic;
+ CustomMusic.farmingIslands.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "FarmingIslandsMusic", farmingIslandsMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom farming islands music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + farmingIslandsMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "goldminemusic":
+ goldMineMusic = !goldMineMusic;
+ CustomMusic.goldMine.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "GoldMineMusic", goldMineMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom gold mine music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + goldMineMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "deepcavernsmusic":
+ deepCavernsMusic = !deepCavernsMusic;
+ CustomMusic.deepCaverns.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "DeepCavernsMusic", deepCavernsMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom deep caverns music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + deepCavernsMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "dwarvenminesmusic":
+ dwarvenMinesMusic = !dwarvenMinesMusic;
+ CustomMusic.dwarvenMines.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "DwarvenMinesMusic", dwarvenMinesMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom dwarven mines music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + dwarvenMinesMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "crystalhollowsmusic":
+ crystalHollowsMusic = !crystalHollowsMusic;
+ CustomMusic.crystalHollows.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "CrystalHollowsMusic", crystalHollowsMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom crystal hollows music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + crystalHollowsMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "spidersdenmusic":
+ spidersDenMusic = !spidersDenMusic;
+ CustomMusic.spidersDen.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "SpidersDenMusic", spidersDenMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom spider's den music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + spidersDenMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "blazingfortressmusic":
+ crimsonIsleMusic = !crimsonIsleMusic;
+ CustomMusic.crimsonIsle.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "CrimsonIsleMusic", crimsonIsleMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom crimson isle music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + crimsonIsleMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "endmusic":
+ endMusic = !endMusic;
+ CustomMusic.end.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "EndMusic", endMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom end music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + endMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "parkmusic":
+ parkMusic = !parkMusic;
+ CustomMusic.park.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "DungeonMusic", parkMusic);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom park music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + parkMusic + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "alert":
+ alerts = !alerts;
+ ConfigHandler.writeBooleanConfig("toggles", "Alerts", alerts);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Alerts has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + alerts + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
+ case "dungeonscore":
+ dungeonScore = !dungeonScore;
+ ConfigHandler.writeBooleanConfig("toggles", "DungeonScore", dungeonScore);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Dungeon score has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + dungeonScore + DankersSkyblockMod.MAIN_COLOUR + "."));
+ break;
case "list":
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.TYPE_COLOUR + "Guild party notifications: " + DankersSkyblockMod.VALUE_COLOUR + gpartyToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Coord/Angle display: " + DankersSkyblockMod.VALUE_COLOUR + coordsToggled + "\n" +
@@ -455,6 +617,7 @@ public class ToggleCommand extends CommandBase implements ICommand {
DankersSkyblockMod.TYPE_COLOUR + " Split fishing display: " + DankersSkyblockMod.VALUE_COLOUR + splitFishing + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Chat Maddox menu: " + DankersSkyblockMod.VALUE_COLOUR + chatMaddoxToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Spirit Bear alerts: " + DankersSkyblockMod.VALUE_COLOUR + spiritBearAlerts + "\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" +
@@ -475,6 +638,7 @@ public class ToggleCommand extends CommandBase implements ICommand {
DankersSkyblockMod.TYPE_COLOUR + " Oruo trivia solver: " + DankersSkyblockMod.VALUE_COLOUR + oruoToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Blaze puzzle solver: " + DankersSkyblockMod.VALUE_COLOUR + blazeToggled + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Creeper puzzle solver: " + DankersSkyblockMod.VALUE_COLOUR + creeperToggled + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Creeper lines: " + DankersSkyblockMod.VALUE_COLOUR + creeperLinesToggled + "\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 + " Boulder puzzle solver: " + DankersSkyblockMod.VALUE_COLOUR + boulderToggled + "\n" +
@@ -483,6 +647,7 @@ public class ToggleCommand extends CommandBase implements ICommand {
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 + "\n" +
@@ -496,9 +661,30 @@ public class ToggleCommand extends CommandBase implements ICommand {
DankersSkyblockMod.TYPE_COLOUR + " Giant HP display: " + DankersSkyblockMod.VALUE_COLOUR + giantHP + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Hide pet candy: " + DankersSkyblockMod.VALUE_COLOUR + hidePetCandy + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Highlight commissions: " + DankersSkyblockMod.VALUE_COLOUR + highlightCommissions + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom name colors: " + DankersSkyblockMod.VALUE_COLOUR + customColouredNames + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " End of farm alert: " + DankersSkyblockMod.VALUE_COLOUR + endOfFarmAlert + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Gemstone in lore: " + DankersSkyblockMod.VALUE_COLOUR + gemstoneLore + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Crystal Hollows waypoints: " + DankersSkyblockMod.VALUE_COLOUR + crystalHollowWaypoints + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Auto Crystal Hollows waypoints: " + DankersSkyblockMod.VALUE_COLOUR + crystalAutoWaypoints + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Auto accept reparty: " + DankersSkyblockMod.VALUE_COLOUR + autoAcceptReparty + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Ability cooldown display: " + DankersSkyblockMod.VALUE_COLOUR + abilityCooldowns + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Custom dungeon boss music: " + DankersSkyblockMod.VALUE_COLOUR + dungeonBossMusic + "\n" +
DankersSkyblockMod.TYPE_COLOUR + " Custom blood room music: " + DankersSkyblockMod.VALUE_COLOUR + bloodRoomMusic + "\n" +
- DankersSkyblockMod.TYPE_COLOUR + " Custom dungeon music: " + DankersSkyblockMod.VALUE_COLOUR + dungeonMusic
+ DankersSkyblockMod.TYPE_COLOUR + " Custom dungeon music: " + DankersSkyblockMod.VALUE_COLOUR + dungeonMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom hub music: " + DankersSkyblockMod.VALUE_COLOUR + hubMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom island music: " + DankersSkyblockMod.VALUE_COLOUR + islandMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom dungeon hub music: " + DankersSkyblockMod.VALUE_COLOUR + dungeonHubMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom farming islands music: " + DankersSkyblockMod.VALUE_COLOUR + farmingIslandsMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom gold mine music: " + DankersSkyblockMod.VALUE_COLOUR + goldMineMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom deep caverns music: " + DankersSkyblockMod.VALUE_COLOUR + deepCavernsMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom dwarven mines music: " + DankersSkyblockMod.VALUE_COLOUR + dwarvenMinesMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom crystal hollows music: " + DankersSkyblockMod.VALUE_COLOUR + crystalHollowsMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom spider's den music: " + DankersSkyblockMod.VALUE_COLOUR + spidersDenMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom blazing fortress music: " + DankersSkyblockMod.VALUE_COLOUR + crimsonIsleMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom end music: " + DankersSkyblockMod.VALUE_COLOUR + endMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Custom park music: " + DankersSkyblockMod.VALUE_COLOUR + parkMusic + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Alerts: " + DankersSkyblockMod.VALUE_COLOUR + alerts + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Dungeon score: " + DankersSkyblockMod.VALUE_COLOUR + dungeonScore
));
break;
default:
diff --git a/src/main/java/me/Danker/commands/WeightCommand.java b/src/main/java/me/Danker/commands/WeightCommand.java
new file mode 100644
index 0000000..ade909d
--- /dev/null
+++ b/src/main/java/me/Danker/commands/WeightCommand.java
@@ -0,0 +1,265 @@
+package me.Danker.commands;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+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 net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.MathHelper;
+
+import java.text.NumberFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+public class WeightCommand extends CommandBase {
+
+ ArrayList<String> t12Minions = new ArrayList<>(Arrays.asList(
+ "WHEAT_12",
+ "CARROT_12",
+ "POTATO_12",
+ "PUMPKIN_12",
+ "MELON_12",
+ "MUSHROOM_12",
+ "COCOA_12",
+ "CACTUS_12",
+ "SUGAR_CANE_12",
+ "NETHER_WARTS_12"
+ ));
+
+ @Override
+ public String getCommandName() {
+ return "weight";
+ }
+
+ @Override
+ public List<String> getCommandAliases() {
+ return Collections.singletonList("we");
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName() + " [name] [lily/farming]";
+ }
+
+ public static String usage(ICommandSender arg0) {
+ return new WeightCommand().getCommandUsage(arg0);
+ }
+
+ @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]);
+ } else if (args.length == 2) {
+ return getListOfStringsMatchingLastWord(args, "lily", "farming");
+ }
+ return null;
+ }
+
+ @Override
+ public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
+ // 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."));
+ return;
+ }
+
+ // Get UUID for Hypixel API requests
+ String username;
+ String uuid;
+ if (arg1.length == 0) {
+ username = player.getName();
+ uuid = player.getUniqueID().toString().replaceAll("[\\-]", "");
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking weight of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ } else {
+ username = arg1[0];
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking weight of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ uuid = APIHandler.getUUID(username);
+ }
+
+ if (arg1.length < 2) {
+ System.out.println("Fetching weight from Senither API...");
+ String weightURL = "https://hypixel-api.senither.com/v1/profiles/" + uuid + "/weight?key=" + key;
+ JsonObject weightResponse = APIHandler.getResponse(weightURL, true);
+ if (weightResponse.get("status").getAsInt() != 200) {
+ String reason = weightResponse.get("reason").getAsString();
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
+ return;
+ }
+
+ JsonObject data = weightResponse.get("data").getAsJsonObject();
+ double weight = data.get("weight").getAsDouble();
+ double overflow = data.get("weight_overflow").getAsDouble();
+ double skillWeight = data.get("skills").getAsJsonObject().get("weight").getAsDouble();
+ double skillOverflow = data.get("skills").getAsJsonObject().get("weight_overflow").getAsDouble();
+ double slayerWeight = data.get("slayers").getAsJsonObject().get("weight").getAsDouble();
+ double slayerOverflow = data.get("slayers").getAsJsonObject().get("weight_overflow").getAsDouble();
+ double dungeonWeight = data.get("dungeons").getAsJsonObject().get("weight").getAsDouble();
+ double dungeonOverflow = data.get("dungeons").getAsJsonObject().get("weight_overflow").getAsDouble();
+
+ NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.AQUA + " " + username + "'s Weight:\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Total Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(weight + overflow) + " (" + nf.format(weight) + " + " + nf.format(overflow) + ")\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Skill Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(skillWeight + skillOverflow) + " (" + nf.format(skillWeight) + " + " + nf.format(skillOverflow) + ")\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Slayers Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(slayerWeight + slayerOverflow) + " (" + nf.format(slayerWeight) + " + " + nf.format(slayerOverflow) + ")\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Dungeons Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(dungeonWeight + dungeonOverflow) + " (" + nf.format(dungeonWeight) + " + " + nf.format(dungeonOverflow) + ")\n" +
+ DankersSkyblockMod.DELIMITER_COLOUR + " " + EnumChatFormatting.BOLD + "-------------------"));
+ } else if (arg1[1].equalsIgnoreCase("lily")) {
+ System.out.println("Fetching weight from Lily API...");
+ String weightURL = "https://lily.antonio32a.com/" + uuid + "?key=" + key;
+ JsonObject weightResponse = APIHandler.getResponse(weightURL, true);
+ if (!weightResponse.get("success").getAsBoolean()) {
+ String reason = weightResponse.get("error").getAsString();
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
+ return;
+ }
+
+ JsonObject data = weightResponse.get("data").getAsJsonObject();
+ double weight = data.get("total").getAsDouble();
+ double skillWeight = data.get("skill").getAsJsonObject().get("base").getAsDouble();
+ double skillOverflow = data.get("skill").getAsJsonObject().get("overflow").getAsDouble();
+ double slayerWeight = data.get("slayer").getAsDouble();
+ double catacombsXPWeight = data.get("catacombs").getAsJsonObject().get("experience").getAsDouble();
+ double catacombsBaseWeight = data.get("catacombs").getAsJsonObject().get("completion").getAsJsonObject().get("base").getAsDouble();
+ double catacombsMasterWeight = data.get("catacombs").getAsJsonObject().get("completion").getAsJsonObject().get("master").getAsDouble();
+
+ NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + "" + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.AQUA + " " + username + "'s Weight (Lily):\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Total Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(weight) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Skill Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(skillWeight + skillOverflow) + " (" + nf.format(skillWeight) + " + " + nf.format(skillOverflow) + ")\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Slayers Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(slayerWeight) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Catacombs XP Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(catacombsXPWeight) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Catacombs Completion Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(catacombsBaseWeight) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + " Catacombs Master Completion Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(catacombsMasterWeight) + "\n" +
+ DankersSkyblockMod.DELIMITER_COLOUR + " " + EnumChatFormatting.BOLD + "-------------------"));
+ } else if (arg1[1].equalsIgnoreCase("farming")) {
+ 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, true);
+ if (!profileResponse.get("success").getAsBoolean()) {
+ String reason = profileResponse.get("cause").getAsString();
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
+ return;
+ }
+
+ JsonObject userObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject();
+
+ if (!userObject.has("collection")) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + username + " does not have collection API on."));
+ return;
+ }
+
+ JsonObject multipliers = DankersSkyblockMod.data.get("farmingWeight").getAsJsonObject();
+ JsonObject collections = userObject.get("collection").getAsJsonObject();
+ JsonObject jacob = userObject.has("jacob2") ? userObject.get("jacob2").getAsJsonObject() : null;
+ JsonArray minions = userObject.get("crafted_generators").getAsJsonArray();
+
+ // main weight
+ long wheatColl = collections.has("WHEAT") ? collections.get("WHEAT").getAsLong() < 0 ? collections.get("WHEAT").getAsLong() + 4294967294L : collections.get("WHEAT").getAsLong() : 0;
+ long carrotColl = collections.has("CARROT_ITEM") ? collections.get("CARROT_ITEM").getAsLong() < 0 ? collections.get("CARROT_ITEM").getAsLong() + 4294967294L : collections.get("CARROT_ITEM").getAsLong() : 0;
+ long potatoColl = collections.has("POTATO_ITEM") ? collections.get("POTATO_ITEM").getAsLong() < 0 ? collections.get("POTATO_ITEM").getAsLong() + 4294967294L : collections.get("POTATO_ITEM").getAsLong() : 0;
+ long pumpkinColl = collections.has("PUMPKIN") ? collections.get("PUMPKIN").getAsLong() < 0 ? collections.get("PUMPKIN").getAsLong() + 4294967294L : collections.get("PUMPKIN").getAsLong() : 0;
+ long melonColl = collections.has("MELON") ? collections.get("MELON").getAsLong() < 0 ? collections.get("MELON").getAsLong() + 4294967294L : collections.get("MELON").getAsLong() : 0;
+ long mushroomColl = collections.has("MUSHROOM_COLLECTION") ? collections.get("MUSHROOM_COLLECTION").getAsLong() < 0 ? collections.get("MUSHROOM_COLLECTION").getAsLong() + 4294967294L : collections.get("MUSHROOM_COLLECTION").getAsLong() : 0;
+ long cocoaColl = collections.has("INK_SACK:3") ? collections.get("INK_SACK:3").getAsLong() < 0 ? collections.get("INK_SACK:3").getAsLong() + 4294967294L : collections.get("INK_SACK:3").getAsLong() : 0;
+ long cactusColl = collections.has("CACTUS") ? collections.get("CACTUS").getAsLong() < 0 ? collections.get("CACTUS").getAsLong() + 4294967294L : collections.get("CACTUS").getAsLong() : 0;
+ long caneColl = collections.has("SUGAR_CANE") ? collections.get("SUGAR_CANE").getAsLong() < 0 ? collections.get("SUGAR_CANE").getAsLong() + 4294967294L : collections.get("SUGAR_CANE").getAsLong() : 0;
+ long wartColl = collections.has("NETHER_STALK") ? collections.get("NETHER_STALK").getAsLong() < 0 ? collections.get("NETHER_STALK").getAsLong() + 4294967294L : collections.get("NETHER_STALK").getAsLong() : 0;
+
+ double wheatWeight = Math.round(wheatColl / multipliers.get("wheat").getAsDouble()) / 100D;
+ double carrotWeight = Math.round(carrotColl / multipliers.get("carrot").getAsDouble()) / 100D;
+ double potatoWeight = Math.round(potatoColl / multipliers.get("potato").getAsDouble()) / 100D;
+ double pumpkinWeight = Math.round(pumpkinColl / multipliers.get("pumpkin").getAsDouble()) / 100D;
+ double melonWeight = Math.round(melonColl / multipliers.get("melon").getAsDouble()) / 100D;
+ double mushroomWeight = Math.round(mushroomColl / multipliers.get("mushroom").getAsDouble()) / 100D;
+ double cocoaWeight = Math.round(cocoaColl / multipliers.get("cocoa").getAsDouble()) / 100D;
+ double cactusWeight = Math.round(cactusColl / multipliers.get("cactus").getAsDouble()) / 100D;
+ double caneWeight = Math.round(caneColl / multipliers.get("cane").getAsDouble()) / 100D;
+ double wartWeight = Math.round(wartColl / multipliers.get("wart").getAsDouble()) / 100D;
+
+ // bonus weight
+ double farmingBonus = 0;
+ double anitaBonus = 0;
+ double medalBonus = 0;
+ double minionBonus = 0;
+ if (jacob != null) {
+ // farming cap
+ double farmingXP = userObject.get("experience_skill_farming").getAsDouble();
+ int cap = jacob.get("perks").getAsJsonObject().has("farming_level_cap") ? jacob.get("perks").getAsJsonObject().get("farming_level_cap").getAsInt() : 0;
+ if (farmingXP > 111672425D && cap == 10) {
+ farmingBonus = 250D;
+ } else if (farmingXP > 55172425) {
+ farmingBonus = 100D;
+ }
+
+ // anita bonus
+ anitaBonus = jacob.get("perks").getAsJsonObject().has("double_drops") ? jacob.get("perks").getAsJsonObject().get("double_drops").getAsInt() * 2D : 0;
+
+ // gold medals
+ int totalGolds = 0;
+ List<String> contests = jacob.get("contests").getAsJsonObject().entrySet().stream()
+ .map(Map.Entry::getKey)
+ .collect(Collectors.toCollection(ArrayList::new));
+
+ // get total golds
+ for (String contest : contests) {
+ JsonObject contestData = jacob.get("contests").getAsJsonObject().get(contest).getAsJsonObject();
+ if (contestData.has("claimed_position")) {
+ if (contestData.get("claimed_position").getAsInt() <= contestData.get("claimed_participants").getAsInt() * 0.05 + 1) totalGolds++;
+ }
+ }
+
+ medalBonus = Math.floor(totalGolds / 50D) * 50D / 2D;
+ medalBonus = MathHelper.clamp_double(medalBonus, 0D, 500D);
+ }
+
+ // t12 minions
+ for (JsonElement minion : minions) {
+ String minionName = minion.getAsString();
+ if (t12Minions.contains(minionName)) minionBonus += 5;
+ }
+
+ double mainWeight = Math.floor((wheatWeight + carrotWeight + potatoWeight + pumpkinWeight + melonWeight + mushroomWeight + cocoaWeight + cactusWeight + caneWeight + wartWeight) * 100D) / 100D;
+ double bonusWeight = farmingBonus + anitaBonus + medalBonus + minionBonus;
+
+ NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.DELIMITER_COLOUR + EnumChatFormatting.BOLD + "-------------------\n" +
+ EnumChatFormatting.AQUA + username + "'s Weight (Farming):\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Total Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(mainWeight + bonusWeight) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Collection Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(mainWeight) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Bonus Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(bonusWeight) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Farming XP Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(farmingBonus) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Anita Bonus Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(anitaBonus) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Gold Medal Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(medalBonus) + "\n" +
+ DankersSkyblockMod.TYPE_COLOUR + "Minion Weight: " + DankersSkyblockMod.VALUE_COLOUR + nf.format(minionBonus) + "\n" +
+ DankersSkyblockMod.DELIMITER_COLOUR + EnumChatFormatting.BOLD + "-------------------"));
+ } else {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0)));
+ }
+ }).start();
+ }
+
+}
diff --git a/src/main/java/me/Danker/containers/GuiChestDynamic.java b/src/main/java/me/Danker/containers/GuiChestDynamic.java
new file mode 100644
index 0000000..600abbc
--- /dev/null
+++ b/src/main/java/me/Danker/containers/GuiChestDynamic.java
@@ -0,0 +1,45 @@
+package me.Danker.containers;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.util.ResourceLocation;
+
+// Hopefully this is dyanmic, only tested with 63 slots
+public class GuiChestDynamic extends GuiContainer {
+ private final ResourceLocation CHEST_GUI_TEXTURE;
+ private IInventory upperChestInventory;
+ private IInventory lowerChestInventory;
+ private int inventoryRows;
+
+ public GuiChestDynamic(IInventory upperInv, IInventory lowerInv, ResourceLocation texture)
+ {
+ super(new ContainerChest(upperInv, lowerInv, Minecraft.getMinecraft().thePlayer));
+ this.upperChestInventory = upperInv;
+ this.lowerChestInventory = lowerInv;
+ this.allowUserInput = false;
+ this.inventoryRows = lowerInv.getSizeInventory() / 9;
+ int i = this.inventoryRows * 37;
+ int j = i - this.inventoryRows * 18;
+ this.ySize = j + this.inventoryRows * 18;
+ this.CHEST_GUI_TEXTURE = texture;
+ }
+
+ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
+ {
+ this.fontRendererObj.drawString(this.lowerChestInventory.getDisplayName().getUnformattedText(), 8, 6, 4210752);
+ this.fontRendererObj.drawString(this.upperChestInventory.getDisplayName().getUnformattedText(), 8, this.ySize - this.inventoryRows * 16 - 1, 4210752);
+ }
+
+ protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
+ {
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ this.mc.getTextureManager().bindTexture(CHEST_GUI_TEXTURE);
+ int i = (this.width - this.xSize) / 2;
+ int j = (this.height - this.ySize) / 2;
+ this.drawTexturedModalRect(i, j, 0, 0, this.xSize, this.inventoryRows * 18 + 17);
+ this.drawTexturedModalRect(i, j + this.inventoryRows * 18 + 17, 0, this.inventoryRows * 18 + 18, this.xSize, this.inventoryRows * 16);
+ }
+}
diff --git a/src/main/java/me/Danker/events/ChestSlotClickedEvent.java b/src/main/java/me/Danker/events/ChestSlotClickedEvent.java
index 5e4702c..452979e 100644
--- a/src/main/java/me/Danker/events/ChestSlotClickedEvent.java
+++ b/src/main/java/me/Danker/events/ChestSlotClickedEvent.java
@@ -23,12 +23,4 @@ public class ChestSlotClickedEvent extends Event {
this.item = item;
}
- public ChestSlotClickedEvent(GuiChest chest, IInventory inventory, String inventoryName, Slot slot) {
- this.chest = chest;
- this.inventory = inventory;
- this.inventoryName = inventoryName;
- this.slot = slot;
- item = null;
- }
-
}
diff --git a/src/main/java/me/Danker/events/PacketReadEvent.java b/src/main/java/me/Danker/events/PacketReadEvent.java
new file mode 100644
index 0000000..0f3ed7e
--- /dev/null
+++ b/src/main/java/me/Danker/events/PacketReadEvent.java
@@ -0,0 +1,16 @@
+package me.Danker.events;
+
+import net.minecraft.network.Packet;
+import net.minecraftforge.fml.common.eventhandler.Cancelable;
+import net.minecraftforge.fml.common.eventhandler.Event;
+
+@Cancelable
+public class PacketReadEvent extends Event {
+
+ public Packet packet;
+
+ public PacketReadEvent(Packet packet) {
+ this.packet = packet;
+ }
+
+}
diff --git a/src/main/java/me/Danker/events/PacketWriteEvent.java b/src/main/java/me/Danker/events/PacketWriteEvent.java
new file mode 100644
index 0000000..8af5a60
--- /dev/null
+++ b/src/main/java/me/Danker/events/PacketWriteEvent.java
@@ -0,0 +1,16 @@
+package me.Danker.events;
+
+import net.minecraft.network.Packet;
+import net.minecraftforge.fml.common.eventhandler.Cancelable;
+import net.minecraftforge.fml.common.eventhandler.Event;
+
+@Cancelable
+public class PacketWriteEvent extends Event {
+
+ public Packet packet;
+
+ public PacketWriteEvent(Packet packet) {
+ this.packet = packet;
+ }
+
+}
diff --git a/src/main/java/me/Danker/events/RenderOverlay.java b/src/main/java/me/Danker/events/RenderOverlayEvent.java
index 06c181f..64264bd 100644
--- a/src/main/java/me/Danker/events/RenderOverlay.java
+++ b/src/main/java/me/Danker/events/RenderOverlayEvent.java
@@ -2,5 +2,5 @@ package me.Danker.events;
import net.minecraftforge.fml.common.eventhandler.Event;
-public class RenderOverlay extends Event {
+public class RenderOverlayEvent extends Event {
}
diff --git a/src/main/java/me/Danker/features/AbilityCooldowns.java b/src/main/java/me/Danker/features/AbilityCooldowns.java
new file mode 100644
index 0000000..e98660e
--- /dev/null
+++ b/src/main/java/me/Danker/features/AbilityCooldowns.java
@@ -0,0 +1,129 @@
+package me.Danker.features;
+
+import me.Danker.commands.MoveCommand;
+import me.Danker.commands.ScaleCommand;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.events.RenderOverlayEvent;
+import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.EventPriority;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AbilityCooldowns {
+
+ static List<Ability> cooldowns = new ArrayList<>();
+ static double mageReduction = 0D;
+
+ @SubscribeEvent(priority = EventPriority.LOW)
+ public void onChat(ClientChatReceivedEvent event) {
+ if (!Utils.inSkyblock || !ToggleCommand.abilityCooldowns) return;
+
+ if (event.type == 2) {
+ String[] actionBarSections = StringUtils.stripControlCodes(event.message.getUnformattedText()).split(" {3,}");
+
+ for (String section : actionBarSections) {
+ if (section.charAt(0) == '-' && section.contains("(") && section.charAt(section.length() - 1) == ')') {
+ String ability = section.substring(section.indexOf("(") + 1, section.length() - 1);
+
+ for (Ability cooldown : cooldowns) {
+ if (cooldown.ability.equals(ability)) return;
+ }
+
+ cooldowns.add(new Ability(ability, Utils.getCooldownFromAbility(ability) * (1D - mageReduction)));
+ }
+ }
+ } else {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (Utils.inDungeons && message.startsWith("[Mage] Cooldown Reduction ")) {
+ mageReduction = Integer.parseInt(message.substring(message.indexOf(">") + 2, message.length() - 1)) / 100D;
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void renderPlayerInfo(RenderOverlayEvent event) {
+ if (ToggleCommand.abilityCooldowns && Utils.inSkyblock) {
+ StringBuilder sb = new StringBuilder();
+
+ for (int i = cooldowns.size() - 1; i >= 0; i--) {
+ Ability ability = cooldowns.get(i);
+
+ if (ability.getCooldown() <= 0) {
+ cooldowns.remove(i);
+ continue;
+ }
+
+ sb.insert(0, ability.getTimer() + "\n");
+ }
+
+ new TextRenderer(Minecraft.getMinecraft(), sb.toString(), MoveCommand.abilityCooldownsXY[0], MoveCommand.abilityCooldownsXY[1], ScaleCommand.abilityCooldownsScale);
+ }
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase != TickEvent.Phase.START) return;
+
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
+ 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.abilityCooldowns && Utils.inDungeons && chestName.startsWith("Catacombs - ")) {
+ ItemStack mage = invSlots.get(30).getStack();
+ if (mage == null || mage.getDisplayName() == null) return;
+ if (mage.isItemEnchanted()) {
+ String display = mage.getDisplayName();
+ mageReduction = Utils.getCooldownReductionFromLevel(Integer.parseInt(display.substring(display.indexOf(" ") + 1, display.indexOf("]"))));
+ } else {
+ mageReduction = 0D;
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldChange(WorldEvent.Load event) {
+ cooldowns.clear();
+ mageReduction = 0D;
+ }
+
+ public static class Ability {
+
+ public final String ability;
+ private final long cooldown;
+
+ public Ability(String ability, double cooldown) {
+ this.ability = ability;
+ this.cooldown = (long) (System.currentTimeMillis() + cooldown * 1000L);
+ }
+
+ public String getTimer() {
+ return EnumChatFormatting.GREEN + ability + ": " + EnumChatFormatting.YELLOW + getCooldown() + "s";
+ }
+
+ public double getCooldown() {
+ return (cooldown - System.currentTimeMillis()) / 1000D;
+ }
+
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/Alerts.java b/src/main/java/me/Danker/features/Alerts.java
new file mode 100644
index 0000000..aab99b3
--- /dev/null
+++ b/src/main/java/me/Danker/features/Alerts.java
@@ -0,0 +1,119 @@
+package me.Danker.features;
+
+import com.google.gson.GsonBuilder;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.Utils;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.awt.*;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Alerts {
+
+ public static List<Alert> alerts = new ArrayList<>();
+ public static String configFile;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ if (!ToggleCommand.alerts || event.type == 2) return;
+
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ for (Alert alert : alerts) {
+ if (!alert.toggled) continue;
+
+ boolean location;
+ switch (alert.location) {
+ case "Skyblock":
+ location = Utils.inSkyblock;
+ break;
+ case "Dungeons":
+ location = Utils.inDungeons;
+ break;
+ default:
+ location = true;
+ }
+ if (!location) continue;
+
+ boolean trigger;
+ switch (alert.mode) {
+ case "Starts With":
+ trigger = message.startsWith(alert.message);
+ break;
+ case "Contains":
+ trigger = message.contains(alert.message);
+ break;
+ case "Ends With":
+ trigger = message.endsWith(alert.message);
+ break;
+ default:
+ continue;
+ }
+
+ if (trigger) {
+ Utils.createTitle(EnumChatFormatting.RED + alert.alert.replace("&", "§"), 2);
+
+ if (alert.desktop) {
+ try {
+ final SystemTray tray = SystemTray.getSystemTray();
+ final Image image = Toolkit.getDefaultToolkit().createImage("icon.png");
+ final TrayIcon trayIcon = new TrayIcon(image, "Alert");
+ trayIcon.setImageAutoSize(true);
+ trayIcon.setToolTip("Alert");
+ tray.add(trayIcon);
+ trayIcon.displayMessage(StringUtils.stripControlCodes(alert.alert), message, TrayIcon.MessageType.INFO);
+ tray.remove(trayIcon);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ return;
+ }
+ }
+ }
+
+ public static void saveToFile() {
+ try (FileWriter writer = new FileWriter(configFile)) {
+ new GsonBuilder().create().toJson(alerts, writer);
+ writer.flush();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public static class Alert {
+
+ public String mode;
+ public String location;
+ public String message;
+ public String alert;
+ public boolean desktop;
+ public boolean toggled;
+
+ public Alert(String mode, String location, String message, String alert, boolean desktop, boolean toggled) {
+ this.mode = mode;
+ this.location = location;
+ this.message = message;
+ this.alert = alert;
+ this.desktop = desktop;
+ this.toggled = toggled;
+ }
+
+ public void toggle() {
+ toggled = !toggled;
+ }
+
+ public void toggleDesktop() {
+ desktop = !desktop;
+ }
+
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/ArachneESP.java b/src/main/java/me/Danker/features/ArachneESP.java
index c78c385..807cfb1 100644
--- a/src/main/java/me/Danker/features/ArachneESP.java
+++ b/src/main/java/me/Danker/features/ArachneESP.java
@@ -1,7 +1,7 @@
package me.Danker.features;
import me.Danker.commands.ToggleCommand;
-import me.Danker.handlers.ScoreboardHandler;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
@@ -30,19 +30,10 @@ public class ArachneESP {
arachne = null;
}
- public boolean inSpidersDen(List<String> scoreboard) {
- for (String s : scoreboard) {
- if (ScoreboardHandler.cleanSB(s).contains("Spiders Den")) {
- return true;
- }
- }
- return false;
- }
-
@SubscribeEvent
public void onChat(ClientChatReceivedEvent event) {
if (!Utils.inSkyblock) return;
- if (!inSpidersDen(ScoreboardHandler.getSidebarLines())) return;
+ if (!Utils.tabLocation.equals("Spider's Den")) return;
String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
if (message.contains("Something is awakening")){
arachneActive = true;
@@ -66,7 +57,7 @@ public class ArachneESP {
if (arachne != null) {
if (arachneActive && ToggleCommand.highlightArachne) {
AxisAlignedBB aabb = new AxisAlignedBB(arachne.posX - 0.75, arachne.posY - 1, arachne.posZ - 0.75, arachne.posX + 0.75, arachne.posY, arachne.posZ + 0.75);
- Utils.draw3DBox(aabb, ARACHANE_COLOUR, event.partialTicks);
+ RenderUtils.draw3DBox(aabb, ARACHANE_COLOUR, event.partialTicks);
}
}
}
diff --git a/src/main/java/me/Danker/features/AutoAcceptReparty.java b/src/main/java/me/Danker/features/AutoAcceptReparty.java
new file mode 100644
index 0000000..b2e563d
--- /dev/null
+++ b/src/main/java/me/Danker/features/AutoAcceptReparty.java
@@ -0,0 +1,36 @@
+package me.Danker.features;
+
+import me.Danker.commands.ToggleCommand;
+import net.minecraft.client.Minecraft;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class AutoAcceptReparty {
+
+ String partyLeader = null;
+ long lastDisband = 0;
+
+ @SubscribeEvent(receiveCanceled = true)
+ public void onChat(ClientChatReceivedEvent event) {
+
+ if (ToggleCommand.autoAcceptReparty) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (message.contains(":")) return;
+
+ String[] split = message.split("\\s");
+
+ if (message.contains("has disbanded the party!")) {
+ lastDisband = System.currentTimeMillis() / 1000;
+ partyLeader = split[0].contains("[") ? split[1] : split[0];
+ } else if (message.contains("has invited you to join their party!")) {
+ String inviter = split[1].contains("[") ? split[2] : split[1];
+ if (inviter.equals(partyLeader) && System.currentTimeMillis() / 1000 - lastDisband <= 120) {
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/party accept " + partyLeader);
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/AutoDisplay.java b/src/main/java/me/Danker/features/AutoDisplay.java
index 182c0b4..7f86035 100644
--- a/src/main/java/me/Danker/features/AutoDisplay.java
+++ b/src/main/java/me/Danker/features/AutoDisplay.java
@@ -4,8 +4,10 @@ import me.Danker.DankersSkyblockMod;
import me.Danker.features.loot.LootDisplay;
import me.Danker.handlers.ConfigHandler;
import me.Danker.handlers.ScoreboardHandler;
+import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@@ -37,24 +39,47 @@ public class AutoDisplay {
} else if (sCleaned.contains("Revenant Horror")) {
LootDisplay.display = "zombie";
found = true;
+ } else if (sCleaned.contains("Voidgloom Seraph")) {
+ LootDisplay.display = "enderman";
+ found = true;
+ } else if (sCleaned.contains("Inferno Demonlord")) {
+ LootDisplay.display = "blaze";
+ found = true;
} else if (sCleaned.contains("The Mist")){
LootDisplay.display = "ghost";
found = true;
- } else if (sCleaned.contains("The Catacombs (")) {
- if (sCleaned.contains("F1")) {
- LootDisplay.display = "catacombs_floor_one";
- } else if (sCleaned.contains("F2")) {
- LootDisplay.display = "catacombs_floor_two";
- } else if (sCleaned.contains("F3")) {
- LootDisplay.display = "catacombs_floor_three";
- } else if (sCleaned.contains("F4")) {
- LootDisplay.display = "catacombs_floor_four";
- } else if (sCleaned.contains("F5")) {
- LootDisplay.display = "catacombs_floor_five";
- } else if (sCleaned.contains("F6")) {
- LootDisplay.display = "catacombs_floor_six";
- } else if (sCleaned.contains("F7")) {
- LootDisplay.display = "catacombs_floor_seven";
+ } else if (Utils.inDungeons) {
+ switch (Utils.currentFloor) {
+ case F1:
+ LootDisplay.display = "catacombs_floor_one";
+ break;
+ case F2:
+ LootDisplay.display = "catacombs_floor_two";
+ break;
+ case F3:
+ LootDisplay.display = "catacombs_floor_three";
+ break;
+ case F4:
+ LootDisplay.display = "catacombs_floor_four";
+ break;
+ case F5:
+ LootDisplay.display = "catacombs_floor_five";
+ break;
+ case F6:
+ LootDisplay.display = "catacombs_floor_six";
+ break;
+ case F7:
+ LootDisplay.display = "catacombs_floor_seven";
+ break;
+ case M1:
+ case M2:
+ case M3:
+ case M4:
+ case M5:
+ case M6:
+ case M7:
+ LootDisplay.display = "catacombs_master";
+ break;
}
found = true;
}
@@ -65,6 +90,20 @@ public class AutoDisplay {
if (hotbarItem.getDisplayName().contains("Ancestral Spade")) {
LootDisplay.display = "mythological";
found = true;
+ break;
+ } else if (hotbarItem.getItem() == Items.fishing_rod) {
+ List<String> lore = hotbarItem.getTooltip(player, mc.gameSettings.advancedItemTooltips);
+ for (int j = lore.size() - 1; j >= 0; j--) { // reverse
+ if (lore.get(j).contains("FISHING ROD")) {
+ if (Utils.tabLocation.equals("Crimson Isle")) {
+ LootDisplay.display = "fishing_lava";
+ } else {
+ LootDisplay.display = "fishing";
+ }
+ found = true;
+ break;
+ }
+ }
}
}
if (!found) LootDisplay.display = "off";
diff --git a/src/main/java/me/Danker/features/AutoJoinSkyblock.java b/src/main/java/me/Danker/features/AutoJoinSkyblock.java
new file mode 100644
index 0000000..91d6039
--- /dev/null
+++ b/src/main/java/me/Danker/features/AutoJoinSkyblock.java
@@ -0,0 +1,41 @@
+package me.Danker.features;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.network.FMLNetworkEvent;
+
+public class AutoJoinSkyblock {
+
+ static boolean joinedServer = false;
+
+ @SubscribeEvent
+ public void onConnect(FMLNetworkEvent.ClientConnectedToServerEvent event) {
+ if (ToggleCommand.autoJoinSkyblock && !joinedServer) {
+ joinedServer = true;
+ new Thread(() -> {
+ EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+
+ try {
+ while (player == null) {
+ Thread.sleep(100);
+ player = Minecraft.getMinecraft().thePlayer;
+ }
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ if (Utils.isOnHypixel()) player.sendChatMessage("/play sb");
+ }).start();
+ }
+ }
+
+ @SubscribeEvent
+ public void onDisconnect(FMLNetworkEvent.ClientDisconnectionFromServerEvent event) {
+ joinedServer = false;
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/AutoSwapToPickBlock.java b/src/main/java/me/Danker/features/AutoSwapToPickBlock.java
index ccabbce..9a4c839 100644
--- a/src/main/java/me/Danker/features/AutoSwapToPickBlock.java
+++ b/src/main/java/me/Danker/features/AutoSwapToPickBlock.java
@@ -1,6 +1,7 @@
package me.Danker.features;
import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiChest;
import net.minecraft.client.settings.GameSettings;
@@ -17,6 +18,8 @@ public class AutoSwapToPickBlock {
@SubscribeEvent
public void onGuiOpen(GuiOpenEvent event) {
+ if (!ToggleCommand.swapToPickBlockToggled || !Utils.inSkyblock) return;
+
Minecraft mc = Minecraft.getMinecraft();
GameSettings gameSettings = mc.gameSettings;
if (event.gui instanceof GuiChest) {
@@ -25,18 +28,16 @@ public class AutoSwapToPickBlock {
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;
- }
+ if (inventoryName.startsWith("Chronomatron (") || inventoryName.startsWith("Superpairs (") || inventoryName.startsWith("Ultrasequencer (") || inventoryName.startsWith("What starts with:") || inventoryName.startsWith("Select all the") || inventoryName.startsWith("Change all to same color!") || inventoryName.startsWith("Correct all the panes!") || inventoryName.startsWith("Click in order!") || inventoryName.startsWith("Click the button on time!") || inventoryName.startsWith("Harp -")) {
+ if (!pickBlockBindSwapped) {
+ pickBlockBind = gameSettings.keyBindPickBlock.getKeyCode();
+ gameSettings.keyBindPickBlock.setKeyCode(-100);
+ pickBlockBindSwapped = true;
+ }
+ } else {
+ if (pickBlockBindSwapped) {
+ gameSettings.keyBindPickBlock.setKeyCode(pickBlockBind);
+ pickBlockBindSwapped = false;
}
}
}
diff --git a/src/main/java/me/Danker/features/BlockPlacingFlowers.java b/src/main/java/me/Danker/features/BlockPlacingFlowers.java
new file mode 100644
index 0000000..580c010
--- /dev/null
+++ b/src/main/java/me/Danker/features/BlockPlacingFlowers.java
@@ -0,0 +1,45 @@
+package me.Danker.features;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.Utils;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class BlockPlacingFlowers {
+
+ ArrayList<Block> flowerPlaceable = new ArrayList<>(Arrays.asList(
+ Blocks.grass,
+ Blocks.dirt,
+ Blocks.flower_pot,
+ Blocks.tallgrass,
+ Blocks.double_plant
+ ));
+
+ @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 (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
+ Block block = Minecraft.getMinecraft().theWorld.getBlockState(event.pos).getBlock();
+
+ 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);
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/BlockWrongSlayer.java b/src/main/java/me/Danker/features/BlockWrongSlayer.java
new file mode 100644
index 0000000..4e19053
--- /dev/null
+++ b/src/main/java/me/Danker/features/BlockWrongSlayer.java
@@ -0,0 +1,42 @@
+package me.Danker.features;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.events.ChestSlotClickedEvent;
+import net.minecraft.client.Minecraft;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChatComponentText;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class BlockWrongSlayer {
+
+ public static String onlySlayerName = "";
+ public static String onlySlayerNumber = "";
+
+ @SubscribeEvent
+ public void onSlotClick(ChestSlotClickedEvent event) {
+ String inventoryName = event.inventoryName;
+ ItemStack item = event.item;
+ if (!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(onlySlayerName)) {
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Danker's Skyblock Mod has stopped you from starting this quest (Set to " + onlySlayerName + " " + 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") || inventoryName.equals("Voidgloom Seraph")) {
+ if (item.getDisplayName().contains("Revenant Horror") || item.getDisplayName().contains("Tarantula Broodfather") || item.getDisplayName().contains("Sven Packmaster") || item.getDisplayName().contains("Voidgloom Seraph")) {
+ // Only check number as they passed the above check
+ String slayerNumber = item.getDisplayName().substring(item.getDisplayName().lastIndexOf(" ") + 1);
+ if (!slayerNumber.equals(onlySlayerNumber)) {
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Danker's Skyblock Mod has stopped you from starting this quest (Set to " + onlySlayerName + " " + onlySlayerNumber + ")"));
+ Minecraft.getMinecraft().thePlayer.playSound("note.bass", 1, (float) 0.5);
+ event.setCanceled(true);
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/BonzoMaskTimer.java b/src/main/java/me/Danker/features/BonzoMaskTimer.java
index e038786..5bec1ba 100644
--- a/src/main/java/me/Danker/features/BonzoMaskTimer.java
+++ b/src/main/java/me/Danker/features/BonzoMaskTimer.java
@@ -3,7 +3,7 @@ package me.Danker.features;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
@@ -35,6 +35,7 @@ public class BonzoMaskTimer {
String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
if (!Utils.inDungeons) return;
+ if (message.contains(":")) return;
if (ToggleCommand.bonzoTimerToggled && message.contains("Bonzo's Mask") && message.contains("saved your life!")) {
double usedTime = System.currentTimeMillis() / 1000;
@@ -56,7 +57,7 @@ public class BonzoMaskTimer {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (ToggleCommand.bonzoTimerToggled && Utils.inDungeons) {
Minecraft mc = Minecraft.getMinecraft();
ItemStack helmetSlot = mc.thePlayer.getCurrentArmor(3);
diff --git a/src/main/java/me/Danker/features/CakeTimer.java b/src/main/java/me/Danker/features/CakeTimer.java
index ba6eb3d..480ff07 100644
--- a/src/main/java/me/Danker/features/CakeTimer.java
+++ b/src/main/java/me/Danker/features/CakeTimer.java
@@ -3,7 +3,7 @@ package me.Danker.features;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.ConfigHandler;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
@@ -36,7 +36,7 @@ public class CakeTimer {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (ToggleCommand.cakeTimerToggled && Utils.inSkyblock) {
Minecraft mc = Minecraft.getMinecraft();
double scale = ScaleCommand.cakeTimerScale;
diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java
new file mode 100644
index 0000000..aad1ab1
--- /dev/null
+++ b/src/main/java/me/Danker/features/ColouredNames.java
@@ -0,0 +1,178 @@
+package me.Danker.features;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.events.PacketReadEvent;
+import me.Danker.utils.Utils;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityArmorStand;
+import net.minecraft.network.play.server.S45PacketTitle;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IChatComponent;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.client.event.RenderLivingEvent;
+import net.minecraftforge.event.entity.player.ItemTooltipEvent;
+import net.minecraftforge.event.entity.player.PlayerEvent;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.EventPriority;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.relauncher.ReflectionHelper;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ColouredNames {
+
+ public static List<String> users = new ArrayList<>();
+ public static Map<String, String> nametags = new HashMap<>();
+ public static final EnumChatFormatting[] RAINBOW_COLOURS = new EnumChatFormatting[]{EnumChatFormatting.RED, EnumChatFormatting.GOLD, EnumChatFormatting.YELLOW, EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, EnumChatFormatting.DARK_PURPLE};
+
+ static Field messageField = ReflectionHelper.findField(S45PacketTitle.class, "message", "field_179810_b", "b");
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ if (!ToggleCommand.customColouredNames || !Utils.inSkyblock || event.type != 0) return;
+
+ for (String user : users) {
+ if (event.message.getFormattedText().contains(user)) {
+ event.message = replaceChat(event.message, user);
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onTooltip(ItemTooltipEvent event) {
+ if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return;
+
+ for (String user : users) {
+ for (int i = 0; i < event.toolTip.size(); i++) {
+ if (event.toolTip.get(i).contains(user)) {
+ event.toolTip.set(i, replaceName(event.toolTip.get(i), user, getColourFromName(user)));
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onRenderNametag(PlayerEvent.NameFormat event) {
+ if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return;
+
+ if (users.contains(event.username)) {
+ event.displayname = replaceName(event.displayname, event.username, getColourFromName(event.username));
+ }
+ }
+
+ @SubscribeEvent(priority = EventPriority.LOW)
+ public void onRenderLiving(RenderLivingEvent.Specials.Pre<EntityLivingBase> event) {
+ if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return;
+
+ Entity entity = event.entity;
+ if (entity instanceof EntityArmorStand && !entity.isDead && entity.hasCustomName()) {
+ String name = entity.getCustomNameTag();
+ if (name.charAt(name.length() - 1) == '❤') return;
+
+ String id = entity.getUniqueID().toString();
+ String nametag = nametags.get(id);
+
+ if (name.equals(nametag)) {
+ entity.setCustomNameTag(nametag);
+ } else {
+ for (String user : users) {
+ if (name.contains(user)) {
+ name = replaceName(name, user, getColourFromName(user));
+ }
+ }
+
+ nametags.put(id, name);
+ entity.setCustomNameTag(name);
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onPacketRead(PacketReadEvent event) {
+ if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return;
+
+ if (event.packet instanceof S45PacketTitle) {
+ S45PacketTitle packet = (S45PacketTitle) event.packet;
+
+ if (packet.getMessage() == null) return;
+
+ String message = packet.getMessage().getUnformattedText();
+ for (String user : users) {
+ if (message.contains(user)) {
+ try {
+ messageField.setAccessible(true);
+ messageField.set(packet, replaceChat(packet.getMessage(), user));
+ event.packet = packet;
+ } catch (IllegalAccessException ex) {
+ ex.printStackTrace();
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldChange(WorldEvent.Load event) {
+ nametags.clear();
+ }
+
+ // https://github.com/SteveKunG/SkyBlockcatia/blob/1.8.9/src/main/java/com/stevekung/skyblockcatia/utils/SupporterUtils.java#L53
+ public static String replaceName(String text, String name, String colour) {
+ String namePattern = "(?:(?:\\u00a7[0-9a-fbr])\\B(?:" + name + ")\\b)|(?:\\u00a7[rb]" + name + "\\u00a7r)|\\b" + name + "\\b";
+ Matcher prevColourMat = Pattern.compile("(?:.*(?:(?<colour>\\u00a7[0-9a-fbr])" + name + ")\\b.*)").matcher(text);
+
+ if (prevColourMat.matches()) {
+ if (colour.equals("§z")) {
+ StringBuilder rainbowName = new StringBuilder();
+ for (int i = 0; i < name.length(); i++) {
+ rainbowName.append(RAINBOW_COLOURS[i % 7]).append(name.charAt(i));
+ }
+ return text.replaceAll(namePattern, rainbowName + prevColourMat.group("colour"));
+ }
+ return text.replaceAll(namePattern, colour + name + prevColourMat.group("colour"));
+ }
+
+ if (colour.equals("§z")) {
+ StringBuilder rainbowName = new StringBuilder();
+ for (int i = 0; i < name.length(); i++) {
+ rainbowName.append(RAINBOW_COLOURS[i % 7]).append(name.charAt(i));
+ }
+ return text.replaceAll(namePattern, rainbowName.toString() + EnumChatFormatting.WHITE);
+ }
+ return text.replaceAll(namePattern, colour + name + EnumChatFormatting.WHITE);
+ }
+
+ // https://github.com/Moulberry/Hychat/blob/master/src/main/java/io/github/moulberry/hychat/util/TextProcessing.java#L23
+ public static IChatComponent replaceChat(IChatComponent component, String user) {
+ IChatComponent newComponent;
+ ChatComponentText text = (ChatComponentText) component;
+
+ newComponent = new ChatComponentText(replaceName(text.getUnformattedTextForChat(), user, getColourFromName(user)));
+ newComponent.setChatStyle(text.getChatStyle().createShallowCopy());
+
+ for (IChatComponent sibling : text.getSiblings()) {
+ newComponent.appendSibling(replaceChat(sibling, user));
+ }
+
+ return newComponent;
+ }
+
+ public static String getColourFromName(String name) {
+ try {
+ return "§" + DankersSkyblockMod.data.get("colourednames").getAsJsonObject().get(name).getAsString();
+ } catch (NullPointerException ex) {
+ return EnumChatFormatting.WHITE.toString();
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java
new file mode 100644
index 0000000..f367877
--- /dev/null
+++ b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java
@@ -0,0 +1,204 @@
+package me.Danker.features;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.commands.CrystalHollowWaypointCommand;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.handlers.ScoreboardHandler;
+import me.Danker.utils.RenderUtils;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.item.EntityArmorStand;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.event.ClickEvent;
+import net.minecraft.util.*;
+import net.minecraft.world.World;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CrystalHollowWaypoints {
+
+ public static List<Waypoint> waypoints = new ArrayList<>();
+
+ static boolean khazad = false;
+ static boolean fairy = false;
+ static boolean temple = false;
+ static boolean guardian = false;
+ static boolean divan = false;
+ static boolean corleone = false;
+ static boolean king = false;
+ static boolean queen = false;
+ static boolean city = false;
+ static boolean nucleus = false;
+ static boolean shop = false;
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase != TickEvent.Phase.START) return;
+
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayer player = mc.thePlayer;
+ World world = mc.theWorld;
+
+ if (DankersSkyblockMod.tickAmount % 20 == 0) {
+ if (ToggleCommand.crystalAutoWaypoints && Utils.tabLocation.equals("Crystal Hollows") && world != null) {
+ boolean found = false;
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+
+ if (!nucleus) {
+ nucleus = true;
+ waypoints.add(new Waypoint("Crystal Nucleus", new BlockPos(512, 110, 512)));
+ }
+
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+ if (!khazad && sCleaned.contains("Khazad-d")) {
+ khazad = found = true;
+ waypoints.add(new Waypoint("Khazad-dûm", player.getPosition()));
+ } else if (!fairy && sCleaned.contains("Fairy Grotto")) {
+ fairy = found = true;
+ waypoints.add(new Waypoint("Fairy Grotto", player.getPosition()));
+ } else if (!temple && sCleaned.contains("Jungle Temple")) {
+ temple = found = true;
+ waypoints.add(new Waypoint("Jungle Temple", player.getPosition()));
+ } else if (!divan && sCleaned.contains("Mines of Divan")) {
+ divan = found = true;
+ waypoints.add(new Waypoint("Mines of Divan", player.getPosition()));
+ } else if (!queen && sCleaned.contains("Goblin Queen's Den")) {
+ queen = found = true;
+ waypoints.add(new Waypoint("Goblin Queen's Den", player.getPosition()));
+ } else if (!city && sCleaned.contains("Lost Precursor City")) {
+ city = found = true;
+ waypoints.add(new Waypoint("Lost Precursor City", player.getPosition()));
+ }
+
+ if (found) break;
+ }
+
+ if (!found) {
+ AxisAlignedBB scan = new AxisAlignedBB(player.getPosition().add(-15, -15, -15), player.getPosition().add(15, 15, 15));
+ List<EntityArmorStand> entities = world.getEntitiesWithinAABB(EntityArmorStand.class, scan);
+
+ for (EntityArmorStand entity : entities) {
+ if (entity.hasCustomName()) {
+ if (!king && entity.getCustomNameTag().endsWith("King Yolkar")) {
+ king = found = true;
+ waypoints.add(new Waypoint("King Yolkar", entity.getPosition()));
+ } else if (!corleone && entity.getCustomNameTag().contains("Boss Corleone")) {
+ corleone = found = true;
+ waypoints.add(new Waypoint("Boss Corleone", entity.getPosition()));
+ } else if (!guardian && entity.getCustomNameTag().contains("Key Guardian")) {
+ guardian = found = true;
+ waypoints.add(new Waypoint("Key Guardian", entity.getPosition()));
+ } else if (!shop && entity.getCustomNameTag().contains("Odawa")) {
+ shop = found = true;
+ waypoints.add(new Waypoint("Odawa", entity.getPosition()));
+ }
+ }
+ }
+ }
+
+ if (found && ToggleCommand.crystalHollowWaypoints) {
+ Waypoint latest = waypoints.get(waypoints.size() - 1);
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Added " + latest.location + " @ " + latest.getPos()));
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+
+ if (player == null) return;
+
+ /* examples
+ $SBECHWP:Mines of Divan@-673,117,426
+ $SBECHWP:Khazad-dûm@-292,63,281\nFairy Grotto@-216,110,400\njungle temple@-525,110,395\nJungle Temple@-493,101,425\nMines of Divan@-673,117,426
+ */
+ if (ToggleCommand.crystalHollowWaypoints && Utils.tabLocation.equals("Crystal Hollows")) {
+ if (!message.contains(player.getName()) && (message.contains(": $DSMCHWP:") || message.contains(": $SBECHWP:"))) {
+ String waypoints = message.substring(message.lastIndexOf(":") + 1);
+
+ if (ToggleCommand.crystalAutoPlayerWaypoints) {
+ CrystalHollowWaypointCommand.addWaypoints(waypoints, true);
+ return;
+ }
+
+ ChatComponentText add = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [ADD]\n");
+ add.setChatStyle(add.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dsmaddcrystalhollowwaypoints " + waypoints)));
+
+ new Thread(() -> {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ player.addChatMessage(new ChatComponentText("\n" + DankersSkyblockMod.MAIN_COLOUR + "DSM/SBE Crystal Hollows waypoints found. Click to add.\n").appendSibling(add));
+ }).start();
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldRender(RenderWorldLastEvent event) {
+ if (ToggleCommand.crystalHollowWaypoints && Utils.tabLocation.equals("Crystal Hollows")) {
+ for (Waypoint waypoint : waypoints) {
+ if (waypoint.toggled) RenderUtils.draw3DWaypointString(waypoint, event.partialTicks);
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldChange(WorldEvent.Load event) {
+ waypoints.clear();
+ khazad = false;
+ fairy = false;
+ temple = false;
+ guardian = false;
+ divan = false;
+ corleone = false;
+ king = false;
+ queen = false;
+ city = false;
+ nucleus = false;
+ shop = false;
+ }
+
+ public static class Waypoint {
+
+ public String location;
+ public BlockPos pos;
+ public boolean toggled;
+
+ public Waypoint(String location, BlockPos pos) {
+ this.location = location;
+ this.pos = pos;
+ this.toggled = true;
+ }
+
+ public String getFormattedWaypoint() {
+ return location + "@-" + pos.getX() + "," + pos.getY() + "," + pos.getZ();
+ }
+
+ public String getDistance(EntityPlayer player) {
+ return Math.round(player.getDistance(pos.getX(), pos.getY(), pos.getZ())) + "m";
+ }
+
+ public String getPos() {
+ return pos.getX() + ", " + pos.getY() + ", " + pos.getZ();
+ }
+
+ public void toggle() {
+ toggled = !toggled;
+ }
+
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java
index 342727b..a31e40a 100644
--- a/src/main/java/me/Danker/features/CustomMusic.java
+++ b/src/main/java/me/Danker/features/CustomMusic.java
@@ -20,19 +20,44 @@ import net.minecraftforge.fml.common.gameevent.TickEvent;
import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Random;
public class CustomMusic {
static boolean cancelNotes;
- static boolean prevInDungeonBossRoom = false;
- public static boolean inDungeonBossRoom = false;
public static Song dungeonboss;
public static int dungeonbossVolume;
public static Song bloodroom;
public static int bloodroomVolume;
public static Song dungeon;
public static int dungeonVolume;
+ public static Song hub;
+ public static int hubVolume;
+ public static Song island;
+ public static int islandVolume;
+ public static Song dungeonHub;
+ public static int dungeonHubVolume;
+ public static Song farmingIslands;
+ public static int farmingIslandsVolume;
+ public static Song goldMine;
+ public static int goldMineVolume;
+ public static Song deepCaverns;
+ public static int deepCavernsVolume;
+ public static Song dwarvenMines;
+ public static int dwarvenMinesVolume;
+ public static Song crystalHollows;
+ public static int crystalHollowsVolume;
+ public static Song spidersDen;
+ public static int spidersDenVolume;
+ public static Song crimsonIsle;
+ public static int crimsonIsleVolume;
+ public static Song end;
+ public static int endVolume;
+ public static Song park;
+ public static int parkVolume;
+
@SubscribeEvent
public void onWorldChange(WorldEvent.Load event) {
@@ -40,42 +65,77 @@ public class CustomMusic {
}
@SubscribeEvent(priority = EventPriority.LOW)
- public void onTick(TickEvent.ClientTickEvent event) {
+ public void onTick(TickEvent.ClientTickEvent event) throws UnsupportedAudioFileException, LineUnavailableException, IOException {
if (event.phase != TickEvent.Phase.START) return;
Minecraft mc = Minecraft.getMinecraft();
EntityPlayerSP player = mc.thePlayer;
World world = mc.theWorld;
if (DankersSkyblockMod.tickAmount % 10 == 0) {
- if (ToggleCommand.dungeonBossMusic && Utils.inDungeons && world != null && player != null) {
- prevInDungeonBossRoom = inDungeonBossRoom;
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- if (scoreboard.size() > 2) {
- String firstLine = ScoreboardHandler.cleanSB(scoreboard.get(scoreboard.size() - 1));
- String secondLine = ScoreboardHandler.cleanSB(scoreboard.get(scoreboard.size() - 2));
- if (firstLine.contains("30,30") || // F1
- firstLine.contains("30,125") || // F2
- firstLine.contains("30,225") || // F3
- secondLine.contains("- Healthy") || // F3
- firstLine.contains("30,344") || // F4
- firstLine.contains("livid") || // F5
- firstLine.contains("sadan") || // F6
- firstLine.contains("necron")) { // F7
-
- inDungeonBossRoom = true;
- if (!prevInDungeonBossRoom) {
- dungeonboss.start();
+ if (world != null && player != null) {
+ if (Utils.inDungeons) {
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ if (scoreboard.size() > 2) {
+ String firstLine = ScoreboardHandler.cleanSB(scoreboard.get(scoreboard.size() - 1));
+ String secondLine = ScoreboardHandler.cleanSB(scoreboard.get(scoreboard.size() - 2));
+ if (firstLine.contains("30,30") || // F1
+ firstLine.contains("30,125") || // F2
+ firstLine.contains("30,225") || // F3
+ secondLine.contains("- Healthy") || // F3
+ firstLine.contains("30,344") || // F4
+ firstLine.contains("livid") || // F5
+ firstLine.contains("sadan") || // F6
+ firstLine.contains("necron")) { // F7
+
+ if (ToggleCommand.dungeonBossMusic) dungeonboss.start();
+ }
}
} else {
- inDungeonBossRoom = false;
- }
+ switch (Utils.tabLocation) {
+ case "Hub":
+ if (ToggleCommand.hubMusic) hub.start();
+ break;
+ case "Private Island":
+ if (ToggleCommand.islandMusic) island.start();
+ break;
+ case "Dungeon Hub":
+ if (ToggleCommand.dungeonHubMusic) dungeonHub.start();
+ break;
+ case "The Farming Islands":
+ if (ToggleCommand.farmingIslandsMusic) farmingIslands.start();
+ break;
+ case "Gold Mine":
+ if (ToggleCommand.goldMineMusic) goldMine.start();
+ break;
+ case "Deep Caverns":
+ if (ToggleCommand.deepCavernsMusic) deepCaverns.start();
+ break;
+ case "Dwarven Mines":
+ if (ToggleCommand.dwarvenMinesMusic) dwarvenMines.start();
+ break;
+ case "Crystal Hollows":
+ if (ToggleCommand.crystalHollowsMusic) crystalHollows.start();
+ break;
+ case "Spider's Den":
+ if (ToggleCommand.spidersDenMusic) spidersDen.start();
+ break;
+ case "Crimson Isle":
+ if (ToggleCommand.crimsonIsleMusic) crimsonIsle.start();
+ break;
+ case "The End":
+ if (ToggleCommand.endMusic) end.start();
+ break;
+ case "The Park":
+ if (ToggleCommand.parkMusic) park.start();
+ break;
+ }
}
}
}
}
@SubscribeEvent(receiveCanceled = true)
- public void onChat(ClientChatReceivedEvent event) {
+ public void onChat(ClientChatReceivedEvent event) throws UnsupportedAudioFileException, LineUnavailableException, IOException {
String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
if (ToggleCommand.dungeonMusic && Utils.inDungeons) {
@@ -91,8 +151,9 @@ public class CustomMusic {
dungeonboss.stop();
bloodroom.stop();
dungeon.stop();
- } else if (ToggleCommand.bloodRoomMusic && message.contains("The BLOOD DOOR has been opened!")) {
- bloodroom.start();
+ } else if (message.contains("The BLOOD DOOR has been opened!")) {
+ dungeon.stop();
+ if (ToggleCommand.bloodRoomMusic) bloodroom.start();
}
}
}
@@ -104,76 +165,121 @@ public class CustomMusic {
}
}
- public static void init(String configDirectory) throws IOException, LineUnavailableException, UnsupportedAudioFileException {
+ public static void init(String configDirectory) {
if (configDirectory == null) return;
File directory = new File(configDirectory + "/dsmmusic");
if (!directory.exists()) directory.mkdir();
reset();
- File dungeonBossFile = new File(directory + "/dungeonboss.wav");
- System.out.println("dungeonboss.wav exists?: " + dungeonBossFile.exists());
- dungeonboss = new Song(dungeonBossFile, dungeonbossVolume);
-
- File bloodRoomFile = new File(directory + "/bloodroom.wav");
- System.out.println("bloodroom.wav exists?: " + bloodRoomFile.exists());
- bloodroom = new Song(bloodRoomFile, bloodroomVolume);
-
- File dungeonFile = new File(directory + "/dungeon.wav");
- System.out.println("dungeon.wav exists?: " + dungeonFile.exists());
- dungeon = new Song(dungeonFile, dungeonVolume);
+ dungeonboss = new Song(directory, "dungeonboss", dungeonbossVolume);
+ bloodroom = new Song(directory, "bloodroom", bloodroomVolume);
+ dungeon = new Song(directory, "dungeon", dungeonVolume);
+ hub = new Song(directory, "hub", hubVolume);
+ island = new Song(directory, "island", hubVolume);
+ dungeonHub = new Song(directory, "dungeonhub", dungeonHubVolume);
+ farmingIslands = new Song(directory, "farmingislands", farmingIslandsVolume);
+ goldMine = new Song(directory, "goldmine", goldMineVolume);
+ deepCaverns = new Song(directory, "deepcaverns", deepCavernsVolume);
+ dwarvenMines = new Song(directory, "dwarvenmines", dwarvenMinesVolume);
+ crystalHollows = new Song(directory, "crystalhollows", crystalHollowsVolume);
+ spidersDen = new Song(directory, "spidersden", spidersDenVolume);
+ crimsonIsle = new Song(directory, "crimsonisle", crimsonIsleVolume);
+ end = new Song(directory, "end", endVolume);
+ park = new Song(directory, "park", parkVolume);
}
public static void reset() {
if (dungeonboss != null) dungeonboss.stop();
if (bloodroom != null) bloodroom.stop();
if (dungeon != null) dungeon.stop();
+ if (hub != null) hub.stop();
+ if (island != null) island.stop();
+ if (dungeonHub != null) dungeonHub.stop();
+ if (farmingIslands != null) farmingIslands.stop();
+ if (goldMine != null) goldMine.stop();
+ if (deepCaverns != null) deepCaverns.stop();
+ if (dwarvenMines != null) dwarvenMines.stop();
+ if (crystalHollows != null) crystalHollows.stop();
+ if (spidersDen != null) spidersDen.stop();
+ if (crimsonIsle != null) crimsonIsle.stop();
+ if (end != null) end.stop();
+ if (park != null) park.stop();
}
public static class Song {
public Clip music;
+ private final List<File> playlist = new ArrayList<>();
+ private int volume;
- public Song(File file, int volume) throws IOException, UnsupportedAudioFileException, LineUnavailableException {
- if (file.exists()) {
- music = AudioSystem.getClip();
- AudioInputStream ais = AudioSystem.getAudioInputStream(file);
- music.open(ais);
-
- setVolume(volume);
+ public Song(File directory, String songName, int volume) {
+ File[] files = directory.listFiles();
+ if (files != null) {
+ for (File file : files) {
+ if (!file.isDirectory() && file.getName().matches(songName + "\\d*(?:\\.wav)?\\.wav")) { // .wav.wav moment
+ playlist.add(file);
+ System.out.println("Added " + file.getName() + " to " + songName + " playlist.");
+ }
+ }
}
+
+ this.volume = volume;
}
- public void start() {
- reset();
- if (music != null) {
- cancelNotes = true;
- music.setMicrosecondPosition(0);
- music.start();
- music.loop(Clip.LOOP_CONTINUOUSLY);
+ public void start() throws UnsupportedAudioFileException, LineUnavailableException, IOException {
+
+ try {
+ if (music == null) music = AudioSystem.getClip();
+ if (!music.isRunning()) {
+ reset();
+ shuffle();
+ setVolume(volume);
+ cancelNotes = true;
+ music.setMicrosecondPosition(0);
+ music.start();
+ }
+ } catch (UnsupportedAudioFileException ex) {
+ ex.printStackTrace();
+
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+ if (player != null) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Attempted to play non .wav file. Please use a .wav converter instead of renaming the file."));
+ }
}
}
public void stop() {
cancelNotes = false;
- if (music != null) music.stop();
+ if (music != null) {
+ music.stop();
+ if (music.isOpen()) music.close();
+ }
+ }
+
+ public void shuffle() throws LineUnavailableException, UnsupportedAudioFileException, IOException {
+ if (playlist.size() > 0) {
+ File file = playlist.get(new Random().nextInt(playlist.size()));
+ music = AudioSystem.getClip();
+ AudioInputStream ais = AudioSystem.getAudioInputStream(file);
+ music.open(ais);
+ }
}
public boolean setVolume(int volume) {
- EntityPlayer player = Minecraft.getMinecraft().thePlayer;
- if (music == null) return false;
+ this.volume = volume;
+ if (playlist.size() < 1) return false;
if (volume <= 0 || volume > 100) {
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if (player != null) player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Volume can only be set between 0% and 100%."));
return false;
}
float decibels = (float) (20 * Math.log(volume / 100.0));
FloatControl control = (FloatControl) music.getControl(FloatControl.Type.MASTER_GAIN);
- if (decibels <= control.getMinimum() || decibels >= control.getMaximum()) {
- return false;
- }
-
+ if (decibels <= control.getMinimum() || decibels >= control.getMaximum()) return false;
control.setValue(decibels);
+
return true;
}
diff --git a/src/main/java/me/Danker/features/DungeonScore.java b/src/main/java/me/Danker/features/DungeonScore.java
new file mode 100644
index 0000000..588db8a
--- /dev/null
+++ b/src/main/java/me/Danker/features/DungeonScore.java
@@ -0,0 +1,200 @@
+package me.Danker.features;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.commands.MoveCommand;
+import me.Danker.commands.ScaleCommand;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.events.RenderOverlayEvent;
+import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.network.NetworkPlayerInfo;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+
+import java.util.Collection;
+
+public class DungeonScore {
+
+ int failedPuzzles;
+ int deaths;
+ int skillScore;
+ String secrets;
+ int exploreScore;
+ int timeScore;
+ int bonusScore;
+
+ @SubscribeEvent(receiveCanceled = true)
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!ToggleCommand.dungeonScore || !Utils.inDungeons) return;
+
+ if (message.contains("PUZZLE FAIL! ") || message.contains("chose the wrong answer! I shall never forget this moment")) {
+ failedPuzzles++;
+ }
+
+ if (message.contains(":")) return;
+
+ if (message.contains(" and became a ghost.")) {
+ deaths++;
+ }
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase != TickEvent.Phase.START) return;
+
+ if (!ToggleCommand.dungeonScore || !Utils.inDungeons) return;
+
+ if (DankersSkyblockMod.tickAmount % 20 == 0) {
+ int missingPuzzles = 0;
+ double openedRooms = 0;
+ double completedRooms = 0;
+ double roomScore = 0;
+ double secretScore = 0;
+
+ if (Minecraft.getMinecraft().getNetHandler() == null) return;
+ Collection<NetworkPlayerInfo> players = Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap();
+ for (NetworkPlayerInfo player : players) {
+ if (player == null || player.getDisplayName() == null) continue;
+ String display = player.getDisplayName().getUnformattedText();
+
+ if (display.startsWith(" Opened Rooms: ")) {
+ openedRooms = Double.parseDouble(display.replaceAll("[^\\d]", ""));
+ } else if (display.startsWith(" Completed Rooms: ")) {
+ completedRooms = Double.parseDouble(display.replaceAll("[^\\d]", ""));
+ } else if (display.startsWith(" Secrets Found: ") && display.endsWith("%")) {
+ secrets = player.getDisplayName().getFormattedText();
+
+ double secretCount = Double.parseDouble(display.replaceAll("[^\\d.]", ""));
+
+ switch (Utils.currentFloor) {
+ case F1:
+ secretScore = secretCount / 30D;
+ break;
+ case F2:
+ secretScore = secretCount / 40D;
+ break;
+ case F3:
+ secretScore = secretCount / 50D;
+ break;
+ case F4:
+ secretScore = secretCount / 60D;
+ break;
+ case F5:
+ secretScore = secretCount / 70D;
+ break;
+ case F6:
+ secretScore = secretCount / 85D;
+ break;
+ default:
+ secretScore = secretCount / 100D;
+ }
+ } else if (display.startsWith("Time Elapsed: ")) {
+ String timeText = display.substring(display.indexOf(":") + 2).replaceAll("\\s", "");
+ int minutes = Integer.parseInt(timeText.substring(0, timeText.indexOf("m")));
+ int seconds = Integer.parseInt(timeText.substring(timeText.indexOf("m") + 1, timeText.indexOf("s")));
+ int time = minutes * 60 + seconds;
+
+ if (Utils.currentFloor == Utils.DungeonFloor.F2) time -= 120;
+
+ int base;
+ switch (Utils.currentFloor) {
+ case F1:
+ case F2:
+ case F3:
+ case F5:
+ base = 600;
+ break;
+ case F4:
+ case F6:
+ case F7:
+ base = 720;
+ break;
+ default:
+ base = 480;
+ }
+
+ if (time <= base) {
+ timeScore = 100;
+ } else if (time <= base + 100) {
+ timeScore = (int) Math.ceil(100 - 0.1 * (time - base));
+ } else if (time <= base + 500) {
+ timeScore = (int) Math.ceil(90 - 0.05 * (time - base - 100));
+ } else if (time < base + 2600) {
+ timeScore = (int) Math.ceil(70 - (1/30D) * (time - base - 1100));
+ } else {
+ timeScore = 0;
+ }
+ } else if (display.startsWith(" Crypts: ")) {
+ bonusScore = MathHelper.clamp_int(Integer.parseInt(display.replaceAll("[^\\d]", "")), 0, 5);
+ } else if (display.contains("[✦]")) {
+ missingPuzzles++;
+ }
+ }
+
+ if (openedRooms != 0) {
+ roomScore = completedRooms / openedRooms;
+ }
+
+ skillScore = MathHelper.clamp_int(100 - 14 * (failedPuzzles + missingPuzzles) - 2 * deaths, 0, 100);
+ exploreScore = (int) (60 * roomScore + 40 * MathHelper.clamp_double(secretScore, 0, 1));
+ }
+ }
+
+ @SubscribeEvent
+ public void renderPlayerInfo(RenderOverlayEvent event) {
+ if (ToggleCommand.dungeonScore && Utils.inDungeons) {
+ Minecraft mc = Minecraft.getMinecraft();
+
+ int totalScore = skillScore + exploreScore + timeScore + bonusScore;
+ String total;
+ if (totalScore >= 300) {
+ total = EnumChatFormatting.GOLD + "S+";
+ } else if (totalScore >= 270) {
+ total = EnumChatFormatting.GOLD + "S";
+ } else if (totalScore >= 230) {
+ total = EnumChatFormatting.DARK_PURPLE + "A";
+ } else if (totalScore >= 160) {
+ total = EnumChatFormatting.GREEN + "B";
+ } else if (totalScore >= 100) {
+ total = EnumChatFormatting.BLUE + "C";
+ } else {
+ total = EnumChatFormatting.RED + "D";
+ }
+
+ String scoreText = secrets + "\n" +
+ EnumChatFormatting.GOLD + "Skill:\n" +
+ EnumChatFormatting.GOLD + "Explore:\n" +
+ EnumChatFormatting.GOLD + "Speed:\n" +
+ EnumChatFormatting.GOLD + "Bonus:\n" +
+ EnumChatFormatting.GOLD + "Total:";
+ String score = "\n" +
+ EnumChatFormatting.GOLD + skillScore + "\n" +
+ EnumChatFormatting.GOLD + exploreScore + "\n" +
+ EnumChatFormatting.GOLD + timeScore + "\n" +
+ EnumChatFormatting.GOLD + bonusScore + "\n" +
+ EnumChatFormatting.GOLD + totalScore + EnumChatFormatting.GRAY + " (" + total + EnumChatFormatting.GRAY + ")";
+ new TextRenderer(mc, scoreText, MoveCommand.dungeonScoreXY[0], MoveCommand.dungeonScoreXY[1], ScaleCommand.dungeonScoreScale);
+ new TextRenderer(mc, score, MoveCommand.dungeonScoreXY[0] + 80, MoveCommand.dungeonScoreXY[1], ScaleCommand.dungeonScoreScale);
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldChange(WorldEvent.Load event) {
+ failedPuzzles = 0;
+ deaths = 0;
+ skillScore = 100;
+ secrets = "";
+ exploreScore = 0;
+ timeScore = 100;
+ bonusScore = 0;
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/DungeonTimer.java b/src/main/java/me/Danker/features/DungeonTimer.java
index 394f2de..9d363db 100644
--- a/src/main/java/me/Danker/features/DungeonTimer.java
+++ b/src/main/java/me/Danker/features/DungeonTimer.java
@@ -3,7 +3,7 @@ package me.Danker.features;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
@@ -56,7 +56,7 @@ public class DungeonTimer {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (ToggleCommand.dungeonTimerToggled && Utils.inDungeons) {
Minecraft mc = Minecraft.getMinecraft();
String dungeonTimerText = EnumChatFormatting.GRAY + "Wither Doors:\n" +
diff --git a/src/main/java/me/Danker/features/EndOfFarmAlert.java b/src/main/java/me/Danker/features/EndOfFarmAlert.java
new file mode 100644
index 0000000..ecbf3ee
--- /dev/null
+++ b/src/main/java/me/Danker/features/EndOfFarmAlert.java
@@ -0,0 +1,40 @@
+package me.Danker.features;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+
+public class EndOfFarmAlert {
+
+ static boolean alerted = false;
+ public static double min = -78.5;
+ public static double max = 79.5;
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase != TickEvent.Phase.START) return;
+
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+ if (DankersSkyblockMod.tickAmount % 10 == 0) {
+ if (ToggleCommand.endOfFarmAlert && Utils.isInScoreboard("Your Island")) {
+ double x = player.posX;
+ double z = player.posZ;
+
+ if (x <= min || x >= max || z <= min || z >= max) {
+ if (!alerted) {
+ alerted = true;
+ Utils.createTitle(EnumChatFormatting.RED + "END OF FARM", 1);
+ }
+ } else {
+ alerted = false;
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/GemstonesLore.java b/src/main/java/me/Danker/features/GemstonesLore.java
new file mode 100644
index 0000000..c633c58
--- /dev/null
+++ b/src/main/java/me/Danker/features/GemstonesLore.java
@@ -0,0 +1,77 @@
+package me.Danker.features;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraftforge.event.entity.player.ItemTooltipEvent;
+import net.minecraftforge.fml.common.eventhandler.EventPriority;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class GemstonesLore {
+
+ static Map<String, EnumChatFormatting> gemstoneColours = new HashMap<>();
+
+ public static void init() {
+ gemstoneColours.put("Amber", EnumChatFormatting.GOLD);
+ gemstoneColours.put("Sapphire", EnumChatFormatting.AQUA);
+ gemstoneColours.put("Jasper", EnumChatFormatting.LIGHT_PURPLE);
+ gemstoneColours.put("Amethyst", EnumChatFormatting.DARK_PURPLE);
+ gemstoneColours.put("Topaz", EnumChatFormatting.YELLOW);
+ gemstoneColours.put("Jade", EnumChatFormatting.GREEN);
+ gemstoneColours.put("Ruby", EnumChatFormatting.RED);
+ }
+
+ @SubscribeEvent(priority = EventPriority.HIGHEST)
+ public void onTooltip(ItemTooltipEvent event) {
+ if (!Utils.inSkyblock) return;
+ if (event.toolTip == null) return;
+
+ ItemStack item = event.itemStack;
+ if (ToggleCommand.gemstoneLore) {
+ if (item.hasTagCompound()) {
+ NBTTagCompound tags = item.getSubCompound("ExtraAttributes", false);
+ if (tags != null) {
+ if (tags.hasKey("gems")) {
+ NBTTagCompound gems = tags.getCompoundTag("gems");
+ Set<String> set = gems.getKeySet();
+
+ if (set.size() == 0) return;
+
+ int index = Minecraft.getMinecraft().gameSettings.advancedItemTooltips ? 4 : 2;
+
+ event.toolTip.add(event.toolTip.size() - index, "");
+ event.toolTip.add(event.toolTip.size() - index, "Gemstones Applied:");
+
+ for (String gem : set) {
+ char last = gem.charAt(gem.length() - 1);
+ if (!Character.isDigit(last)) continue;
+
+ String gemstone = " " + Utils.capitalizeString(gems.getString(gem)) + " ";
+ if (gem.startsWith("UNIVERSAL_") || gem.startsWith("MINING_") || gem.startsWith("COMBAT_") || gem.startsWith("DEFENSIVE_")) {
+ gemstone += Utils.capitalizeString(gems.getString(gem + "_gem"));
+ } else {
+ gemstone += Utils.capitalizeString(gem.substring(0, gem.indexOf("_")));
+ }
+
+ for (String colour : gemstoneColours.keySet()) {
+ if (gemstone.contains(colour)) {
+ gemstone = gemstoneColours.get(colour) + gemstone;
+ }
+ }
+
+ event.toolTip.add(event.toolTip.size() - index, gemstone);
+ }
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/GiantHPDisplay.java b/src/main/java/me/Danker/features/GiantHPDisplay.java
index 07378dd..4af31ae 100644
--- a/src/main/java/me/Danker/features/GiantHPDisplay.java
+++ b/src/main/java/me/Danker/features/GiantHPDisplay.java
@@ -1,8 +1,10 @@
package me.Danker.features;
import me.Danker.DankersSkyblockMod;
+import me.Danker.commands.MoveCommand;
+import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.ScoreboardHandler;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
@@ -56,7 +58,7 @@ public class GiantHPDisplay {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (ToggleCommand.giantHP && Utils.inDungeons && giants.size() > 0) {
StringBuilder sb = new StringBuilder();
@@ -64,7 +66,7 @@ public class GiantHPDisplay {
if (!giant.isDead) sb.append(Utils.removeBold(giant.getDisplayName().getFormattedText())).append("\n");
}
- new TextRenderer(Minecraft.getMinecraft(), sb.toString(), 100, 100, 1);
+ new TextRenderer(Minecraft.getMinecraft(), sb.toString(), MoveCommand.giantHPXY[0], MoveCommand.giantHPXY[1], ScaleCommand.giantHPScale);
}
}
diff --git a/src/main/java/me/Danker/features/GolemSpawningAlert.java b/src/main/java/me/Danker/features/GolemSpawningAlert.java
index de5cb89..87af663 100644
--- a/src/main/java/me/Danker/features/GolemSpawningAlert.java
+++ b/src/main/java/me/Danker/features/GolemSpawningAlert.java
@@ -3,7 +3,7 @@ package me.Danker.features;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
@@ -37,7 +37,7 @@ public class GolemSpawningAlert {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (ToggleCommand.golemAlertToggled && Utils.inSkyblock && golemTime > System.currentTimeMillis() / 1000) {
Minecraft mc = Minecraft.getMinecraft();
double scale = ScaleCommand.golemTimerScale;
diff --git a/src/main/java/me/Danker/features/HidePlayerArmour.java b/src/main/java/me/Danker/features/HidePlayerArmour.java
new file mode 100644
index 0000000..8cc47d0
--- /dev/null
+++ b/src/main/java/me/Danker/features/HidePlayerArmour.java
@@ -0,0 +1,51 @@
+package me.Danker.features;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.Utils;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.client.event.RenderLivingEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class HidePlayerArmour {
+
+ List<ItemStack> armour = new ArrayList<>();
+
+ @SubscribeEvent
+ public void onRenderLivingPre(RenderLivingEvent.Pre<EntityLivingBase> event) {
+ if (ToggleCommand.hideArmour && Utils.inSkyblock) {
+ if (event.entity instanceof EntityPlayer) {
+ EntityPlayer player = (EntityPlayer) event.entity;
+
+ for (int i = 0; i < player.inventory.armorInventory.length; i++) {
+ if (player.inventory.armorInventory[i] != null) {
+ armour.add(player.inventory.armorInventory[i].copy());
+ player.inventory.armorInventory[i] = null;
+ } else {
+ armour.add(null);
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onRenderLivingPost(RenderLivingEvent.Post<EntityLivingBase> event) {
+ if (ToggleCommand.hideArmour && Utils.inSkyblock) {
+ if (event.entity instanceof EntityPlayer) {
+ EntityPlayer player = (EntityPlayer) event.entity;
+
+ for (int i = 0; i < player.inventory.armorInventory.length; i++) {
+ player.inventory.armorInventory[i] = armour.get(i);
+ }
+
+ armour.clear();
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/HighlightSkeletonMasters.java b/src/main/java/me/Danker/features/HighlightSkeletonMasters.java
index f97699c..72259db 100644
--- a/src/main/java/me/Danker/features/HighlightSkeletonMasters.java
+++ b/src/main/java/me/Danker/features/HighlightSkeletonMasters.java
@@ -1,6 +1,7 @@
package me.Danker.features;
import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
@@ -33,7 +34,7 @@ public class HighlightSkeletonMasters {
if (ToggleCommand.highlightSkeletonMasters) {
for (Entity skeletonMaster : skeletonMasters) {
if (!skeletonMaster.isDead)
- Utils.draw3DBox(skeletonMaster.getEntityBoundingBox(), SKELETON_MASTER_COLOUR, event.partialTicks);
+ RenderUtils.draw3DBox(skeletonMaster.getEntityBoundingBox(), SKELETON_MASTER_COLOUR, event.partialTicks);
}
skeletonMasters.clear();
}
diff --git a/src/main/java/me/Danker/features/NecronNotifications.java b/src/main/java/me/Danker/features/NecronNotifications.java
index d35996c..323e7f8 100644
--- a/src/main/java/me/Danker/features/NecronNotifications.java
+++ b/src/main/java/me/Danker/features/NecronNotifications.java
@@ -24,55 +24,58 @@ public class NecronNotifications {
if (!Utils.inDungeons) return;
- if (ToggleCommand.necronNotificationsToggled && message.contains("[BOSS] Necron:")) {
+ if (ToggleCommand.necronNotificationsToggled) {
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);
+ if (message.startsWith("[BOSS] Maxor:")) {
+ if (message.contains("THAT BEAM! IT HURTS! IT HURTS!!") || message.contains("YOU TRICKED ME!")) {
+ Utils.createTitle(EnumChatFormatting.RED + "MAXOR STUCK!", 2);
+ }
+ } else if (message.startsWith("[BOSS] Storm:")) {
+ if (message.contains("Ouch, that hurt!") || message.contains("Oof")) {
+ List<EntityArmorStand> stormLabels = world.getEntities(EntityArmorStand.class, (entity -> {
+ if (!entity.hasCustomName()) return false;
+ return entity.getCustomNameTag().contains("Storm");
+ }));
+ if (stormLabels.size() == 0) {
+ Utils.createTitle(EnumChatFormatting.WHITE + "STORM STUNNED!", 2);
+ } else {
+ EntityArmorStand storm = stormLabels.get(0);
+ double x = storm.posX;
+ double z = storm.posZ;
- IBlockState blockState = world.getBlockState(blockPos);
- Block block = blockState.getBlock();
+ BlockPos blockPos = new BlockPos(x, 168, z);
- 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);
+ IBlockState blockState = world.getBlockState(blockPos);
+ Block block = blockState.getBlock();
+
+ if (block != Blocks.stained_hardened_clay) {
+ Utils.createTitle(EnumChatFormatting.WHITE + "STORM 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 + "STORM STUNNED!", 2);
+ }
}
- }
+ }
+ } else if (message.contains("I should have known that I stood no chance.")) {
+ Utils.createTitle(EnumChatFormatting.RED + "RED PILLAR!", 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!")) {
+ } else if (message.startsWith("[BOSS] Necron:") && message.contains("ARGH!")) {
Utils.createTitle(EnumChatFormatting.RED + "EXPLOSION OVER!", 2);
}
}
-
}
}
diff --git a/src/main/java/me/Danker/features/NoF3Coords.java b/src/main/java/me/Danker/features/NoF3Coords.java
index 4f362e6..7dc304c 100644
--- a/src/main/java/me/Danker/features/NoF3Coords.java
+++ b/src/main/java/me/Danker/features/NoF3Coords.java
@@ -3,7 +3,7 @@ package me.Danker.features;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
@@ -14,7 +14,7 @@ public class NoF3Coords {
public static String COORDS_COLOUR;
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
Minecraft mc = Minecraft.getMinecraft();
if (ToggleCommand.coordsToggled) {
diff --git a/src/main/java/me/Danker/features/PetColours.java b/src/main/java/me/Danker/features/PetColours.java
index 5889b12..7192f07 100644
--- a/src/main/java/me/Danker/features/PetColours.java
+++ b/src/main/java/me/Danker/features/PetColours.java
@@ -2,7 +2,7 @@ package me.Danker.features;
import me.Danker.commands.ToggleCommand;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
-import me.Danker.utils.Utils;
+import me.Danker.utils.RenderUtils;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StringUtils;
@@ -37,30 +37,30 @@ public class PetColours {
continue;
int colour;
int petLevel = Integer.parseInt(item.getDisplayName().substring(item.getDisplayName().indexOf(" ") + 1, item.getDisplayName().indexOf("]")));
- if (petLevel == 100) {
+ if (petLevel == 100 || petLevel == 200) {
colour = PET_100;
- } else if (petLevel >= 90) {
+ } else if ((petLevel < 100 && petLevel >= 90) || petLevel >= 190) {
colour = PET_90_TO_99;
- } else if (petLevel >= 80) {
+ } else if ((petLevel < 100 && petLevel >= 80) || petLevel >= 180) {
colour = PET_80_TO_89;
- } else if (petLevel >= 70) {
+ } else if ((petLevel < 100 && petLevel >= 70) || petLevel >= 170) {
colour = PET_70_TO_79;
- } else if (petLevel >= 60) {
+ } else if ((petLevel < 100 && petLevel >= 60) || petLevel >= 160) {
colour = PET_60_TO_69;
- } else if (petLevel >= 50) {
+ } else if ((petLevel < 100 && petLevel >= 50) || petLevel >= 150) {
colour = PET_50_TO_59;
- } else if (petLevel >= 40) {
+ } else if ((petLevel < 100 && petLevel >= 40) || petLevel >= 140) {
colour = PET_40_TO_49;
- } else if (petLevel >= 30) {
+ } else if ((petLevel < 100 && petLevel >= 30) || petLevel >= 130) {
colour = PET_30_TO_39;
- } else if (petLevel >= 20) {
+ } else if ((petLevel < 100 && petLevel >= 20) || petLevel >= 120) {
colour = PET_20_TO_29;
- } else if (petLevel >= 10) {
+ } else if ((petLevel < 100 && petLevel >= 10) || petLevel >= 110) {
colour = PET_10_TO_19;
} else {
colour = PET_1_TO_9;
}
- Utils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, colour + 0xBF000000);
+ RenderUtils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, colour + 0xBF000000);
}
}
}
diff --git a/src/main/java/me/Danker/features/Skill50Display.java b/src/main/java/me/Danker/features/Skill50Display.java
index 3b73cf9..7025ac5 100644
--- a/src/main/java/me/Danker/features/Skill50Display.java
+++ b/src/main/java/me/Danker/features/Skill50Display.java
@@ -1,12 +1,14 @@
package me.Danker.features;
+import me.Danker.DankersSkyblockMod;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@@ -30,8 +32,8 @@ public class Skill50Display {
String[] actionBarSections = event.message.getUnformattedText().split(" {3,}");
for (String section : actionBarSections) {
- if (section.contains("+") && section.contains("/") && section.contains("(")) {
- if (ToggleCommand.skill50DisplayToggled && !section.contains("Runecrafting")) {
+ if (ToggleCommand.skill50DisplayToggled && section.contains("+") && section.contains("(") && section.contains(")") && !section.contains("Runecrafting")) {
+ if (section.contains("/")) {
String xpGained = section.substring(section.indexOf("+"), section.indexOf("(") - 1);
double currentXp = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("/")).replace(",", ""));
int limit;
@@ -43,13 +45,56 @@ public class Skill50Display {
limit = 50;
totalXp = 55172425;
}
- int previousXp = Utils.getPastXpEarned(Integer.parseInt(section.substring(section.indexOf("/") + 1, section.indexOf(")")).replaceAll(",", "")), limit);
+
+ int nextLevelXp;
+ String nextLevelXpString = section.substring(section.indexOf("/") + 1, section.indexOf(")")).replaceAll(",", "");
+ if (nextLevelXpString.contains("k")) {
+ nextLevelXp = (int) (Double.parseDouble(nextLevelXpString.substring(0, nextLevelXpString.indexOf("k"))) * 1000);
+ } else {
+ nextLevelXp = Integer.parseInt(nextLevelXpString);
+ }
+
+ int previousXp = Utils.getPastXpEarned(nextLevelXp, limit);
double percentage = Math.floor(((currentXp + previousXp) / totalXp) * 10000D) / 100D;
NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
skillTimer = SKILL_TIME;
showSkill = true;
skillText = SKILL_50_COLOUR + xpGained + " (" + nf.format(currentXp + previousXp) + "/" + nf.format(totalXp) + ") " + percentage + "%";
+ } else {
+ if (!Utils.skillsInitialized()) {
+ return;
+ }
+
+ String xpGained = section.substring(section.indexOf("+"), section.indexOf("(") - 1);
+ double percentage = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("%")));
+ int level = 1;
+ if (section.contains("Farming")) {
+ level = DankersSkyblockMod.farmingLevel;
+ } else if (section.contains("Mining")) {
+ level = DankersSkyblockMod.miningLevel;
+ } else if (section.contains("Combat")) {
+ level = DankersSkyblockMod.combatLevel;
+ } else if (section.contains("Foraging")) {
+ level = DankersSkyblockMod.foragingLevel;
+ } else if (section.contains("Fishing")) {
+ level = DankersSkyblockMod.fishingLevel;
+ } else if (section.contains("Enchanting")) {
+ level = DankersSkyblockMod.enchantingLevel;
+ } else if (section.contains("Alchemy")) {
+ level = DankersSkyblockMod.alchemyLevel;
+ } else if (section.contains("Carpentry")) {
+ level = DankersSkyblockMod.carpentryLevel;
+ }
+
+ double currentXp = Utils.getTotalXpEarned(level, percentage);
+ int totalXp = section.contains("Farming") || section.contains("Enchanting") || section.contains("Mining") || section.contains("Combat") ? 111672425 : 55172425;
+ double percentageTo50 = Math.floor((currentXp / totalXp) * 10000D) / 100D;
+
+ NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
+ skillTimer = SKILL_TIME;
+ showSkill = true;
+ skillText = SKILL_50_COLOUR + xpGained + " (" + nf.format(currentXp) + "/" + nf.format(totalXp) + ") " + percentageTo50 + "%";
}
}
}
@@ -68,7 +113,12 @@ public class Skill50Display {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
+ if (!Utils.skillsInitialized() && Utils.inSkyblock) {
+ new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features. (/skills)", MoveCommand.skill50XY[0], MoveCommand.skill50XY[0], ScaleCommand.skill50Scale);
+ return;
+ }
+
if (showSkill) {
new TextRenderer(Minecraft.getMinecraft(), skillText, MoveCommand.skill50XY[0], MoveCommand.skill50XY[1], ScaleCommand.skill50Scale);
}
diff --git a/src/main/java/me/Danker/features/SkillTracker.java b/src/main/java/me/Danker/features/SkillTracker.java
index 60eb632..1c1005f 100644
--- a/src/main/java/me/Danker/features/SkillTracker.java
+++ b/src/main/java/me/Danker/features/SkillTracker.java
@@ -4,7 +4,7 @@ import me.Danker.DankersSkyblockMod;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
@@ -52,86 +52,127 @@ public class SkillTracker {
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")) {
- if (ToggleCommand.autoSkillTrackerToggled && System.currentTimeMillis() / 1000 - timeSinceGained <= 2) {
- if (skillStopwatch.isStarted() && skillStopwatch.isSuspended()) {
- skillStopwatch.resume();
- } else if (!skillStopwatch.isStarted()) {
- skillStopwatch.start();
- }
+ if (section.contains("+") && section.contains("(") && section.contains(")") && !section.contains("Runecrafting") && !section.contains("Carpentry")) {
+ 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;
+ }
+ timeSinceGained = System.currentTimeMillis() / 1000;
+
+ String skill = section.substring(section.indexOf(" ") + 1, section.lastIndexOf(" "));
+ double totalXP;
+ if (section.contains("/")) {
int limit = section.contains("Farming") || section.contains("Enchanting") || section.contains("Mining") || section.contains("Combat") ? 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(",", ""));
+
+ int xpToLevelUp;
+ String nextLevelXpString = section.substring(section.indexOf("/") + 1, section.indexOf(")")).replaceAll(",", "");
+ if (nextLevelXpString.contains("k")) {
+ xpToLevelUp = (int) (Double.parseDouble(nextLevelXpString.substring(0, nextLevelXpString.indexOf("k"))) * 1000);
+ } else {
+ xpToLevelUp = Integer.parseInt(nextLevelXpString);
+ }
+
xpLeft = xpToLevelUp - currentXP;
int previousXP = Utils.getPastXpEarned(xpToLevelUp, limit);
- double totalXP = currentXP + previousXP;
-
- String skill = section.substring(section.indexOf(" ") + 1, section.lastIndexOf(" "));
- switch (skill) {
- case "Farming":
- lastSkill = "Farming";
- if (farmingXP != 0) {
- if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) farmingXPGained += totalXP - farmingXP;
- }
- farmingXP = totalXP;
- break;
- case "Mining":
- lastSkill = "Mining";
- if (miningXP != 0) {
- if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) miningXPGained += totalXP - miningXP;
- }
- miningXP = totalXP;
- break;
- case "Combat":
- lastSkill = "Combat";
- if (combatXP != 0) {
- if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) combatXPGained += totalXP - combatXP;
- }
- combatXP = totalXP;
- break;
- case "Foraging":
- lastSkill = "Foraging";
- if (foragingXP != 0) {
- if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) foragingXPGained += totalXP - foragingXP;
- }
- foragingXP = totalXP;
- break;
- case "Fishing":
- lastSkill = "Fishing";
- if (fishingXP != 0) {
- if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) fishingXPGained += totalXP - fishingXP;
- }
- fishingXP = totalXP;
- break;
- case "Enchanting":
- lastSkill = "Enchanting";
- if (enchantingXP != 0) {
- if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) enchantingXPGained += totalXP - enchantingXP;
- }
- enchantingXP = totalXP;
- break;
- case "Alchemy":
- lastSkill = "Alchemy";
- if (alchemyXP != 0) {
- if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) alchemyXPGained += totalXP - alchemyXP;
- }
- alchemyXP = totalXP;
- break;
- default:
- System.err.println("Unknown skill.");
+ totalXP = currentXP + previousXP;
+ } else {
+ if (!Utils.skillsInitialized()) {
+ return;
}
+
+ int level = 1;
+ if (section.contains("Farming")) {
+ level = DankersSkyblockMod.farmingLevel;
+ } else if (section.contains("Mining")) {
+ level = DankersSkyblockMod.miningLevel;
+ } else if (section.contains("Combat")) {
+ level = DankersSkyblockMod.combatLevel;
+ } else if (section.contains("Foraging")) {
+ level = DankersSkyblockMod.foragingLevel;
+ } else if (section.contains("Fishing")) {
+ level = DankersSkyblockMod.fishingLevel;
+ } else if (section.contains("Enchanting")) {
+ level = DankersSkyblockMod.enchantingLevel;
+ } else if (section.contains("Alchemy")) {
+ level = DankersSkyblockMod.alchemyLevel;
+ } else if (section.contains("Carpentry")) {
+ level = DankersSkyblockMod.carpentryLevel;
+ }
+
+ totalXP = Utils.getTotalXpEarned(level, Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("%"))));
+ xpLeft = Utils.getTotalXpEarned(level + 1, 0) - totalXP;
+ }
+
+ switch (skill) {
+ case "Farming":
+ lastSkill = "Farming";
+ if (farmingXP != 0) {
+ if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) farmingXPGained += totalXP - farmingXP;
+ }
+ farmingXP = totalXP;
+ break;
+ case "Mining":
+ lastSkill = "Mining";
+ if (miningXP != 0) {
+ if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) miningXPGained += totalXP - miningXP;
+ }
+ miningXP = totalXP;
+ break;
+ case "Combat":
+ lastSkill = "Combat";
+ if (combatXP != 0) {
+ if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) combatXPGained += totalXP - combatXP;
+ }
+ combatXP = totalXP;
+ break;
+ case "Foraging":
+ lastSkill = "Foraging";
+ if (foragingXP != 0) {
+ if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) foragingXPGained += totalXP - foragingXP;
+ }
+ foragingXP = totalXP;
+ break;
+ case "Fishing":
+ lastSkill = "Fishing";
+ if (fishingXP != 0) {
+ if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) fishingXPGained += totalXP - fishingXP;
+ }
+ fishingXP = totalXP;
+ break;
+ case "Enchanting":
+ lastSkill = "Enchanting";
+ if (enchantingXP != 0) {
+ if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) enchantingXPGained += totalXP - enchantingXP;
+ }
+ enchantingXP = totalXP;
+ break;
+ case "Alchemy":
+ lastSkill = "Alchemy";
+ if (alchemyXP != 0) {
+ if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) alchemyXPGained += totalXP - alchemyXP;
+ }
+ alchemyXP = totalXP;
+ break;
+ default:
+ System.err.println("Unknown skill.");
}
}
}
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (showSkillTracker && Utils.inSkyblock) {
+ if (!Utils.skillsInitialized()) {
+ new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features. (/skills)", MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[0], ScaleCommand.skillTrackerScale);
+ return;
+ }
+
int xpPerHour;
double xpToShow = 0;
switch (lastSkill) {
@@ -196,12 +237,8 @@ public class SkillTracker {
@SubscribeEvent
public void onGuiOpen(GuiOpenEvent event) {
- if (event.gui instanceof GuiChest) {
- if (ToggleCommand.autoSkillTrackerToggled) {
- if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) {
- skillStopwatch.suspend();
- }
- }
+ if (event.gui instanceof GuiChest && ToggleCommand.autoSkillTrackerToggled && skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) {
+ skillStopwatch.suspend();
}
}
diff --git a/src/main/java/me/Danker/features/SlayerESP.java b/src/main/java/me/Danker/features/SlayerESP.java
index 522e696..b179979 100644
--- a/src/main/java/me/Danker/features/SlayerESP.java
+++ b/src/main/java/me/Danker/features/SlayerESP.java
@@ -3,6 +3,7 @@ package me.Danker.features;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
import me.Danker.handlers.ScoreboardHandler;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
@@ -26,6 +27,7 @@ public class SlayerESP {
static Entity zombie = null;
static Entity spider = null;
static Entity wolf = null;
+ static Entity enderman = null;
static boolean slayerActive = false;
static boolean slayerStarted = false;
public static int SLAYER_COLOUR;
@@ -35,6 +37,7 @@ public class SlayerESP {
zombie = null;
spider = null;
wolf = null;
+ enderman = null;
}
@SubscribeEvent
@@ -45,7 +48,7 @@ public class SlayerESP {
World world = Minecraft.getMinecraft().theWorld;
if (world == null) return;
if (!slayerStarted) return;
- if (zombie != null || spider != null || wolf != null) {
+ if (zombie != null || spider != null || wolf != null || enderman != null) {
return;
}
slayerActive = true;
@@ -66,8 +69,10 @@ public class SlayerESP {
} else if (e.getName().contains("Sven Packmaster")) {
wolf = e;
return;
+ } else if (e.getName().contains("Voidgloom Seraph")) {
+ enderman = e;
+ return;
}
-
}
break;
}
@@ -88,6 +93,7 @@ public class SlayerESP {
zombie = null;
spider = null;
wolf = null;
+ enderman = null;
}
}
@@ -100,17 +106,22 @@ public class SlayerESP {
if (slayerActive && ToggleCommand.highlightSlayers) {
if (zombie != null) {
AxisAlignedBB aabb = new AxisAlignedBB(zombie.posX - 0.5, zombie.posY - 2, zombie.posZ - 0.5, zombie.posX + 0.5, zombie.posY, zombie.posZ + 0.5);
- Utils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
+ RenderUtils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
return;
}
if (spider != null) {
AxisAlignedBB aabb = new AxisAlignedBB(spider.posX - 0.75, spider.posY - 1, spider.posZ - 0.75, spider.posX + 0.75, spider.posY, spider.posZ + 0.75);
- Utils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
+ RenderUtils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
return;
}
if (wolf != null) {
AxisAlignedBB aabb = new AxisAlignedBB(wolf.posX - 0.5, wolf.posY - 1, wolf.posZ - 0.5, wolf.posX + 0.5, wolf.posY, wolf.posZ + 0.5);
- Utils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
+ RenderUtils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
+ return;
+ }
+ if (enderman != null) {
+ AxisAlignedBB aabb = new AxisAlignedBB(enderman.posX - 0.5, enderman.posY - 3, enderman.posZ - 0.5, enderman.posX + 0.5, enderman.posY, enderman.posZ + 0.5);
+ RenderUtils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
return;
}
}
diff --git a/src/main/java/me/Danker/features/SpiritBootsFix.java b/src/main/java/me/Danker/features/SpiritBootsFix.java
new file mode 100644
index 0000000..8530f17
--- /dev/null
+++ b/src/main/java/me/Danker/features/SpiritBootsFix.java
@@ -0,0 +1,32 @@
+package me.Danker.features;
+
+import me.Danker.events.PacketReadEvent;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.network.play.server.S04PacketEntityEquipment;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.relauncher.ReflectionHelper;
+
+import java.lang.reflect.Field;
+
+public class SpiritBootsFix {
+
+ static Field slot = ReflectionHelper.findField(S04PacketEntityEquipment.class, "equipmentSlot", "field_149392_b", "b");
+
+ @SubscribeEvent
+ public void onPacketRead(PacketReadEvent event) throws IllegalAccessException {
+ if (Utils.inSkyblock && event.packet instanceof S04PacketEntityEquipment) {
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+ S04PacketEntityEquipment packet = (S04PacketEntityEquipment) event.packet;
+
+ if (player == null || packet == null) return;
+ if (packet.getEntityID() == player.getEntityId()) {
+ slot.setAccessible(true);
+ slot.setInt(packet, slot.getInt(packet) + 1);
+ event.packet = packet;
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/TetherDisplay.java b/src/main/java/me/Danker/features/TetherDisplay.java
index 363b90f..1af3a0f 100644
--- a/src/main/java/me/Danker/features/TetherDisplay.java
+++ b/src/main/java/me/Danker/features/TetherDisplay.java
@@ -4,7 +4,7 @@ import me.Danker.DankersSkyblockMod;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
@@ -45,7 +45,7 @@ public class TetherDisplay {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (ToggleCommand.teammatesInRadius && Utils.inDungeons) {
String teammates;
if (playersInRadius.size() > 0) {
diff --git a/src/main/java/me/Danker/features/UpdateChecker.java b/src/main/java/me/Danker/features/UpdateChecker.java
index 747fe91..7fe75b0 100644
--- a/src/main/java/me/Danker/features/UpdateChecker.java
+++ b/src/main/java/me/Danker/features/UpdateChecker.java
@@ -26,7 +26,7 @@ public class UpdateChecker {
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
System.out.println("Checking for updates...");
- JsonObject latestRelease = APIHandler.getResponse("https://api.github.com/repos/bowser0000/SkyblockMod/releases/latest");
+ JsonObject latestRelease = APIHandler.getResponse("https://api.github.com/repos/bowser0000/SkyblockMod/releases/latest", false);
String latestTag = latestRelease.get("tag_name").getAsString();
DefaultArtifactVersion currentVersion = new DefaultArtifactVersion(DankersSkyblockMod.VERSION);
diff --git a/src/main/java/me/Danker/features/loot/BlazeTracker.java b/src/main/java/me/Danker/features/loot/BlazeTracker.java
new file mode 100644
index 0000000..896f65f
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/BlazeTracker.java
@@ -0,0 +1,184 @@
+package me.Danker.features.loot;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class BlazeTracker {
+
+ public static int demonlords;
+ public static int derelictAshes;
+ public static int lavatearRunes;
+ public static int splashPotions;
+ public static int magmaArrows;
+ public static int manaDisintegrators;
+ public static int scorchedBooks;
+ public static int kelvinInverters;
+ public static int blazeRodDistillates;
+ public static int glowstoneDistillates;
+ public static int magmaCreamDistillates;
+ public static int netherWartDistillates;
+ public static int gabagoolDistillates;
+ public static int scorchedPowerCrystals;
+ public static int fireAspectBooks;
+ public static int fieryBurstRunes;
+ public static int opalGems;
+ public static int archfiendDice;
+ public static int duplexBooks;
+ public static int highClassArchfiendDice;
+ public static int engineeringPlans;
+ public static int subzeroInverters;
+ public static double time;
+ public static int bosses;
+
+ public static int demonlordsSession = 0;
+ public static int derelictAshesSession = 0;
+ public static int lavatearRunesSession = 0;
+ public static int splashPotionsSession = 0;
+ public static int magmaArrowsSession = 0;
+ public static int manaDisintegratorsSession = 0;
+ public static int scorchedBooksSession = 0;
+ public static int kelvinInvertersSession = 0;
+ public static int blazeRodDistillatesSession = 0;
+ public static int glowstoneDistillatesSession = 0;
+ public static int magmaCreamDistillatesSession = 0;
+ public static int netherWartDistillatesSession = 0;
+ public static int gabagoolDistillatesSession = 0;
+ public static int scorchedPowerCrystalsSession = 0;
+ public static int fireAspectBooksSession = 0;
+ public static int fieryBurstRunesSession = 0;
+ public static int opalGemsSession = 0;
+ public static int archfiendDiceSession = 0;
+ public static int duplexBooksSession = 0;
+ public static int highClassArchfiendDiceSession = 0;
+ public static int engineeringPlansSession = 0;
+ public static int subzeroInvertersSession = 0;
+ public static double timeSession = 0;
+ public static int bossesSession = 0;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ boolean rng = false;
+
+ if (message.contains(" Blaze Slayer LVL ")) {
+ demonlords++;
+ demonlordsSession++;
+ if (bosses != -1) {
+ bosses++;
+ }
+ if (bossesSession != -1) {
+ bossesSession++;
+ }
+ ConfigHandler.writeIntConfig("blaze", "demonlords", demonlords);
+ ConfigHandler.writeIntConfig("blaze", "bossRNG", bosses);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Lavatears Rune I)")) {
+ lavatearRunes++;
+ lavatearRunesSession++;
+ ConfigHandler.writeIntConfig("blaze", "lavatearRunes", lavatearRunes);
+ } else if (message.contains("VERY RARE DROP! (Wisp's Ice-Flavored Water I Splash Potion)")) {
+ splashPotions++;
+ splashPotionsSession++;
+ ConfigHandler.writeIntConfig("blaze", "splashPotions", splashPotions);
+ } else if (message.contains("RARE DROP! (Bundle of Magma Arrows)")) {
+ magmaArrows++;
+ magmaArrowsSession++;
+ ConfigHandler.writeIntConfig("blaze", "magmaArrows", magmaArrows);
+ } else if (message.contains("VERY RARE DROP! (Mana Disintegrator)")) {
+ manaDisintegrators++;
+ manaDisintegratorsSession++;
+ ConfigHandler.writeIntConfig("blaze", "manaDisintegrators", manaDisintegrators);
+ } else if (message.contains("VERY RARE DROP! (Scorched Books)")) {
+ scorchedBooks++;
+ scorchedBooksSession++;
+ ConfigHandler.writeIntConfig("blaze", "scorchedBooks", scorchedBooks);
+ } else if (message.contains("VERY RARE DROP! (Kelvin Inverter)")) {
+ kelvinInverters++;
+ kelvinInvertersSession++;
+ ConfigHandler.writeIntConfig("blaze", "kelvinInverters", kelvinInverters);
+ } else if (message.contains("VERY RARE DROP! (Blaze Rod Distillate)")) {
+ blazeRodDistillates++;
+ blazeRodDistillatesSession++;
+ ConfigHandler.writeIntConfig("blaze", "blazeRodDistillates", blazeRodDistillates);
+ } else if (message.contains("VERY RARE DROP! (Glowstone Distillate)")) {
+ glowstoneDistillates++;
+ glowstoneDistillatesSession++;
+ ConfigHandler.writeIntConfig("blaze", "glowstoneDistillates", glowstoneDistillates);
+ } else if (message.contains("VERY RARE DROP! (Magma Cream Distillate)")) {
+ magmaCreamDistillates++;
+ magmaCreamDistillatesSession++;
+ ConfigHandler.writeIntConfig("blaze", "magmaCreamDistillates", magmaCreamDistillates);
+ } else if (message.contains("VERY RARE DROP! (Nether Wart Distillate)")) {
+ netherWartDistillates++;
+ netherWartDistillatesSession++;
+ ConfigHandler.writeIntConfig("blaze", "netherWartDistillates", netherWartDistillates);
+ } else if (message.contains("VERY RARE DROP! (Gabagool Distillate)")) {
+ gabagoolDistillates++;
+ gabagoolDistillatesSession++;
+ ConfigHandler.writeIntConfig("blaze", "gabagoolDistillates", gabagoolDistillates);
+ } else if (message.contains("VERY RARE DROP! (Scorched Power Crystal)")) {
+ scorchedPowerCrystals++;
+ scorchedPowerCrystalsSession++;
+ ConfigHandler.writeIntConfig("blaze", "scorchedPowerCrystals", scorchedPowerCrystals);
+ } else if (message.contains("VERY RARE DROP! (Fire Aspect III)")) {
+ fireAspectBooks++;
+ fireAspectBooksSession++;
+ ConfigHandler.writeIntConfig("blaze", "fireAspectBooks", fireAspectBooks);
+ } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Fiery Burst Rune I)")) {
+ rng = true;
+ fieryBurstRunes++;
+ fieryBurstRunesSession++;
+ ConfigHandler.writeIntConfig("blaze", "fieryBurstRunes", fieryBurstRunes);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "FIERY BURST RUNE!", 5);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Flawed Opal Gemstone)")) {
+ opalGems++;
+ opalGemsSession++;
+ ConfigHandler.writeIntConfig("blaze", "opalGems", opalGems);
+ } else if (message.contains("VERY RARE DROP! (Archfiend Dice)")) {
+ archfiendDice++;
+ archfiendDiceSession++;
+ ConfigHandler.writeIntConfig("blaze", "archfiendDice", archfiendDice);
+ } else if (message.contains("VERY RARE DROP! (Duplex I)")) {
+ duplexBooks++;
+ duplexBooksSession++;
+ ConfigHandler.writeIntConfig("blaze", "duplexBooks", duplexBooks);
+ } else if (message.contains("CRAZY RARE DROP! (High Class Archfiend Dice)")) {
+ rng = true;
+ highClassArchfiendDice++;
+ highClassArchfiendDiceSession++;
+ ConfigHandler.writeIntConfig("blaze", "highClassArchfiendDice", highClassArchfiendDice);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "HIGH CLASS ARCHFIEND DICE!", 5);
+ } else if (message.contains("CRAZY RARE DROP! (Wilson's Engineering Plans)")) {
+ rng = true;
+ engineeringPlans++;
+ engineeringPlansSession++;
+ ConfigHandler.writeIntConfig("blaze", "engineeringPlans", engineeringPlans);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "ENGINEERING PLANS!", 5);
+ } else if (message.contains("CRAZY RARE DROP! (Subzero Inverter)")) {
+ rng = true;
+ subzeroInverters++;
+ subzeroInvertersSession++;
+ ConfigHandler.writeIntConfig("blaze", "subzeroInverters", subzeroInverters);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "SUBZERO INVERTER!", 5);
+ }
+
+ if (rng) {
+ time = System.currentTimeMillis() / 1000;
+ bosses = 0;
+ timeSession = System.currentTimeMillis() / 1000;
+ bossesSession = 0;
+ ConfigHandler.writeDoubleConfig("blaze", "timeRNG", time);
+ ConfigHandler.writeIntConfig("blaze", "bossRNG", 0);
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/CatacombsTracker.java b/src/main/java/me/Danker/features/loot/CatacombsTracker.java
new file mode 100644
index 0000000..772b65c
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/CatacombsTracker.java
@@ -0,0 +1,725 @@
+package me.Danker.features.loot;
+
+import me.Danker.events.ChestSlotClickedEvent;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.handlers.ScoreboardHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.util.List;
+
+public class CatacombsTracker {
+
+ // Catacombs Dungeons
+ public static int recombobulators;
+ public static int fumingPotatoBooks;
+ // F1
+ public static int f1SPlus;
+ public static int bonzoStaffs;
+ public static double f1CoinsSpent;
+ public static double f1TimeSpent;
+ // F2
+ public static int f2SPlus;
+ public static int scarfStudies;
+ public static int adaptiveSwords;
+ public static double f2CoinsSpent;
+ public static double f2TimeSpent;
+ // F3
+ public static int f3SPlus;
+ public static int adaptiveHelms;
+ public static int adaptiveChests;
+ public static int adaptiveLegs;
+ public static int adaptiveBoots;
+ public static double f3CoinsSpent;
+ public static double f3TimeSpent;
+ // F4
+ public static int f4SPlus;
+ public static int spiritWings;
+ public static int spiritBones;
+ public static int spiritBoots;
+ public static int spiritSwords;
+ public static int spiritBows;
+ public static int epicSpiritPets;
+ public static int legSpiritPets;
+ public static double f4CoinsSpent;
+ public static double f4TimeSpent;
+ // F5
+ public static int f5SPlus;
+ public static int warpedStones;
+ public static int shadowAssHelms;
+ public static int shadowAssChests;
+ public static int shadowAssLegs;
+ public static int shadowAssBoots;
+ public static int lastBreaths;
+ public static int lividDaggers;
+ public static int shadowFurys;
+ public static double f5CoinsSpent;
+ public static double f5TimeSpent;
+ // F6
+ public static int f6SPlus;
+ public static int ancientRoses;
+ public static int precursorEyes;
+ public static int giantsSwords;
+ public static int necroLordHelms;
+ public static int necroLordChests;
+ public static int necroLordLegs;
+ public static int necroLordBoots;
+ public static int necroSwords;
+ public static int f6Rerolls;
+ public static double f6CoinsSpent;
+ public static double f6TimeSpent;
+ // F7
+ public static int f7SPlus;
+ public static int witherBloods;
+ public static int witherCloaks;
+ public static int implosions;
+ public static int witherShields;
+ public static int shadowWarps;
+ public static int necronsHandles;
+ public static int autoRecombs;
+ public static int witherHelms;
+ public static int witherChests;
+ public static int witherLegs;
+ public static int witherBoots;
+ public static int f7Rerolls;
+ public static double f7CoinsSpent;
+ public static double f7TimeSpent;
+ // MM
+ public static int m1S;
+ public static int m1SPlus;
+ public static int m2S;
+ public static int m2SPlus;
+ public static int m3S;
+ public static int m3SPlus;
+ public static int m4S;
+ public static int m4SPlus;
+ public static int m5S;
+ public static int m5SPlus;
+ public static int m6S;
+ public static int m6SPlus;
+ public static int m7S;
+ public static int m7SPlus;
+ public static int firstStars;
+ public static int secondStars;
+ public static int thirdStars;
+ public static int fourthStars;
+ public static int fifthStars;
+ public static int necronDyes;
+ public static int darkClaymores;
+ public static int masterRerolls;
+ public static double masterCoinsSpent;
+ public static double masterTimeSpent;
+
+ // Catacombs Dungeons
+ public static int recombobulatorsSession = 0;
+ public static int fumingPotatoBooksSession = 0;
+ // F1
+ public static int f1SPlusSession = 0;
+ public static int bonzoStaffsSession = 0;
+ public static double f1CoinsSpentSession = 0;
+ public static double f1TimeSpentSession = 0;
+ // F2
+ public static int f2SPlusSession = 0;
+ public static int scarfStudiesSession = 0;
+ public static int adaptiveSwordsSession = 0;
+ public static double f2CoinsSpentSession = 0;
+ public static double f2TimeSpentSession = 0;
+ // F3
+ public static int f3SPlusSession = 0;
+ public static int adaptiveHelmsSession = 0;
+ public static int adaptiveChestsSession = 0;
+ public static int adaptiveLegsSession = 0;
+ public static int adaptiveBootsSession = 0;
+ public static double f3CoinsSpentSession = 0;
+ public static double f3TimeSpentSession = 0;
+ // F4
+ public static int f4SPlusSession = 0;
+ public static int spiritWingsSession = 0;
+ public static int spiritBonesSession = 0;
+ public static int spiritBootsSession = 0;
+ public static int spiritSwordsSession = 0;
+ public static int spiritBowsSession = 0;
+ public static int epicSpiritPetsSession = 0;
+ public static int legSpiritPetsSession = 0;
+ public static double f4CoinsSpentSession = 0;
+ public static double f4TimeSpentSession = 0;
+ // F5
+ public static int f5SPlusSession = 0;
+ public static int warpedStonesSession = 0;
+ public static int shadowAssHelmsSession = 0;
+ public static int shadowAssChestsSession = 0;
+ public static int shadowAssLegsSession = 0;
+ public static int shadowAssBootsSession = 0;
+ public static int lastBreathsSession = 0;
+ public static int lividDaggersSession = 0;
+ public static int shadowFurysSession = 0;
+ public static double f5CoinsSpentSession = 0;
+ public static double f5TimeSpentSession = 0;
+ // F6
+ public static int f6SPlusSession = 0;
+ public static int ancientRosesSession = 0;
+ public static int precursorEyesSession = 0;
+ public static int giantsSwordsSession = 0;
+ public static int necroLordHelmsSession = 0;
+ public static int necroLordChestsSession = 0;
+ public static int necroLordLegsSession = 0;
+ public static int necroLordBootsSession = 0;
+ public static int necroSwordsSession = 0;
+ public static int f6RerollsSession = 0;
+ public static double f6CoinsSpentSession = 0;
+ public static double f6TimeSpentSession = 0;
+ // F7
+ public static int f7SPlusSession = 0;
+ public static int witherBloodsSession = 0;
+ public static int witherCloaksSession = 0;
+ public static int implosionsSession = 0;
+ public static int witherShieldsSession = 0;
+ public static int shadowWarpsSession = 0;
+ public static int necronsHandlesSession = 0;
+ public static int autoRecombsSession = 0;
+ public static int witherHelmsSession = 0;
+ public static int witherChestsSession = 0;
+ public static int witherLegsSession = 0;
+ public static int witherBootsSession = 0;
+ public static int f7RerollsSession = 0;
+ public static double f7CoinsSpentSession = 0;
+ public static double f7TimeSpentSession = 0;
+ // MM
+ public static int m1SSession = 0;
+ public static int m1SPlusSession = 0;
+ public static int m2SSession = 0;
+ public static int m2SPlusSession = 0;
+ public static int m3SSession = 0;
+ public static int m3SPlusSession = 0;
+ public static int m4SSession = 0;
+ public static int m4SPlusSession = 0;
+ public static int m5SSession = 0;
+ public static int m5SPlusSession = 0;
+ public static int m6SSession = 0;
+ public static int m6SPlusSession = 0;
+ public static int m7SSession = 0;
+ public static int m7SPlusSession = 0;
+ public static int firstStarsSession = 0;
+ public static int secondStarsSession = 0;
+ public static int thirdStarsSession = 0;
+ public static int fourthStarsSession = 0;
+ public static int fifthStarsSession = 0;
+ public static int necronDyesSession = 0;
+ public static int darkClaymoresSession = 0;
+ public static int masterRerollsSession = 0;
+ public static double masterCoinsSpentSession = 0;
+ public static double masterTimeSpentSession = 0;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inDungeons) return;
+ if (event.type == 2) return;
+
+ if (message.contains(" Team Score: ")) {
+ if (message.contains("(S+)")) {
+ switch (Utils.currentFloor) {
+ case F1:
+ f1SPlus++;
+ f1SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "floorOneSPlus", f1SPlus);
+ break;
+ case F2:
+ f2SPlus++;
+ f2SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "floorTwoSPlus", f2SPlus);
+ break;
+ case F3:
+ f3SPlus++;
+ f3SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "floorThreeSPlus", f3SPlus);
+ break;
+ case F4:
+ f4SPlus++;
+ f4SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "floorFourSPlus", f4SPlus);
+ break;
+ case F5:
+ f5SPlus++;
+ f5SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "floorFiveSPlus", f5SPlus);
+ break;
+ case F6:
+ f6SPlus++;
+ f6SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "floorSixSPlus", f6SPlus);
+ break;
+ case F7:
+ f7SPlus++;
+ f7SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "floorSevenSPlus", f7SPlus);
+ break;
+ case M1:
+ m1S++;
+ m1SPlus++;
+ m1SSession++;
+ m1SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterOneS", m1S);
+ ConfigHandler.writeIntConfig("catacombs", "masterOneSPlus", m1SPlus);
+ break;
+ case M2:
+ m2S++;
+ m2SPlus++;
+ m2SSession++;
+ m2SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterTwoS", m2S);
+ ConfigHandler.writeIntConfig("catacombs", "masterTwoSPlus", m2SPlus);
+ break;
+ case M3:
+ m3S++;
+ m3SPlus++;
+ m3SSession++;
+ m3SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterThreeS", m3S);
+ ConfigHandler.writeIntConfig("catacombs", "masterThreeSPlus", m3SPlus);
+ break;
+ case M4:
+ m4S++;
+ m4SPlus++;
+ m4SSession++;
+ m4SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterFourS", m4S);
+ ConfigHandler.writeIntConfig("catacombs", "masterFourSPlus", m4SPlus);
+ break;
+ case M5:
+ m5S++;
+ m5SPlus++;
+ m5SSession++;
+ m5SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterFiveS", m5S);
+ ConfigHandler.writeIntConfig("catacombs", "masterFiveSPlus", m5SPlus);
+ break;
+ case M6:
+ m6S++;
+ m6SPlus++;
+ m6SSession++;
+ m6SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterSixS", m6S);
+ ConfigHandler.writeIntConfig("catacombs", "masterSixSPlus", m6SPlus);
+ break;
+ case M7:
+ m7S++;
+ m7SPlus++;
+ m7SSession++;
+ m7SPlusSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterSevenS", m7S);
+ ConfigHandler.writeIntConfig("catacombs", "masterSevenSPlus", m7SPlus);
+ break;
+ }
+ } else if (message.contains("(S)")) {
+ switch (Utils.currentFloor) {
+ case M1:
+ m1S++;
+ m1SSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterOneS", m1S);
+ break;
+ case M2:
+ m2S++;
+ m2SSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterTwoS", m2S);
+ break;
+ case M3:
+ m3S++;
+ m3SSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterThreeS", m3S);
+ break;
+ case M4:
+ m4S++;
+ m4SSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterFourS", m4S);
+ break;
+ case M5:
+ m5S++;
+ m5SSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterFiveS", m5S);
+ break;
+ case M6:
+ m6S++;
+ m6SSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterSixS", m6S);
+ break;
+ case M7:
+ m7S++;
+ m7SSession++;
+ ConfigHandler.writeIntConfig("catacombs", "masterSevenS", m7S);
+ break;
+ }
+ }
+ }
+
+ if (message.contains(":")) return;
+
+ if (message.contains(" ")) {
+ if (message.contains("Recombobulator 3000")) {
+ recombobulators++;
+ recombobulatorsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "recombobulator", recombobulators);
+ } else if (message.contains("Fuming Potato Book")) {
+ fumingPotatoBooks++;
+ fumingPotatoBooksSession++;
+ ConfigHandler.writeIntConfig("catacombs", "fumingBooks", fumingPotatoBooks);
+ } else if (message.contains("Bonzo's Staff")) { // F1
+ bonzoStaffs++;
+ bonzoStaffsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "bonzoStaff", bonzoStaffs);
+ } else if (message.contains("Scarf's Studies")) { // F2
+ scarfStudies++;
+ scarfStudiesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "scarfStudies", scarfStudies);
+ } else if (message.contains("Adaptive Helmet")) { // F3
+ adaptiveHelms++;
+ adaptiveHelmsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveHelm", adaptiveHelms);
+ } else if (message.contains("Adaptive Chestplate")) {
+ adaptiveChests++;
+ adaptiveChestsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveChest", adaptiveChests);
+ } else if (message.contains("Adaptive Leggings")) {
+ adaptiveLegs++;
+ adaptiveLegsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveLegging", adaptiveLegs);
+ } else if (message.contains("Adaptive Boots")) {
+ adaptiveBoots++;
+ adaptiveBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveBoot", adaptiveBoots);
+ } else if (message.contains("Adaptive Blade")) {
+ adaptiveSwords++;
+ adaptiveSwordsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "adaptiveSword", adaptiveSwords);
+ } else if (message.contains("Spirit Wing")) { // F4
+ spiritWings++;
+ spiritWingsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritWing", spiritWings);
+ } else if (message.contains("Spirit Bone")) {
+ spiritBones++;
+ spiritBonesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritBone", spiritBones);
+ } else if (message.contains("Spirit Boots")) {
+ spiritBoots++;
+ spiritBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritBoot", spiritBoots);
+ } else if (message.contains("[Lvl 1] Spirit")) {
+ String formattedMessage = event.message.getFormattedText();
+ // Unicode colour code messes up here, just gonna remove the symbols
+ if (formattedMessage.contains("5Spirit")) {
+ epicSpiritPets++;
+ epicSpiritPetsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritPetEpic", epicSpiritPets);
+ } else if (formattedMessage.contains("6Spirit")) {
+ legSpiritPets++;
+ legSpiritPetsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritPetLeg", legSpiritPets);
+ }
+ } else if (message.contains("Spirit Sword")) {
+ spiritSwords++;
+ spiritSwordsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritSword", spiritSwords);
+ } else if (message.contains("Spirit Bow")) {
+ spiritBows++;
+ spiritBowsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "spiritBow", spiritBows);
+ } else if (message.contains("Warped Stone")) { // F5
+ warpedStones++;
+ warpedStonesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "warpedStone", warpedStones);
+ } else if (message.contains("Shadow Assassin Helmet")) {
+ shadowAssHelms++;
+ shadowAssHelmsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowAssassinHelm", shadowAssHelms);
+ } else if (message.contains("Shadow Assassin Chestplate")) {
+ shadowAssChests++;
+ shadowAssChestsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowAssassinChest", shadowAssChests);
+ } else if (message.contains("Shadow Assassin Leggings")) {
+ shadowAssLegs++;
+ shadowAssLegsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowAssassinLegging", shadowAssLegs);
+ } else if (message.contains("Shadow Assassin Boots")) {
+ shadowAssBoots++;
+ shadowAssBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowAssassinBoot", shadowAssBoots);
+ } else if (message.contains("Livid Dagger")) {
+ lividDaggers++;
+ lividDaggersSession++;
+ ConfigHandler.writeIntConfig("catacombs", "lividDagger", lividDaggers);
+ } else if (message.contains("Shadow Fury")) {
+ shadowFurys++;
+ shadowFurysSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowFury", shadowFurys);
+ } else if (message.contains("Ancient Rose")) { // F6
+ ancientRoses++;
+ ancientRosesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "ancientRose", ancientRoses);
+ } else if (message.contains("Precursor Eye")) {
+ precursorEyes++;
+ precursorEyesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "precursorEye", precursorEyes);
+ } else if (message.contains("Giant's Sword")) {
+ giantsSwords++;
+ giantsSwordsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "giantsSword", giantsSwords);
+ } else if (message.contains("Necromancer Lord Helmet")) {
+ necroLordHelms++;
+ necroLordHelmsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroLordHelm", necroLordHelms);
+ } else if (message.contains("Necromancer Lord Chestplate")) {
+ necroLordChests++;
+ necroLordChestsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroLordChest", necroLordChests);
+ } else if (message.contains("Necromancer Lord Leggings")) {
+ necroLordLegs++;
+ necroLordLegsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroLordLegging", necroLordLegs);
+ } else if (message.contains("Necromancer Lord Boots")) {
+ necroLordBoots++;
+ necroLordBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroLordBoot", necroLordBoots);
+ } else if (message.contains("Necromancer Sword")) {
+ necroSwords++;
+ necroSwordsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necroSword", necroSwords);
+ } else if (message.contains("Wither Blood")) { // F7
+ witherBloods++;
+ witherBloodsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherBlood", witherBloods);
+ } else if (message.contains("Wither Cloak")) {
+ witherCloaks++;
+ witherCloaksSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherCloak", witherCloaks);
+ } else if (message.contains("Implosion")) {
+ implosions++;
+ implosionsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "implosion", implosions);
+ } else if (message.contains("Wither Shield")) {
+ witherShields++;
+ witherShieldsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherShield", witherShields);
+ } else if (message.contains("Shadow Warp")) {
+ shadowWarps++;
+ shadowWarpsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "shadowWarp", shadowWarps);
+ } else if (message.contains("Necron's Handle")) {
+ necronsHandles++;
+ necronsHandlesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necronsHandle", necronsHandles);
+ } else if (message.contains("Auto Recombobulator")) {
+ autoRecombs++;
+ autoRecombsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "autoRecomb", autoRecombs);
+ } else if (message.contains("Wither Helmet")) {
+ witherHelms++;
+ witherHelmsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherHelm", witherHelms);
+ } else if (message.contains("Wither Chestplate")) {
+ witherChests++;
+ witherChestsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherChest", witherChests);
+ } else if (message.contains("Wither Leggings")) {
+ witherLegs++;
+ witherLegsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherLegging", witherLegs);
+ } else if (message.contains("Wither Boots")) {
+ witherBoots++;
+ witherBootsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "witherBoot", witherBoots);
+ } else if (message.contains("First Master Star")) {
+ firstStars++;
+ firstStarsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "firstStar", firstStars);
+ } else if (message.contains("Second Master Star")) {
+ secondStars++;
+ secondStarsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "secondStar", secondStars);
+ } else if (message.contains("Third Master Star")) {
+ thirdStars++;
+ thirdStarsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "thirdStar", thirdStars);
+ } else if (message.contains("Fourth Master Star")) {
+ fourthStars++;
+ fourthStarsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "fourthStar", fourthStars);
+ } else if (message.contains("Fifth Master Star")) {
+ fifthStars++;
+ fifthStarsSession++;
+ ConfigHandler.writeIntConfig("catacombs", "fifthStar", fifthStars);
+ } else if (message.contains("Dark Claymore")) {
+ darkClaymores++;
+ darkClaymoresSession++;
+ ConfigHandler.writeIntConfig("catacombs", "darkClaymore", darkClaymores);
+ } else if (message.contains("Necron Dye")) {
+ necronDyes++;
+ necronDyesSession++;
+ ConfigHandler.writeIntConfig("catacombs", "necronDye", necronDyes);
+ }
+ }
+
+ if (message.contains("EXTRA STATS ")) {
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+ if (sCleaned.contains("Time Elapsed:")) {
+ // Get floor time
+ String time = sCleaned.substring(sCleaned.indexOf(":") + 2);
+ time = time.replaceAll("\\s", "");
+ int minutes = Integer.parseInt(time.substring(0, time.indexOf("m")));
+ int seconds = Integer.parseInt(time.substring(time.indexOf("m") + 1, time.indexOf("s")));
+ int timeToAdd = (minutes * 60) + seconds;
+
+ // Add time to floor
+ switch (Utils.currentFloor) {
+ case F1:
+ f1TimeSpent = Math.floor(f1TimeSpent + timeToAdd);
+ f1TimeSpentSession = Math.floor(f1TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorOneTime", f1TimeSpent);
+ break;
+ case F2:
+ f2TimeSpent = Math.floor(f2TimeSpent + timeToAdd);
+ f2TimeSpentSession = Math.floor(f2TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorTwoTime", f2TimeSpent);
+ break;
+ case F3:
+ f3TimeSpent = Math.floor(f3TimeSpent + timeToAdd);
+ f3TimeSpentSession = Math.floor(f3TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorThreeTime", f3TimeSpent);
+ break;
+ case F4:
+ f4TimeSpent = Math.floor(f4TimeSpent + timeToAdd);
+ f4TimeSpentSession = Math.floor(f4TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFourTime", f4TimeSpent);
+ break;
+ case F5:
+ f5TimeSpent = Math.floor(f5TimeSpent + timeToAdd);
+ f5TimeSpentSession = Math.floor(f5TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFiveTime", f5TimeSpent);
+ break;
+ case F6:
+ f6TimeSpent = Math.floor(f6TimeSpent + timeToAdd);
+ f6TimeSpentSession = Math.floor(f6TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSixTime", f6TimeSpent);
+ break;
+ case F7:
+ f7TimeSpent = Math.floor(f7TimeSpent + timeToAdd);
+ f7TimeSpentSession = Math.floor(f7TimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSevenTime", f7TimeSpent);
+ break;
+ case M1:
+ case M2:
+ case M3:
+ case M4:
+ case M5:
+ case M6:
+ case M7:
+ masterTimeSpent = Math.floor(masterTimeSpent + timeToAdd);
+ masterTimeSpentSession = Math.floor(masterTimeSpentSession + timeToAdd);
+ ConfigHandler.writeDoubleConfig("catacombs", "masterTime", masterTimeSpent);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onSlotClick(ChestSlotClickedEvent event) {
+ if (!Utils.inDungeons) return;
+
+ ItemStack item = event.item;
+
+ if (event.inventoryName.endsWith(" Chest") && item != null) {
+ if (item.getDisplayName().contains("Open Reward Chest")) {
+ List<String> tooltip = item.getTooltip(Minecraft.getMinecraft().thePlayer, false);
+ for (String lineUnclean : tooltip) {
+ String line = StringUtils.stripControlCodes(lineUnclean);
+ if (line.contains(" Coins") && !line.contains("NOTE:")) {
+ int coinsSpent = Integer.parseInt(line.replaceAll("[^\\d]", ""));
+
+ switch (Utils.currentFloor) {
+ case F1:
+ f1CoinsSpent += coinsSpent;
+ f1CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorOneCoins", f1CoinsSpent);
+ break;
+ case F2:
+ f2CoinsSpent += coinsSpent;
+ f2CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorTwoCoins", f2CoinsSpent);
+ break;
+ case F3:
+ f3CoinsSpent += coinsSpent;
+ f3CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorThreeCoins", f3CoinsSpent);
+ break;
+ case F4:
+ f4CoinsSpent += coinsSpent;
+ f4CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFourCoins", f4CoinsSpent);
+ break;
+ case F5:
+ f5CoinsSpent += coinsSpent;
+ f5CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorFiveCoins", f5CoinsSpent);
+ break;
+ case F6:
+ f6CoinsSpent += coinsSpent;
+ f6CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSixCoins", f6CoinsSpent);
+ break;
+ case F7:
+ f7CoinsSpent += coinsSpent;
+ f7CoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSevenCoins", f7CoinsSpent);
+ break;
+ case M1:
+ case M2:
+ case M3:
+ case M4:
+ case M5:
+ case M6:
+ case M7:
+ masterCoinsSpent += coinsSpent;
+ masterCoinsSpentSession += coinsSpent;
+ ConfigHandler.writeDoubleConfig("catacombs", "masterCoins", masterCoinsSpent);
+ break;
+ }
+ break;
+ }
+ }
+ } else if (item.getDisplayName().contains("Reroll Chest")) {
+ switch (Utils.currentFloor) {
+ case F6:
+ f6Rerolls++;
+ f6RerollsSession++;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSixRerolls", f6Rerolls);
+ break;
+ case F7:
+ f7Rerolls++;
+ f7RerollsSession++;
+ ConfigHandler.writeDoubleConfig("catacombs", "floorSevenRerolls", f7Rerolls);
+ break;
+ case M1:
+ case M2:
+ case M3:
+ case M4:
+ case M5:
+ case M6:
+ case M7:
+ masterRerolls++;
+ masterRerollsSession++;
+ ConfigHandler.writeDoubleConfig("catacombs", "masterRerolls", masterRerolls);
+ break;
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/EndermanTracker.java b/src/main/java/me/Danker/features/loot/EndermanTracker.java
new file mode 100644
index 0000000..38b22f9
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/EndermanTracker.java
@@ -0,0 +1,178 @@
+package me.Danker.features.loot;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class EndermanTracker {
+
+ public static int endermanVoidglooms;
+ public static int endermanNullSpheres;
+ public static int endermanTAP;
+ public static int endermanTAPDrops;
+ public static int endermanEndersnakes;
+ public static int endermanSummoningEyes;
+ public static int endermanManaBooks;
+ public static int endermanTuners;
+ public static int endermanAtoms;
+ public static int endermanEspressoMachines;
+ public static int endermanSmartyBooks;
+ public static int endermanEndRunes;
+ public static int endermanChalices;
+ public static int endermanDice;
+ public static int endermanArtifacts;
+ public static int endermanSkins;
+ public static int endermanMergers;
+ public static int endermanCores;
+ public static int endermanEnchantRunes;
+ public static int endermanEnderBooks;
+ public static double endermanTime;
+ public static int endermanBosses;
+
+ public static int endermanVoidgloomsSession = 0;
+ public static int endermanNullSpheresSession = 0;
+ public static int endermanTAPSession = 0;
+ public static int endermanTAPDropsSession = 0;
+ public static int endermanEndersnakesSession = 0;
+ public static int endermanSummoningEyesSession = 0;
+ public static int endermanManaBooksSession = 0;
+ public static int endermanTunersSession = 0;
+ public static int endermanAtomsSession = 0;
+ public static int endermanEspressoMachinesSession = 0;
+ public static int endermanSmartyBooksSession = 0;
+ public static int endermanEndRunesSession = 0;
+ public static int endermanChalicesSession = 0;
+ public static int endermanDiceSession = 0;
+ public static int endermanArtifactsSession = 0;
+ public static int endermanSkinsSession = 0;
+ public static int endermanMergersSession = 0;
+ public static int endermanCoresSession = 0;
+ public static int endermanEnchantRunesSession = 0;
+ public static int endermanEnderBooksSession = 0;
+ public static double endermanTimeSession = -1;
+ public static int endermanBossesSession = -1;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ boolean rng = false;
+
+ if (message.contains(" Enderman Slayer LVL ")) {
+ endermanVoidglooms++;
+ endermanVoidgloomsSession++;
+ if (endermanBosses != -1) {
+ endermanBosses++;
+ }
+ if (endermanBossesSession != -1) {
+ endermanBossesSession++;
+ }
+ ConfigHandler.writeIntConfig("enderman", "voidglooms", endermanVoidglooms);
+ ConfigHandler.writeIntConfig("enderman", "bossRNG", endermanBosses);
+ } else if (message.contains("RARE DROP! (") && message.contains("Twilight Arrow Poison)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ endermanTAP += amount;
+ endermanTAPSession += amount;
+ endermanTAPDrops++;
+ endermanTAPDropsSession++;
+ ConfigHandler.writeIntConfig("enderman", "tap", endermanTAP);
+ ConfigHandler.writeIntConfig("enderman", "tapDrops", endermanTAPDrops);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Endersnake Rune I)")) {
+ endermanEndersnakes++;
+ endermanEndersnakesSession++;
+ ConfigHandler.writeIntConfig("enderman", "endersnakes", endermanEndersnakes);
+ } else if (message.contains("VERY RARE DROP! (Summoning Eye)")) {
+ endermanSummoningEyes++;
+ endermanSummoningEyesSession++;
+ ConfigHandler.writeIntConfig("enderman", "summoningEyes", endermanSummoningEyes);
+ } else if (message.contains("VERY RARE DROP! (Mana Steal I)")) {
+ endermanManaBooks++;
+ endermanManaBooksSession++;
+ ConfigHandler.writeIntConfig("enderman", "manaBooks", endermanManaBooks);
+ } else if (message.contains("VERY RARE DROP! (Transmission Tuner)")) {
+ endermanTuners++;
+ endermanTunersSession++;
+ ConfigHandler.writeIntConfig("enderman", "tuners", endermanTuners);
+ } else if (message.contains("VERY RARE DROP! (Null Atom)")) {
+ endermanAtoms++;
+ endermanAtomsSession++;
+ ConfigHandler.writeIntConfig("enderman", "atoms", endermanAtoms);
+ } else if (message.contains("CRAZY RARE DROP! (Pocket Espresso Machine)")) {
+ rng = true;
+ endermanEspressoMachines++;
+ endermanEspressoMachinesSession++;
+ ConfigHandler.writeIntConfig("enderman", "espressoMachines", endermanEspressoMachines);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.AQUA + "POCKET ESPRESSO MACHINE!", 3);
+ } else if (message.contains("VERY RARE DROP! (Smarty Pants I)")) {
+ endermanSmartyBooks++;
+ endermanSmartyBooksSession++;
+ ConfigHandler.writeIntConfig("enderman", "smartyBooks", endermanSmartyBooks);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" End Rune I)")) {
+ endermanEndRunes++;
+ endermanEndRunesSession++;
+ ConfigHandler.writeIntConfig("enderman", "endRunes", endermanEndRunes);
+ } else if (message.contains("CRAZY RARE DROP! (Handy Blood Chalice)")) {
+ rng = true;
+ endermanChalices++;
+ endermanChalicesSession++;
+ ConfigHandler.writeIntConfig("enderman", "chalices", endermanChalices);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "HANDY BLOOD CHALICE!", 3);
+ } else if (message.contains("VERY RARE DROP! (Sinful Dice)")) {
+ endermanDice++;
+ endermanDiceSession++;
+ ConfigHandler.writeIntConfig("enderman", "dice", endermanDice);
+ } else if (message.contains("CRAZY RARE DROP! (Exceedingly Rare Ender Artifact Upgrader)")) {
+ rng = true;
+ endermanArtifacts++;
+ endermanArtifactsSession++;
+ ConfigHandler.writeIntConfig("enderman", "artifacts", endermanArtifacts);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "ENDER ARTIFACT UPGRADER!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (Void Conqueror Enderman Skin)")) {
+ rng = true;
+ endermanSkins++;
+ endermanSkinsSession++;
+ ConfigHandler.writeIntConfig("enderman", "skins", endermanSkins);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "ENDERMAN SKIN!", 3);
+ } else if (message.contains("VERY RARE DROP! (Etherwarp Merger)")) {
+ endermanMergers++;
+ endermanMergersSession++;
+ ConfigHandler.writeIntConfig("enderman", "mergers", endermanMergers);
+ } else if (message.contains("CRAZY RARE DROP! (Judgement Core)")) {
+ rng = true;
+ endermanCores++;
+ endermanCoresSession++;
+ ConfigHandler.writeIntConfig("enderman", "cores", endermanCores);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "JUDGEMENT CORE!", 5);
+ } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Enchant Rune I)")) {
+ rng = true;
+ endermanEnchantRunes++;
+ endermanEnchantRunesSession++;
+ ConfigHandler.writeIntConfig("enderman", "enchantRunes", endermanEnchantRunes);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GRAY + "ENCHANT RUNE!", 3);
+ } else if (message.contains("INSANE DROP! (Ender Slayer VII)") || message.contains("CRAZY RARE DROP! (Ender Slayer VII)")) {
+ rng = true;
+ endermanEnderBooks++;
+ endermanEnderBooksSession++;
+ ConfigHandler.writeIntConfig("enderman", "enderBooks", endermanEnderBooks);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "ENDER SLAYER VII!", 3);
+ }
+
+ if (rng) {
+ endermanTime = System.currentTimeMillis() / 1000;
+ endermanBosses = 0;
+ endermanTimeSession = System.currentTimeMillis() / 1000;
+ endermanBossesSession = 0;
+ ConfigHandler.writeDoubleConfig("enderman", "timeRNG", endermanTime);
+ ConfigHandler.writeIntConfig("enderman", "bossRNG", 0);
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/FishingTracker.java b/src/main/java/me/Danker/features/loot/FishingTracker.java
new file mode 100644
index 0000000..95a9040
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/FishingTracker.java
@@ -0,0 +1,413 @@
+package me.Danker.features.loot;
+
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class FishingTracker {
+
+ // Fishing
+ public static int seaCreatures;
+ public static int goodCatches;
+ public static int greatCatches;
+ public static int squids;
+ public static int seaWalkers;
+ public static int nightSquids;
+ public static int seaGuardians;
+ public static int seaWitches;
+ public static int seaArchers;
+ public static int monsterOfTheDeeps;
+ public static int catfishes;
+ public static int carrotKings;
+ public static int seaLeeches;
+ public static int guardianDefenders;
+ public static int deepSeaProtectors;
+ public static int hydras;
+ public static int seaEmperors;
+ public static double empTime;
+ public static int empSCs;
+ public static int fishingMilestone;
+ // Fishing Winter
+ public static int frozenSteves;
+ public static int frostyTheSnowmans;
+ public static int grinches;
+ public static int yetis;
+ public static double yetiTime;
+ public static int yetiSCs;
+ // Fishing Festival
+ public static int nurseSharks;
+ public static int blueSharks;
+ public static int tigerSharks;
+ public static int greatWhiteSharks;
+ // Spooky Fishing
+ public static int scarecrows;
+ public static int nightmares;
+ public static int werewolfs;
+ public static int phantomFishers;
+ public static int grimReapers;
+ // CH Fishing
+ public static int waterWorms;
+ public static int poisonedWaterWorms;
+ public static int flamingWorms;
+ public static int lavaBlazes;
+ public static int lavaPigmen;
+ public static int zombieMiners;
+ // Lava fishing
+ public static int magmaSlugs;
+ public static int moogmas;
+ public static int lavaLeeches;
+ public static int pyroclasticWorms;
+ public static int lavaFlames;
+ public static int fireEels;
+ public static int tauruses;
+ public static int thunders;
+ public static int lordJawbuses;
+ public static double jawbusTime;
+ public static int jawbusSCs;
+
+ // Fishing
+ public static int seaCreaturesSession = 0;
+ public static int goodCatchesSession = 0;
+ public static int greatCatchesSession = 0;
+ public static int squidsSession = 0;
+ public static int seaWalkersSession = 0;
+ public static int nightSquidsSession = 0;
+ public static int seaGuardiansSession = 0;
+ public static int seaWitchesSession = 0;
+ public static int seaArchersSession = 0;
+ public static int monsterOfTheDeepsSession = 0;
+ public static int catfishesSession = 0;
+ public static int carrotKingsSession = 0;
+ public static int seaLeechesSession = 0;
+ public static int guardianDefendersSession = 0;
+ public static int deepSeaProtectorsSession = 0;
+ public static int hydrasSession = 0;
+ public static int seaEmperorsSession = 0;
+ public static double empTimeSession = -1;
+ public static int empSCsSession = -1;
+ public static int fishingMilestoneSession = 0;
+ // Fishing Winter
+ public static int frozenStevesSession = 0;
+ public static int frostyTheSnowmansSession = 0;
+ public static int grinchesSession = 0;
+ public static int yetisSession = 0;
+ public static double yetiTimeSession = -1;
+ public static int yetiSCsSession = -1;
+ // Fishing Festival
+ public static int nurseSharksSession = 0;
+ public static int blueSharksSession = 0;
+ public static int tigerSharksSession = 0;
+ public static int greatWhiteSharksSession = 0;
+ // Spooky Fishing
+ public static int scarecrowsSession = 0;
+ public static int nightmaresSession = 0;
+ public static int werewolfsSession = 0;
+ public static int phantomFishersSession = 0;
+ public static int grimReapersSession = 0;
+ // CH Fishing
+ public static int waterWormsSession = 0;
+ public static int poisonedWaterWormsSession = 0;
+ public static int flamingWormsSession = 0;
+ public static int lavaBlazesSession = 0;
+ public static int lavaPigmenSession = 0;
+ public static int zombieMinersSession = 0;
+ // Lava fishing
+ public static int magmaSlugsSession = 0;
+ public static int moogmasSession = 0;
+ public static int lavaLeechesSession = 0;
+ public static int pyroclasticWormsSession = 0;
+ public static int lavaFlamesSession = 0;
+ public static int fireEelsSession = 0;
+ public static int taurusesSession = 0;
+ public static int thundersSession = 0;
+ public static int lordJawbusesSession = 0;
+ public static double jawbusTimeSession = 0;
+ public static int jawbusSCsSession = 0;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ if (message.contains("GOOD CATCH!")) {
+ goodCatches++;
+ goodCatchesSession++;
+ ConfigHandler.writeIntConfig("fishing", "goodCatch", goodCatches);
+ } else if (message.contains("GREAT CATCH!")) {
+ greatCatches++;
+ greatCatchesSession++;
+ ConfigHandler.writeIntConfig("fishing", "greatCatch", greatCatches);
+ } else if (message.contains("A Squid appeared")) {
+ squids++;
+ squidsSession++;
+ ConfigHandler.writeIntConfig("fishing", "squid", squids);
+ increaseSeaCreatures();
+ } else if (message.contains("You caught a Sea Walker")) {
+ seaWalkers++;
+ seaWalkersSession++;
+ ConfigHandler.writeIntConfig("fishing", "seaWalker", seaWalkers);
+ increaseSeaCreatures();
+ } else if (message.contains("Pitch darkness reveals a Night Squid")) {
+ nightSquids++;
+ nightSquidsSession++;
+ ConfigHandler.writeIntConfig("fishing", "nightSquid", nightSquids);
+ increaseSeaCreatures();
+ } else if (message.contains("You stumbled upon a Sea Guardian")) {
+ seaGuardians++;
+ seaGuardiansSession++;
+ ConfigHandler.writeIntConfig("fishing", "seaGuardian", seaGuardians);
+ increaseSeaCreatures();
+ } else if (message.contains("It looks like you've disrupted the Sea Witch's brewing session. Watch out, she's furious")) {
+ seaWitches++;
+ seaWitchesSession++;
+ ConfigHandler.writeIntConfig("fishing", "seaWitch", seaWitches);
+ increaseSeaCreatures();
+ } else if (message.contains("You reeled in a Sea Archer")) {
+ seaArchers++;
+ seaArchersSession++;
+ ConfigHandler.writeIntConfig("fishing", "seaArcher", seaArchers);
+ increaseSeaCreatures();
+ } else if (message.contains("The Monster of the Deep has emerged")) {
+ monsterOfTheDeeps++;
+ monsterOfTheDeepsSession++;
+ ConfigHandler.writeIntConfig("fishing", "monsterOfDeep", monsterOfTheDeeps);
+ increaseSeaCreatures();
+ } else if (message.contains("Huh? A Catfish")) {
+ catfishes++;
+ catfishesSession++;
+ ConfigHandler.writeIntConfig("fishing", "catfish", catfishes);
+ increaseSeaCreatures();
+ } else if (message.contains("Is this even a fish? It's the Carrot King")) {
+ carrotKings++;
+ carrotKingsSession++;
+ ConfigHandler.writeIntConfig("fishing", "carrotKing", carrotKings);
+ increaseSeaCreatures();
+ } else if (message.contains("Gross! A Sea Leech")) {
+ seaLeeches++;
+ seaLeechesSession++;
+ ConfigHandler.writeIntConfig("fishing", "seaLeech", seaLeeches);
+ increaseSeaCreatures();
+ } else if (message.contains("You've discovered a Guardian Defender of the sea")) {
+ guardianDefenders++;
+ guardianDefendersSession++;
+ ConfigHandler.writeIntConfig("fishing", "guardianDefender", guardianDefenders);
+ increaseSeaCreatures();
+ } else if (message.contains("You have awoken the Deep Sea Protector, prepare for a battle")) {
+ deepSeaProtectors++;
+ deepSeaProtectorsSession++;
+ ConfigHandler.writeIntConfig("fishing", "deepSeaProtector", deepSeaProtectors);
+ increaseSeaCreatures();
+ } else if (message.contains("The Water Hydra has come to test your strength")) {
+ hydras++;
+ hydrasSession++;
+ ConfigHandler.writeIntConfig("fishing", "hydra", hydras);
+ increaseSeaCreatures();
+ } else if (message.contains("The Sea Emperor arises from the depths")) {
+ increaseSeaCreatures();
+
+ seaEmperors++;
+ empTime = System.currentTimeMillis() / 1000;
+ empSCs = 0;
+ seaEmperorsSession++;
+ empTimeSession = System.currentTimeMillis() / 1000;
+ empSCsSession = 0;
+ ConfigHandler.writeIntConfig("fishing", "seaEmperor", seaEmperors);
+ ConfigHandler.writeDoubleConfig("fishing", "empTime", empTime);
+ ConfigHandler.writeIntConfig("fishing", "empSC", empSCs);
+ } else if (message.contains("Frozen Steve fell into the pond long ago")) { // Fishing Winter
+ frozenSteves++;
+ frozenStevesSession++;
+ ConfigHandler.writeIntConfig("fishing", "frozenSteve", frozenSteves);
+ increaseSeaCreatures();
+ } else if (message.contains("It's a snowman! He looks harmless")) {
+ frostyTheSnowmans++;
+ frostyTheSnowmansSession++;
+ ConfigHandler.writeIntConfig("fishing", "snowman", frostyTheSnowmans);
+ increaseSeaCreatures();
+ } else if (message.contains("stole Jerry's Gifts...get them back")) {
+ grinches++;
+ grinchesSession++;
+ ConfigHandler.writeIntConfig("fishing", "grinch", grinches);
+ increaseSeaCreatures();
+ } else if (message.contains("What is this creature")) {
+ yetis++;
+ yetiTime = System.currentTimeMillis() / 1000;
+ yetiSCs = 0;
+ yetisSession++;
+ yetiTimeSession = System.currentTimeMillis() / 1000;
+ yetiSCsSession = 0;
+ ConfigHandler.writeIntConfig("fishing", "yeti", yetis);
+ ConfigHandler.writeDoubleConfig("fishing", "yetiTime", yetiTime);
+ ConfigHandler.writeIntConfig("fishing", "yetiSC", yetiSCs);
+ increaseSeaCreatures();
+ } else if (message.contains("A tiny fin emerges from the water, you've caught a Nurse Shark")) { // Fishing Festival
+ nurseSharks++;
+ nurseSharksSession++;
+ ConfigHandler.writeIntConfig("fishing", "nurseShark", nurseSharks);
+ increaseSeaCreatures();
+ } else if (message.contains("You spot a fin as blue as the water it came from, it's a Blue Shark")) {
+ blueSharks++;
+ blueSharksSession++;
+ ConfigHandler.writeIntConfig("fishing", "blueShark", blueSharks);
+ increaseSeaCreatures();
+ } else if (message.contains("A striped beast bounds from the depths, the wild Tiger Shark")) {
+ tigerSharks++;
+ tigerSharksSession++;
+ ConfigHandler.writeIntConfig("fishing", "tigerShark", tigerSharks);
+ increaseSeaCreatures();
+ } else if (message.contains("Hide no longer, a Great White Shark has tracked your scent and thirsts for your blood")) {
+ greatWhiteSharks++;
+ greatWhiteSharksSession++;
+ ConfigHandler.writeIntConfig("fishing", "greatWhiteShark", greatWhiteSharks);
+ increaseSeaCreatures();
+ } else if (message.contains("Phew! It's only a Scarecrow")) {
+ scarecrows++;
+ scarecrowsSession++;
+ ConfigHandler.writeIntConfig("fishing", "scarecrow", scarecrows);
+ increaseSeaCreatures();
+ } else if (message.contains("You hear trotting from beneath the waves, you caught a Nightmare")) {
+ nightmares++;
+ nightmaresSession++;
+ ConfigHandler.writeIntConfig("fishing", "nightmare", nightmares);
+ increaseSeaCreatures();
+ } else if (message.contains("It must be a full moon, a Werewolf appears")) {
+ werewolfs++;
+ werewolfsSession++;
+ ConfigHandler.writeIntConfig("fishing", "werewolf", werewolfs);
+ increaseSeaCreatures();
+ } else if (message.contains("The spirit of a long lost Phantom Fisher has come to haunt you")) {
+ phantomFishers++;
+ phantomFishersSession++;
+ ConfigHandler.writeIntConfig("fishing", "phantomFisher", phantomFishers);
+ increaseSeaCreatures();
+ } else if (message.contains("This can't be! The manifestation of death himself")) {
+ grimReapers++;
+ grimReapersSession++;
+ ConfigHandler.writeIntConfig("fishing", "grimReaper", grimReapers);
+ increaseSeaCreatures();
+ } else if (message.contains("A Water Worm surfaces")) {
+ waterWorms++;
+ waterWormsSession++;
+ ConfigHandler.writeIntConfig("fishing", "waterWorm", waterWorms);
+ increaseSeaCreatures();
+ } else if (message.contains("A Poisoned Water Worm surfaces")) {
+ poisonedWaterWorms++;
+ poisonedWaterWormsSession++;
+ ConfigHandler.writeIntConfig("fishing", "poisonedWaterWorm", poisonedWaterWorms);
+ increaseSeaCreatures();
+ } else if (message.contains("A flaming worm surfaces from the depths")) {
+ flamingWorms++;
+ flamingWormsSession++;
+ ConfigHandler.writeIntConfig("fishing", "flamingWorm", flamingWorms);
+ increaseSeaCreatures();
+ } else if (message.contains("A Lava Blaze has surfaced from the depths")) {
+ lavaBlazes++;
+ lavaBlazesSession++;
+ ConfigHandler.writeIntConfig("fishing", "lavaBlaze", lavaBlazes);
+ increaseSeaCreatures();
+ } else if (message.contains("A Lava Pigman arose from the depths")) {
+ lavaPigmen++;
+ lavaPigmenSession++;
+ ConfigHandler.writeIntConfig("fishing", "lavaPigman", lavaPigmen);
+ increaseSeaCreatures();
+ } else if (message.contains("A Zombie Miner surfaces")) {
+ zombieMiners++;
+ zombieMinersSession++;
+ ConfigHandler.writeIntConfig("fishing", "zombieMiner", zombieMiners);
+ increaseSeaCreatures();
+ } else if (message.contains("From Beneath the lava appears a Magma Slug")) {
+ magmaSlugs++;
+ magmaSlugsSession++;
+ ConfigHandler.writeIntConfig("fishing", "magmaSlug", magmaSlugs);
+ increaseSeaCreatures();
+ } else if (message.contains("You hear a faint Moo from the lava... A Moogma appears")) {
+ moogmas++;
+ moogmasSession++;
+ ConfigHandler.writeIntConfig("fishing", "moogma", moogmas);
+ increaseSeaCreatures();
+ } else if (message.contains("A small but fearsome Lava Leech emerges")) {
+ lavaLeeches++;
+ lavaLeechesSession++;
+ ConfigHandler.writeIntConfig("fishing", "lavaLeech", lavaLeeches);
+ increaseSeaCreatures();
+ } else if (message.contains("You feel the heat radiating as a Pyroclastic Worm surfaces")) {
+ pyroclasticWorms++;
+ pyroclasticWormsSession++;
+ ConfigHandler.writeIntConfig("fishing", "pyroclasticWorm", pyroclasticWorms);
+ increaseSeaCreatures();
+ } else if (message.contains("A Lava Flame flies out from beneath the lava")) {
+ lavaFlames++;
+ lavaFlamesSession++;
+ ConfigHandler.writeIntConfig("fishing", "lavaFlame", lavaFlames);
+ increaseSeaCreatures();
+ } else if (message.contains("A Fire Eel slithers out from the depths")) {
+ fireEels++;
+ fireEelsSession++;
+ ConfigHandler.writeIntConfig("fishing", "fireEel", fireEels);
+ increaseSeaCreatures();
+ } else if (message.contains("Taurus and his steed emerge")) {
+ tauruses++;
+ taurusesSession++;
+ ConfigHandler.writeIntConfig("fishing", "taurus", tauruses);
+ increaseSeaCreatures();
+ } else if (message.contains("You hear a massive rumble as Thunder emerges")) {
+ thunders++;
+ thundersSession++;
+ ConfigHandler.writeIntConfig("fishing", "thunder", thunders);
+ increaseSeaCreatures();
+ } else if (message.contains("You have angered a legendary creature... Lord Jawbus has arrived")) {
+ lordJawbuses++;
+ jawbusTime = System.currentTimeMillis() / 1000;
+ jawbusSCs = 0;
+ lordJawbusesSession++;
+ jawbusTimeSession = System.currentTimeMillis() / 1000;
+ jawbusSCsSession = 0;
+ ConfigHandler.writeIntConfig("fishing", "lordJawbus", lordJawbuses);
+ ConfigHandler.writeDoubleConfig("fishing", "jawbusTime", jawbusTime);
+ ConfigHandler.writeIntConfig("fishing", "jawbusSC", jawbusSCs);
+ increaseSeaCreatures();
+ }
+ }
+
+ public void increaseSeaCreatures() {
+ // Only increment Yetis when in Jerry's Workshop
+ if (Utils.isInScoreboard("Jerry's Workshop") || Utils.isInScoreboard("Jerry Pond")) {
+ if (yetiSCs != -1) {
+ yetiSCs++;
+ }
+ if (yetiSCsSession != -1) {
+ yetiSCsSession++;
+ }
+ } else if (Utils.tabLocation.equals("Crimson Isle")) {
+ if (jawbusSCs != -1) {
+ jawbusSCs++;
+ }
+ if (jawbusSCsSession != -1) {
+ jawbusSCsSession++;
+ }
+ } else {
+ if (empSCs != -1) {
+ empSCs++;
+ }
+ if (empSCsSession != -1) {
+ empSCsSession++;
+ }
+ }
+
+ seaCreatures++;
+ fishingMilestone++;
+ seaCreaturesSession++;
+ fishingMilestoneSession++;
+ ConfigHandler.writeIntConfig("fishing", "seaCreature", seaCreatures);
+ ConfigHandler.writeIntConfig("fishing", "milestone", fishingMilestone);
+ ConfigHandler.writeIntConfig("fishing", "empSC", empSCs);
+ ConfigHandler.writeIntConfig("fishing", "yetiSC", yetiSCs);
+ ConfigHandler.writeIntConfig("fishing", "jawbusSC", jawbusSCs);
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/GhostTracker.java b/src/main/java/me/Danker/features/loot/GhostTracker.java
new file mode 100644
index 0000000..f402823
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/GhostTracker.java
@@ -0,0 +1,60 @@
+package me.Danker.features.loot;
+
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class GhostTracker {
+
+ public static int sorrows = 0;
+ public static int bagOfCashs = 0;
+ public static int voltas = 0;
+ public static int plasmas = 0;
+ public static int ghostlyBoots = 0;
+
+ public static int sorrowSession = 0;
+ public static int bagOfCashSession = 0;
+ public static int voltaSession = 0;
+ public static int plasmaSession = 0;
+ public static int ghostlyBootsSession = 0;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ if (message.contains("RARE DROP!")) {
+ if (message.contains("Sorrow")) {
+ sorrows++;
+ sorrowSession++;
+ ConfigHandler.writeIntConfig("ghosts", "sorrow", sorrows);
+ }
+ if (message.contains("Volta")) {
+ voltas++;
+ voltaSession++;
+ ConfigHandler.writeIntConfig("ghosts", "volta", voltas);
+ }
+ if (message.contains("Plasma")) {
+ plasmas++;
+ plasmaSession++;
+ ConfigHandler.writeIntConfig("ghosts", "plasma", plasmas);
+ }
+ if (message.contains("Ghostly Boots")) {
+ ghostlyBoots++;
+ ghostlyBootsSession++;
+ ConfigHandler.writeIntConfig("ghosts", "ghostlyBoots", ghostlyBoots);
+ }
+ if (message.contains("The ghost's death materialized ")) {
+ bagOfCashs++;
+ bagOfCashSession++;
+ ConfigHandler.writeIntConfig("ghosts", "bagOfCash", bagOfCashs);
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java
index cd34da7..e1ddcb0 100644
--- a/src/main/java/me/Danker/features/loot/LootDisplay.java
+++ b/src/main/java/me/Danker/features/loot/LootDisplay.java
@@ -3,7 +3,7 @@ package me.Danker.features.loot;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.ConfigHandler;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
@@ -20,7 +20,7 @@ public class LootDisplay {
public static boolean auto;
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (!display.equals("off")) {
Minecraft mc = Minecraft.getMinecraft();
String dropsText = "";
@@ -30,25 +30,27 @@ public class LootDisplay {
String timeBetween;
String bossesBetween;
String drop20;
+ String runs;
+ String runsCount;
double timeNow = System.currentTimeMillis() / 1000;
NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US);
switch (display) {
case "wolf":
- if (LootTracker.wolfTime == -1) {
+ if (WolfTracker.wolfTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.wolfTime, timeNow);
+ timeBetween = Utils.getTimeBetween(WolfTracker.wolfTime, timeNow);
}
- if (LootTracker.wolfBosses == -1) {
+ if (WolfTracker.wolfBosses == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.wolfBosses);
+ bossesBetween = nf.format(WolfTracker.wolfBosses);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.wolfWheels);
+ drop20 = nf.format(WolfTracker.wolfWheels);
} else {
- drop20 = nf.format(LootTracker.wolfWheelsDrops) + " times";
+ drop20 = nf.format(WolfTracker.wolfWheelsDrops) + " times";
}
dropsText = EnumChatFormatting.GOLD + "Svens Killed:\n" +
@@ -62,33 +64,33 @@ public class LootDisplay {
EnumChatFormatting.DARK_PURPLE + "Overfluxes:\n" +
EnumChatFormatting.AQUA + "Time Since RNG:\n" +
EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.wolfSvens) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.wolfTeeth) + "\n" +
+ countText = EnumChatFormatting.GOLD + nf.format(WolfTracker.wolfSvens) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(WolfTracker.wolfTeeth) + "\n" +
EnumChatFormatting.BLUE + drop20 + "\n" +
- EnumChatFormatting.AQUA + LootTracker.wolfSpirits + "\n" +
- EnumChatFormatting.WHITE + LootTracker.wolfBooks + "\n" +
- EnumChatFormatting.DARK_RED + LootTracker.wolfEggs + "\n" +
- EnumChatFormatting.GOLD + LootTracker.wolfCoutures + "\n" +
- EnumChatFormatting.AQUA + LootTracker.wolfBaits + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootTracker.wolfFluxes + "\n" +
+ EnumChatFormatting.AQUA + WolfTracker.wolfSpirits + "\n" +
+ EnumChatFormatting.WHITE + WolfTracker.wolfBooks + "\n" +
+ EnumChatFormatting.DARK_RED + WolfTracker.wolfEggs + "\n" +
+ EnumChatFormatting.GOLD + WolfTracker.wolfCoutures + "\n" +
+ EnumChatFormatting.AQUA + WolfTracker.wolfBaits + "\n" +
+ EnumChatFormatting.DARK_PURPLE + WolfTracker.wolfFluxes + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
case "wolf_session":
- if (LootTracker.wolfTimeSession == -1) {
+ if (WolfTracker.wolfTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.wolfTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(WolfTracker.wolfTimeSession, timeNow);
}
- if (LootTracker.wolfBossesSession == -1) {
+ if (WolfTracker.wolfBossesSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.wolfBossesSession);
+ bossesBetween = nf.format(WolfTracker.wolfBossesSession);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.wolfWheelsSession);
+ drop20 = nf.format(WolfTracker.wolfWheelsSession);
} else {
- drop20 = nf.format(LootTracker.wolfWheelsDropsSession) + " times";
+ drop20 = nf.format(WolfTracker.wolfWheelsDropsSession) + " times";
}
dropsText = EnumChatFormatting.GOLD + "Svens Killed:\n" +
@@ -102,33 +104,33 @@ public class LootDisplay {
EnumChatFormatting.DARK_PURPLE + "Overfluxes:\n" +
EnumChatFormatting.AQUA + "Time Since RNG:\n" +
EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.wolfSvensSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.wolfTeethSession) + "\n" +
+ countText = EnumChatFormatting.GOLD + nf.format(WolfTracker.wolfSvensSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(WolfTracker.wolfTeethSession) + "\n" +
EnumChatFormatting.BLUE + drop20 + "\n" +
- EnumChatFormatting.AQUA + LootTracker.wolfSpiritsSession + "\n" +
- EnumChatFormatting.WHITE + LootTracker.wolfBooksSession + "\n" +
- EnumChatFormatting.DARK_RED + LootTracker.wolfEggsSession + "\n" +
- EnumChatFormatting.GOLD + LootTracker.wolfCouturesSession + "\n" +
- EnumChatFormatting.AQUA + LootTracker.wolfBaitsSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootTracker.wolfFluxesSession + "\n" +
+ EnumChatFormatting.AQUA + WolfTracker.wolfSpiritsSession + "\n" +
+ EnumChatFormatting.WHITE + WolfTracker.wolfBooksSession + "\n" +
+ EnumChatFormatting.DARK_RED + WolfTracker.wolfEggsSession + "\n" +
+ EnumChatFormatting.GOLD + WolfTracker.wolfCouturesSession + "\n" +
+ EnumChatFormatting.AQUA + WolfTracker.wolfBaitsSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + WolfTracker.wolfFluxesSession + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
case "spider":
- if (LootTracker.spiderTime == -1) {
+ if (SpiderTracker.spiderTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.spiderTime, timeNow);
+ timeBetween = Utils.getTimeBetween(SpiderTracker.spiderTime, timeNow);
}
- if (LootTracker.spiderBosses == -1) {
+ if (SpiderTracker.spiderBosses == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.spiderBosses);
+ bossesBetween = nf.format(SpiderTracker.spiderBosses);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.spiderTAP);
+ drop20 = nf.format(SpiderTracker.spiderTAP);
} else {
- drop20 = nf.format(LootTracker.spiderTAPDrops) + " times";
+ drop20 = nf.format(SpiderTracker.spiderTAPDrops) + " times";
}
dropsText = EnumChatFormatting.GOLD + "Tarantulas Killed:\n" +
@@ -142,33 +144,33 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Digested Mosquitos:\n" +
EnumChatFormatting.AQUA + "Time Since RNG:\n" +
EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.spiderTarantulas) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.spiderWebs) + "\n" +
+ countText = EnumChatFormatting.GOLD + nf.format(SpiderTracker.spiderTarantulas) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(SpiderTracker.spiderWebs) + "\n" +
EnumChatFormatting.DARK_GREEN + drop20 + "\n" +
- EnumChatFormatting.DARK_GRAY + LootTracker.spiderBites + "\n" +
- EnumChatFormatting.WHITE + LootTracker.spiderBooks + "\n" +
- EnumChatFormatting.AQUA + LootTracker.spiderCatalysts + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootTracker.spiderTalismans + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + LootTracker.spiderSwatters + "\n" +
- EnumChatFormatting.GOLD + LootTracker.spiderMosquitos + "\n" +
+ EnumChatFormatting.DARK_GRAY + SpiderTracker.spiderBites + "\n" +
+ EnumChatFormatting.WHITE + SpiderTracker.spiderBooks + "\n" +
+ EnumChatFormatting.AQUA + SpiderTracker.spiderCatalysts + "\n" +
+ EnumChatFormatting.DARK_PURPLE + SpiderTracker.spiderTalismans + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + SpiderTracker.spiderSwatters + "\n" +
+ EnumChatFormatting.GOLD + SpiderTracker.spiderMosquitos + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
case "spider_session":
- if (LootTracker.spiderTimeSession == -1) {
+ if (SpiderTracker.spiderTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.spiderTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(SpiderTracker.spiderTimeSession, timeNow);
}
- if (LootTracker.spiderBossesSession == -1) {
+ if (SpiderTracker.spiderBossesSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.spiderBossesSession);
+ bossesBetween = nf.format(SpiderTracker.spiderBossesSession);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.spiderTAPSession);
+ drop20 = nf.format(SpiderTracker.spiderTAPSession);
} else {
- drop20 = nf.format(LootTracker.spiderTAPDropsSession) + " times";
+ drop20 = nf.format(SpiderTracker.spiderTAPDropsSession) + " times";
}
dropsText = EnumChatFormatting.GOLD + "Tarantulas Killed:\n" +
@@ -182,40 +184,42 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Digested Mosquitos:\n" +
EnumChatFormatting.AQUA + "Time Since RNG:\n" +
EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.spiderTarantulasSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.spiderWebsSession) + "\n" +
+ countText = EnumChatFormatting.GOLD + nf.format(SpiderTracker.spiderTarantulasSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(SpiderTracker.spiderWebsSession) + "\n" +
EnumChatFormatting.DARK_GREEN + drop20 + "\n" +
- EnumChatFormatting.DARK_GRAY + LootTracker.spiderBitesSession + "\n" +
- EnumChatFormatting.WHITE + LootTracker.spiderBooksSession + "\n" +
- EnumChatFormatting.AQUA + LootTracker.spiderCatalystsSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootTracker.spiderTalismansSession + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + LootTracker.spiderSwattersSession + "\n" +
- EnumChatFormatting.GOLD + LootTracker.spiderMosquitosSession + "\n" +
+ EnumChatFormatting.DARK_GRAY + SpiderTracker.spiderBitesSession + "\n" +
+ EnumChatFormatting.WHITE + SpiderTracker.spiderBooksSession + "\n" +
+ EnumChatFormatting.AQUA + SpiderTracker.spiderCatalystsSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + SpiderTracker.spiderTalismansSession + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + SpiderTracker.spiderSwattersSession + "\n" +
+ EnumChatFormatting.GOLD + SpiderTracker.spiderMosquitosSession + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
case "zombie":
- if (LootTracker.zombieTime == -1) {
+ if (ZombieTracker.zombieTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.zombieTime, timeNow);
+ timeBetween = Utils.getTimeBetween(ZombieTracker.zombieTime, timeNow);
}
- if (LootTracker.zombieBosses == -1) {
+ if (ZombieTracker.zombieBosses == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.zombieBosses);
+ bossesBetween = nf.format(ZombieTracker.zombieBosses);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.zombieFoulFlesh);
+ drop20 = nf.format(ZombieTracker.zombieFoulFlesh);
} else {
- drop20 = nf.format(LootTracker.zombieFoulFleshDrops) + " times";
+ drop20 = nf.format(ZombieTracker.zombieFoulFleshDrops) + " times";
}
dropsText = EnumChatFormatting.GOLD + "Revs Killed:\n" +
EnumChatFormatting.GREEN + "Revenant Flesh:\n" +
+ EnumChatFormatting.GREEN + "Revenant Viscera:\n" +
EnumChatFormatting.BLUE + "Foul Flesh:\n" +
EnumChatFormatting.DARK_GREEN + "Pestilence Runes:\n" +
EnumChatFormatting.WHITE + "Smite VI Books:\n" +
+ EnumChatFormatting.WHITE + "Smite VII Books:\n" +
EnumChatFormatting.AQUA + "Undead Catalysts:\n" +
EnumChatFormatting.DARK_PURPLE + "Beheaded Horrors:\n" +
EnumChatFormatting.RED + "Revenant Catalysts:\n" +
@@ -225,43 +229,47 @@ public class LootDisplay {
EnumChatFormatting.RED + "Warden Hearts:\n" +
EnumChatFormatting.AQUA + "Time Since RNG:\n" +
EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.zombieRevs) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.zombieRevFlesh) + "\n" +
+ countText = EnumChatFormatting.GOLD + nf.format(ZombieTracker.zombieRevs) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(ZombieTracker.zombieRevFlesh) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(ZombieTracker.zombieRevViscera) + "\n" +
EnumChatFormatting.BLUE + drop20 + "\n" +
- EnumChatFormatting.DARK_GREEN + LootTracker.zombiePestilences + "\n" +
- EnumChatFormatting.WHITE + LootTracker.zombieBooks + "\n" +
- EnumChatFormatting.AQUA + LootTracker.zombieUndeadCatas + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootTracker.zombieBeheadeds + "\n" +
- EnumChatFormatting.RED + LootTracker.zombieRevCatas + "\n" +
- EnumChatFormatting.DARK_GREEN + LootTracker.zombieSnakes + "\n" +
- EnumChatFormatting.GOLD + LootTracker.zombieScythes + "\n" +
- EnumChatFormatting.RED + LootTracker.zombieShards + "\n" +
- EnumChatFormatting.RED + LootTracker.zombieWardenHearts + "\n" +
+ EnumChatFormatting.DARK_GREEN + ZombieTracker.zombiePestilences + "\n" +
+ EnumChatFormatting.WHITE + ZombieTracker.zombieBooks + "\n" +
+ EnumChatFormatting.WHITE + ZombieTracker.zombieBooksT7 + "\n" +
+ EnumChatFormatting.AQUA + ZombieTracker.zombieUndeadCatas + "\n" +
+ EnumChatFormatting.DARK_PURPLE + ZombieTracker.zombieBeheadeds + "\n" +
+ EnumChatFormatting.RED + ZombieTracker.zombieRevCatas + "\n" +
+ EnumChatFormatting.DARK_GREEN + ZombieTracker.zombieSnakes + "\n" +
+ EnumChatFormatting.GOLD + ZombieTracker.zombieScythes + "\n" +
+ EnumChatFormatting.RED + ZombieTracker.zombieShards + "\n" +
+ EnumChatFormatting.RED + ZombieTracker.zombieWardenHearts + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
case "zombie_session":
- if (LootTracker.zombieTimeSession == -1) {
+ if (ZombieTracker.zombieTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.zombieTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(ZombieTracker.zombieTimeSession, timeNow);
}
- if (LootTracker.zombieBossesSession == -1) {
+ if (ZombieTracker.zombieBossesSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.zombieBossesSession);
+ bossesBetween = nf.format(ZombieTracker.zombieBossesSession);
}
if (ToggleCommand.slayerCountTotal) {
- drop20 = nf.format(LootTracker.zombieFoulFleshSession);
+ drop20 = nf.format(ZombieTracker.zombieFoulFleshSession);
} else {
- drop20 = nf.format(LootTracker.zombieFoulFleshDropsSession) + " times";
+ drop20 = nf.format(ZombieTracker.zombieFoulFleshDropsSession) + " times";
}
dropsText = EnumChatFormatting.GOLD + "Revs Killed:\n" +
EnumChatFormatting.GREEN + "Revenant Flesh:\n" +
+ EnumChatFormatting.GREEN + "Revenant Viscera:\n" +
EnumChatFormatting.BLUE + "Foul Flesh:\n" +
EnumChatFormatting.DARK_GREEN + "Pestilence Runes:\n" +
EnumChatFormatting.WHITE + "Smite VI Books:\n" +
+ EnumChatFormatting.WHITE + "Smite VII Books:\n" +
EnumChatFormatting.AQUA + "Undead Catalysts:\n" +
EnumChatFormatting.DARK_PURPLE + "Beheaded Horrors:\n" +
EnumChatFormatting.RED + "Revenant Catalysts:\n" +
@@ -271,31 +279,275 @@ public class LootDisplay {
EnumChatFormatting.RED + "Warden Hearts:\n" +
EnumChatFormatting.AQUA + "Time Since RNG:\n" +
EnumChatFormatting.AQUA + "Bosses Since RNG:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.zombieRevsSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.zombieRevFleshSession) + "\n" +
+ countText = EnumChatFormatting.GOLD + nf.format(ZombieTracker.zombieRevsSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(ZombieTracker.zombieRevFleshSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(ZombieTracker.zombieRevVisceraSession) + "\n" +
EnumChatFormatting.BLUE + drop20 + "\n" +
- EnumChatFormatting.DARK_GREEN + LootTracker.zombiePestilencesSession + "\n" +
- EnumChatFormatting.WHITE + LootTracker.zombieBooksSession + "\n" +
- EnumChatFormatting.AQUA + LootTracker.zombieUndeadCatasSession + "\n" +
- EnumChatFormatting.DARK_PURPLE + LootTracker.zombieBeheadedsSession + "\n" +
- EnumChatFormatting.RED + LootTracker.zombieRevCatasSession + "\n" +
- EnumChatFormatting.DARK_GREEN + LootTracker.zombieSnakesSession + "\n" +
- EnumChatFormatting.GOLD + LootTracker.zombieScythes + "\n" +
- EnumChatFormatting.RED + LootTracker.zombieShardsSession + "\n" +
- EnumChatFormatting.RED + LootTracker.zombieWardenHeartsSession + "\n" +
+ EnumChatFormatting.DARK_GREEN + ZombieTracker.zombiePestilencesSession + "\n" +
+ EnumChatFormatting.WHITE + ZombieTracker.zombieBooksSession + "\n" +
+ EnumChatFormatting.WHITE + ZombieTracker.zombieBooksT7Session + "\n" +
+ EnumChatFormatting.AQUA + ZombieTracker.zombieUndeadCatasSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + ZombieTracker.zombieBeheadedsSession + "\n" +
+ EnumChatFormatting.RED + ZombieTracker.zombieRevCatasSession + "\n" +
+ EnumChatFormatting.DARK_GREEN + ZombieTracker.zombieSnakesSession + "\n" +
+ EnumChatFormatting.GOLD + ZombieTracker.zombieScythes + "\n" +
+ EnumChatFormatting.RED + ZombieTracker.zombieShardsSession + "\n" +
+ EnumChatFormatting.RED + ZombieTracker.zombieWardenHeartsSession + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "enderman":
+ if (EndermanTracker.endermanTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(EndermanTracker.endermanTime, timeNow);
+ }
+ if (EndermanTracker.endermanBosses == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(EndermanTracker.endermanBosses);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(EndermanTracker.endermanTAP);
+ } else {
+ drop20 = nf.format(EndermanTracker.endermanTAPDrops) + " times";
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Voidglooms Killed:\n" +
+ EnumChatFormatting.DARK_GRAY + "Null Spheres:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Arrow Poison:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Endersnake Runes:\n" +
+ EnumChatFormatting.DARK_GREEN + "Summoning Eyes:\n" +
+ EnumChatFormatting.AQUA + "Mana Steal Books:\n" +
+ EnumChatFormatting.BLUE + "Transmission Tuners:\n" +
+ EnumChatFormatting.YELLOW + "Null Atoms:\n" +
+ EnumChatFormatting.AQUA + "Espresso Machines:\n" +
+ EnumChatFormatting.WHITE + "Smarty Pants Books:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "End Runes:\n" +
+ EnumChatFormatting.RED + "Blood Chalices:\n" +
+ EnumChatFormatting.RED + "Sinful Dice:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Artifact Upgrader:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Enderman Skins:\n" +
+ EnumChatFormatting.GRAY + "Enchant Runes:\n" +
+ EnumChatFormatting.GOLD + "Etherwarp Mergers:\n" +
+ EnumChatFormatting.GOLD + "Judgement Cores:\n" +
+ EnumChatFormatting.RED + "Ender Slayer Books:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(EndermanTracker.endermanVoidglooms) + "\n" +
+ EnumChatFormatting.DARK_GRAY + nf.format(EndermanTracker.endermanNullSpheres) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + drop20 + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + EndermanTracker.endermanEndersnakes + "\n" +
+ EnumChatFormatting.DARK_GREEN + EndermanTracker.endermanSummoningEyes + "\n" +
+ EnumChatFormatting.AQUA + EndermanTracker.endermanManaBooks + "\n" +
+ EnumChatFormatting.BLUE + EndermanTracker.endermanTuners + "\n" +
+ EnumChatFormatting.YELLOW + EndermanTracker.endermanAtoms + "\n" +
+ EnumChatFormatting.AQUA + EndermanTracker.endermanEspressoMachines + "\n" +
+ EnumChatFormatting.WHITE + EndermanTracker.endermanSmartyBooks + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + EndermanTracker.endermanEndRunes + "\n" +
+ EnumChatFormatting.RED + EndermanTracker.endermanChalices + "\n" +
+ EnumChatFormatting.RED + EndermanTracker.endermanDice + "\n" +
+ EnumChatFormatting.DARK_PURPLE + EndermanTracker.endermanArtifacts + "\n" +
+ EnumChatFormatting.DARK_PURPLE + EndermanTracker.endermanSkins + "\n" +
+ EnumChatFormatting.GRAY + EndermanTracker.endermanEnchantRunes + "\n" +
+ EnumChatFormatting.GOLD + EndermanTracker.endermanMergers + "\n" +
+ EnumChatFormatting.GOLD + EndermanTracker.endermanCores + "\n" +
+ EnumChatFormatting.RED + EndermanTracker.endermanEnderBooks + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "enderman_session":
+ if (EndermanTracker.endermanTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(EndermanTracker.endermanTimeSession, timeNow);
+ }
+ if (EndermanTracker.endermanBossesSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(EndermanTracker.endermanBossesSession);
+ }
+ if (ToggleCommand.slayerCountTotal) {
+ drop20 = nf.format(EndermanTracker.endermanTAPSession);
+ } else {
+ drop20 = nf.format(EndermanTracker.endermanTAPDropsSession) + " times";
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Voidglooms Killed:\n" +
+ EnumChatFormatting.DARK_GRAY + "Null Spheres:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Arrow Poison:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Endersnake Runes:\n" +
+ EnumChatFormatting.DARK_GREEN + "Summoning Eyes:\n" +
+ EnumChatFormatting.AQUA + "Mana Steal Books:\n" +
+ EnumChatFormatting.BLUE + "Transmission Tuners:\n" +
+ EnumChatFormatting.YELLOW + "Null Atoms:\n" +
+ EnumChatFormatting.AQUA + "Espresso Machines:\n" +
+ EnumChatFormatting.WHITE + "Smarty Pants Books:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "End Runes:\n" +
+ EnumChatFormatting.RED + "Blood Chalices:\n" +
+ EnumChatFormatting.RED + "Sinful Dice:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Artifact Upgrader:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Enderman Skins:\n" +
+ EnumChatFormatting.GRAY + "Enchant Runes:\n" +
+ EnumChatFormatting.GOLD + "Etherwarp Mergers:\n" +
+ EnumChatFormatting.GOLD + "Judgement Cores:\n" +
+ EnumChatFormatting.RED + "Ender Slayer Books:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(EndermanTracker.endermanVoidgloomsSession) + "\n" +
+ EnumChatFormatting.DARK_GRAY + nf.format(EndermanTracker.endermanNullSpheresSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + drop20 + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + EndermanTracker.endermanEndersnakesSession + "\n" +
+ EnumChatFormatting.DARK_GREEN + EndermanTracker.endermanSummoningEyesSession + "\n" +
+ EnumChatFormatting.AQUA + EndermanTracker.endermanManaBooksSession + "\n" +
+ EnumChatFormatting.BLUE + EndermanTracker.endermanTunersSession + "\n" +
+ EnumChatFormatting.YELLOW + EndermanTracker.endermanAtomsSession + "\n" +
+ EnumChatFormatting.AQUA + EndermanTracker.endermanEspressoMachinesSession + "\n" +
+ EnumChatFormatting.WHITE + EndermanTracker.endermanSmartyBooksSession + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + EndermanTracker.endermanEndRunesSession + "\n" +
+ EnumChatFormatting.RED + EndermanTracker.endermanChalicesSession + "\n" +
+ EnumChatFormatting.RED + EndermanTracker.endermanDiceSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + EndermanTracker.endermanArtifactsSession + "\n" +
+ EnumChatFormatting.DARK_PURPLE + EndermanTracker.endermanSkinsSession + "\n" +
+ EnumChatFormatting.GRAY + EndermanTracker.endermanEnchantRunesSession + "\n" +
+ EnumChatFormatting.GOLD + EndermanTracker.endermanMergersSession + "\n" +
+ EnumChatFormatting.GOLD + EndermanTracker.endermanCoresSession + "\n" +
+ EnumChatFormatting.RED + EndermanTracker.endermanEnderBooksSession + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "blaze":
+ if (BlazeTracker.time == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(BlazeTracker.time, timeNow);
+ }
+ if (BlazeTracker.bosses == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(BlazeTracker.bosses);
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Demonlords Killed:\n" +
+ EnumChatFormatting.GRAY + "Derelict Ashes:\n" +
+ EnumChatFormatting.RED + "Lavatear Runes:\n" +
+ EnumChatFormatting.AQUA + "Splash Potions:\n" +
+ EnumChatFormatting.DARK_RED + "Magma Arrows:\n" +
+ EnumChatFormatting.DARK_AQUA + "Mana Disintegrators:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Scorched Books:\n" +
+ EnumChatFormatting.WHITE + "Kelvin Inverters:\n" +
+ EnumChatFormatting.BLUE + "Blaze Rod Distillates:\n" +
+ EnumChatFormatting.BLUE + "Glowstone Distillates:\n" +
+ EnumChatFormatting.BLUE + "Magma Distillates:\n" +
+ EnumChatFormatting.BLUE + "Wart Distillates:\n" +
+ EnumChatFormatting.BLUE + "Gabagool Distillates:\n" +
+ EnumChatFormatting.RED + "Power Crystals:\n" +
+ EnumChatFormatting.RED + "Fire Aspect Books:\n" +
+ EnumChatFormatting.GOLD + "Fiery Burst Runes:\n" +
+ EnumChatFormatting.WHITE + "Opal Gems:\n" +
+ EnumChatFormatting.RED + "Archfiend Dice:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Duplex Books:\n" +
+ EnumChatFormatting.GOLD + "High Class Dice:\n" +
+ EnumChatFormatting.GOLD + "Engineering Plans:\n" +
+ EnumChatFormatting.GOLD + "Subzero Inverters:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(BlazeTracker.demonlords) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(BlazeTracker.derelictAshes) + "\n" +
+ EnumChatFormatting.RED + nf.format(BlazeTracker.lavatearRunes) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(BlazeTracker.splashPotions) + "\n" +
+ EnumChatFormatting.DARK_RED + nf.format(BlazeTracker.magmaArrows) + "\n" +
+ EnumChatFormatting.DARK_AQUA + nf.format(BlazeTracker.manaDisintegrators) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(BlazeTracker.scorchedBooks) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(BlazeTracker.kelvinInverters) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.blazeRodDistillates) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.glowstoneDistillates) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.magmaCreamDistillates) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.netherWartDistillates) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.gabagoolDistillates) + "\n" +
+ EnumChatFormatting.RED + nf.format(BlazeTracker.scorchedPowerCrystals) + "\n" +
+ EnumChatFormatting.RED + nf.format(BlazeTracker.fireAspectBooks) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(BlazeTracker.fieryBurstRunes) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(BlazeTracker.opalGems) + "\n" +
+ EnumChatFormatting.RED + nf.format(BlazeTracker.archfiendDice) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(BlazeTracker.duplexBooks) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(BlazeTracker.highClassArchfiendDice) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(BlazeTracker.engineeringPlans) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(BlazeTracker.subzeroInverters) + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "blaze_session":
+ if (BlazeTracker.timeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(BlazeTracker.timeSession, timeNow);
+ }
+ if (BlazeTracker.bossesSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(BlazeTracker.bossesSession);
+ }
+
+ dropsText = EnumChatFormatting.GOLD + "Demonlords Killed:\n" +
+ EnumChatFormatting.GRAY + "Derelict Ashes:\n" +
+ EnumChatFormatting.RED + "Lavatear Runes:\n" +
+ EnumChatFormatting.AQUA + "Splash Potions:\n" +
+ EnumChatFormatting.DARK_RED + "Magma Arrows:\n" +
+ EnumChatFormatting.DARK_AQUA + "Mana Disintegrators:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Scorched Books:\n" +
+ EnumChatFormatting.WHITE + "Kelvin Inverters:\n" +
+ EnumChatFormatting.BLUE + "Blaze Rod Distillates:\n" +
+ EnumChatFormatting.BLUE + "Glowstone Distillates:\n" +
+ EnumChatFormatting.BLUE + "Magma Distillates:\n" +
+ EnumChatFormatting.BLUE + "Wart Distillates:\n" +
+ EnumChatFormatting.BLUE + "Gabagool Distillates:\n" +
+ EnumChatFormatting.RED + "Power Crystals:\n" +
+ EnumChatFormatting.RED + "Fire Aspect Books:\n" +
+ EnumChatFormatting.GOLD + "Fiery Burst Runes:\n" +
+ EnumChatFormatting.WHITE + "Opal Gems:\n" +
+ EnumChatFormatting.RED + "Archfiend Dice:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Duplex Books:\n" +
+ EnumChatFormatting.GOLD + "High Class Dice:\n" +
+ EnumChatFormatting.GOLD + "Engineering Plans:\n" +
+ EnumChatFormatting.GOLD + "Subzero Inverters:\n" +
+ EnumChatFormatting.AQUA + "Time Since RNG:\n" +
+ EnumChatFormatting.AQUA + "Bosses Since RNG:";
+ countText = EnumChatFormatting.GOLD + nf.format(BlazeTracker.demonlordsSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(BlazeTracker.derelictAshesSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(BlazeTracker.lavatearRunesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(BlazeTracker.splashPotionsSession) + "\n" +
+ EnumChatFormatting.DARK_RED + nf.format(BlazeTracker.magmaArrowsSession) + "\n" +
+ EnumChatFormatting.DARK_AQUA + nf.format(BlazeTracker.manaDisintegratorsSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(BlazeTracker.scorchedBooksSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(BlazeTracker.kelvinInvertersSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.blazeRodDistillatesSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.glowstoneDistillatesSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.magmaCreamDistillatesSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.netherWartDistillatesSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(BlazeTracker.gabagoolDistillatesSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(BlazeTracker.scorchedPowerCrystalsSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(BlazeTracker.fireAspectBooksSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(BlazeTracker.fieryBurstRunesSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(BlazeTracker.opalGemsSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(BlazeTracker.archfiendDiceSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(BlazeTracker.duplexBooksSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(BlazeTracker.highClassArchfiendDiceSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(BlazeTracker.engineeringPlansSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(BlazeTracker.subzeroInvertersSession) + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
case "fishing":
- if (LootTracker.empTime == -1) {
+ if (FishingTracker.empTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.empTime, timeNow);
+ timeBetween = Utils.getTimeBetween(FishingTracker.empTime, timeNow);
}
- if (LootTracker.empSCs == -1) {
+ if (FishingTracker.empSCs == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.empSCs);
+ bossesBetween = nf.format(FishingTracker.empSCs);
}
dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
@@ -308,16 +560,16 @@ public class LootDisplay {
EnumChatFormatting.DARK_AQUA + "Sea Guardians:\n" +
EnumChatFormatting.BLUE + "Sea Witches:\n" +
EnumChatFormatting.GREEN + "Sea Archers:";
- countText = EnumChatFormatting.AQUA + nf.format(LootTracker.seaCreatures) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.fishingMilestone) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.greatCatches) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootTracker.squids) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.seaWalkers) + "\n" +
- EnumChatFormatting.DARK_GRAY + nf.format(LootTracker.nightSquids) + "\n" +
- EnumChatFormatting.DARK_AQUA + nf.format(LootTracker.seaGuardians) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.seaWitches) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.seaArchers);
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatches) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(FishingTracker.squids) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(FishingTracker.seaWalkers) + "\n" +
+ EnumChatFormatting.DARK_GRAY + nf.format(FishingTracker.nightSquids) + "\n" +
+ EnumChatFormatting.DARK_AQUA + nf.format(FishingTracker.seaGuardians) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(FishingTracker.seaWitches) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(FishingTracker.seaArchers);
// Seperated to save vertical space
dropsTextTwo = EnumChatFormatting.GREEN + "Monster of Deeps:\n" +
EnumChatFormatting.YELLOW + "Catfishes:\n" +
@@ -329,14 +581,14 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Sea Emperors:\n" +
EnumChatFormatting.AQUA + "Time Since Emp:\n" +
EnumChatFormatting.AQUA + "Creatures Since Emp:";
- countTextTwo = EnumChatFormatting.GREEN + nf.format(LootTracker.monsterOfTheDeeps) + "\n" +
- EnumChatFormatting.YELLOW + nf.format(LootTracker.catfishes) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.carrotKings) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootTracker.seaLeeches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.guardianDefenders) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.deepSeaProtectors) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.hydras) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.seaEmperors) + "\n" +
+ countTextTwo = EnumChatFormatting.GREEN + nf.format(FishingTracker.monsterOfTheDeeps) + "\n" +
+ EnumChatFormatting.YELLOW + nf.format(FishingTracker.catfishes) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.carrotKings) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(FishingTracker.seaLeeches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.guardianDefenders) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.deepSeaProtectors) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.hydras) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.seaEmperors) + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
@@ -349,15 +601,15 @@ public class LootDisplay {
}
break;
case "fishing_session":
- if (LootTracker.empTimeSession == -1) {
+ if (FishingTracker.empTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.empTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(FishingTracker.empTimeSession, timeNow);
}
- if (LootTracker.empSCsSession == -1) {
+ if (FishingTracker.empSCsSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.empSCsSession);
+ bossesBetween = nf.format(FishingTracker.empSCsSession);
}
dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
@@ -370,16 +622,16 @@ public class LootDisplay {
EnumChatFormatting.DARK_AQUA + "Sea Guardians:\n" +
EnumChatFormatting.BLUE + "Sea Witches:\n" +
EnumChatFormatting.GREEN + "Sea Archers:";
- countText = EnumChatFormatting.AQUA + nf.format(LootTracker.seaCreaturesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.fishingMilestoneSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.greatCatchesSession) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootTracker.squidsSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.seaWalkersSession) + "\n" +
- EnumChatFormatting.DARK_GRAY + nf.format(LootTracker.nightSquidsSession) + "\n" +
- EnumChatFormatting.DARK_AQUA + nf.format(LootTracker.seaGuardiansSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.seaWitchesSession) + "\n" +
- EnumChatFormatting.GREEN + nf.format(LootTracker.seaArchersSession);
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatchesSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(FishingTracker.squidsSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(FishingTracker.seaWalkersSession) + "\n" +
+ EnumChatFormatting.DARK_GRAY + nf.format(FishingTracker.nightSquidsSession) + "\n" +
+ EnumChatFormatting.DARK_AQUA + nf.format(FishingTracker.seaGuardiansSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(FishingTracker.seaWitchesSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(FishingTracker.seaArchersSession);
// Seperated to save vertical space
dropsTextTwo = EnumChatFormatting.GREEN + "Monster of Deeps:\n" +
EnumChatFormatting.YELLOW + "Catfishes:\n" +
@@ -391,14 +643,14 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Sea Emperors:\n" +
EnumChatFormatting.AQUA + "Time Since Emp:\n" +
EnumChatFormatting.AQUA + "Creatures Since Emp:";
- countTextTwo = EnumChatFormatting.GREEN + nf.format(LootTracker.monsterOfTheDeepsSession) + "\n" +
- EnumChatFormatting.YELLOW + nf.format(LootTracker.catfishesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.carrotKingsSession) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootTracker.seaLeechesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.guardianDefendersSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.deepSeaProtectorsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.hydrasSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.seaEmperorsSession) + "\n" +
+ countTextTwo = EnumChatFormatting.GREEN + nf.format(FishingTracker.monsterOfTheDeepsSession) + "\n" +
+ EnumChatFormatting.YELLOW + nf.format(FishingTracker.catfishesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.carrotKingsSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(FishingTracker.seaLeechesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.guardianDefendersSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.deepSeaProtectorsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.hydrasSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.seaEmperorsSession) + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
@@ -411,15 +663,15 @@ public class LootDisplay {
}
break;
case "fishing_winter":
- if (LootTracker.yetiTime == -1) {
+ if (FishingTracker.yetiTime == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.yetiTime, timeNow);
+ timeBetween = Utils.getTimeBetween(FishingTracker.yetiTime, timeNow);
}
- if (LootTracker.yetiSCs == -1) {
+ if (FishingTracker.yetiSCs == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.yetiSCs);
+ bossesBetween = nf.format(FishingTracker.yetiSCs);
}
dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
@@ -432,27 +684,27 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Yetis:\n" +
EnumChatFormatting.AQUA + "Time Since Yeti:\n" +
EnumChatFormatting.AQUA + "Creatures Since Yeti:";
- countText = EnumChatFormatting.AQUA + nf.format(LootTracker.seaCreatures) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.fishingMilestone) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.greatCatches) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.frozenSteves) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootTracker.frostyTheSnowmans) + "\n" +
- EnumChatFormatting.DARK_GREEN + nf.format(LootTracker.grinches) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.yetis) + "\n" +
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatches) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.frozenSteves) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(FishingTracker.frostyTheSnowmans) + "\n" +
+ EnumChatFormatting.DARK_GREEN + nf.format(FishingTracker.grinches) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.yetis) + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
case "fishing_winter_session":
- if (LootTracker.yetiTimeSession == -1) {
+ if (FishingTracker.yetiTimeSession == -1) {
timeBetween = "Never";
} else {
- timeBetween = Utils.getTimeBetween(LootTracker.yetiTimeSession, timeNow);
+ timeBetween = Utils.getTimeBetween(FishingTracker.yetiTimeSession, timeNow);
}
- if (LootTracker.yetiSCsSession == -1) {
+ if (FishingTracker.yetiSCsSession == -1) {
bossesBetween = "Never";
} else {
- bossesBetween = nf.format(LootTracker.yetiSCsSession);
+ bossesBetween = nf.format(FishingTracker.yetiSCsSession);
}
dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
@@ -465,14 +717,14 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Yetis:\n" +
EnumChatFormatting.AQUA + "Time Since Yeti:\n" +
EnumChatFormatting.AQUA + "Creatures Since Yeti:";
- countText = EnumChatFormatting.AQUA + nf.format(LootTracker.seaCreaturesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.fishingMilestoneSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.greatCatchesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.frozenStevesSession) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootTracker.frostyTheSnowmansSession) + "\n" +
- EnumChatFormatting.DARK_GREEN + nf.format(LootTracker.grinchesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.yetisSession) + "\n" +
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatchesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.frozenStevesSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(FishingTracker.frostyTheSnowmansSession) + "\n" +
+ EnumChatFormatting.DARK_GREEN + nf.format(FishingTracker.grinchesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.yetisSession) + "\n" +
EnumChatFormatting.AQUA + timeBetween + "\n" +
EnumChatFormatting.AQUA + bossesBetween;
break;
@@ -485,14 +737,14 @@ public class LootDisplay {
EnumChatFormatting.BLUE + "Blue Sharks:\n" +
EnumChatFormatting.GOLD + "Tiger Sharks:\n" +
EnumChatFormatting.WHITE + "Great White Sharks:";
- countText = EnumChatFormatting.AQUA + nf.format(LootTracker.seaCreatures) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.fishingMilestone) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.greatCatches) + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + nf.format(LootTracker.nurseSharks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.blueSharks) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.tigerSharks) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootTracker.greatWhiteSharks);
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatches) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(FishingTracker.nurseSharks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(FishingTracker.blueSharks) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.tigerSharks) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(FishingTracker.greatWhiteSharks);
break;
case "fishing_festival_session":
dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
@@ -503,14 +755,14 @@ public class LootDisplay {
EnumChatFormatting.BLUE + "Blue Sharks:\n" +
EnumChatFormatting.GOLD + "Tiger Sharks:\n" +
EnumChatFormatting.WHITE + "Great White Sharks:";
- countText = EnumChatFormatting.AQUA + nf.format(LootTracker.seaCreaturesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.fishingMilestoneSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.greatCatchesSession) + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + nf.format(LootTracker.nurseSharksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.blueSharksSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.tigerSharksSession) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootTracker.greatWhiteSharksSession);
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatchesSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(FishingTracker.nurseSharksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(FishingTracker.blueSharksSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.tigerSharksSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(FishingTracker.greatWhiteSharksSession);
break;
case "fishing_spooky":
dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
@@ -522,15 +774,15 @@ public class LootDisplay {
EnumChatFormatting.DARK_PURPLE + "Werewolves:\n" +
EnumChatFormatting.GOLD + "Phantom Fishers:\n" +
EnumChatFormatting.GOLD + "Grim Reapers:";
- countText = EnumChatFormatting.AQUA + nf.format(LootTracker.seaCreatures) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.fishingMilestone) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.goodCatches) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.greatCatches) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.scarecrows) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootTracker.nightmares) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.werewolfs) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.phantomFishers) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.grimReapers);
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatches) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(FishingTracker.scarecrows) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(FishingTracker.nightmares) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.werewolfs) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.phantomFishers) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.grimReapers);
break;
case "fishing_spooky_session":
dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
@@ -542,15 +794,145 @@ public class LootDisplay {
EnumChatFormatting.DARK_PURPLE + "Werewolves:\n" +
EnumChatFormatting.GOLD + "Phantom Fishers:\n" +
EnumChatFormatting.GOLD + "Grim Reapers:";
- countText = EnumChatFormatting.AQUA + nf.format(LootTracker.seaCreaturesSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.fishingMilestoneSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.goodCatchesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.greatCatchesSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.scarecrowsSession) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootTracker.nightmaresSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.werewolfsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.phantomFishersSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.grimReapersSession);
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatchesSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(FishingTracker.scarecrowsSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(FishingTracker.nightmaresSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.werewolfsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.phantomFishersSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.grimReapersSession);
+ break;
+ case "fishing_ch":
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.BLUE + "Water Worms:\n" +
+ EnumChatFormatting.GREEN + "Poison Water Worms:\n" +
+ EnumChatFormatting.RED + "Flaming Worms:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Lava Blazes:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Lava Pigmen:\n" +
+ EnumChatFormatting.GOLD + "Zombie Miners:";
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatches) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(FishingTracker.waterWorms) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(FishingTracker.poisonedWaterWorms) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.flamingWorms) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.lavaBlazes) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.lavaPigmen) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.zombieMiners);
+ break;
+ case "fishing_ch_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 + "Water Worms:\n" +
+ EnumChatFormatting.GREEN + "Poison Water Worms:\n" +
+ EnumChatFormatting.RED + "Flaming Worms:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Lava Blazes:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Lava Pigmen:\n" +
+ EnumChatFormatting.GOLD + "Zombie Miners:";
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatchesSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(FishingTracker.waterWormsSession) + "\n" +
+ EnumChatFormatting.GREEN + nf.format(FishingTracker.poisonedWaterWormsSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.flamingWormsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.lavaBlazesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.lavaPigmenSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.zombieMinersSession);
+ break;
+ case "fishing_lava":
+ if (FishingTracker.jawbusTime == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(FishingTracker.jawbusTime, timeNow);
+ }
+ if (FishingTracker.jawbusSCs == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(FishingTracker.jawbusSCs);
+ }
+
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.DARK_RED + "Magma Slugs:\n" +
+ EnumChatFormatting.RED + "Moogmas:\n" +
+ EnumChatFormatting.RED + "Lava Leeches:\n" +
+ EnumChatFormatting.RED + "Pyroclastic Worms:\n" +
+ EnumChatFormatting.DARK_RED + "Lava Flames:\n" +
+ EnumChatFormatting.RED + "Fire Eels:\n" +
+ EnumChatFormatting.GOLD + "Tauruses:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Thunders:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Lord Jawbuses:\n" +
+ EnumChatFormatting.AQUA + "Time Since Jawbus:\n" +
+ EnumChatFormatting.AQUA + "SC Since Jawbus:";
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreatures) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestone) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatches) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatches) + "\n" +
+ EnumChatFormatting.DARK_RED + nf.format(FishingTracker.magmaSlugs) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.moogmas) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.lavaLeeches) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.pyroclasticWorms) + "\n" +
+ EnumChatFormatting.DARK_RED + nf.format(FishingTracker.lavaFlames) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.fireEels) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.tauruses) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(FishingTracker.thunders) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(FishingTracker.lordJawbuses) + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
+ break;
+ case "fishing_lava_session":
+ if (FishingTracker.jawbusTimeSession == -1) {
+ timeBetween = "Never";
+ } else {
+ timeBetween = Utils.getTimeBetween(FishingTracker.jawbusTimeSession, timeNow);
+ }
+ if (FishingTracker.jawbusSCsSession == -1) {
+ bossesBetween = "Never";
+ } else {
+ bossesBetween = nf.format(FishingTracker.jawbusSCsSession);
+ }
+
+ dropsText = EnumChatFormatting.AQUA + "Creatures Caught:\n" +
+ EnumChatFormatting.AQUA + "Fishing Milestone:\n" +
+ EnumChatFormatting.GOLD + "Good Catches:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Great Catches:\n" +
+ EnumChatFormatting.DARK_RED + "Magma Slugs:\n" +
+ EnumChatFormatting.RED + "Moogmas:\n" +
+ EnumChatFormatting.RED + "Lava Leeches:\n" +
+ EnumChatFormatting.RED + "Pyroclastic Worms:\n" +
+ EnumChatFormatting.DARK_RED + "Lava Flames:\n" +
+ EnumChatFormatting.RED + "Fire Eels:\n" +
+ EnumChatFormatting.GOLD + "Tauruses:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Thunders:\n" +
+ EnumChatFormatting.LIGHT_PURPLE + "Lord Jawbuses:\n" +
+ EnumChatFormatting.AQUA + "Time Since Jawbus:\n" +
+ EnumChatFormatting.AQUA + "SC Since Jawbus:";
+ countText = EnumChatFormatting.AQUA + nf.format(FishingTracker.seaCreaturesSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(FishingTracker.fishingMilestoneSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.goodCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(FishingTracker.greatCatchesSession) + "\n" +
+ EnumChatFormatting.DARK_RED + nf.format(FishingTracker.magmaSlugsSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.moogmasSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.lavaLeechesSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.pyroclasticWormsSession) + "\n" +
+ EnumChatFormatting.DARK_RED + nf.format(FishingTracker.lavaFlamesSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(FishingTracker.fireEelsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(FishingTracker.taurusesSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(FishingTracker.thundersSession) + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + nf.format(FishingTracker.lordJawbusesSession) + "\n" +
+ EnumChatFormatting.AQUA + timeBetween + "\n" +
+ EnumChatFormatting.AQUA + bossesBetween;
break;
case "mythological":
dropsText = EnumChatFormatting.GOLD + "Coins:\n" +
@@ -563,16 +945,16 @@ public class LootDisplay {
EnumChatFormatting.WHITE + "Gaia Constructs:\n" +
EnumChatFormatting.DARK_PURPLE + "Minos Champions:\n" +
EnumChatFormatting.GOLD + "Minos Inquisitors:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.mythCoins) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootTracker.griffinFeathers) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.crownOfGreeds) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.washedUpSouvenirs) + "\n" +
- EnumChatFormatting.RED + nf.format(LootTracker.minosHunters) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootTracker.siameseLynxes) + "\n" +
- EnumChatFormatting.RED + nf.format(LootTracker.minotaurs) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootTracker.gaiaConstructs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.minosChampions) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.minosInquisitors);
+ countText = EnumChatFormatting.GOLD + nf.format(MythologicalTracker.mythCoins) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(MythologicalTracker.griffinFeathers) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(MythologicalTracker.crownOfGreeds) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(MythologicalTracker.washedUpSouvenirs) + "\n" +
+ EnumChatFormatting.RED + nf.format(MythologicalTracker.minosHunters) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(MythologicalTracker.siameseLynxes) + "\n" +
+ EnumChatFormatting.RED + nf.format(MythologicalTracker.minotaurs) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(MythologicalTracker.gaiaConstructs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(MythologicalTracker.minosChampions) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(MythologicalTracker.minosInquisitors);
break;
case "mythological_session":
dropsText = EnumChatFormatting.GOLD + "Coins:\n" +
@@ -585,71 +967,80 @@ public class LootDisplay {
EnumChatFormatting.WHITE + "Gaia Constructs:\n" +
EnumChatFormatting.DARK_PURPLE + "Minos Champions:\n" +
EnumChatFormatting.GOLD + "Minos Inquisitors:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.mythCoinsSession) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootTracker.griffinFeathersSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.crownOfGreedsSession) + "\n" +
- EnumChatFormatting.AQUA + nf.format(LootTracker.washedUpSouvenirsSession) + "\n" +
- EnumChatFormatting.RED + nf.format(LootTracker.minosHuntersSession) + "\n" +
- EnumChatFormatting.GRAY + nf.format(LootTracker.siameseLynxesSession) + "\n" +
- EnumChatFormatting.RED + nf.format(LootTracker.minotaursSession) + "\n" +
- EnumChatFormatting.WHITE + nf.format(LootTracker.gaiaConstructsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.minosChampionsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.minosInquisitorsSession);
+ countText = EnumChatFormatting.GOLD + nf.format(MythologicalTracker.mythCoinsSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(MythologicalTracker.griffinFeathersSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(MythologicalTracker.crownOfGreedsSession) + "\n" +
+ EnumChatFormatting.AQUA + nf.format(MythologicalTracker.washedUpSouvenirsSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(MythologicalTracker.minosHuntersSession) + "\n" +
+ EnumChatFormatting.GRAY + nf.format(MythologicalTracker.siameseLynxesSession) + "\n" +
+ EnumChatFormatting.RED + nf.format(MythologicalTracker.minotaursSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(MythologicalTracker.gaiaConstructsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(MythologicalTracker.minosChampionsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(MythologicalTracker.minosInquisitorsSession);
break;
case "catacombs_floor_one":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ 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(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.bonzoStaffs) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f1CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f1TimeSpent);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f1SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(CatacombsTracker.bonzoStaffs) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f1CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f1TimeSpent);
break;
case "catacombs_floor_one_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ 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(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.bonzoStaffsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f1CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f1TimeSpentSession);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f1SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(CatacombsTracker.bonzoStaffsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f1CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f1TimeSpentSession);
break;
case "catacombs_floor_two":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ 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(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.scarfStudies) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveSwords) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f2CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f2TimeSpent);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f2SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(CatacombsTracker.scarfStudies) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveSwords) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f2CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f2TimeSpent);
break;
case "catacombs_floor_two_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ 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(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.scarfStudiesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveSwordsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f2CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f2TimeSpentSession);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f2SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(CatacombsTracker.scarfStudiesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveSwordsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f2CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f2TimeSpentSession);
break;
case "catacombs_floor_three":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.DARK_PURPLE + "Adaptive Helmets:\n" +
EnumChatFormatting.DARK_PURPLE + "Adaptive Chestplates:\n" +
@@ -657,17 +1048,19 @@ public class LootDisplay {
EnumChatFormatting.DARK_PURPLE + "Adaptive Boots:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveHelms) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveChests) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveLegs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveBoots) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f3CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f3TimeSpent);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f3SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveHelms) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveChests) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveLegs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveBoots) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f3CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f3TimeSpent);
break;
case "catacombs_floor_three_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.DARK_PURPLE + "Adaptive Helmets:\n" +
EnumChatFormatting.DARK_PURPLE + "Adaptive Chestplates:\n" +
@@ -675,17 +1068,19 @@ public class LootDisplay {
EnumChatFormatting.DARK_PURPLE + "Adaptive Boots:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveHelmsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveChestsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveLegsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.adaptiveBootsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f3CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f3TimeSpentSession);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f3SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveHelmsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveChestsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveLegsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.adaptiveBootsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f3CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f3TimeSpentSession);
break;
case "catacombs_floor_four":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.DARK_PURPLE + "Spirit Wings:\n" +
EnumChatFormatting.DARK_PURPLE + "Spirit Bones:\n" +
@@ -696,20 +1091,22 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Leg Spirit Pets:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.spiritWings) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.spiritBones) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.spiritBoots) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.spiritSwords) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.spiritBows) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.epicSpiritPets) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.legSpiritPets) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f4CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f4TimeSpent);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f4SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.spiritWings) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.spiritBones) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.spiritBoots) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.spiritSwords) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.spiritBows) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.epicSpiritPets) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.legSpiritPets) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f4CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f4TimeSpent);
break;
case "catacombs_floor_four_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.DARK_PURPLE + "Spirit Wings:\n" +
EnumChatFormatting.DARK_PURPLE + "Spirit Bones:\n" +
@@ -720,20 +1117,22 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Leg Spirit Pets:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.spiritWingsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.spiritBonesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.spiritBootsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.spiritSwordsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.spiritBowsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.epicSpiritPetsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.legSpiritPetsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f4CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f4TimeSpentSession);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f4SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.spiritWingsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.spiritBonesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.spiritBootsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.spiritSwordsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.spiritBowsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.epicSpiritPetsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.legSpiritPetsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f4CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f4TimeSpentSession);
break;
case "catacombs_floor_five":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.BLUE + "Warped Stones:\n" +
EnumChatFormatting.DARK_PURPLE + "Shadow Helmets:\n" +
@@ -745,21 +1144,23 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Shadow Furys:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.warpedStones) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowAssHelms) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowAssChests) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowAssLegs) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowAssBoots) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.lastBreaths) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.lividDaggers) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.shadowFurys) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f5CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f5TimeSpent);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f5SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(CatacombsTracker.warpedStones) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowAssHelms) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowAssChests) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowAssLegs) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowAssBoots) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.lastBreaths) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.lividDaggers) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.shadowFurys) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f5CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f5TimeSpent);
break;
case "catacombs_floor_five_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.BLUE + "Warped Stones:\n" +
EnumChatFormatting.DARK_PURPLE + "Shadow Helmets:\n" +
@@ -771,21 +1172,23 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Shadow Furys:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.warpedStonesSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowAssHelmsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowAssChestsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowAssLegsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowAssBootsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.lastBreathsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.lividDaggersSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.shadowFurysSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f5CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f5TimeSpentSession);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f5SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(CatacombsTracker.warpedStonesSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowAssHelmsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowAssChestsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowAssLegsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowAssBootsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.lastBreathsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.lividDaggersSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.shadowFurysSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f5CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f5TimeSpentSession);
break;
case "catacombs_floor_six":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.BLUE + "Ancient Roses:\n" +
EnumChatFormatting.GOLD + "Precursor Eyes:\n" +
@@ -795,23 +1198,27 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Necro Lord Leggings:\n" +
EnumChatFormatting.GOLD + "Necro Lord Boots:\n" +
EnumChatFormatting.GOLD + "Necro Swords:\n" +
+ EnumChatFormatting.WHITE + "Rerolls:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.ancientRoses) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.precursorEyes) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.giantsSwords) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroLordHelms) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroLordChests) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroLordLegs) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroLordBoots) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroSwords) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f6CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f6TimeSpent);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f6SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(CatacombsTracker.ancientRoses) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.precursorEyes) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.giantsSwords) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroLordHelms) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroLordChests) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroLordLegs) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroLordBoots) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroSwords) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(CatacombsTracker.f6Rerolls) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f6CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f6TimeSpent);
break;
case "catacombs_floor_six_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.BLUE + "Ancient Roses:\n" +
EnumChatFormatting.GOLD + "Precursor Eyes:\n" +
@@ -821,23 +1228,27 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Necro Lord Leggings:\n" +
EnumChatFormatting.GOLD + "Necro Lord Boots:\n" +
EnumChatFormatting.GOLD + "Necro Swords:\n" +
+ EnumChatFormatting.WHITE + "Rerolls:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.ancientRosesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.precursorEyesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.giantsSwordsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroLordHelmsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroLordChestsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroLordLegsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroLordBootsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.necroSwordsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f6CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f6TimeSpentSession);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f6SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(CatacombsTracker.ancientRosesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.precursorEyesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.giantsSwordsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroLordHelmsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroLordChestsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroLordLegsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroLordBootsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necroSwordsSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(CatacombsTracker.f6RerollsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f6CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f6TimeSpentSession);
break;
case "catacombs_floor_seven":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.DARK_PURPLE + "Wither Bloods:\n" +
EnumChatFormatting.DARK_PURPLE + "Wither Cloaks:\n" +
@@ -850,26 +1261,30 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Wither Chests:\n" +
EnumChatFormatting.GOLD + "Wither Leggings:\n" +
EnumChatFormatting.GOLD + "Wither Boots:\n" +
+ EnumChatFormatting.WHITE + "Rerolls:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulators) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.witherBloods) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.witherCloaks) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.implosions) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.witherShields) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowWarps) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.necronsHandles) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.autoRecombs) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.witherHelms) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.witherChests) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.witherLegs) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.witherBoots) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f7CoinsSpent) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f7TimeSpent);
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f7SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.witherBloods) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.witherCloaks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.implosions) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.witherShields) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowWarps) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.necronsHandles) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.autoRecombs) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.witherHelms) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.witherChests) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.witherLegs) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.witherBoots) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(CatacombsTracker.f7Rerolls) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f7CoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f7TimeSpent);
break;
case "catacombs_floor_seven_session":
- dropsText = EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ dropsText = EnumChatFormatting.GOLD + "S+ Runs:\n" +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
EnumChatFormatting.DARK_PURPLE + "Wither Bloods:\n" +
EnumChatFormatting.DARK_PURPLE + "Wither Cloaks:\n" +
@@ -882,23 +1297,146 @@ public class LootDisplay {
EnumChatFormatting.GOLD + "Wither Chests:\n" +
EnumChatFormatting.GOLD + "Wither Leggings:\n" +
EnumChatFormatting.GOLD + "Wither Boots:\n" +
+ EnumChatFormatting.WHITE + "Rerolls:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.f7SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.witherBloodsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.witherCloaksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.implosionsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.witherShieldsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.shadowWarpsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.necronsHandlesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.autoRecombsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.witherHelmsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.witherChestsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.witherLegsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.witherBootsSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(CatacombsTracker.f7RerollsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f7CoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f7TimeSpentSession);
+ break;
+ case "catacombs_master":
+ if (ToggleCommand.masterSPlusDisplay) {
+ runs = EnumChatFormatting.GOLD + "Master One S+:\n" +
+ EnumChatFormatting.GOLD + "Master Two S+:\n" +
+ EnumChatFormatting.GOLD + "Master Three S+:\n" +
+ EnumChatFormatting.GOLD + "Master Four S+:\n" +
+ EnumChatFormatting.GOLD + "Master Five S+:\n" +
+ EnumChatFormatting.GOLD + "Master Six S+:\n" +
+ EnumChatFormatting.GOLD + "Master Seven S+:\n";
+ runsCount = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m1SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m2SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m3SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m4SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m5SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m6SPlus) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m7SPlus) + "\n";
+ } else {
+ runs = EnumChatFormatting.GOLD + "Master One S:\n" +
+ EnumChatFormatting.GOLD + "Master Two S:\n" +
+ EnumChatFormatting.GOLD + "Master Three S:\n" +
+ EnumChatFormatting.GOLD + "Master Four S:\n" +
+ EnumChatFormatting.GOLD + "Master Five S:\n" +
+ EnumChatFormatting.GOLD + "Master Six S:\n" +
+ EnumChatFormatting.GOLD + "Master Seven S:\n";
+ runsCount = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m1S) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m2S) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m3S) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m4S) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m5S) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m6S) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m7S) + "\n";
+ }
+
+ dropsText = runs +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.DARK_PURPLE + "1st Master Stars:\n" +
+ EnumChatFormatting.DARK_PURPLE + "2nd Master Stars:\n" +
+ EnumChatFormatting.DARK_PURPLE + "3rd Master Stars:\n" +
+ EnumChatFormatting.DARK_PURPLE + "4th Master Stars:\n" +
+ EnumChatFormatting.DARK_PURPLE + "5th Master Stars:\n" +
+ EnumChatFormatting.GOLD + "Necron Dyes:\n" +
+ EnumChatFormatting.GOLD + "Dark Claymores:\n" +
+ EnumChatFormatting.WHITE + "Rerolls:\n" +
+ EnumChatFormatting.AQUA + "Coins Spent:\n" +
+ EnumChatFormatting.AQUA + "Time Spent:";
+ countText = runsCount +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulators) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooks) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.firstStars) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.secondStars) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.thirdStars) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fourthStars) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fifthStars) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necronDyes) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.darkClaymores) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(CatacombsTracker.masterRerolls) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.masterCoinsSpent) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.masterTimeSpent);
+ break;
+ case "catacombs_master_session":
+ if (ToggleCommand.masterSPlusDisplay) {
+ runs = EnumChatFormatting.GOLD + "Master One S+:\n" +
+ EnumChatFormatting.GOLD + "Master Two S+:\n" +
+ EnumChatFormatting.GOLD + "Master Three S+:\n" +
+ EnumChatFormatting.GOLD + "Master Four S+:\n" +
+ EnumChatFormatting.GOLD + "Master Five S+:\n" +
+ EnumChatFormatting.GOLD + "Master Six S+:\n" +
+ EnumChatFormatting.GOLD + "Master Seven S+:\n";
+ runsCount = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m1SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m2SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m3SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m4SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m5SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m6SPlusSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m7SPlusSession) + "\n";
+ } else {
+ runs = EnumChatFormatting.GOLD + "Master One S:\n" +
+ EnumChatFormatting.GOLD + "Master Two S:\n" +
+ EnumChatFormatting.GOLD + "Master Three S:\n" +
+ EnumChatFormatting.GOLD + "Master Four S:\n" +
+ EnumChatFormatting.GOLD + "Master Five S:\n" +
+ EnumChatFormatting.GOLD + "Master Six S:\n" +
+ EnumChatFormatting.GOLD + "Master Seven S:\n";
+ runsCount = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m1SSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m2SSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m3SSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m4SSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m5SSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m6SSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.m7SSession) + "\n";
+ }
+
+ dropsText = runs +
+ EnumChatFormatting.GOLD + "Recombobulators:\n" +
+ EnumChatFormatting.DARK_PURPLE + "Fuming Potato Books:\n" +
+ EnumChatFormatting.DARK_PURPLE + "1st Master Stars:\n" +
+ EnumChatFormatting.DARK_PURPLE + "2nd Master Stars:\n" +
+ EnumChatFormatting.DARK_PURPLE + "3rd Master Stars:\n" +
+ EnumChatFormatting.DARK_PURPLE + "4th Master Stars:\n" +
+ EnumChatFormatting.DARK_PURPLE + "5th Master Stars:\n" +
+ EnumChatFormatting.GOLD + "Necron Dyes:\n" +
+ EnumChatFormatting.GOLD + "Dark Claymores:\n" +
+ EnumChatFormatting.WHITE + "Rerolls:\n" +
EnumChatFormatting.AQUA + "Coins Spent:\n" +
EnumChatFormatting.AQUA + "Time Spent:";
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.recombobulatorsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.fumingPotatoBooksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.witherBloodsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.witherCloaksSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.implosionsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.witherShieldsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.shadowWarpsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.necronsHandlesSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.autoRecombsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.witherHelmsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.witherChestsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.witherLegsSession) + "\n" +
- EnumChatFormatting.GOLD + nf.format(LootTracker.witherBootsSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getMoneySpent(LootTracker.f7CoinsSpentSession) + "\n" +
- EnumChatFormatting.AQUA + Utils.getTimeBetween(0, LootTracker.f7TimeSpentSession);
+ countText = runsCount +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.recombobulatorsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fumingPotatoBooksSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.firstStarsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.secondStarsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.thirdStarsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fourthStarsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(CatacombsTracker.fifthStarsSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.necronDyesSession) + "\n" +
+ EnumChatFormatting.GOLD + nf.format(CatacombsTracker.darkClaymoresSession) + "\n" +
+ EnumChatFormatting.WHITE + nf.format(CatacombsTracker.masterRerollsSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.masterCoinsSpentSession) + "\n" +
+ EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.masterTimeSpentSession);
break;
case "ghost_session":
dropsText = EnumChatFormatting.GOLD + "Bags of Cash:\n" +
@@ -907,12 +1445,12 @@ public class LootDisplay {
EnumChatFormatting.DARK_PURPLE + "Voltas:\n" +
EnumChatFormatting.DARK_PURPLE + "Plasmas:" ; // + \n
// EnumChatFormatting.AQUA + "Time Spent:" +
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.bagOfCashSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.sorrowSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.ghostlyBootsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.voltaSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.plasmaSession); //+ "\n" +
- // EnumChatFormatting.AQUA + nf.format(LootTracker.ghostsTimeSpentSession);
+ countText = EnumChatFormatting.GOLD + nf.format(GhostTracker.bagOfCashSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(GhostTracker.sorrowSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(GhostTracker.ghostlyBootsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(GhostTracker.voltaSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(GhostTracker.plasmaSession); //+ "\n" +
+ // EnumChatFormatting.AQUA + nf.format(GhostTracker.ghostsTimeSpentSession);
break;
case "ghost":
dropsText = EnumChatFormatting.GOLD + "Bags of Cash:\n" +
@@ -921,12 +1459,12 @@ public class LootDisplay {
EnumChatFormatting.DARK_PURPLE + "Voltas:\n" +
EnumChatFormatting.DARK_PURPLE + "Plasmas:" ; // + \n
// EnumChatFormatting.AQUA + "Time Spent:" +
- countText = EnumChatFormatting.GOLD + nf.format(LootTracker.bagOfCashSession) + "\n" +
- EnumChatFormatting.BLUE + nf.format(LootTracker.sorrowSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.ghostlyBootsSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.voltaSession) + "\n" +
- EnumChatFormatting.DARK_PURPLE + nf.format(LootTracker.plasmaSession); //+ "\n" +
- // EnumChatFormatting.AQUA + nf.format(LootTracker.ghostsTimeSpentSession);
+ countText = EnumChatFormatting.GOLD + nf.format(GhostTracker.bagOfCashSession) + "\n" +
+ EnumChatFormatting.BLUE + nf.format(GhostTracker.sorrowSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(GhostTracker.ghostlyBootsSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(GhostTracker.voltaSession) + "\n" +
+ EnumChatFormatting.DARK_PURPLE + nf.format(GhostTracker.plasmaSession); //+ "\n" +
+ // EnumChatFormatting.AQUA + nf.format(GhostTracker.ghostsTimeSpentSession);
break;
diff --git a/src/main/java/me/Danker/features/loot/LootTracker.java b/src/main/java/me/Danker/features/loot/LootTracker.java
index 7919366..27f0779 100644
--- a/src/main/java/me/Danker/features/loot/LootTracker.java
+++ b/src/main/java/me/Danker/features/loot/LootTracker.java
@@ -1,15 +1,8 @@
package me.Danker.features.loot;
-import me.Danker.commands.ToggleCommand;
-import me.Danker.events.ChestSlotClickedEvent;
import me.Danker.handlers.ConfigHandler;
import me.Danker.handlers.ScoreboardHandler;
import me.Danker.utils.Utils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.StringUtils;
-import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.client.event.sound.PlaySoundEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@@ -18,1074 +11,14 @@ import java.util.List;
public class LootTracker {
- // Wolf
- public static int wolfSvens;
- public static int wolfTeeth;
- public static int wolfWheels;
- public static int wolfWheelsDrops;
- public static int wolfSpirits;
- public static int wolfBooks;
- public static int wolfEggs;
- public static int wolfCoutures;
- public static int wolfBaits;
- public static int wolfFluxes;
- public static double wolfTime;
- public static int wolfBosses;
- // Spider
- public static int spiderTarantulas;
- public static int spiderWebs;
- public static int spiderTAP;
- public static int spiderTAPDrops;
- public static int spiderBites;
- public static int spiderCatalysts;
- public static int spiderBooks;
- public static int spiderSwatters;
- public static int spiderTalismans;
- public static int spiderMosquitos;
- public static double spiderTime;
- public static int spiderBosses;
- // Zombie
- public static int zombieRevs;
- public static int zombieRevFlesh;
- public static int zombieFoulFlesh;
- public static int zombieFoulFleshDrops;
- public static int zombiePestilences;
- public static int zombieUndeadCatas;
- public static int zombieBooks;
- public static int zombieBeheadeds;
- public static int zombieRevCatas;
- public static int zombieSnakes;
- public static int zombieScythes;
- public static int zombieShards;
- public static int zombieWardenHearts;
- public static double zombieTime;
- public static int zombieBosses;
-
- // Fishing
- public static int seaCreatures;
- public static int goodCatches;
- public static int greatCatches;
- public static int squids;
- public static int seaWalkers;
- public static int nightSquids;
- public static int seaGuardians;
- public static int seaWitches;
- public static int seaArchers;
- public static int monsterOfTheDeeps;
- public static int catfishes;
- public static int carrotKings;
- public static int seaLeeches;
- public static int guardianDefenders;
- public static int deepSeaProtectors;
- public static int hydras;
- public static int seaEmperors;
- public static double empTime;
- public static int empSCs;
- public static int fishingMilestone;
- // Fishing Winter
- public static int frozenSteves;
- public static int frostyTheSnowmans;
- public static int grinches;
- public static int yetis;
- public static double yetiTime;
- public static int yetiSCs;
- // Fishing Festival
- public static int nurseSharks;
- public static int blueSharks;
- public static int tigerSharks;
- public static int greatWhiteSharks;
- // Spooky Fishing
- public static int scarecrows;
- public static int nightmares;
- public static int werewolfs;
- public static int phantomFishers;
- public static int grimReapers;
-
- // Mythological
- public static double mythCoins;
- public static int griffinFeathers;
- public static int crownOfGreeds;
- public static int washedUpSouvenirs;
- public static int minosHunters;
- public static int siameseLynxes;
- public static int minotaurs;
- public static int gaiaConstructs;
- public static int minosChampions;
- public static int minosInquisitors;
-
- // Catacombs Dungeons
- public static int recombobulators;
- public static int fumingPotatoBooks;
- // F1
- public static int bonzoStaffs;
- public static double f1CoinsSpent;
- public static double f1TimeSpent;
- // F2
- public static int scarfStudies;
- public static int adaptiveSwords;
- public static double f2CoinsSpent;
- public static double f2TimeSpent;
- // F3
- public static int adaptiveHelms;
- public static int adaptiveChests;
- public static int adaptiveLegs;
- public static int adaptiveBoots;
- public static double f3CoinsSpent;
- public static double f3TimeSpent;
- // F4
- public static int spiritWings;
- public static int spiritBones;
- public static int spiritBoots;
- public static int spiritSwords;
- public static int spiritBows;
- public static int epicSpiritPets;
- public static int legSpiritPets;
- public static double f4CoinsSpent;
- public static double f4TimeSpent;
- // F5
- public static int warpedStones;
- public static int shadowAssHelms;
- public static int shadowAssChests;
- public static int shadowAssLegs;
- public static int shadowAssBoots;
- public static int lastBreaths;
- public static int lividDaggers;
- public static int shadowFurys;
- public static double f5CoinsSpent;
- public static double f5TimeSpent;
- // F6
- public static int ancientRoses;
- public static int precursorEyes;
- public static int giantsSwords;
- public static int necroLordHelms;
- public static int necroLordChests;
- public static int necroLordLegs;
- public static int necroLordBoots;
- public static int necroSwords;
- public static double f6CoinsSpent;
- public static double f6TimeSpent;
- // F7
- public static int witherBloods;
- public static int witherCloaks;
- public static int implosions;
- public static int witherShields;
- public static int shadowWarps;
- public static int necronsHandles;
- public static int autoRecombs;
- public static int witherHelms;
- public static int witherChests;
- public static int witherLegs;
- public static int witherBoots;
- public static double f7CoinsSpent;
- public static double f7TimeSpent;
- // Ghosts
- public static int sorrows = 0;
- public static int bagOfCashs = 0;
- public static int voltas = 0;
- public static int plasmas = 0;
- public static int ghostlyBoots = 0;
- // public static double ghostsTimeSpent = -1;
-
-
-
- // Single sessions (No config saves)
- // Wolf
- public static int wolfSvensSession = 0;
- public static int wolfTeethSession = 0;
- public static int wolfWheelsSession = 0;
- public static int wolfWheelsDropsSession = 0;
- public static int wolfSpiritsSession = 0;
- public static int wolfBooksSession = 0;
- public static int wolfEggsSession = 0;
- public static int wolfCouturesSession = 0;
- public static int wolfBaitsSession = 0;
- public static int wolfFluxesSession = 0;
- public static double wolfTimeSession = -1;
- public static int wolfBossesSession = -1;
- // Spider
- public static int spiderTarantulasSession = 0;
- public static int spiderWebsSession = 0;
- public static int spiderTAPSession = 0;
- public static int spiderTAPDropsSession = 0;
- public static int spiderBitesSession = 0;
- public static int spiderCatalystsSession = 0;
- public static int spiderBooksSession = 0;
- public static int spiderSwattersSession = 0;
- public static int spiderTalismansSession = 0;
- public static int spiderMosquitosSession = 0;
- public static double spiderTimeSession = -1;
- public static int spiderBossesSession = -1;
- // Zombie
- public static int zombieRevsSession = 0;
- public static int zombieRevFleshSession = 0;
- public static int zombieFoulFleshSession = 0;
- public static int zombieFoulFleshDropsSession = 0;
- public static int zombiePestilencesSession = 0;
- public static int zombieUndeadCatasSession = 0;
- public static int zombieBooksSession = 0;
- public static int zombieBeheadedsSession = 0;
- public static int zombieRevCatasSession = 0;
- public static int zombieSnakesSession = 0;
- public static int zombieScythesSession = 0;
- public static int zombieShardsSession = 0;
- public static int zombieWardenHeartsSession = 0;
- public static double zombieTimeSession = -1;
- public static int zombieBossesSession = -1;
-
- // Fishing
- public static int seaCreaturesSession = 0;
- public static int goodCatchesSession = 0;
- public static int greatCatchesSession = 0;
- public static int squidsSession = 0;
- public static int seaWalkersSession = 0;
- public static int nightSquidsSession = 0;
- public static int seaGuardiansSession = 0;
- public static int seaWitchesSession = 0;
- public static int seaArchersSession = 0;
- public static int monsterOfTheDeepsSession = 0;
- public static int catfishesSession = 0;
- public static int carrotKingsSession = 0;
- public static int seaLeechesSession = 0;
- public static int guardianDefendersSession = 0;
- public static int deepSeaProtectorsSession = 0;
- public static int hydrasSession = 0;
- public static int seaEmperorsSession = 0;
- public static double empTimeSession = -1;
- public static int empSCsSession = -1;
- public static int fishingMilestoneSession = 0;
- // Fishing Winter
- public static int frozenStevesSession = 0;
- public static int frostyTheSnowmansSession = 0;
- public static int grinchesSession = 0;
- public static int yetisSession = 0;
- public static double yetiTimeSession = -1;
- public static int yetiSCsSession = -1;
- // Fishing Festival
- public static int nurseSharksSession = 0;
- public static int blueSharksSession = 0;
- public static int tigerSharksSession = 0;
- public static int greatWhiteSharksSession = 0;
- // Spooky Fishing
- public static int scarecrowsSession = 0;
- public static int nightmaresSession = 0;
- public static int werewolfsSession = 0;
- public static int phantomFishersSession = 0;
- public static int grimReapersSession = 0;
-
- // Mythological
- public static double mythCoinsSession = 0;
- public static int griffinFeathersSession = 0;
- public static int crownOfGreedsSession = 0;
- public static int washedUpSouvenirsSession = 0;
- public static int minosHuntersSession = 0;
- public static int siameseLynxesSession = 0;
- public static int minotaursSession = 0;
- public static int gaiaConstructsSession = 0;
- public static int minosChampionsSession = 0;
- public static int minosInquisitorsSession = 0;
-
- // Catacombs Dungeons
- public static int recombobulatorsSession = 0;
- public static int fumingPotatoBooksSession = 0;
- // F1
- public static int bonzoStaffsSession = 0;
- public static double f1CoinsSpentSession = 0;
- public static double f1TimeSpentSession = 0;
- // F2
- public static int scarfStudiesSession = 0;
- public static int adaptiveSwordsSession = 0;
- public static double f2CoinsSpentSession = 0;
- public static double f2TimeSpentSession = 0;
- // F3
- public static int adaptiveHelmsSession = 0;
- public static int adaptiveChestsSession = 0;
- public static int adaptiveLegsSession = 0;
- public static int adaptiveBootsSession = 0;
- public static double f3CoinsSpentSession = 0;
- public static double f3TimeSpentSession = 0;
- // F4
- public static int spiritWingsSession = 0;
- public static int spiritBonesSession = 0;
- public static int spiritBootsSession = 0;
- public static int spiritSwordsSession = 0;
- public static int spiritBowsSession = 0;
- public static int epicSpiritPetsSession = 0;
- public static int legSpiritPetsSession = 0;
- public static double f4CoinsSpentSession = 0;
- public static double f4TimeSpentSession = 0;
- // F5
- public static int warpedStonesSession = 0;
- public static int shadowAssHelmsSession = 0;
- public static int shadowAssChestsSession = 0;
- public static int shadowAssLegsSession = 0;
- public static int shadowAssBootsSession = 0;
- public static int lastBreathsSession = 0;
- public static int lividDaggersSession = 0;
- public static int shadowFurysSession = 0;
- public static double f5CoinsSpentSession = 0;
- public static double f5TimeSpentSession = 0;
- // F6
- public static int ancientRosesSession = 0;
- public static int precursorEyesSession = 0;
- public static int giantsSwordsSession = 0;
- public static int necroLordHelmsSession = 0;
- public static int necroLordChestsSession = 0;
- public static int necroLordLegsSession = 0;
- public static int necroLordBootsSession = 0;
- public static int necroSwordsSession = 0;
- public static double f6CoinsSpentSession = 0;
- public static double f6TimeSpentSession = 0;
- // F7
- public static int witherBloodsSession = 0;
- public static int witherCloaksSession = 0;
- public static int implosionsSession = 0;
- public static int witherShieldsSession = 0;
- public static int shadowWarpsSession = 0;
- public static int necronsHandlesSession = 0;
- public static int autoRecombsSession = 0;
- public static int witherHelmsSession = 0;
- public static int witherChestsSession = 0;
- public static int witherLegsSession = 0;
- public static int witherBootsSession = 0;
- public static double f7CoinsSpentSession = 0;
- public static double f7TimeSpentSession = 0;
- // Ghosts
- public static int sorrowSession = 0;
- public static int bagOfCashSession = 0;
- public static int voltaSession = 0;
- public static int plasmaSession = 0;
- public static int ghostlyBootsSession = 0;
- // public static double ghostsSecondsSinceStarts = 0;
-
-
- static double checkItemsNow = 0;
- static double itemsChecked = 0;
-
- @SubscribeEvent(priority = EventPriority.HIGHEST)
- public void onChat(ClientChatReceivedEvent event) {
- String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
-
-
- if (!Utils.inSkyblock) return;
- if (event.type == 2) return;
- if (message.contains(":")) return;
-
- boolean wolfRNG = false;
- boolean spiderRNG = false;
- boolean zombieRNG = false;
-
-
-
- // Slayer tracker
- // T6 books
- if (message.contains("VERY RARE DROP! (Enchanted Book)") || message.contains("CRAZY RARE DROP! (Enchanted Book)")) {
- // Loop through scoreboard to see what boss you're doing
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- for (String s : scoreboard) {
- String sCleaned = ScoreboardHandler.cleanSB(s);
- if (sCleaned.contains("Sven Packmaster")) {
- wolfBooks++;
- ConfigHandler.writeIntConfig("wolf", "book", wolfBooks);
- } else if (sCleaned.contains("Tarantula Broodfather")) {
- spiderBooks++;
- ConfigHandler.writeIntConfig("spider", "book", spiderBooks);
- } else if (sCleaned.contains("Revenant Horror")) {
- zombieBooks++;
- ConfigHandler.writeIntConfig("zombie", "book", zombieBooks);
- }
-
- }
- }
-
- // Wolf
- if (message.contains(" Wolf Slayer LVL ")) {
- wolfSvens++;
- wolfSvensSession++;
- if (wolfBosses != -1) {
- wolfBosses++;
- }
- if (wolfBossesSession != -1) {
- wolfBossesSession++;
- }
- ConfigHandler.writeIntConfig("wolf", "svens", wolfSvens);
- ConfigHandler.writeIntConfig("wolf", "bossRNG", wolfBosses);
- } else if (message.contains("RARE DROP! (Hamster Wheel)")) {
- wolfWheelsDrops++;
- wolfWheelsDropsSession++;
- ConfigHandler.writeIntConfig("wolf", "wheelDrops", wolfWheelsDrops);
- } else if (message.contains("VERY RARE DROP! (") && message.contains(" Spirit Rune I)")) { // Removing the unicode here *should* fix rune drops not counting
- wolfSpirits++;
- wolfSpiritsSession++;
- ConfigHandler.writeIntConfig("wolf", "spirit", wolfSpirits);
- } else if (message.contains("CRAZY RARE DROP! (Red Claw Egg)")) {
- wolfRNG = true;
- wolfEggs++;
- wolfEggsSession++;
- ConfigHandler.writeIntConfig("wolf", "egg", wolfEggs);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_RED + "RED CLAW EGG!", 3);
- } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Couture Rune I)")) {
- wolfRNG = true;
- wolfCoutures++;
- wolfCouturesSession++;
- ConfigHandler.writeIntConfig("wolf", "couture", wolfCoutures);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "COUTURE RUNE!", 3);
- } else if (message.contains("CRAZY RARE DROP! (Grizzly Bait)") || message.contains("CRAZY RARE DROP! (Rename Me)")) { // How did Skyblock devs even manage to make this item Rename Me
- wolfRNG = true;
- wolfBaits++;
- wolfBaitsSession++;
- ConfigHandler.writeIntConfig("wolf", "bait", wolfBaits);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.AQUA + "GRIZZLY BAIT!", 3);
- } else if (message.contains("CRAZY RARE DROP! (Overflux Capacitor)")) {
- wolfRNG = true;
- wolfFluxes++;
- wolfFluxesSession++;
- ConfigHandler.writeIntConfig("wolf", "flux", wolfFluxes);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "OVERFLUX CAPACITOR!", 5);
- } else if (message.contains(" Spider Slayer LVL ")) { // Spider
- spiderTarantulas++;
- spiderTarantulasSession++;
- if (spiderBosses != -1) {
- spiderBosses++;
- }
- if (spiderBossesSession != -1) {
- spiderBossesSession++;
- }
- ConfigHandler.writeIntConfig("spider", "tarantulas", spiderTarantulas);
- ConfigHandler.writeIntConfig("spider", "bossRNG", spiderBosses);
- } else if (message.contains("RARE DROP! (Toxic Arrow Poison)")) {
- spiderTAPDrops++;
- spiderTAPDropsSession++;
- ConfigHandler.writeIntConfig("spider", "tapDrops", spiderTAPDrops);
- } else if (message.contains("VERY RARE DROP! (") && message.contains(" Bite Rune I)")) {
- spiderBites++;
- spiderBitesSession++;
- ConfigHandler.writeIntConfig("spider", "bite", spiderBites);
- } else if (message.contains("VERY RARE DROP! (Spider Catalyst)")) {
- spiderCatalysts++;
- spiderCatalystsSession++;
- ConfigHandler.writeIntConfig("spider", "catalyst", spiderCatalysts);
- } else if (message.contains("CRAZY RARE DROP! (Fly Swatter)")) {
- spiderRNG = true;
- spiderSwatters++;
- spiderSwattersSession++;
- ConfigHandler.writeIntConfig("spider", "swatter", spiderSwatters);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.LIGHT_PURPLE + "FLY SWATTER!", 3);
- } else if (message.contains("CRAZY RARE DROP! (Tarantula Talisman")) {
- spiderRNG = true;
- spiderTalismans++;
- spiderTalismansSession++;
- ConfigHandler.writeIntConfig("spider", "talisman", spiderTalismans);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "TARANTULA TALISMAN!", 3);
- } else if (message.contains("CRAZY RARE DROP! (Digested Mosquito)")) {
- spiderRNG = true;
- spiderMosquitos++;
- spiderMosquitosSession++;
- ConfigHandler.writeIntConfig("spider", "mosquito", spiderMosquitos);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "DIGESTED MOSQUITO!", 5);
- } else if (message.contains(" Zombie Slayer LVL ")) { // Zombie
- zombieRevs++;
- zombieRevsSession++;
- if (zombieBosses != -1) {
- zombieBosses++;
- }
- if (zombieBossesSession != 1) {
- zombieBossesSession++;
- }
- ConfigHandler.writeIntConfig("zombie", "revs", zombieRevs);
- ConfigHandler.writeIntConfig("zombie", "bossRNG", zombieBosses);
- } else if (message.contains("RARE DROP! (Foul Flesh)")) {
- zombieFoulFleshDrops++;
- zombieFoulFleshDropsSession++;
- ConfigHandler.writeIntConfig("zombie", "foulFleshDrops", zombieFoulFleshDrops);
- } else if (message.contains("VERY RARE DROP! (Revenant Catalyst)")) {
- zombieRevCatas++;
- zombieRevCatasSession++;
- ConfigHandler.writeIntConfig("zombie", "revCatalyst", zombieRevCatas);
- } else if (message.contains("VERY RARE DROP! (") && message.contains(" Pestilence Rune I)")) {
- zombiePestilences++;
- zombiePestilencesSession++;
- ConfigHandler.writeIntConfig("zombie", "pestilence", zombiePestilences);
- } else if (message.contains("VERY RARE DROP! (Undead Catalyst)")) {
- zombieUndeadCatas++;
- zombieUndeadCatasSession++;
- ConfigHandler.writeIntConfig("zombie", "undeadCatalyst", zombieUndeadCatas);
- } else if (message.contains("CRAZY RARE DROP! (Beheaded Horror)")) {
- zombieRNG = true;
- zombieBeheadeds++;
- zombieBeheadedsSession++;
- ConfigHandler.writeIntConfig("zombie", "beheaded", zombieBeheadeds);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "BEHEADED HORROR!", 3);
- } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Snake Rune I)")) {
- zombieRNG = true;
- zombieSnakes++;
- zombieSnakesSession++;
- ConfigHandler.writeIntConfig("zombie", "snake", zombieSnakes);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_GREEN + "SNAKE RUNE!", 3);
- } else if (message.contains("CRAZY RARE DROP! (Scythe Blade)")) {
- zombieRNG = true;
- zombieScythes++;
- zombieScythesSession++;
- ConfigHandler.writeIntConfig("zombie", "scythe", zombieScythes);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "SCYTHE BLADE!", 5);
- } else if (message.contains("CRAZY RARE DROP! (Shard of the Shredded)")) {
- zombieRNG = true;
- zombieShards++;
- zombieShardsSession++;
- ConfigHandler.writeIntConfig("zombie", "shard", zombieShards);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "SHARD OF THE SHREDDED!", 5);
- } else if (message.contains("INSANE DROP! (Warden Heart)")) {
- zombieRNG = true;
- zombieWardenHearts++;
- zombieWardenHeartsSession++;
- ConfigHandler.writeIntConfig("zombie", "heart", zombieWardenHearts);
- if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "WARDEN HEART!", 5);
- }
-
- if (wolfRNG) {
- wolfTime = System.currentTimeMillis() / 1000;
- wolfBosses = 0;
- wolfTimeSession = System.currentTimeMillis() / 1000;
- wolfBossesSession = 0;
- ConfigHandler.writeDoubleConfig("wolf", "timeRNG", wolfTime);
- ConfigHandler.writeIntConfig("wolf", "bossRNG", 0);
- }
- if (spiderRNG) {
- spiderTime = System.currentTimeMillis() / 1000;
- spiderBosses = 0;
- spiderTimeSession = System.currentTimeMillis() / 1000;
- spiderBossesSession = 0;
- ConfigHandler.writeDoubleConfig("spider", "timeRNG", spiderTime);
- ConfigHandler.writeIntConfig("spider", "bossRNG", 0);
- }
- if (zombieRNG) {
- zombieTime = System.currentTimeMillis() / 1000;
- zombieBosses = 0;
- zombieTimeSession = System.currentTimeMillis() / 1000;
- zombieBossesSession = 0;
- ConfigHandler.writeDoubleConfig("zombie", "timeRNG", zombieTime);
- ConfigHandler.writeIntConfig("zombie", "bossRNG", 0);
- }
-
- // Fishing tracker
- if (message.contains("GOOD CATCH!")) {
- goodCatches++;
- goodCatchesSession++;
- ConfigHandler.writeIntConfig("fishing", "goodCatch", goodCatches);
- } else if (message.contains("GREAT CATCH!")) {
- greatCatches++;
- greatCatchesSession++;
- ConfigHandler.writeIntConfig("fishing", "greatCatch", greatCatches);
- } else if (message.contains("A Squid appeared")) {
- squids++;
- squidsSession++;
- ConfigHandler.writeIntConfig("fishing", "squid", squids);
- increaseSeaCreatures();
- } else if (message.contains("You caught a Sea Walker")) {
- seaWalkers++;
- seaWalkersSession++;
- ConfigHandler.writeIntConfig("fishing", "seaWalker", seaWalkers);
- increaseSeaCreatures();
- } else if (message.contains("Pitch darkness reveals a Night Squid")) {
- nightSquids++;
- nightSquidsSession++;
- ConfigHandler.writeIntConfig("fishing", "nightSquid", nightSquids);
- increaseSeaCreatures();
- } else if (message.contains("You stumbled upon a Sea Guardian")) {
- seaGuardians++;
- seaGuardiansSession++;
- ConfigHandler.writeIntConfig("fishing", "seaGuardian", seaGuardians);
- increaseSeaCreatures();
- } else if (message.contains("It looks like you've disrupted the Sea Witch's brewing session. Watch out, she's furious")) {
- seaWitches++;
- seaWitchesSession++;
- ConfigHandler.writeIntConfig("fishing", "seaWitch", seaWitches);
- increaseSeaCreatures();
- } else if (message.contains("You reeled in a Sea Archer")) {
- seaArchers++;
- seaArchersSession++;
- ConfigHandler.writeIntConfig("fishing", "seaArcher", seaArchers);
- increaseSeaCreatures();
- } else if (message.contains("The Monster of the Deep has emerged")) {
- monsterOfTheDeeps++;
- monsterOfTheDeepsSession++;
- ConfigHandler.writeIntConfig("fishing", "monsterOfDeep", monsterOfTheDeeps);
- increaseSeaCreatures();
- } else if (message.contains("Huh? A Catfish")) {
- catfishes++;
- catfishesSession++;
- ConfigHandler.writeIntConfig("fishing", "catfish", catfishes);
- increaseSeaCreatures();
- } else if (message.contains("Is this even a fish? It's the Carrot King")) {
- carrotKings++;
- carrotKingsSession++;
- ConfigHandler.writeIntConfig("fishing", "carrotKing", carrotKings);
- increaseSeaCreatures();
- } else if (message.contains("Gross! A Sea Leech")) {
- seaLeeches++;
- seaLeechesSession++;
- ConfigHandler.writeIntConfig("fishing", "seaLeech", seaLeeches);
- increaseSeaCreatures();
- } else if (message.contains("You've discovered a Guardian Defender of the sea")) {
- guardianDefenders++;
- guardianDefendersSession++;
- ConfigHandler.writeIntConfig("fishing", "guardianDefender", guardianDefenders);
- increaseSeaCreatures();
- } else if (message.contains("You have awoken the Deep Sea Protector, prepare for a battle")) {
- deepSeaProtectors++;
- deepSeaProtectorsSession++;
- ConfigHandler.writeIntConfig("fishing", "deepSeaProtector", deepSeaProtectors);
- increaseSeaCreatures();
- } else if (message.contains("The Water Hydra has come to test your strength")) {
- hydras++;
- hydrasSession++;
- ConfigHandler.writeIntConfig("fishing", "hydra", hydras);
- increaseSeaCreatures();
- } else if (message.contains("The Sea Emperor arises from the depths")) {
- increaseSeaCreatures();
-
- seaEmperors++;
- empTime = System.currentTimeMillis() / 1000;
- empSCs = 0;
- seaEmperorsSession++;
- empTimeSession = System.currentTimeMillis() / 1000;
- empSCsSession = 0;
- ConfigHandler.writeIntConfig("fishing", "seaEmperor", seaEmperors);
- ConfigHandler.writeDoubleConfig("fishing", "empTime", empTime);
- ConfigHandler.writeIntConfig("fishing", "empSC", empSCs);
- } else if (message.contains("Frozen Steve fell into the pond long ago")) { // Fishing Winter
- frozenSteves++;
- frozenStevesSession++;
- ConfigHandler.writeIntConfig("fishing", "frozenSteve", frozenSteves);
- increaseSeaCreatures();
- } else if (message.contains("It's a snowman! He looks harmless")) {
- frostyTheSnowmans++;
- frostyTheSnowmansSession++;
- ConfigHandler.writeIntConfig("fishing", "snowman", frostyTheSnowmans);
- increaseSeaCreatures();
- } else if (message.contains("stole Jerry's Gifts...get them back")) {
- grinches++;
- grinchesSession++;
- ConfigHandler.writeIntConfig("fishing", "grinch", grinches);
- increaseSeaCreatures();
- } else if (message.contains("What is this creature")) {
- yetis++;
- yetiTime = System.currentTimeMillis() / 1000;
- yetiSCs = 0;
- yetisSession++;
- yetiTimeSession = System.currentTimeMillis() / 1000;
- yetiSCsSession = 0;
- ConfigHandler.writeIntConfig("fishing", "yeti", yetis);
- ConfigHandler.writeDoubleConfig("fishing", "yetiTime", yetiTime);
- ConfigHandler.writeIntConfig("fishing", "yetiSC", yetiSCs);
- increaseSeaCreatures();
- } else if (message.contains("A tiny fin emerges from the water, you've caught a Nurse Shark")) { // Fishing Festival
- nurseSharks++;
- nurseSharksSession++;
- ConfigHandler.writeIntConfig("fishing", "nurseShark", nurseSharks);
- increaseSeaCreatures();
- } else if (message.contains("You spot a fin as blue as the water it came from, it's a Blue Shark")) {
- blueSharks++;
- blueSharksSession++;
- ConfigHandler.writeIntConfig("fishing", "blueShark", blueSharks);
- increaseSeaCreatures();
- } else if (message.contains("A striped beast bounds from the depths, the wild Tiger Shark")) {
- tigerSharks++;
- tigerSharksSession++;
- ConfigHandler.writeIntConfig("fishing", "tigerShark", tigerSharks);
- increaseSeaCreatures();
- } else if (message.contains("Hide no longer, a Great White Shark has tracked your scent and thirsts for your blood")) {
- greatWhiteSharks++;
- greatWhiteSharksSession++;
- ConfigHandler.writeIntConfig("fishing", "greatWhiteShark", greatWhiteSharks);
- increaseSeaCreatures();
- } else if (message.contains("Phew! It's only a Scarecrow")) {
- scarecrows++;
- scarecrowsSession++;
- ConfigHandler.writeIntConfig("fishing", "scarecrow", scarecrows);
- increaseSeaCreatures();
- } else if (message.contains("You hear trotting from beneath the waves, you caught a Nightmare")) {
- nightmares++;
- nightmaresSession++;
- ConfigHandler.writeIntConfig("fishing", "nightmare", nightmares);
- increaseSeaCreatures();
- } else if (message.contains("It must be a full moon, a Werewolf appears")) {
- werewolfs++;
- werewolfsSession++;
- ConfigHandler.writeIntConfig("fishing", "werewolf", werewolfs);
- increaseSeaCreatures();
- } else if (message.contains("The spirit of a long lost Phantom Fisher has come to haunt you")) {
- phantomFishers++;
- phantomFishersSession++;
- ConfigHandler.writeIntConfig("fishing", "phantomFisher", phantomFishers);
- increaseSeaCreatures();
- } else if (message.contains("This can't be! The manifestation of death himself")) {
- grimReapers++;
- grimReapersSession++;
- ConfigHandler.writeIntConfig("fishing", "grimReaper", grimReapers);
- increaseSeaCreatures();
- }
-
- // Dungeons tracker
- if (message.contains(" ")) {
- if (message.contains("Recombobulator 3000")) {
- recombobulators++;
- recombobulatorsSession++;
- ConfigHandler.writeIntConfig("catacombs", "recombobulator", recombobulators);
- } else if (message.contains("Fuming Potato Book")) {
- fumingPotatoBooks++;
- fumingPotatoBooksSession++;
- ConfigHandler.writeIntConfig("catacombs", "fumingBooks", fumingPotatoBooks);
- } else if (message.contains("Bonzo's Staff")) { // F1
- bonzoStaffs++;
- bonzoStaffsSession++;
- ConfigHandler.writeIntConfig("catacombs", "bonzoStaff", bonzoStaffs);
- } else if (message.contains("Scarf's Studies")) { // F2
- scarfStudies++;
- scarfStudiesSession++;
- ConfigHandler.writeIntConfig("catacombs", "scarfStudies", scarfStudies);
- } else if (message.contains("Adaptive Helmet")) { // F3
- adaptiveHelms++;
- adaptiveHelmsSession++;
- ConfigHandler.writeIntConfig("catacombs", "adaptiveHelm", adaptiveHelms);
- } else if (message.contains("Adaptive Chestplate")) {
- adaptiveChests++;
- adaptiveChestsSession++;
- ConfigHandler.writeIntConfig("catacombs", "adaptiveChest", adaptiveChests);
- } else if (message.contains("Adaptive Leggings")) {
- adaptiveLegs++;
- adaptiveLegsSession++;
- ConfigHandler.writeIntConfig("catacombs", "adaptiveLegging", adaptiveLegs);
- } else if (message.contains("Adaptive Boots")) {
- adaptiveBoots++;
- adaptiveBootsSession++;
- ConfigHandler.writeIntConfig("catacombs", "adaptiveBoot", adaptiveBoots);
- } else if (message.contains("Adaptive Blade")) {
- adaptiveSwords++;
- adaptiveSwordsSession++;
- ConfigHandler.writeIntConfig("catacombs", "adaptiveSword", adaptiveSwords);
- } else if (message.contains("Spirit Wing")) { // F4
- spiritWings++;
- spiritWingsSession++;
- ConfigHandler.writeIntConfig("catacombs", "spiritWing", spiritWings);
- } else if (message.contains("Spirit Bone")) {
- spiritBones++;
- spiritBonesSession++;
- ConfigHandler.writeIntConfig("catacombs", "spiritBone", spiritBones);
- } else if (message.contains("Spirit Boots")) {
- spiritBoots++;
- spiritBootsSession++;
- ConfigHandler.writeIntConfig("catacombs", "spiritBoot", spiritBoots);
- } else if (message.contains("[Lvl 1] Spirit")) {
- String formattedMessage = event.message.getFormattedText();
- // Unicode colour code messes up here, just gonna remove the symbols
- if (formattedMessage.contains("5Spirit")) {
- epicSpiritPets++;
- epicSpiritPetsSession++;
- ConfigHandler.writeIntConfig("catacombs", "spiritPetEpic", epicSpiritPets);
- } else if (formattedMessage.contains("6Spirit")) {
- legSpiritPets++;
- legSpiritPetsSession++;
- ConfigHandler.writeIntConfig("catacombs", "spiritPetLeg", legSpiritPets);
- }
- } else if (message.contains("Spirit Sword")) {
- spiritSwords++;
- spiritSwordsSession++;
- ConfigHandler.writeIntConfig("catacombs", "spiritSword", spiritSwords);
- } else if (message.contains("Spirit Bow")) {
- spiritBows++;
- spiritBowsSession++;
- ConfigHandler.writeIntConfig("catacombs", "spiritBow", spiritBows);
- } else if (message.contains("Warped Stone")) { // F5
- warpedStones++;
- warpedStonesSession++;
- ConfigHandler.writeIntConfig("catacombs", "warpedStone", warpedStones);
- } else if (message.contains("Shadow Assassin Helmet")) {
- shadowAssHelms++;
- shadowAssHelmsSession++;
- ConfigHandler.writeIntConfig("catacombs", "shadowAssassinHelm", shadowAssHelms);
- } else if (message.contains("Shadow Assassin Chestplate")) {
- shadowAssChests++;
- shadowAssChestsSession++;
- ConfigHandler.writeIntConfig("catacombs", "shadowAssassinChest", shadowAssChests);
- } else if (message.contains("Shadow Assassin Leggings")) {
- shadowAssLegs++;
- shadowAssLegsSession++;
- ConfigHandler.writeIntConfig("catacombs", "shadowAssassinLegging", shadowAssLegs);
- } else if (message.contains("Shadow Assassin Boots")) {
- shadowAssBoots++;
- shadowAssBootsSession++;
- ConfigHandler.writeIntConfig("catacombs", "shadowAssassinBoot", shadowAssBoots);
- } else if (message.contains("Livid Dagger")) {
- lividDaggers++;
- lividDaggersSession++;
- ConfigHandler.writeIntConfig("catacombs", "lividDagger", lividDaggers);
- } else if (message.contains("Shadow Fury")) {
- shadowFurys++;
- shadowFurysSession++;
- ConfigHandler.writeIntConfig("catacombs", "shadowFury", shadowFurys);
- } else if (message.contains("Ancient Rose")) { // F6
- ancientRoses++;
- ancientRosesSession++;
- ConfigHandler.writeIntConfig("catacombs", "ancientRose", ancientRoses);
- } else if (message.contains("Precursor Eye")) {
- precursorEyes++;
- precursorEyesSession++;
- ConfigHandler.writeIntConfig("catacombs", "precursorEye", precursorEyes);
- } else if (message.contains("Giant's Sword")) {
- giantsSwords++;
- giantsSwordsSession++;
- ConfigHandler.writeIntConfig("catacombs", "giantsSword", giantsSwords);
- } else if (message.contains("Necromancer Lord Helmet")) {
- necroLordHelms++;
- necroLordHelmsSession++;
- ConfigHandler.writeIntConfig("catacombs", "necroLordHelm", necroLordHelms);
- } else if (message.contains("Necromancer Lord Chestplate")) {
- necroLordChests++;
- necroLordChestsSession++;
- ConfigHandler.writeIntConfig("catacombs", "necroLordChest", necroLordChests);
- } else if (message.contains("Necromancer Lord Leggings")) {
- necroLordLegs++;
- necroLordLegsSession++;
- ConfigHandler.writeIntConfig("catacombs", "necroLordLegging", necroLordLegs);
- } else if (message.contains("Necromancer Lord Boots")) {
- necroLordBoots++;
- necroLordBootsSession++;
- ConfigHandler.writeIntConfig("catacombs", "necroLordBoot", necroLordBoots);
- } else if (message.contains("Necromancer Sword")) {
- necroSwords++;
- necroSwordsSession++;
- ConfigHandler.writeIntConfig("catacombs", "necroSword", necroSwords);
- } else if (message.contains("Wither Blood")) { // F7
- witherBloods++;
- witherBloodsSession++;
- ConfigHandler.writeIntConfig("catacombs", "witherBlood", witherBloods);
- } else if (message.contains("Wither Cloak")) {
- witherCloaks++;
- witherCloaksSession++;
- ConfigHandler.writeIntConfig("catacombs", "witherCloak", witherCloaks);
- } else if (message.contains("Implosion")) {
- implosions++;
- implosionsSession++;
- ConfigHandler.writeIntConfig("catacombs", "implosion", implosions);
- } else if (message.contains("Wither Shield")) {
- witherShields++;
- witherShieldsSession++;
- ConfigHandler.writeIntConfig("catacombs", "witherShield", witherShields);
- } else if (message.contains("Shadow Warp")) {
- shadowWarps++;
- shadowWarpsSession++;
- ConfigHandler.writeIntConfig("catacombs", "shadowWarp", shadowWarps);
- } else if (message.contains("Necron's Handle")) {
- necronsHandles++;
- necronsHandlesSession++;
- ConfigHandler.writeIntConfig("catacombs", "necronsHandle", necronsHandles);
- } else if (message.contains("Auto Recombobulator")) {
- autoRecombs++;
- autoRecombsSession++;
- ConfigHandler.writeIntConfig("catacombs", "autoRecomb", autoRecombs);
- } else if (message.contains("Wither Helmet")) {
- witherHelms++;
- witherHelmsSession++;
- ConfigHandler.writeIntConfig("catacombs", "witherHelm", witherHelms);
- } else if (message.contains("Wither Chestplate")) {
- witherChests++;
- witherChestsSession++;
- ConfigHandler.writeIntConfig("catacombs", "witherChest", witherChests);
- } else if (message.contains("Wither Leggings")) {
- witherLegs++;
- witherLegsSession++;
- ConfigHandler.writeIntConfig("catacombs", "witherLegging", witherLegs);
- } else if (message.contains("Wither Boots")) {
- witherBoots++;
- witherBootsSession++;
- ConfigHandler.writeIntConfig("catacombs", "witherBoot", witherBoots);
- }
- }
-
- if (message.contains("EXTRA STATS ")) {
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- int timeToAdd = 0;
- for (String s : scoreboard) {
- String sCleaned = ScoreboardHandler.cleanSB(s);
- if (sCleaned.contains("The Catacombs (")) {
- // Add time to floor
- if (sCleaned.contains("F1")) {
- f1TimeSpent = Math.floor(f1TimeSpent + timeToAdd);
- f1TimeSpentSession = Math.floor(f1TimeSpentSession + timeToAdd);
- ConfigHandler.writeDoubleConfig("catacombs", "floorOneTime", f1TimeSpent);
- } else if (sCleaned.contains("F2")) {
- f2TimeSpent = Math.floor(f2TimeSpent + timeToAdd);
- f2TimeSpentSession = Math.floor(f2TimeSpentSession + timeToAdd);
- ConfigHandler.writeDoubleConfig("catacombs", "floorTwoTime", f2TimeSpent);
- } else if (sCleaned.contains("F3")) {
- f3TimeSpent = Math.floor(f3TimeSpent + timeToAdd);
- f3TimeSpentSession = Math.floor(f3TimeSpentSession + timeToAdd);
- ConfigHandler.writeDoubleConfig("catacombs", "floorThreeTime", f3TimeSpent);
- } else if (sCleaned.contains("F4")) {
- f4TimeSpent = Math.floor(f4TimeSpent + timeToAdd);
- f4TimeSpentSession = Math.floor(f4TimeSpentSession + timeToAdd);
- ConfigHandler.writeDoubleConfig("catacombs", "floorFourTime", f4TimeSpent);
- } else if (sCleaned.contains("F5")) {
- f5TimeSpent = Math.floor(f5TimeSpent + timeToAdd);
- f5TimeSpentSession = Math.floor(f5TimeSpentSession + timeToAdd);
- ConfigHandler.writeDoubleConfig("catacombs", "floorFiveTime", f5TimeSpent);
- } else if (sCleaned.contains("F6")) {
- f6TimeSpent = Math.floor(f6TimeSpent + timeToAdd);
- f6TimeSpentSession = Math.floor(f6TimeSpentSession + timeToAdd);
- ConfigHandler.writeDoubleConfig("catacombs", "floorSixTime", f6TimeSpent);
- } else if (sCleaned.contains("F7")) {
- f7TimeSpent = Math.floor(f7TimeSpent + timeToAdd);
- f7TimeSpentSession = Math.floor(f7TimeSpentSession + timeToAdd);
- ConfigHandler.writeDoubleConfig("catacombs", "floorSevenTime", f7TimeSpent);
- }
- } else if (sCleaned.contains("Time Elapsed:")) {
- // Get floor time
- String time = sCleaned.substring(sCleaned.indexOf(":") + 2);
- time = time.replaceAll("\\s", "");
- int minutes = Integer.parseInt(time.substring(0, time.indexOf("m")));
- int seconds = Integer.parseInt(time.substring(time.indexOf("m") + 1, time.indexOf("s")));
- timeToAdd = (minutes * 60) + seconds;
- }
- }
- }
-
- // Mythological Tracker
- if (message.contains("You dug out")) {
- if (message.contains(" coins!")) {
- double coinsEarned = Double.parseDouble(message.replaceAll("[^\\d]", ""));
- mythCoins += coinsEarned;
- mythCoinsSession += coinsEarned;
- ConfigHandler.writeDoubleConfig("mythological", "coins", mythCoins);
- } else if (message.contains("a Griffin Feather!")) {
- griffinFeathers++;
- griffinFeathersSession++;
- ConfigHandler.writeIntConfig("mythological", "griffinFeather", griffinFeathers);
- } else if (message.contains("a Crown of Greed!")) {
- crownOfGreeds++;
- crownOfGreedsSession++;
- ConfigHandler.writeIntConfig("mythological", "crownOfGreed", crownOfGreeds);
- } else if (message.contains("a Washed-up Souvenir!")) {
- washedUpSouvenirs++;
- washedUpSouvenirsSession++;
- ConfigHandler.writeIntConfig("mythological", "washedUpSouvenir", washedUpSouvenirs);
- } else if (message.contains("a Minos Hunter!")) {
- minosHunters++;
- minosHuntersSession++;
- ConfigHandler.writeIntConfig("mythological", "minosHunter", minosHunters);
- } else if (message.contains("Siamese Lynxes!")) {
- siameseLynxes++;
- siameseLynxesSession++;
- ConfigHandler.writeIntConfig("mythological", "siameseLynx", siameseLynxes);
- } else if (message.contains("a Minotaur!")) {
- minotaurs++;
- minotaursSession++;
- ConfigHandler.writeIntConfig("mythological", "minotaur", minotaurs);
- } else if (message.contains("a Gaia Construct!")) {
- gaiaConstructs++;
- gaiaConstructsSession++;
- ConfigHandler.writeIntConfig("mythological", "gaiaConstruct", gaiaConstructs);
- } else if (message.contains("a Minos Champion!")) {
- minosChampions++;
- minosChampionsSession++;
- ConfigHandler.writeIntConfig("mythological", "minosChampion", minosChampions);
- } else if (message.contains("a Minos Inquisitor!")) {
- minosInquisitors++;
- minosInquisitorsSession++;
- ConfigHandler.writeIntConfig("mythological", "minosInquisitor", minosInquisitors);
- }
- }
-
-
- if (message.contains("RARE DROP!")) {
- if (message.contains("Sorrow")) {
- sorrows++;
- sorrowSession++;
- ConfigHandler.writeIntConfig("ghosts", "sorrow", sorrows);
- }
- if (message.contains("Volta")) {
- voltas++;
- voltaSession++;
- ConfigHandler.writeIntConfig("ghosts", "volta", voltas);
- }
- if (message.contains("Plasma")) {
- plasmas++;
- plasmaSession++;
- ConfigHandler.writeIntConfig("ghosts", "plasma", plasmas);
- }
- if (message.contains("Ghostly Boots")) {
- ghostlyBoots++;
- ghostlyBootsSession++;
- ConfigHandler.writeIntConfig("ghosts", "ghostlyBoots", ghostlyBoots);
- }
- if (message.contains("Bag of Cash")) {
- bagOfCashs++;
- bagOfCashSession++;
- ConfigHandler.writeIntConfig("ghosts", "bagOfCash", bagOfCashs);
- }
- }
- }
-
- @SubscribeEvent
- public void onSlotClick(ChestSlotClickedEvent event) {
- ItemStack item = event.item;
-
- if (event.inventoryName.endsWith(" Chest") && item != null && item.getDisplayName().contains("Open Reward Chest")) {
- List<String> tooltip = item.getTooltip(Minecraft.getMinecraft().thePlayer, Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
- for (String lineUnclean : tooltip) {
- String line = StringUtils.stripControlCodes(lineUnclean);
- if (line.contains("FREE")) {
- break;
- } else if (line.contains(" Coins")) {
- int coinsSpent = Integer.parseInt(line.substring(0, line.indexOf(" ")).replaceAll(",", ""));
-
- List<String> scoreboard = ScoreboardHandler.getSidebarLines();
- for (String s : scoreboard) {
- String sCleaned = ScoreboardHandler.cleanSB(s);
- if (sCleaned.contains("The Catacombs (")) {
- if (sCleaned.contains("F1")) {
- f1CoinsSpent += coinsSpent;
- f1CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorOneCoins", f1CoinsSpent);
- } else if (sCleaned.contains("F2")) {
- f2CoinsSpent += coinsSpent;
- f2CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorTwoCoins", f2CoinsSpent);
- } else if (sCleaned.contains("F3")) {
- f3CoinsSpent += coinsSpent;
- f3CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorThreeCoins", f3CoinsSpent);
- } else if (sCleaned.contains("F4")) {
- f4CoinsSpent += coinsSpent;
- f4CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorFourCoins", f4CoinsSpent);
- } else if (sCleaned.contains("F5")) {
- f5CoinsSpent += coinsSpent;
- f5CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorFiveCoins", f5CoinsSpent);
- } else if (sCleaned.contains("F6")) {
- f6CoinsSpent += coinsSpent;
- f6CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorSixCoins", f6CoinsSpent);
- } else if (sCleaned.contains("F7")) {
- f7CoinsSpent += coinsSpent;
- f7CoinsSpentSession += coinsSpent;
- ConfigHandler.writeDoubleConfig("catacombs", "floorSevenCoins", f7CoinsSpent);
- }
- break;
- }
- }
- break;
- }
- }
- }
- }
+ public static long itemsChecked = 0;
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void onSound(PlaySoundEvent event) {
if (!Utils.inSkyblock) return;
if (event.name.equals("note.pling")) {
// Don't check twice within 3 seconds
- checkItemsNow = System.currentTimeMillis() / 1000;
+ long checkItemsNow = System.currentTimeMillis() / 1000;
if (checkItemsNow - itemsChecked < 3) return;
List<String> scoreboard = ScoreboardHandler.getSidebarLines();
@@ -1095,69 +28,42 @@ public class LootTracker {
// 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");
+ int itemNullSphere = Utils.getItems("Null Sphere");
+ int itemDerelictAshe = Utils.getItems("Derelict Ashe");
// If no items, are detected, allow check again. Should fix items not being found
- if (itemTeeth + itemWheels + itemWebs + itemTAP + itemRev + itemFoul > 0) {
+ if (itemTeeth + itemWebs + itemRev + itemNullSphere + itemDerelictAshe > 0) {
itemsChecked = System.currentTimeMillis() / 1000;
- wolfTeeth += itemTeeth;
- wolfWheels += itemWheels;
- spiderWebs += itemWebs;
- spiderTAP += itemTAP;
- zombieRevFlesh += itemRev;
- zombieFoulFlesh += itemFoul;
- wolfTeethSession += itemTeeth;
- wolfWheelsSession += itemWheels;
- spiderWebsSession += itemWebs;
- spiderTAPSession += itemTAP;
- zombieRevFleshSession += itemRev;
- zombieFoulFleshSession += itemFoul;
-
- ConfigHandler.writeIntConfig("wolf", "teeth", wolfTeeth);
- ConfigHandler.writeIntConfig("wolf", "wheel", wolfWheels);
- ConfigHandler.writeIntConfig("spider", "web", spiderWebs);
- ConfigHandler.writeIntConfig("spider", "tap", spiderTAP);
- ConfigHandler.writeIntConfig("zombie", "revFlesh", zombieRevFlesh);
- ConfigHandler.writeIntConfig("zombie", "foulFlesh", zombieFoulFlesh);
+ WolfTracker.wolfTeeth += itemTeeth;
+ SpiderTracker.spiderWebs += itemWebs;
+ ZombieTracker.zombieRevFlesh += itemRev;
+ EndermanTracker.endermanNullSpheres += itemNullSphere;
+ BlazeTracker.derelictAshes += itemDerelictAshe;
+ WolfTracker.wolfTeethSession += itemTeeth;
+ SpiderTracker.spiderWebsSession += itemWebs;
+ ZombieTracker.zombieRevFleshSession += itemRev;
+ EndermanTracker.endermanNullSpheresSession += itemNullSphere;
+ BlazeTracker.derelictAshesSession += itemDerelictAshe;
+
+ ConfigHandler.writeIntConfig("wolf", "teeth", WolfTracker.wolfTeeth);
+ ConfigHandler.writeIntConfig("spider", "web", SpiderTracker.spiderWebs);
+ ConfigHandler.writeIntConfig("zombie", "revFlesh", ZombieTracker.zombieRevFlesh);
+ ConfigHandler.writeIntConfig("enderman", "nullSpheres", EndermanTracker.endermanNullSpheres);
+ ConfigHandler.writeIntConfig("blaze", "derelictAshe", BlazeTracker.derelictAshes);
}
}
}
}
}
-
- public void increaseSeaCreatures() {
- if (empSCs != -1) {
- empSCs++;
- }
- if (empSCsSession != -1) {
- 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 (yetiSCs != -1) {
- yetiSCs++;
- }
- if (yetiSCsSession != -1) {
- yetiSCsSession++;
- }
- }
- }
- seaCreatures++;
- fishingMilestone++;
- seaCreaturesSession++;
- fishingMilestoneSession++;
- ConfigHandler.writeIntConfig("fishing", "seaCreature", seaCreatures);
- ConfigHandler.writeIntConfig("fishing", "milestone", fishingMilestone);
- ConfigHandler.writeIntConfig("fishing", "empSC", empSCs);
- ConfigHandler.writeIntConfig("fishing", "yetiSC", yetiSCs);
+ public static int getAmountfromMessage(String message) {
+ if (message.charAt(message.indexOf("(") + 2) == 'x' || message.charAt(message.indexOf("(") + 3) == 'x') {
+ return Integer.parseInt(message.substring(message.indexOf("(") + 1, message.indexOf("x")));
+ } else {
+ return 1;
+ }
}
}
diff --git a/src/main/java/me/Danker/features/loot/MythologicalTracker.java b/src/main/java/me/Danker/features/loot/MythologicalTracker.java
new file mode 100644
index 0000000..9a98466
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/MythologicalTracker.java
@@ -0,0 +1,101 @@
+package me.Danker.features.loot;
+
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.util.List;
+
+public class MythologicalTracker {
+
+ public static double mythCoins;
+ public static int griffinFeathers;
+ public static int crownOfGreeds;
+ public static int washedUpSouvenirs;
+ public static int minosHunters;
+ public static int siameseLynxes;
+ public static int minotaurs;
+ public static int gaiaConstructs;
+ public static int minosChampions;
+ public static int minosInquisitors;
+
+ public static double mythCoinsSession = 0;
+ public static int griffinFeathersSession = 0;
+ public static int crownOfGreedsSession = 0;
+ public static int washedUpSouvenirsSession = 0;
+ public static int minosHuntersSession = 0;
+ public static int siameseLynxesSession = 0;
+ public static int minotaursSession = 0;
+ public static int gaiaConstructsSession = 0;
+ public static int minosChampionsSession = 0;
+ public static int minosInquisitorsSession = 0;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ if (message.contains("You dug out")) {
+ if (message.contains(" coins!")) {
+ double coinsEarned = Double.parseDouble(message.replaceAll("[^\\d]", ""));
+ mythCoins += coinsEarned;
+ mythCoinsSession += coinsEarned;
+ ConfigHandler.writeDoubleConfig("mythological", "coins", mythCoins);
+ } else if (message.contains("a Griffin Feather!")) {
+ griffinFeathers++;
+ griffinFeathersSession++;
+ ConfigHandler.writeIntConfig("mythological", "griffinFeather", griffinFeathers);
+ } else if (message.contains("a Crown of Greed!")) {
+ crownOfGreeds++;
+ crownOfGreedsSession++;
+ ConfigHandler.writeIntConfig("mythological", "crownOfGreed", crownOfGreeds);
+ } else if (message.contains("a Washed-up Souvenir!")) {
+ washedUpSouvenirs++;
+ washedUpSouvenirsSession++;
+ ConfigHandler.writeIntConfig("mythological", "washedUpSouvenir", washedUpSouvenirs);
+ } else if (message.contains("a Minos Hunter!")) {
+ minosHunters++;
+ minosHuntersSession++;
+ ConfigHandler.writeIntConfig("mythological", "minosHunter", minosHunters);
+ } else if (message.contains("Siamese Lynxes!")) {
+ siameseLynxes++;
+ siameseLynxesSession++;
+ ConfigHandler.writeIntConfig("mythological", "siameseLynx", siameseLynxes);
+ } else if (message.contains("a Minotaur!")) {
+ minotaurs++;
+ minotaursSession++;
+ ConfigHandler.writeIntConfig("mythological", "minotaur", minotaurs);
+ } else if (message.contains("a Gaia Construct!")) {
+ gaiaConstructs++;
+ gaiaConstructsSession++;
+ ConfigHandler.writeIntConfig("mythological", "gaiaConstruct", gaiaConstructs);
+ } else if (message.contains("a Minos Champion!")) {
+ Minecraft mc = Minecraft.getMinecraft();
+ List<Entity> listWorldEntity = mc.theWorld.getLoadedEntityList();
+ for (Entity entity : listWorldEntity) {
+ if (entity.getName().contains("Minos Champion")) {
+ minosChampions++;
+ minosChampionsSession++;
+ ConfigHandler.writeIntConfig("mythological", "minosChampion", minosChampions);
+ } else if (entity.getName().contains("Minos Inquisitor")) {
+ minosInquisitors++;
+ minosInquisitorsSession++;
+ ConfigHandler.writeIntConfig("mythological", "minosInquisitor", minosInquisitors);
+ }
+ }
+ } else if (message.contains("a Minos Inquisitor!")) {
+ minosInquisitors++;
+ minosInquisitorsSession++;
+ ConfigHandler.writeIntConfig("mythological", "minosInquisitor", minosInquisitors);
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/SpiderTracker.java b/src/main/java/me/Danker/features/loot/SpiderTracker.java
new file mode 100644
index 0000000..34ee695
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/SpiderTracker.java
@@ -0,0 +1,110 @@
+package me.Danker.features.loot;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class SpiderTracker {
+
+ public static int spiderTarantulas;
+ public static int spiderWebs;
+ public static int spiderTAP;
+ public static int spiderTAPDrops;
+ public static int spiderBites;
+ public static int spiderCatalysts;
+ public static int spiderBooks;
+ public static int spiderSwatters;
+ public static int spiderTalismans;
+ public static int spiderMosquitos;
+ public static double spiderTime;
+ public static int spiderBosses;
+
+ public static int spiderTarantulasSession = 0;
+ public static int spiderWebsSession = 0;
+ public static int spiderTAPSession = 0;
+ public static int spiderTAPDropsSession = 0;
+ public static int spiderBitesSession = 0;
+ public static int spiderCatalystsSession = 0;
+ public static int spiderBooksSession = 0;
+ public static int spiderSwattersSession = 0;
+ public static int spiderTalismansSession = 0;
+ public static int spiderMosquitosSession = 0;
+ public static double spiderTimeSession = -1;
+ public static int spiderBossesSession = -1;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ boolean rng = false;
+
+ if (message.contains(" Spider Slayer LVL ")) { // Spider
+ spiderTarantulas++;
+ spiderTarantulasSession++;
+ if (spiderBosses != -1) {
+ spiderBosses++;
+ }
+ if (spiderBossesSession != -1) {
+ spiderBossesSession++;
+ }
+ ConfigHandler.writeIntConfig("spider", "tarantulas", spiderTarantulas);
+ ConfigHandler.writeIntConfig("spider", "bossRNG", spiderBosses);
+ } else if (message.contains("RARE DROP! (") && message.contains("Toxic Arrow Poison)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ spiderTAP += amount;
+ spiderTAPSession += amount;
+ spiderTAPDrops++;
+ spiderTAPDropsSession++;
+ ConfigHandler.writeIntConfig("spider", "tap", spiderTAP);
+ ConfigHandler.writeIntConfig("spider", "tapDrops", spiderTAPDrops);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Bite Rune I)")) {
+ spiderBites++;
+ spiderBitesSession++;
+ ConfigHandler.writeIntConfig("spider", "bite", spiderBites);
+ } else if (message.contains("VERY RARE DROP! (Bane of Arthropods VI)")) {
+ spiderBooks++;
+ spiderBooksSession++;
+ ConfigHandler.writeIntConfig("spider", "book", spiderBooks);
+ } else if (message.contains("VERY RARE DROP! (Spider Catalyst)")) {
+ spiderCatalysts++;
+ spiderCatalystsSession++;
+ ConfigHandler.writeIntConfig("spider", "catalyst", spiderCatalysts);
+ } else if (message.contains("CRAZY RARE DROP! (Fly Swatter)")) {
+ rng = true;
+ spiderSwatters++;
+ spiderSwattersSession++;
+ ConfigHandler.writeIntConfig("spider", "swatter", spiderSwatters);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.LIGHT_PURPLE + "FLY SWATTER!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (Tarantula Talisman")) {
+ rng = true;
+ spiderTalismans++;
+ spiderTalismansSession++;
+ ConfigHandler.writeIntConfig("spider", "talisman", spiderTalismans);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "TARANTULA TALISMAN!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (Digested Mosquito)")) {
+ rng = true;
+ spiderMosquitos++;
+ spiderMosquitosSession++;
+ ConfigHandler.writeIntConfig("spider", "mosquito", spiderMosquitos);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "DIGESTED MOSQUITO!", 5);
+ }
+
+ if (rng) {
+ spiderTime = System.currentTimeMillis() / 1000;
+ spiderBosses = 0;
+ spiderTimeSession = System.currentTimeMillis() / 1000;
+ spiderBossesSession = 0;
+ ConfigHandler.writeDoubleConfig("spider", "timeRNG", spiderTime);
+ ConfigHandler.writeIntConfig("spider", "bossRNG", 0);
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/WolfTracker.java b/src/main/java/me/Danker/features/loot/WolfTracker.java
new file mode 100644
index 0000000..449a3b4
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/WolfTracker.java
@@ -0,0 +1,112 @@
+package me.Danker.features.loot;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class WolfTracker {
+
+ public static int wolfSvens;
+ public static int wolfTeeth;
+ public static int wolfWheels;
+ public static int wolfWheelsDrops;
+ public static int wolfSpirits;
+ public static int wolfBooks;
+ public static int wolfEggs;
+ public static int wolfCoutures;
+ public static int wolfBaits;
+ public static int wolfFluxes;
+ public static double wolfTime;
+ public static int wolfBosses;
+
+ public static int wolfSvensSession = 0;
+ public static int wolfTeethSession = 0;
+ public static int wolfWheelsSession = 0;
+ public static int wolfWheelsDropsSession = 0;
+ public static int wolfSpiritsSession = 0;
+ public static int wolfBooksSession = 0;
+ public static int wolfEggsSession = 0;
+ public static int wolfCouturesSession = 0;
+ public static int wolfBaitsSession = 0;
+ public static int wolfFluxesSession = 0;
+ public static double wolfTimeSession = -1;
+ public static int wolfBossesSession = -1;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ boolean rng = false;
+
+ if (message.contains(" Wolf Slayer LVL ")) {
+ wolfSvens++;
+ wolfSvensSession++;
+ if (wolfBosses != -1) {
+ wolfBosses++;
+ }
+ if (wolfBossesSession != -1) {
+ wolfBossesSession++;
+ }
+ ConfigHandler.writeIntConfig("wolf", "svens", wolfSvens);
+ ConfigHandler.writeIntConfig("wolf", "bossRNG", wolfBosses);
+ } else if (message.contains("RARE DROP! (") && message.contains("Hamster Wheel)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ wolfWheels += amount;
+ wolfWheelsSession += amount;
+ wolfWheelsDrops++;
+ wolfWheelsDropsSession++;
+ ConfigHandler.writeIntConfig("wolf", "wheel", wolfWheels);
+ ConfigHandler.writeIntConfig("wolf", "wheelDrops", wolfWheelsDrops);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Spirit Rune I)")) { // Removing the unicode here *should* fix rune drops not counting
+ wolfSpirits++;
+ wolfSpiritsSession++;
+ ConfigHandler.writeIntConfig("wolf", "spirit", wolfSpirits);
+ } else if (message.contains("VERY RARE DROP! (Critical VI)")) {
+ wolfBooks++;
+ wolfBooksSession++;
+ ConfigHandler.writeIntConfig("wolf", "book", wolfBooks);
+ } else if (message.contains("CRAZY RARE DROP! (Red Claw Egg)")) {
+ rng = true;
+ wolfEggs++;
+ wolfEggsSession++;
+ ConfigHandler.writeIntConfig("wolf", "egg", wolfEggs);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_RED + "RED CLAW EGG!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Couture Rune I)")) {
+ rng = true;
+ wolfCoutures++;
+ wolfCouturesSession++;
+ ConfigHandler.writeIntConfig("wolf", "couture", wolfCoutures);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "COUTURE RUNE!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (Grizzly Bait)") || message.contains("CRAZY RARE DROP! (Rename Me)")) { // How did Skyblock devs even manage to make this item Rename Me
+ rng = true;
+ wolfBaits++;
+ wolfBaitsSession++;
+ ConfigHandler.writeIntConfig("wolf", "bait", wolfBaits);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.AQUA + "GRIZZLY BAIT!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (Overflux Capacitor)")) {
+ rng = true;
+ wolfFluxes++;
+ wolfFluxesSession++;
+ ConfigHandler.writeIntConfig("wolf", "flux", wolfFluxes);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "OVERFLUX CAPACITOR!", 5);
+ }
+
+ if (rng) {
+ wolfTime = System.currentTimeMillis() / 1000;
+ wolfBosses = 0;
+ wolfTimeSession = System.currentTimeMillis() / 1000;
+ wolfBossesSession = 0;
+ ConfigHandler.writeDoubleConfig("wolf", "timeRNG", wolfTime);
+ ConfigHandler.writeIntConfig("wolf", "bossRNG", 0);
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/loot/ZombieTracker.java b/src/main/java/me/Danker/features/loot/ZombieTracker.java
new file mode 100644
index 0000000..1d71222
--- /dev/null
+++ b/src/main/java/me/Danker/features/loot/ZombieTracker.java
@@ -0,0 +1,145 @@
+package me.Danker.features.loot;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class ZombieTracker {
+
+ public static int zombieRevs;
+ public static int zombieRevFlesh;
+ public static int zombieRevViscera;
+ public static int zombieFoulFlesh;
+ public static int zombieFoulFleshDrops;
+ public static int zombiePestilences;
+ public static int zombieUndeadCatas;
+ public static int zombieBooks;
+ public static int zombieBooksT7;
+ public static int zombieBeheadeds;
+ public static int zombieRevCatas;
+ public static int zombieSnakes;
+ public static int zombieScythes;
+ public static int zombieShards;
+ public static int zombieWardenHearts;
+ public static double zombieTime;
+ public static int zombieBosses;
+
+ public static int zombieRevsSession = 0;
+ public static int zombieRevFleshSession = 0;
+ public static int zombieRevVisceraSession = 0;
+ public static int zombieFoulFleshSession = 0;
+ public static int zombieFoulFleshDropsSession = 0;
+ public static int zombiePestilencesSession = 0;
+ public static int zombieUndeadCatasSession = 0;
+ public static int zombieBooksSession = 0;
+ public static int zombieBooksT7Session = 0;
+ public static int zombieBeheadedsSession = 0;
+ public static int zombieRevCatasSession = 0;
+ public static int zombieSnakesSession = 0;
+ public static int zombieScythesSession = 0;
+ public static int zombieShardsSession = 0;
+ public static int zombieWardenHeartsSession = 0;
+ public static double zombieTimeSession = -1;
+ public static int zombieBossesSession = -1;
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+
+ if (!Utils.inSkyblock) return;
+ if (event.type == 2) return;
+ if (message.contains(":")) return;
+
+ boolean rng = false;
+
+ if (message.contains(" Zombie Slayer LVL ")) { // Zombie
+ zombieRevs++;
+ zombieRevsSession++;
+ if (zombieBosses != -1) {
+ zombieBosses++;
+ }
+ if (zombieBossesSession != 1) {
+ zombieBossesSession++;
+ }
+ ConfigHandler.writeIntConfig("zombie", "revs", zombieRevs);
+ ConfigHandler.writeIntConfig("zombie", "bossRNG", zombieBosses);
+ } else if (message.contains("RARE DROP! (") && message.contains("Revenant Viscera)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ zombieRevViscera += amount;
+ zombieRevVisceraSession += amount;
+ ConfigHandler.writeIntConfig("zombie", "revViscera", zombieRevViscera);
+ } else if (message.contains("RARE DROP! (") && message.contains("Foul Flesh)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ zombieFoulFlesh += amount;
+ zombieFoulFleshSession += amount;
+ zombieFoulFleshDrops++;
+ zombieFoulFleshDropsSession++;
+ ConfigHandler.writeIntConfig("zombie", "foulFlesh", zombieFoulFlesh);
+ ConfigHandler.writeIntConfig("zombie", "foulFleshDrops", zombieFoulFleshDrops);
+ } else if (message.contains("VERY RARE DROP! (Revenant Catalyst)")) {
+ zombieRevCatas++;
+ zombieRevCatasSession++;
+ ConfigHandler.writeIntConfig("zombie", "revCatalyst", zombieRevCatas);
+ } else if (message.contains("VERY RARE DROP! (") && message.contains(" Pestilence Rune I)")) {
+ zombiePestilences++;
+ zombiePestilencesSession++;
+ ConfigHandler.writeIntConfig("zombie", "pestilence", zombiePestilences);
+ } else if (message.contains("VERY RARE DROP! (Smite VI)")) {
+ zombieBooks++;
+ zombieBooksSession++;
+ ConfigHandler.writeIntConfig("zombie", "book", zombieBooks);
+ } else if (message.contains("VERY RARE DROP! (Smite VII)")) {
+ zombieBooksT7++;
+ zombieBooksT7Session++;
+ ConfigHandler.writeIntConfig("zombie", "bookT7", zombieBooksT7);
+ } else if (message.contains("VERY RARE DROP! (Undead Catalyst)")) {
+ zombieUndeadCatas++;
+ zombieUndeadCatasSession++;
+ ConfigHandler.writeIntConfig("zombie", "undeadCatalyst", zombieUndeadCatas);
+ } else if (message.contains("CRAZY RARE DROP! (Beheaded Horror)")) {
+ rng = true;
+ zombieBeheadeds++;
+ zombieBeheadedsSession++;
+ ConfigHandler.writeIntConfig("zombie", "beheaded", zombieBeheadeds);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_PURPLE + "BEHEADED HORROR!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (") && message.contains(" Snake Rune I)")) {
+ rng = true;
+ zombieSnakes++;
+ zombieSnakesSession++;
+ ConfigHandler.writeIntConfig("zombie", "snake", zombieSnakes);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.DARK_GREEN + "SNAKE RUNE!", 3);
+ } else if (message.contains("CRAZY RARE DROP! (Scythe Blade)")) {
+ rng = true;
+ zombieScythes++;
+ zombieScythesSession++;
+ ConfigHandler.writeIntConfig("zombie", "scythe", zombieScythes);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.GOLD + "SCYTHE BLADE!", 5);
+ } else if (message.contains("CRAZY RARE DROP! (Shard of the Shredded)")) {
+ rng = true;
+ zombieShards++;
+ zombieShardsSession++;
+ ConfigHandler.writeIntConfig("zombie", "shard", zombieShards);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "SHARD OF THE SHREDDED!", 5);
+ } else if (message.contains("INSANE DROP! (Warden Heart)") || message.contains("CRAZY RARE DROP! (Warden Heart)")) {
+ rng = true;
+ zombieWardenHearts++;
+ zombieWardenHeartsSession++;
+ ConfigHandler.writeIntConfig("zombie", "heart", zombieWardenHearts);
+ if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "WARDEN HEART!", 5);
+ }
+
+ if (rng) {
+ zombieTime = System.currentTimeMillis() / 1000;
+ zombieBosses = 0;
+ zombieTimeSession = System.currentTimeMillis() / 1000;
+ zombieBossesSession = 0;
+ ConfigHandler.writeDoubleConfig("zombie", "timeRNG", zombieTime);
+ ConfigHandler.writeIntConfig("zombie", "bossRNG", 0);
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/ArrowTerminalSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/ArrowTerminalSolver.java
new file mode 100644
index 0000000..14870f2
--- /dev/null
+++ b/src/main/java/me/Danker/features/puzzlesolvers/ArrowTerminalSolver.java
@@ -0,0 +1,55 @@
+package me.Danker.features.puzzlesolvers;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.events.PacketWriteEvent;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityItemFrame;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.network.play.client.C02PacketUseEntity;
+import net.minecraft.util.BlockPos;
+import net.minecraftforge.event.entity.player.EntityInteractEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+public class ArrowTerminalSolver {
+
+ @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);
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onPacket(PacketWriteEvent event) {
+ if (ToggleCommand.itemFrameOnSeaLanternsToggled && Utils.inDungeons && event.packet instanceof C02PacketUseEntity) {
+ Minecraft mc = Minecraft.getMinecraft();
+ C02PacketUseEntity packet = (C02PacketUseEntity) event.packet;
+ Entity entityHit = packet.getEntityFromWorld(mc.theWorld);
+ if (entityHit instanceof EntityItemFrame) {
+ EntityItemFrame itemFrame = (EntityItemFrame) entityHit;
+ ItemStack item = itemFrame.getDisplayedItem();
+ if (item != null && item.getItem() == Items.arrow) {
+ BlockPos blockPos = Utils.getBlockUnderItemFrame(itemFrame);
+ if (mc.theWorld.getBlockState(blockPos).getBlock() == Blocks.sea_lantern) {
+ event.setCanceled(true);
+ }
+ }
+ }
+ }
+
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/BlazeSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/BlazeSolver.java
index 0910fc7..b76e3ca 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/BlazeSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/BlazeSolver.java
@@ -2,13 +2,14 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
+import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.Entity;
-import net.minecraft.util.AxisAlignedBB;
-import net.minecraft.util.BlockPos;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.StringUtils;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.*;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.event.world.WorldEvent;
@@ -21,11 +22,15 @@ public class BlazeSolver {
static Entity highestBlaze = null;
static Entity lowestBlaze = null;
+ static boolean higherToLower = false;
+ static boolean foundChest = false;
public static int LOWEST_BLAZE_COLOUR;
public static int HIGHEST_BLAZE_COLOUR;
@SubscribeEvent
public void onWorldChange(WorldEvent.Load event) {
+ higherToLower = false;
+ foundChest = false;
lowestBlaze = null;
highestBlaze = null;
}
@@ -34,9 +39,13 @@ public class BlazeSolver {
public void onTick(TickEvent.ClientTickEvent event) {
if (event.phase != TickEvent.Phase.START) return;
- World world = Minecraft.getMinecraft().theWorld;
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
+ World world = mc.theWorld;
+
if (DankersSkyblockMod.tickAmount % 4 == 0) {
- if (ToggleCommand.blazeToggled && Utils.inDungeons && world != null) {
+ if (ToggleCommand.blazeToggled && Utils.inDungeons && world != null && player != null) {
+
List<Entity> entities = world.getLoadedEntityList();
int highestHealth = 0;
highestBlaze = null;
@@ -61,6 +70,29 @@ public class BlazeSolver {
}
}
}
+
+ if (!foundChest) {
+ new Thread(() -> {
+ Iterable<BlockPos> blocks = BlockPos.getAllInBox(new BlockPos(player.posX - 27, 69, player.posZ - 27), new BlockPos(player.posX + 27, 70, player.posZ + 27));
+ for (BlockPos blockPos : blocks) {
+ Block block = world.getBlockState(blockPos).getBlock();
+ if (block == Blocks.chest && world.getBlockState(blockPos.add(0, 1, 0)).getBlock() == Blocks.iron_bars) {
+ Block blockbelow = world.getBlockState(blockPos.add(0, -1, 0)).getBlock();
+ if (blockbelow == Blocks.stone) {
+ higherToLower = false;
+ foundChest = true;
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Chest located. Sorting from lowest to highest."));
+ } else if (blockbelow == Blocks.air) {
+ higherToLower = true;
+ foundChest = true;
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Chest located. Sorting from highest to lowest."));
+ } else {
+ return;
+ }
+ }
+ }
+ }).start();
+ }
}
}
}
@@ -68,19 +100,33 @@ public class BlazeSolver {
@SubscribeEvent
public void onWorldRender(RenderWorldLastEvent event) {
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 (foundChest) {
+ if (lowestBlaze != null && !higherToLower) {
+ BlockPos stringPos = new BlockPos(lowestBlaze.posX, lowestBlaze.posY + 1, lowestBlaze.posZ);
+ RenderUtils.draw3DString(stringPos, EnumChatFormatting.BOLD + "Shoot me!", 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);
+ RenderUtils.draw3DBox(aabb, LOWEST_BLAZE_COLOUR, event.partialTicks);
+ }
+ if (highestBlaze != null && higherToLower) {
+ BlockPos stringPos = new BlockPos(highestBlaze.posX, highestBlaze.posY + 1, highestBlaze.posZ);
+ RenderUtils.draw3DString(stringPos, EnumChatFormatting.BOLD + "Shoot me!", LOWEST_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);
+ RenderUtils.draw3DBox(aabb, LOWEST_BLAZE_COLOUR, event.partialTicks);
+ }
+ } else {
+ if (lowestBlaze != null) {
+ BlockPos stringPos = new BlockPos(lowestBlaze.posX, lowestBlaze.posY + 1, lowestBlaze.posZ);
+ RenderUtils.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);
+ RenderUtils.draw3DBox(aabb, LOWEST_BLAZE_COLOUR, event.partialTicks);
+ }
+ if (highestBlaze != null) {
+ BlockPos stringPos = new BlockPos(highestBlaze.posX, highestBlaze.posY + 1, highestBlaze.posZ);
+ RenderUtils.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);
+ RenderUtils.draw3DBox(aabb, HIGHEST_BLAZE_COLOUR, event.partialTicks);
+ }
}
}
}
-
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java b/src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java
new file mode 100644
index 0000000..7f76059
--- /dev/null
+++ b/src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java
@@ -0,0 +1,93 @@
+package me.Danker.features.puzzlesolvers;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ChestSlotClickedEvent;
+import me.Danker.utils.Utils;
+import net.minecraft.init.Blocks;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import org.lwjgl.input.Keyboard;
+
+public class BlockWrongTerminalClicks {
+
+ @SubscribeEvent
+ public void onSlotClick(ChestSlotClickedEvent event) {
+ if (ToggleCommand.blockWrongTerminalClicksToggled && Utils.inDungeons) {
+ IInventory inventory = event.inventory;
+ String inventoryName = event.inventoryName;
+ Slot slot = event.slot;
+ ItemStack item = event.item;
+ 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 "Click in order!":
+
+ if (slot.getSlotIndex() > 35) {
+ break;
+ }
+
+ if ((item.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane))) {
+ shouldCancel = true;
+ break;
+ }
+ if (item.getItemDamage() != 14) {
+ shouldCancel = true;
+ break;
+ }
+ int needed = ClickInOrderSolver.terminalNumberNeeded[0];
+ if (needed == 0) break;
+ shouldCancel = needed != -1 && item.stackSize != needed;
+ break;
+ case "Change all to same color!":
+ if (SameColourSolver.foundColour) {
+ shouldCancel = SameColourSolver.getDistance(item.getItemDamage(), SameColourSolver.correctColour) == 0;
+ }
+ break;
+ case "Click the button on time!":
+ int correctPos = -1;
+ for (int i = 0; i <= 50; i++) {
+ ItemStack stack = inventory.getStackInSlot(i);
+ if (stack == null || stack.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane)) continue;
+
+ if (stack.getItemDamage() == 10) {
+ correctPos = i % 9;
+ } else if (stack.getItemDamage() == 5 && correctPos != -1) {
+ shouldCancel = i % 9 != correctPos;
+ break;
+ }
+ }
+ 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 (SelectAllColourSolver.terminalColorNeeded == null) return;
+ String itemName = StringUtils.stripControlCodes(item.getDisplayName()).toUpperCase();
+ shouldCancel = !(itemName.contains(SelectAllColourSolver.terminalColorNeeded) ||
+ (SelectAllColourSolver.terminalColorNeeded.equals("SILVER") && itemName.contains("LIGHT GRAY")) ||
+ (SelectAllColourSolver.terminalColorNeeded.equals("WHITE") && (itemName.equals("WOOL") || itemName.equals("BONE MEAL"))) ||
+ (SelectAllColourSolver.terminalColorNeeded.equals("BLACK") && itemName.equals("INK SACK")) ||
+ (SelectAllColourSolver.terminalColorNeeded.equals("BLUE") && itemName.equals("LAPIS LAZULI")) ||
+ (SelectAllColourSolver.terminalColorNeeded.equals("BROWN") && itemName.equals("COCOA BEAN")));
+ }
+ }
+
+ event.setCanceled(shouldCancel && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL));
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/BoulderSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/BoulderSolver.java
index 0089038..3096e16 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/BoulderSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/BoulderSolver.java
@@ -3,6 +3,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
import me.Danker.utils.BoulderUtils;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -145,7 +146,7 @@ public class BoulderSolver {
int[] currentBlockArray = route.get(currentStep);
AxisAlignedBB currentBoulder = BoulderUtils.getBoulder(currentBlockArray[0], currentBlockArray[1], chest, boulderRoomDirection);
if (currentBoulder == null) return;
- Utils.drawFilled3DBox(currentBoulder, BOULDER_COLOUR, true, false, event.partialTicks);
+ RenderUtils.drawFilled3DBox(currentBoulder, BOULDER_COLOUR, true, false, event.partialTicks);
char direction;
switch (currentBlockArray[2]) {
case 1:
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/ChronomatronSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/ChronomatronSolver.java
index 208cf9b..7293f51 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/ChronomatronSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/ChronomatronSolver.java
@@ -4,7 +4,7 @@ import me.Danker.commands.ToggleCommand;
import me.Danker.events.ChestSlotClickedEvent;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
import me.Danker.handlers.TextRenderer;
-import me.Danker.utils.Utils;
+import me.Danker.utils.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.init.Blocks;
@@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.StringUtils;
import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import org.lwjgl.input.Keyboard;
import java.util.ArrayList;
import java.util.List;
@@ -32,10 +33,24 @@ public class ChronomatronSolver {
if (ToggleCommand.chronomatronToggled && event.inventoryName.startsWith("Chronomatron (")) {
IInventory inventory = event.inventory;
ItemStack item = event.item;
- if (item == null) return;
+
+ 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);
}
}
}
@@ -67,19 +82,13 @@ public class ChronomatronSolver {
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);
+
+ if (glass.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks))) {
+ RenderUtils.drawOnSlot(chestSize, glassSlot.xDisplayPosition, glassSlot.yDisplayPosition, CHRONOMATRON_NEXT + 0xE5000000);
+ } else if (chronomatronMouseClicks + 1 < chronomatronPattern.size() && glass.getDisplayName().equals(chronomatronPattern.get(chronomatronMouseClicks + 1))) {
+ RenderUtils.drawOnSlot(chestSize, glassSlot.xDisplayPosition, glassSlot.yDisplayPosition, CHRONOMATRON_NEXT_TO_NEXT + 0XBE000000);
}
+
}
}
} else if (invSlots.get(49).getStack().getDisplayName().equals("§aRemember the pattern!")) {
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/ClickInOrderSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/ClickInOrderSolver.java
index e503b37..1665ba7 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/ClickInOrderSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/ClickInOrderSolver.java
@@ -2,6 +2,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.commands.ToggleCommand;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
@@ -91,10 +92,10 @@ public class ClickInOrderSolver {
int chestSize = event.chestSize;
List<Slot> invSlots = event.slots;
Slot slot = invSlots.get(terminalNumberNeeded[1]);
- Utils.drawOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, CLICK_IN_ORDER_NEXT + 0xFF000000);
+ RenderUtils.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);
+ RenderUtils.drawOnSlot(chestSize, nextSlot.xDisplayPosition, nextSlot.yDisplayPosition, CLICK_IN_ORDER_NEXT_TO_NEXT + 0xFF000000);
}
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java
index cd6bcf4..e35abe3 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java
@@ -2,6 +2,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -81,9 +82,10 @@ public class CreeperSolver {
Vec3 pos1 = creeperLines.get(i)[0];
Vec3 pos2 = creeperLines.get(i)[1];
int colour = CREEPER_COLOURS[i % 10];
- Utils.draw3DLine(pos1, pos2, colour, 2, true, event.partialTicks);
- Utils.drawFilled3DBox(new AxisAlignedBB(pos1.xCoord - 0.51, pos1.yCoord - 0.51, pos1.zCoord - 0.51, pos1.xCoord + 0.51, pos1.yCoord + 0.51, pos1.zCoord + 0.51), colour, true, true, event.partialTicks);
- Utils.drawFilled3DBox(new AxisAlignedBB(pos2.xCoord - 0.51, pos2.yCoord - 0.51, pos2.zCoord - 0.51, pos2.xCoord + 0.51, pos2.yCoord + 0.51, pos2.zCoord + 0.51), colour, true, true, event.partialTicks);
+
+ if (ToggleCommand.creeperLinesToggled) RenderUtils.draw3DLine(pos1, pos2, colour, 2, true, event.partialTicks);
+ RenderUtils.drawFilled3DBox(new AxisAlignedBB(pos1.xCoord - 0.51, pos1.yCoord - 0.51, pos1.zCoord - 0.51, pos1.xCoord + 0.51, pos1.yCoord + 0.51, pos1.zCoord + 0.51), colour, true, true, event.partialTicks);
+ RenderUtils.drawFilled3DBox(new AxisAlignedBB(pos2.xCoord - 0.51, pos2.yCoord - 0.51, pos2.zCoord - 0.51, pos2.xCoord + 0.51, pos2.yCoord + 0.51, pos2.zCoord + 0.51), colour, true, true, event.partialTicks);
}
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/IceWalkSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/IceWalkSolver.java
index eaabf6e..fdcf503 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/IceWalkSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/IceWalkSolver.java
@@ -3,6 +3,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
import me.Danker.utils.IceWalkUtils;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -214,7 +215,7 @@ public class IceWalkSolver {
default:
return;
}
- Utils.draw3DLine(pos1, pos2, ICE_WALK_LINE_COLOUR, 5, true, event.partialTicks);
+ RenderUtils.draw3DLine(pos1, pos2, ICE_WALK_LINE_COLOUR, 5, true, event.partialTicks);
}
}
@@ -242,7 +243,7 @@ public class IceWalkSolver {
default:
return;
}
- Utils.draw3DLine(pos1, pos2, ICE_WALK_LINE_COLOUR, 5, true, event.partialTicks);
+ RenderUtils.draw3DLine(pos1, pos2, ICE_WALK_LINE_COLOUR, 5, true, event.partialTicks);
}
}
@@ -270,7 +271,7 @@ public class IceWalkSolver {
default:
return;
}
- Utils.draw3DLine(pos1, pos2, ICE_WALK_LINE_COLOUR, 5, true, event.partialTicks);
+ RenderUtils.draw3DLine(pos1, pos2, ICE_WALK_LINE_COLOUR, 5, true, event.partialTicks);
}
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java
index 6f02982..b947cdb 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java
@@ -4,7 +4,7 @@ import me.Danker.DankersSkyblockMod;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
@@ -38,7 +38,7 @@ public class LividSolver {
World world = Minecraft.getMinecraft().theWorld;
if (DankersSkyblockMod.tickAmount % 20 == 0) {
if (ToggleCommand.lividSolverToggled && Utils.inDungeons && !foundLivid && world != null) {
- if (Utils.isInScoreboard("The Catacombs (F5)")) {
+ if (Utils.currentFloor == Utils.DungeonFloor.F5 || Utils.currentFloor == Utils.DungeonFloor.M5) {
List<Entity> loadedLivids = new ArrayList<>();
List<Entity> entities = world.getLoadedEntityList();
for (Entity entity : entities) {
@@ -57,7 +57,7 @@ public class LividSolver {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (ToggleCommand.lividSolverToggled && foundLivid && livid != null) {
new TextRenderer(Minecraft.getMinecraft(), livid.getName().replace("" + EnumChatFormatting.BOLD, ""), MoveCommand.lividHpXY[0], MoveCommand.lividHpXY[1], ScaleCommand.lividHpScale);
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java
new file mode 100644
index 0000000..a3c1bc1
--- /dev/null
+++ b/src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java
@@ -0,0 +1,153 @@
+package me.Danker.features.puzzlesolvers;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.events.GuiChestBackgroundDrawnEvent;
+import me.Danker.utils.RenderUtils;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.init.Blocks;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.client.event.GuiOpenEvent;
+import net.minecraftforge.event.entity.player.ItemTooltipEvent;
+import net.minecraftforge.fml.common.eventhandler.EventPriority;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import org.apache.commons.lang3.math.NumberUtils;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class SameColourSolver {
+
+ public static boolean foundColour = false;
+ public static int correctColour = 0;
+ static List<Integer> colourLoop = Arrays.asList(14, 1, 4, 13, 11);
+
+ @SubscribeEvent(priority = EventPriority.LOW)
+ public void onTooltipLow(ItemTooltipEvent event) {
+ if (!ToggleCommand.sameColourToggled || !Utils.inDungeons) 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 (chestName.equals("Change all to same color!")) {
+ event.toolTip.clear();
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (!ToggleCommand.sameColourToggled || foundColour || !Utils.inDungeons) return;
+ if (event.phase != TickEvent.Phase.START) return;
+
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
+ 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 (chestName.equals("Change all to same color!")) {
+ int red = 0;
+ int orange = 0;
+ int yellow = 0;
+ int green = 0;
+ int blue = 0;
+
+ for (int i = 12; i <= 32; i++) {
+ ItemStack stack = invSlots.get(i).getStack();
+ if (stack == null || stack.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane)) continue;
+ if (stack.getItemDamage() == 7) continue;
+
+ switch (stack.getItemDamage()) {
+ case 1:
+ orange++;
+ break;
+ case 4:
+ yellow++;
+ break;
+ case 11:
+ blue++;
+ break;
+ case 13:
+ green++;
+ break;
+ case 14:
+ red++;
+ break;
+ }
+ }
+
+ int max = NumberUtils.max(new int[]{red, orange, yellow, green, blue});
+ if (max == red) {
+ correctColour = 14;
+ } else if (max == orange) {
+ correctColour = 1;
+ } else if (max == yellow) {
+ correctColour = 4;
+ } else if (max == green) {
+ correctColour = 13;
+ } else {
+ correctColour = 11;
+ }
+ foundColour = true;
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onGuiRender(GuiChestBackgroundDrawnEvent event) {
+ if (!ToggleCommand.sameColourToggled || !foundColour || !Utils.inDungeons) return;
+
+ if (event.displayName.equals("Change all to same color!")) {
+ int chestSize = event.chestSize;
+ List<Slot> invSlots = event.slots;
+
+ for (int i = 12; i <= 32; i++) {
+ Slot slot = invSlots.get(i);
+ ItemStack stack = slot.getStack();
+ if (stack == null || stack.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane)) continue;
+ if (stack.getItemDamage() == 7) continue;
+
+ int distance = getDistance(stack.getItemDamage(), correctColour);
+ if (distance == 0) continue;
+
+ RenderUtils.drawTextOnSlot(chestSize, slot.xDisplayPosition, slot.yDisplayPosition, "" + distance);
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onGuiOpen(GuiOpenEvent event) {
+ if (!(event.gui instanceof GuiChest)) {
+ foundColour = false;
+ correctColour = 0;
+ }
+ }
+
+ public static int getDistance(int colour, int endColour) {
+ int index = colourLoop.indexOf(colour);
+ int finalIndex = colourLoop.indexOf(endColour);
+ if (index == -1 || finalIndex == -1) return 0;
+
+ if (finalIndex < index) {
+ return finalIndex - index + 5;
+ }
+ return finalIndex - index;
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/SelectAllColourSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/SelectAllColourSolver.java
index 16125db..e43a971 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/SelectAllColourSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/SelectAllColourSolver.java
@@ -2,6 +2,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.commands.ToggleCommand;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.inventory.Slot;
@@ -45,7 +46,7 @@ public class SelectAllColourSolver {
(terminalColorNeeded.equals("BLACK") && itemName.equals("INK SACK")) ||
(terminalColorNeeded.equals("BLUE") && itemName.equals("LAPIS LAZULI")) ||
(terminalColorNeeded.equals("BROWN") && itemName.equals("COCOA BEAN"))) {
- Utils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0xBF40FF40);
+ RenderUtils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0xBF40FF40);
}
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/SilverfishSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/SilverfishSolver.java
index 575dcd3..541a298 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/SilverfishSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/SilverfishSolver.java
@@ -2,6 +2,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.SilverfishUtils;
import me.Danker.utils.Utils;
import net.minecraft.block.BlockHopper;
@@ -171,7 +172,7 @@ public class SilverfishSolver {
default:
return;
}
- Utils.draw3DLine(pos1, pos2, SILVERFISH_LINE_COLOUR, 5, true, event.partialTicks);
+ RenderUtils.draw3DLine(pos1, pos2, SILVERFISH_LINE_COLOUR, 5, true, event.partialTicks);
}
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/StartsWithSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/StartsWithSolver.java
index 8f15fa7..8b79af5 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/StartsWithSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/StartsWithSolver.java
@@ -2,6 +2,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.commands.ToggleCommand;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.inventory.Slot;
@@ -22,7 +23,7 @@ public class StartsWithSolver {
if (item == null) continue;
if (item.isItemEnchanted()) continue;
if (StringUtils.stripControlCodes(item.getDisplayName()).charAt(0) == letter) {
- Utils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0xBF40FF40);
+ RenderUtils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0xBF40FF40);
}
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/SuperpairsSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/SuperpairsSolver.java
index c6e1d76..6f532bd 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/SuperpairsSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/SuperpairsSolver.java
@@ -2,6 +2,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.commands.ToggleCommand;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
@@ -135,9 +136,7 @@ public class SuperpairsSolver {
ArrayList<Slot> slots = new ArrayList<>();
slotSet.forEach(slotNum -> slots.add(event.slots.get(slotNum)));
Color color = colorIterator.next();
- slots.forEach(slot -> {
- Utils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, color.getRGB());
- });
+ slots.forEach(slot -> RenderUtils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, color.getRGB()));
});
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/TeleportPadSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/TeleportPadSolver.java
new file mode 100644
index 0000000..8e03671
--- /dev/null
+++ b/src/main/java/me/Danker/features/puzzlesolvers/TeleportPadSolver.java
@@ -0,0 +1,45 @@
+package me.Danker.features.puzzlesolvers;
+
+import me.Danker.DankersSkyblockMod;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.util.BlockPos;
+import net.minecraft.world.World;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TeleportPadSolver {
+
+ static List<BlockPos> usedPads = new ArrayList<>();
+ static BlockPos finalPad = null;
+
+ @SubscribeEvent
+ public void onWorldChange(WorldEvent.Load event) {
+ usedPads.clear();
+ finalPad = null;
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase != TickEvent.Phase.START) return;
+
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
+ World world = mc.theWorld;
+
+ if (DankersSkyblockMod.tickAmount % 20 == 0) {
+
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldRender(RenderWorldLastEvent event) {
+
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java
index 500c8eb..d97509c 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java
@@ -3,6 +3,7 @@ package me.Danker.features.puzzlesolvers;
import com.google.gson.JsonArray;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
@@ -34,7 +35,7 @@ public class ThreeManSolver {
if (!Utils.inDungeons) return;
- if (ToggleCommand.threeManToggled && message.contains("[NPC]")) {
+ if (ToggleCommand.threeManToggled && message.startsWith("[NPC]")) {
if (DankersSkyblockMod.data != null && DankersSkyblockMod.data.has("threeman")) {
JsonArray riddleSolutions = DankersSkyblockMod.data.get("threeman").getAsJsonArray();
@@ -59,7 +60,7 @@ public class ThreeManSolver {
@SubscribeEvent
public void onWorldRender(RenderWorldLastEvent event) {
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, true, event.partialTicks);
+ RenderUtils.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, true, event.partialTicks);
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/TicTacToeSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/TicTacToeSolver.java
index 1b4a2e1..a50a7b8 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/TicTacToeSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/TicTacToeSolver.java
@@ -2,6 +2,7 @@ package me.Danker.features.puzzlesolvers;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.TicTacToeUtils;
import me.Danker.utils.Utils;
import net.minecraft.block.Block;
@@ -128,7 +129,7 @@ public class TicTacToeSolver {
@SubscribeEvent
public void onWorldRender(RenderWorldLastEvent event) {
if (ToggleCommand.ticTacToeToggled && correctTicTacToeButton != null) {
- Utils.draw3DBox(correctTicTacToeButton, 0x40FF40, event.partialTicks);
+ RenderUtils.draw3DBox(correctTicTacToeButton, 0x40FF40, event.partialTicks);
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/UltrasequencerSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/UltrasequencerSolver.java
index 3df6fc4..6608555 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/UltrasequencerSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/UltrasequencerSolver.java
@@ -1,17 +1,20 @@
package me.Danker.features.puzzlesolvers;
import me.Danker.commands.ToggleCommand;
+import me.Danker.events.ChestSlotClickedEvent;
import me.Danker.events.GuiChestBackgroundDrawnEvent;
-import me.Danker.utils.Utils;
+import me.Danker.utils.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.inventory.GuiChest;
import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.util.StringUtils;
import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
+import org.lwjgl.input.Keyboard;
import java.util.List;
@@ -50,6 +53,27 @@ public class UltrasequencerSolver {
}
@SubscribeEvent
+ public void onSlotClick(ChestSlotClickedEvent event) {
+ if (ToggleCommand.ultrasequencerToggled && event.inventoryName.startsWith("Ultrasequencer (")) {
+ IInventory inventory = event.inventory;
+ if (event.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);
+ } else if (inventory.getStackInSlot(49).getDisplayName().startsWith("§7Timer: §a")) {
+ if (clickInOrderSlots[lastUltraSequencerClicked] != null && event.slot.getSlotIndex() != clickInOrderSlots[lastUltraSequencerClicked].getSlotIndex()) {
+ if (event.isCancelable() && !Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && !Keyboard.isKeyDown(Keyboard.KEY_RCONTROL)) {
+ event.setCanceled(true);
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
public void onGuiRender(GuiChestBackgroundDrawnEvent event) {
if (ToggleCommand.ultrasequencerToggled && event.displayName.startsWith("Ultrasequencer (")) {
List<Slot> invSlots = event.slots;
@@ -66,12 +90,12 @@ public class UltrasequencerSolver {
}
if (clickInOrderSlots[lastUltraSequencerClicked] != null) {
Slot nextSlot = clickInOrderSlots[lastUltraSequencerClicked];
- Utils.drawOnSlot(event.chestSize, nextSlot.xDisplayPosition, nextSlot.yDisplayPosition, ULTRASEQUENCER_NEXT + 0xE5000000);
+ RenderUtils.drawOnSlot(event.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(event.chestSize, nextSlot.xDisplayPosition, nextSlot.yDisplayPosition, ULTRASEQUENCER_NEXT_TO_NEXT + 0xD7000000);
+ RenderUtils.drawOnSlot(event.chestSize, nextSlot.xDisplayPosition, nextSlot.yDisplayPosition, ULTRASEQUENCER_NEXT_TO_NEXT + 0xD7000000);
}
}
}
diff --git a/src/main/java/me/Danker/features/puzzlesolvers/WaterSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/WaterSolver.java
index 2be92f9..c3a379e 100644
--- a/src/main/java/me/Danker/features/puzzlesolvers/WaterSolver.java
+++ b/src/main/java/me/Danker/features/puzzlesolvers/WaterSolver.java
@@ -4,7 +4,7 @@ import me.Danker.DankersSkyblockMod;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
-import me.Danker.events.RenderOverlay;
+import me.Danker.events.RenderOverlayEvent;
import me.Danker.handlers.TextRenderer;
import me.Danker.utils.Utils;
import net.minecraft.block.Block;
@@ -153,7 +153,7 @@ public class WaterSolver {
}
@SubscribeEvent
- public void renderPlayerInfo(RenderOverlay event) {
+ public void renderPlayerInfo(RenderOverlayEvent event) {
if (ToggleCommand.waterToggled && Utils.inDungeons && waterAnswers != null) {
new TextRenderer(Minecraft.getMinecraft(), waterAnswers, MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], ScaleCommand.waterAnswerScale);
}
diff --git a/src/main/java/me/Danker/gui/CustomMusicGui.java b/src/main/java/me/Danker/gui/CustomMusicGui.java
index 505bf34..98210f5 100644
--- a/src/main/java/me/Danker/gui/CustomMusicGui.java
+++ b/src/main/java/me/Danker/gui/CustomMusicGui.java
@@ -1,6 +1,5 @@
package me.Danker.gui;
-import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
import me.Danker.features.CustomMusic;
import me.Danker.handlers.ConfigHandler;
@@ -12,11 +11,31 @@ import net.minecraft.client.gui.ScaledResolution;
public class CustomMusicGui extends GuiScreen {
+ private int page;
+
private GuiButton goBack;
+ private GuiButton backPage;
+ private GuiButton nextPage;
private GuiButton dungeonBossMusic;
private GuiButton bloodRoomMusic;
private GuiButton dungeonMusic;
+ private GuiButton hubMusic;
+ private GuiButton islandMusic;
+ private GuiButton dungeonHubMusic;
+ private GuiButton farmingIslandsMusic;
+ private GuiButton goldMineMusic;
+ private GuiButton deepCavernsMusic;
+ private GuiButton dwarvenMinesMusic;
+ private GuiButton crystalHollowsMusic;
+ private GuiButton spidersDenMusic;
+ private GuiButton crimsonIsleMusic;
+ private GuiButton endMusic;
+ private GuiButton parkMusic;
+
+ public CustomMusicGui(int page) {
+ this.page = page;
+ }
@Override
public boolean doesGuiPauseGame() {
@@ -32,13 +51,53 @@ public class CustomMusicGui extends GuiScreen {
int width = sr.getScaledWidth();
goBack = new GuiButton(0, 2, height - 30, 100, 20, "Go Back");
+ backPage = new GuiButton(0, width / 2 - 100, (int) (height * 0.8), 80, 20, "< Back");
+ nextPage = new GuiButton(0, width / 2 + 20, (int) (height * 0.8), 80, 20, "Next >");
+
dungeonMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Custom Dungeon Music: " + Utils.getColouredBoolean(ToggleCommand.dungeonMusic));
bloodRoomMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Custom Blood Room Music: " + Utils.getColouredBoolean(ToggleCommand.bloodRoomMusic));
dungeonBossMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Custom Dungeon Boss Music: " + Utils.getColouredBoolean(ToggleCommand.dungeonBossMusic));
+ hubMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Custom Hub Music: " + Utils.getColouredBoolean(ToggleCommand.hubMusic));
+ islandMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Custom Island Music: " + Utils.getColouredBoolean(ToggleCommand.islandMusic));
+ dungeonHubMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Custom Dungeon Hub Music: " + Utils.getColouredBoolean(ToggleCommand.dungeonHubMusic));
+ farmingIslandsMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Custom Farming Islands Music: " + Utils.getColouredBoolean(ToggleCommand.farmingIslandsMusic));
+ goldMineMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Custom Gold Mine Music: " + Utils.getColouredBoolean(ToggleCommand.goldMineMusic));
+ deepCavernsMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Custom Deep Caverns Music: " + Utils.getColouredBoolean(ToggleCommand.deepCavernsMusic));
+ dwarvenMinesMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Custom Dwarven Mines Music: " + Utils.getColouredBoolean(ToggleCommand.dwarvenMinesMusic));
+ crystalHollowsMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Custom Crystal Hollows Music: " + Utils.getColouredBoolean(ToggleCommand.crystalHollowsMusic));
+ spidersDenMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Custom Spider's Den Music: " + Utils.getColouredBoolean(ToggleCommand.spidersDenMusic));
+ crimsonIsleMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Custom Crimson Isle Music: " + Utils.getColouredBoolean(ToggleCommand.crimsonIsleMusic));
+ endMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Custom End Music: " + Utils.getColouredBoolean(ToggleCommand.endMusic));
+ parkMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Custom Park Music: " + Utils.getColouredBoolean(ToggleCommand.parkMusic));
+
+ switch (page) {
+ case 1:
+ this.buttonList.add(dungeonMusic);
+ this.buttonList.add(bloodRoomMusic);
+ this.buttonList.add(dungeonBossMusic);
+ this.buttonList.add(hubMusic);
+ this.buttonList.add(islandMusic);
+ this.buttonList.add(dungeonHubMusic);
+ this.buttonList.add(farmingIslandsMusic);
+ this.buttonList.add(nextPage);
+ break;
+ case 2:
+ this.buttonList.add(goldMineMusic);
+ this.buttonList.add(deepCavernsMusic);
+ this.buttonList.add(dwarvenMinesMusic);
+ this.buttonList.add(crystalHollowsMusic);
+ this.buttonList.add(spidersDenMusic);
+ this.buttonList.add(crimsonIsleMusic);
+ this.buttonList.add(endMusic);
+ this.buttonList.add(nextPage);
+ this.buttonList.add(backPage);
+ break;
+ case 3:
+ this.buttonList.add(parkMusic);
+ this.buttonList.add(backPage);
+ break;
+ }
- this.buttonList.add(dungeonMusic);
- this.buttonList.add(bloodRoomMusic);
- this.buttonList.add(dungeonBossMusic);
this.buttonList.add(goBack);
}
@@ -51,7 +110,11 @@ public class CustomMusicGui extends GuiScreen {
@Override
public void actionPerformed(GuiButton button) {
if (button == goBack) {
- DankersSkyblockMod.guiToOpen = "dankergui1";
+ mc.displayGuiScreen(new DankerGui(1, ""));
+ } else if (button == backPage) {
+ Minecraft.getMinecraft().displayGuiScreen(new CustomMusicGui(page - 1));
+ } else if (button == nextPage) {
+ Minecraft.getMinecraft().displayGuiScreen(new CustomMusicGui(page + 1));
} else if (button == dungeonBossMusic) {
ToggleCommand.dungeonBossMusic = !ToggleCommand.dungeonBossMusic;
CustomMusic.dungeonboss.stop();
@@ -67,6 +130,66 @@ public class CustomMusicGui extends GuiScreen {
CustomMusic.dungeon.stop();
ConfigHandler.writeBooleanConfig("toggles", "DungeonMusic", ToggleCommand.dungeonMusic);
dungeonMusic.displayString = "Custom Dungeon Music: " + Utils.getColouredBoolean(ToggleCommand.dungeonMusic);
+ } else if (button == hubMusic) {
+ ToggleCommand.hubMusic = !ToggleCommand.hubMusic;
+ CustomMusic.hub.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "HubMusic", ToggleCommand.hubMusic);
+ hubMusic.displayString = "Custom Hub Music: " + Utils.getColouredBoolean(ToggleCommand.hubMusic);
+ } else if (button == islandMusic) {
+ ToggleCommand.islandMusic = !ToggleCommand.islandMusic;
+ CustomMusic.island.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "IslandMusic", ToggleCommand.islandMusic);
+ islandMusic.displayString = "Custom Island Music: " + Utils.getColouredBoolean(ToggleCommand.islandMusic);
+ } else if (button == dungeonHubMusic) {
+ ToggleCommand.dungeonHubMusic = !ToggleCommand.dungeonHubMusic;
+ CustomMusic.dungeonHub.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "DungeonHubMusic", ToggleCommand.dungeonHubMusic);
+ dungeonHubMusic.displayString = "Custom Dungeon Hub Music: " + Utils.getColouredBoolean(ToggleCommand.dungeonHubMusic);
+ } else if (button == farmingIslandsMusic) {
+ ToggleCommand.farmingIslandsMusic = !ToggleCommand.farmingIslandsMusic;
+ CustomMusic.farmingIslands.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "FarmingIslandsMusic", ToggleCommand.farmingIslandsMusic);
+ farmingIslandsMusic.displayString = "Custom Farming Islands Music: " + Utils.getColouredBoolean(ToggleCommand.farmingIslandsMusic);
+ } else if (button == goldMineMusic) {
+ ToggleCommand.goldMineMusic = !ToggleCommand.goldMineMusic;
+ CustomMusic.goldMine.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "GoldMineMusic", ToggleCommand.goldMineMusic);
+ goldMineMusic.displayString = "Custom Gold Mine Music: " + Utils.getColouredBoolean(ToggleCommand.goldMineMusic);
+ } else if (button == deepCavernsMusic) {
+ ToggleCommand.deepCavernsMusic = !ToggleCommand.deepCavernsMusic;
+ CustomMusic.deepCaverns.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "DeepCavernsMusic", ToggleCommand.deepCavernsMusic);
+ deepCavernsMusic.displayString = "Custom Deep Caverns Music: " + Utils.getColouredBoolean(ToggleCommand.deepCavernsMusic);
+ } else if (button == dwarvenMinesMusic) {
+ ToggleCommand.dwarvenMinesMusic = !ToggleCommand.dwarvenMinesMusic;
+ CustomMusic.dwarvenMines.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "DwarvenMinesMusic", ToggleCommand.dwarvenMinesMusic);
+ dwarvenMinesMusic.displayString = "Custom Dwarven Mines Music: " + Utils.getColouredBoolean(ToggleCommand.dwarvenMinesMusic);
+ } else if (button == crystalHollowsMusic) {
+ ToggleCommand.crystalHollowsMusic = !ToggleCommand.crystalHollowsMusic;
+ CustomMusic.crystalHollows.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "CrystalHollowsMusic", ToggleCommand.crystalHollowsMusic);
+ crystalHollowsMusic.displayString = "Custom Crystal Hollows Music: " + Utils.getColouredBoolean(ToggleCommand.crystalHollowsMusic);
+ } else if (button == spidersDenMusic) {
+ ToggleCommand.spidersDenMusic = !ToggleCommand.spidersDenMusic;
+ CustomMusic.spidersDen.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "SpidersDenMusic", ToggleCommand.spidersDenMusic);
+ spidersDenMusic.displayString = "Custom Spider's Den Music: " + Utils.getColouredBoolean(ToggleCommand.spidersDenMusic);
+ } else if (button == crimsonIsleMusic) {
+ ToggleCommand.crimsonIsleMusic = !ToggleCommand.crimsonIsleMusic;
+ CustomMusic.crimsonIsle.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "BlazingFortressMusic", ToggleCommand.crimsonIsleMusic);
+ crimsonIsleMusic.displayString = "Custom Crimson Isle Music: " + Utils.getColouredBoolean(ToggleCommand.crimsonIsleMusic);
+ } else if (button == endMusic) {
+ ToggleCommand.endMusic = !ToggleCommand.endMusic;
+ CustomMusic.end.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "EndMusic", ToggleCommand.endMusic);
+ endMusic.displayString = "Custom End Music: " + Utils.getColouredBoolean(ToggleCommand.endMusic);
+ } else if (button == parkMusic) {
+ ToggleCommand.parkMusic = !ToggleCommand.parkMusic;
+ CustomMusic.park.stop();
+ ConfigHandler.writeBooleanConfig("toggles", "ParkMusic", ToggleCommand.parkMusic);
+ parkMusic.displayString = "Custom Park Music: " + Utils.getColouredBoolean(ToggleCommand.parkMusic);
}
}
diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java
index 11e8bfa..95c0629 100644
--- a/src/main/java/me/Danker/gui/DankerGui.java
+++ b/src/main/java/me/Danker/gui/DankerGui.java
@@ -1,10 +1,11 @@
package me.Danker.gui;
-import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
+import me.Danker.gui.alerts.AlertsGui;
import me.Danker.gui.buttons.FeatureButton;
+import me.Danker.gui.crystalhollowwaypoints.CrystalHollowWaypointsGui;
import me.Danker.handlers.ConfigHandler;
-import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
@@ -24,9 +25,9 @@ import java.util.List;
public class DankerGui extends GuiScreen {
- private int page;
- private List<GuiButton> allButtons = new ArrayList<>();
- private List<GuiButton> foundButtons = new ArrayList<>();
+ private final int page;
+ private final List<GuiButton> allButtons = new ArrayList<>();
+ private final List<GuiButton> foundButtons = new ArrayList<>();
String initSearchText;
private GuiButton closeGUI;
@@ -38,15 +39,19 @@ public class DankerGui extends GuiScreen {
private GuiTextField search;
private GuiButton changeDisplay;
+ private GuiButton onlySlayer;
private GuiButton puzzleSolvers;
private GuiButton experimentationTableSolvers;
private GuiButton skillTracker;
private GuiButton customMusic;
+ private GuiButton crystalHollowWaypoints;
+ private GuiButton alerts;
// Toggles
private GuiButton gparty;
private GuiButton coords;
private GuiButton goldenEnch;
private GuiButton slayerCount;
+ private GuiButton masterSPlusDisplay;
private GuiButton rngesusAlert;
private GuiButton splitFishing;
private GuiButton chatMaddox;
@@ -68,6 +73,22 @@ public class DankerGui extends GuiScreen {
private GuiButton giantHP;
private GuiButton hidePetCandy;
private GuiButton highlightCommissions;
+ private GuiButton customColouredNames;
+ private GuiButton endOfFarmAlert;
+ private GuiButton gemstoneLore;
+ private GuiButton autoAcceptReparty;
+ private GuiButton abilityCooldown;
+ private GuiButton dungeonTimer;
+ private GuiButton lowHealthNotify;
+ private GuiButton lividSolver;
+ private GuiButton stopSalvageStarred;
+ private GuiButton watcherReadyMessage;
+ private GuiButton flowerWeapons;
+ private GuiButton necronNotifications;
+ private GuiButton bonzoTimer;
+ private GuiButton dungeonScore;
+ private GuiButton hideArmour;
+ private GuiButton autoJoinSkyblock;
// Chat Messages
private GuiButton sceptreMessages;
private GuiButton midasStaffMessages;
@@ -76,14 +97,6 @@ public class DankerGui extends GuiScreen {
private GuiButton cooldownMessages;
private GuiButton manaMessages;
private GuiButton killComboMessages;
- // Dungeons
- private GuiButton dungeonTimer;
- private GuiButton lowHealthNotify;
- private GuiButton lividSolver;
- private GuiButton stopSalvageStarred;
- private GuiButton watcherReadyMessage;
- private GuiButton necronNotifications;
- private GuiButton bonzoTimer;
public DankerGui(int page, String searchText) {
this.page = page;
@@ -113,10 +126,13 @@ public class DankerGui extends GuiScreen {
search = new GuiTextField(0, this.fontRendererObj, width - 202, 5, 200, 20);
changeDisplay = new GuiButton(0, 0, 0, "Change Display Settings");
+ onlySlayer = new GuiButton(0, 0, 0, "Set Slayer Quest");
puzzleSolvers = new GuiButton(0, 0, 0, "Toggle Dungeons Puzzle Solvers");
experimentationTableSolvers = new GuiButton(0, 0, 0, "Toggle Experimentation Table Solvers");
skillTracker = new GuiButton(0, 0, 0, "Toggle Skill XP/Hour Tracking");
customMusic = new GuiButton(0, 0, 0, "Custom Music");
+ crystalHollowWaypoints = new GuiButton(0, 0, 0, "Crystal Hollows Waypoints");
+ alerts = new GuiButton(0, 0, 0, "Alerts");
outlineText = new FeatureButton("Outline Displayed Text: " + Utils.getColouredBoolean(ToggleCommand.outlineTextToggled), "Adds bold outline to on-screen text.");
pickBlock = new FeatureButton("Auto-Swap to Pick Block: " + Utils.getColouredBoolean(ToggleCommand.swapToPickBlockToggled), "Automatically changes left clicks to middle clicks.\nHelpful when lagging.");
coords = new FeatureButton("Coordinate/Angle Display: " + Utils.getColouredBoolean(ToggleCommand.coordsToggled), "Displays coordinates and angle.");
@@ -124,6 +140,7 @@ public class DankerGui extends GuiScreen {
cakeTimer = new FeatureButton("Cake Timer: " + Utils.getColouredBoolean(ToggleCommand.cakeTimerToggled), "Displays time until century cake buffs run out.");
skill50Display = new FeatureButton("Display Progress To Skill Level 50: " + Utils.getColouredBoolean(ToggleCommand.skill50DisplayToggled), "Display total progress to max skill level.");
slayerCount = new FeatureButton("Count Total 20% Drops: " + Utils.getColouredBoolean(ToggleCommand.slayerCountTotal), "Counts times dropped instead of amount dropped.\nE.x. Hamster Wheels: 40 -> Hamster Wheels: 10 times.");
+ masterSPlusDisplay = new FeatureButton("Display MM S+ Runs: " + Utils.getColouredBoolean(ToggleCommand.masterSPlusDisplay), "Dispay Master Mode S+ runs instead of S runs.");
spiritBearAlert = new FeatureButton("Spirit Bear Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.spiritBearAlerts), "Alert when Spirit Bear spawns.");
sceptreMessages = new FeatureButton("Spirit Sceptre Messages: " + Utils.getColouredBoolean(ToggleCommand.sceptreMessages), "Turn " + EnumChatFormatting.RED + "off" + EnumChatFormatting.RESET + " to hide Spirit Sceptre messages.");
midasStaffMessages = new FeatureButton("Midas Staff Messages: " + Utils.getColouredBoolean(ToggleCommand.midasStaffMessages), "Turn " + EnumChatFormatting.RED + "off" + EnumChatFormatting.RESET + " to hide Midas Staff messages.");
@@ -144,8 +161,9 @@ public class DankerGui extends GuiScreen {
dungeonTimer = new FeatureButton("Display Dungeon Timers: " + Utils.getColouredBoolean(ToggleCommand.dungeonTimerToggled), "Displays timing of certain dungeon objectives and other information.");
stopSalvageStarred = new FeatureButton("Stop Salvaging Starred Items: " + Utils.getColouredBoolean(ToggleCommand.stopSalvageStarredToggled), "Blocks salvaging starred items.");
watcherReadyMessage = new FeatureButton("Display Watcher Ready Message: " + Utils.getColouredBoolean(ToggleCommand.watcherReadyToggled), "Alerts when Watcher finishes spawning mobs.");
+ flowerWeapons = new FeatureButton("Prevent Placing FoT/Spirit Sceptre: " + Utils.getColouredBoolean(ToggleCommand.flowerWeaponsToggled), "Blocks placing Flower of Truth or Spirit Sceptre.");
notifySlayerSlain = new FeatureButton("Notify when Slayer Slain: " + Utils.getColouredBoolean(ToggleCommand.notifySlayerSlainToggled), "Alerts when slayer boss has been slain.");
- necronNotifications = new FeatureButton("Necron Phase Notifications: " + Utils.getColouredBoolean(ToggleCommand.necronNotificationsToggled), "Creates alert on different phases of the Necron fight.");
+ necronNotifications = new FeatureButton("Floor 7 Phase Notifications: " + Utils.getColouredBoolean(ToggleCommand.necronNotificationsToggled), "Creates alert on different phases of the floor 7 fight.");
bonzoTimer = new FeatureButton("Bonzo's Mask Timer: " + Utils.getColouredBoolean(ToggleCommand.bonzoTimerToggled), "Displays cooldown of Bonzo Mask ability.");
autoSkillTracker = new FeatureButton("Auto Start/Stop Skill Tracker: " + Utils.getColouredBoolean(ToggleCommand.autoSkillTrackerToggled), "Automatically pauses skill tracker when opening a gui.");
melodyTooltips = new FeatureButton("Hide tooltips in Melody's Harp: " + Utils.getColouredBoolean(ToggleCommand.melodyTooltips), "Hides tooltips in Melody's Harp.");
@@ -156,13 +174,24 @@ public class DankerGui extends GuiScreen {
giantHP = new FeatureButton("Display Giant HP: " + Utils.getColouredBoolean(ToggleCommand.giantHP), "Displays health of Sadan's giants during F6 bossfight and F7 blood room.");
hidePetCandy = new FeatureButton("Hide Pet Candy: " + Utils.getColouredBoolean(ToggleCommand.hidePetCandy), "Hide pet candy in pet tooltips.");
highlightCommissions = new FeatureButton("Highlight Commissions: " + Utils.getColouredBoolean(ToggleCommand.highlightCommissions), "Show which commissions are completed.");
+ customColouredNames = new FeatureButton("Custom Name Colors: " + Utils.getColouredBoolean(ToggleCommand.customColouredNames), "Replaces some player's usernames with a custom color.");
+ endOfFarmAlert = new FeatureButton("Alert When Reaching End of Farm: " + Utils.getColouredBoolean(ToggleCommand.endOfFarmAlert), "Alerts when you go past coords set with /dsmfarmlength.");
+ gemstoneLore = new FeatureButton("Applied Gemstones in Lore: " + Utils.getColouredBoolean(ToggleCommand.gemstoneLore), "Adds applied gemstones to item tooltip.");
+ autoAcceptReparty = new FeatureButton("Auto Accept Reparty: " + Utils.getColouredBoolean(ToggleCommand.autoAcceptReparty), "Automatically rejoins parties when disbanded and invited.");
+ abilityCooldown = new FeatureButton("Ability Cooldowns: " + Utils.getColouredBoolean(ToggleCommand.abilityCooldowns), "Displays ability cooldowns.");
+ dungeonScore = new FeatureButton("Dungeon Score Display: " + Utils.getColouredBoolean(ToggleCommand.dungeonScore), "Displays an estimated dungeon score with secrets.");
+ hideArmour = new FeatureButton("Hide Player Armour: " + Utils.getColouredBoolean(ToggleCommand.hideArmour), "Makes player armour invisible, showing their skin.");
+ autoJoinSkyblock = new FeatureButton("Automatically Join Skyblock: " + Utils.getColouredBoolean(ToggleCommand.autoJoinSkyblock), "Automatically join Skyblock when you join Hypixel.\nYou have an addiction.");
allButtons.clear();
allButtons.add(changeDisplay);
+ allButtons.add(onlySlayer);
allButtons.add(puzzleSolvers);
allButtons.add(experimentationTableSolvers);
allButtons.add(skillTracker);
allButtons.add(customMusic);
+ allButtons.add(crystalHollowWaypoints);
+ allButtons.add(alerts);
allButtons.add(outlineText);
allButtons.add(pickBlock);
allButtons.add(coords);
@@ -170,6 +199,7 @@ public class DankerGui extends GuiScreen {
allButtons.add(cakeTimer);
allButtons.add(skill50Display);
allButtons.add(slayerCount);
+ allButtons.add(masterSPlusDisplay);
allButtons.add(spiritBearAlert);
allButtons.add(sceptreMessages);
allButtons.add(midasStaffMessages);
@@ -190,6 +220,7 @@ public class DankerGui extends GuiScreen {
allButtons.add(dungeonTimer);
allButtons.add(stopSalvageStarred);
allButtons.add(watcherReadyMessage);
+ allButtons.add(flowerWeapons);
allButtons.add(notifySlayerSlain);
allButtons.add(necronNotifications);
allButtons.add(bonzoTimer);
@@ -202,6 +233,14 @@ public class DankerGui extends GuiScreen {
allButtons.add(giantHP);
allButtons.add(hidePetCandy);
allButtons.add(highlightCommissions);
+ allButtons.add(customColouredNames);
+ allButtons.add(endOfFarmAlert);
+ allButtons.add(gemstoneLore);
+ allButtons.add(autoAcceptReparty);
+ allButtons.add(abilityCooldown);
+ allButtons.add(dungeonScore);
+ allButtons.add(hideArmour);
+ allButtons.add(autoJoinSkyblock);
search.setText(initSearchText);
search.setVisible(true);
@@ -247,8 +286,7 @@ public class DankerGui extends GuiScreen {
super.drawScreen(mouseX, mouseY, partialTicks);
String pageText = "Page: " + page + "/" + (int) Math.ceil(foundButtons.size() / 7D);
- int pageWidth = mc.fontRendererObj.getStringWidth(pageText);
- new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 10, 1D);
+ RenderUtils.drawCenteredText(pageText, width, 10, 1D);
for (GuiButton button : this.buttonList) {
if (button instanceof FeatureButton && button.isMouseOver()) {
@@ -269,7 +307,7 @@ public class DankerGui extends GuiScreen {
} else if (button == backPage) {
mc.displayGuiScreen(new DankerGui(page - 1, search.getText()));
} else if (button == editLocations) {
- DankersSkyblockMod.guiToOpen = "editlocations";
+ mc.displayGuiScreen(new EditLocationsGui());
} else if (button == githubLink) {
try {
Desktop.getDesktop().browse(new URI("https://github.com/bowser0000/SkyblockMod"));
@@ -283,15 +321,21 @@ public class DankerGui extends GuiScreen {
ex.printStackTrace();
}
} else if (button == changeDisplay) {
- DankersSkyblockMod.guiToOpen = "displaygui";
+ mc.displayGuiScreen(new DisplayGui());
+ } else if (button == onlySlayer) {
+ mc.displayGuiScreen(new OnlySlayerGui());
} else if (button == puzzleSolvers) {
- DankersSkyblockMod.guiToOpen = "puzzlesolvers";
+ mc.displayGuiScreen(new PuzzleSolversGui(1));
} else if (button == experimentationTableSolvers) {
- DankersSkyblockMod.guiToOpen = "experimentsolvers";
+ mc.displayGuiScreen(new ExperimentsGui());
} else if (button == skillTracker) {
- DankersSkyblockMod.guiToOpen = "skilltracker";
+ mc.displayGuiScreen(new SkillTrackerGui());
} else if (button == customMusic) {
- DankersSkyblockMod.guiToOpen = "custommusic";
+ mc.displayGuiScreen(new CustomMusicGui(1));
+ } else if (button == crystalHollowWaypoints) {
+ mc.displayGuiScreen(new CrystalHollowWaypointsGui(1));
+ } else if (button == alerts) {
+ mc.displayGuiScreen(new AlertsGui(1));
} else if (button == outlineText) {
ToggleCommand.outlineTextToggled = !ToggleCommand.outlineTextToggled;
ConfigHandler.writeBooleanConfig("toggles", "OutlineText", ToggleCommand.outlineTextToggled);
@@ -399,7 +443,7 @@ public class DankerGui extends GuiScreen {
} else if (button == necronNotifications) {
ToggleCommand.necronNotificationsToggled = !ToggleCommand.necronNotificationsToggled;
ConfigHandler.writeBooleanConfig("toggles", "NecronNotifications", ToggleCommand.necronNotificationsToggled);
- necronNotifications.displayString = "Necron Phase Notifications: " + Utils.getColouredBoolean(ToggleCommand.necronNotificationsToggled);
+ necronNotifications.displayString = "Floor 7 Phase Notifications: " + Utils.getColouredBoolean(ToggleCommand.necronNotificationsToggled);
} else if (button == bonzoTimer) {
ToggleCommand.bonzoTimerToggled = !ToggleCommand.bonzoTimerToggled;
ConfigHandler.writeBooleanConfig("toggles", "BonzoTimer", ToggleCommand.bonzoTimerToggled);
@@ -408,6 +452,10 @@ public class DankerGui extends GuiScreen {
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);
@@ -448,6 +496,42 @@ public class DankerGui extends GuiScreen {
ToggleCommand.highlightCommissions = !ToggleCommand.highlightCommissions;
ConfigHandler.writeBooleanConfig("toggles", "HighlightCommissions", ToggleCommand.highlightCommissions);
highlightCommissions.displayString = "Highlight Commissions: " + Utils.getColouredBoolean(ToggleCommand.highlightCommissions);
+ } else if (button == customColouredNames) {
+ ToggleCommand.customColouredNames = !ToggleCommand.customColouredNames;
+ ConfigHandler.writeBooleanConfig("toggles", "CustomColouredNames", ToggleCommand.customColouredNames);
+ customColouredNames.displayString = "Custom Name Colors: " + Utils.getColouredBoolean(ToggleCommand.customColouredNames);
+ } else if (button == endOfFarmAlert) {
+ ToggleCommand.endOfFarmAlert = !ToggleCommand.endOfFarmAlert;
+ ConfigHandler.writeBooleanConfig("toggles", "EndOfFarmAlert", ToggleCommand.endOfFarmAlert);
+ endOfFarmAlert.displayString = "Alert When Reaching End of Farm: " + Utils.getColouredBoolean(ToggleCommand.endOfFarmAlert);
+ } else if (button == gemstoneLore) {
+ ToggleCommand.gemstoneLore = !ToggleCommand.gemstoneLore;
+ ConfigHandler.writeBooleanConfig("toggles", "GemstoneLore", ToggleCommand.gemstoneLore);
+ gemstoneLore.displayString = "Applied Gemstones in Lore: " + Utils.getColouredBoolean(ToggleCommand.gemstoneLore);
+ } else if (button == autoAcceptReparty) {
+ ToggleCommand.autoAcceptReparty = !ToggleCommand.autoAcceptReparty;
+ ConfigHandler.writeBooleanConfig("toggles", "AutoAcceptReparty", ToggleCommand.autoAcceptReparty);
+ autoAcceptReparty.displayString = "Auto Accept Reparty: " + Utils.getColouredBoolean(ToggleCommand.autoAcceptReparty);
+ } else if (button == abilityCooldown) {
+ ToggleCommand.abilityCooldowns = !ToggleCommand.abilityCooldowns;
+ ConfigHandler.writeBooleanConfig("toggles", "AbilityCooldowns", ToggleCommand.abilityCooldowns);
+ abilityCooldown.displayString = "Ability Cooldowns: " + Utils.getColouredBoolean(ToggleCommand.abilityCooldowns);
+ } else if (button == dungeonScore) {
+ ToggleCommand.dungeonScore = !ToggleCommand.dungeonScore;
+ ConfigHandler.writeBooleanConfig("toggles", "DungeonScore", ToggleCommand.dungeonScore);
+ dungeonScore.displayString = "Dungeon Score Display: " + Utils.getColouredBoolean(ToggleCommand.dungeonScore);
+ } else if (button == masterSPlusDisplay) {
+ ToggleCommand.masterSPlusDisplay = !ToggleCommand.masterSPlusDisplay;
+ ConfigHandler.writeBooleanConfig("toggles", "MasterSPlusDisplay", ToggleCommand.masterSPlusDisplay);
+ masterSPlusDisplay.displayString = "Display MM S+ Runs: " + Utils.getColouredBoolean(ToggleCommand.masterSPlusDisplay);
+ } else if (button == hideArmour) {
+ ToggleCommand.hideArmour = !ToggleCommand.hideArmour;
+ ConfigHandler.writeBooleanConfig("toggles", "HideArmour", ToggleCommand.hideArmour);
+ hideArmour.displayString = "Hide Player Armour: " + Utils.getColouredBoolean(ToggleCommand.hideArmour);
+ } else if (button == autoJoinSkyblock) {
+ ToggleCommand.autoJoinSkyblock = !ToggleCommand.autoJoinSkyblock;
+ ConfigHandler.writeBooleanConfig("toggles", "AutoJoinSkyblock", ToggleCommand.autoJoinSkyblock);
+ autoJoinSkyblock.displayString = "Automatically Join Skyblock: " + Utils.getColouredBoolean(ToggleCommand.autoJoinSkyblock);
}
}
diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java
index 38459ee..b8be3d6 100644
--- a/src/main/java/me/Danker/gui/DisplayGui.java
+++ b/src/main/java/me/Danker/gui/DisplayGui.java
@@ -1,9 +1,8 @@
package me.Danker.gui;
-import me.Danker.DankersSkyblockMod;
import me.Danker.features.loot.LootDisplay;
import me.Danker.handlers.ConfigHandler;
-import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
@@ -20,12 +19,15 @@ public class DisplayGui extends GuiScreen {
private GuiButton zombie;
private GuiButton spider;
private GuiButton wolf;
+ private GuiButton enderman;
+ private GuiButton blaze;
private GuiButton auto;
private GuiButton fishing;
private GuiButton fishingWinter;
private GuiButton fishingFestival;
private GuiButton fishingSpooky;
- private GuiButton mythological;
+ private GuiButton fishingCH;
+ private GuiButton fishingLava;
private GuiButton catacombsF1;
private GuiButton catacombsF2;
private GuiButton catacombsF3;
@@ -33,6 +35,8 @@ public class DisplayGui extends GuiScreen {
private GuiButton catacombsF5;
private GuiButton catacombsF6;
private GuiButton catacombsF7;
+ private GuiButton catacombsMM;
+ private GuiButton mythological;
private GuiButton ghost;
@Override
@@ -52,22 +56,27 @@ public class DisplayGui extends GuiScreen {
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");
- zombie = new GuiButton(0, width / 2 - 190, (int) (height * 0.3), 110, 20, "Zombie");
- spider = new GuiButton(0, width / 2 - 55, (int) (height * 0.3), 110, 20, "Spider");
- wolf = new GuiButton(0, width / 2 + 75, (int) (height * 0.3), 110, 20, "Wolf");
- fishing = new GuiButton(0, width / 2 - 230, (int) (height * 0.4), 100, 20, "Fishing");
- fishingWinter = new GuiButton(0, width / 2 - 110, (int) (height * 0.4), 100, 20, "Fishing Winter");
- fishingFestival = new GuiButton(0, width / 2 + 10, (int) (height * 0.4), 100, 20, "Fishing Festival");
- fishingSpooky = new GuiButton(0, width / 2 + 130, (int) (height * 0.4), 100, 20, "Fishing Spooky");
- mythological = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), 95, 20, "Mythological");
- ghost = new GuiButton(0, width / 2 + 5, (int) (height * 0.5), 95, 20, "Ghost");
- catacombsF1 = new GuiButton(0, width / 2 - 205, (int) (height * 0.65), 50, 20, "F1");
- catacombsF2 = new GuiButton(0, width / 2 - 145, (int) (height * 0.65), 50, 20, "F2");
- catacombsF3 = new GuiButton(0, width / 2 - 85, (int) (height * 0.65), 50, 20, "F3");
- catacombsF4 = new GuiButton(0, width / 2 - 25, (int) (height * 0.65), 50, 20, "F4");
- catacombsF5 = new GuiButton(0, width / 2 + 35, (int) (height * 0.65), 50, 20, "F5");
- catacombsF6 = new GuiButton(0, width / 2 + 95, (int) (height * 0.65), 50, 20, "F6");
- catacombsF7 = new GuiButton(0, width / 2 + 155, (int) (height * 0.65), 50, 20, "F7");
+ zombie = new GuiButton(0, width / 2 - 270, (int) (height * 0.35), 100, 20, "Zombie");
+ spider = new GuiButton(0, width / 2 - 160, (int) (height * 0.35), 100, 20, "Spider");
+ wolf = new GuiButton(0, width / 2 - 50, (int) (height * 0.35), 100, 20, "Wolf");
+ enderman = new GuiButton(0, width / 2 + 60, (int) (height * 0.35), 100, 20, "Enderman");
+ blaze = new GuiButton(0, width / 2 + 170, (int) (height * 0.35), 100, 20, "Blaze");
+ fishing = new GuiButton(0, width / 2 - 295, (int) (height * 0.5), 90, 20, "Fishing");
+ fishingWinter = new GuiButton(0, width / 2 - 195, (int) (height * 0.5), 90, 20, "Fishing Winter");
+ fishingFestival = new GuiButton(0, width / 2 - 95, (int) (height * 0.5), 90, 20, "Fishing Festival");
+ fishingSpooky = new GuiButton(0, width / 2 + 5, (int) (height * 0.5), 90, 20, "Fishing Spooky");
+ fishingCH = new GuiButton(0, width / 2 + 105, (int) (height * 0.5), 90, 20, "CH Fishing");
+ fishingLava = new GuiButton(0, width / 2 + 205, (int) (height * 0.5), 90, 20, "Lava Fishing");
+ catacombsF1 = new GuiButton(0, width / 2 - 235, (int) (height * 0.65), 50, 20, "F1");
+ catacombsF2 = new GuiButton(0, width / 2 - 175, (int) (height * 0.65), 50, 20, "F2");
+ catacombsF3 = new GuiButton(0, width / 2 - 115, (int) (height * 0.65), 50, 20, "F3");
+ catacombsF4 = new GuiButton(0, width / 2 - 55, (int) (height * 0.65), 50, 20, "F4");
+ catacombsF5 = new GuiButton(0, width / 2 + 5, (int) (height * 0.65), 50, 20, "F5");
+ catacombsF6 = new GuiButton(0, width / 2 + 65, (int) (height * 0.65), 50, 20, "F6");
+ catacombsF7 = new GuiButton(0, width / 2 + 125, (int) (height * 0.65), 50, 20, "F7");
+ catacombsMM = new GuiButton(0, width / 2 + 185, (int) (height * 0.65), 50, 20, "MM");
+ mythological = new GuiButton(0, width / 2 - 100, (int) (height * 0.8), 95, 20, "Mythological");
+ ghost = new GuiButton(0, width / 2 + 5, (int) (height * 0.8), 95, 20, "Ghost");
this.buttonList.add(showSession);
this.buttonList.add(off);
@@ -75,11 +84,14 @@ public class DisplayGui extends GuiScreen {
this.buttonList.add(zombie);
this.buttonList.add(spider);
this.buttonList.add(wolf);
+ this.buttonList.add(enderman);
+ this.buttonList.add(blaze);
this.buttonList.add(fishing);
this.buttonList.add(fishingWinter);
this.buttonList.add(fishingFestival);
this.buttonList.add(fishingSpooky);
- this.buttonList.add(mythological);
+ this.buttonList.add(fishingCH);
+ this.buttonList.add(fishingLava);
this.buttonList.add(catacombsF1);
this.buttonList.add(catacombsF2);
this.buttonList.add(catacombsF3);
@@ -87,6 +99,8 @@ public class DisplayGui extends GuiScreen {
this.buttonList.add(catacombsF5);
this.buttonList.add(catacombsF6);
this.buttonList.add(catacombsF7);
+ this.buttonList.add(catacombsMM);
+ this.buttonList.add(mythological);
this.buttonList.add(ghost);
this.buttonList.add(goBack);
}
@@ -94,20 +108,13 @@ public class DisplayGui extends GuiScreen {
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
this.drawDefaultBackground();
- Minecraft mc = Minecraft.getMinecraft();
-
- String displayText;
- if (LootDisplay.auto) {
- displayText = "Current Display: auto";
- } else {
- displayText = "Current Display: " + LootDisplay.display;
- }
- int displayWidth = mc.fontRendererObj.getStringWidth(displayText);
- new TextRenderer(mc, displayText, width / 2 - displayWidth / 2, 10, 1D);
-
- String catacombsTitleText = "Catacombs Dungeon";
- int catacombsTitleWidth = mc.fontRendererObj.getStringWidth(catacombsTitleText);
- new TextRenderer(mc, catacombsTitleText, width / 2 - catacombsTitleWidth / 2, (int) (height * 0.6), 1D);
+
+ String displayText = LootDisplay.auto ? "Current Display: auto" : "Current Display: " + LootDisplay.display;
+ RenderUtils.drawCenteredText(displayText, width, 10, 1D);
+ RenderUtils.drawCenteredText("Slayer", width, (int) (height * 0.3), 1D);
+ RenderUtils.drawCenteredText("Fishing", width, (int) (height * 0.45), 1D);
+ RenderUtils.drawCenteredText("Catacombs Dungeon", width, (int) (height * 0.6), 1D);
+ RenderUtils.drawCenteredText("Misc", width, (int) (height * 0.75), 1D);
super.drawScreen(mouseX, mouseY, partialTicks);
}
@@ -115,49 +122,60 @@ public class DisplayGui extends GuiScreen {
@Override
public void actionPerformed(GuiButton button) {
if (button == goBack) {
- DankersSkyblockMod.guiToOpen = "dankergui1";
+ mc.displayGuiScreen(new DankerGui(1, ""));
} else if (button == showSession) {
addSession = !addSession;
showSession.displayString = "Current Session Only: " + Utils.getColouredBoolean(addSession);
} else if (button == off) {
setDisplay("off", true);
} else if (button == zombie) {
- setDisplay("zombie", false);
+ setDisplay("zombie");
} else if (button == spider) {
- setDisplay("spider", false);
+ setDisplay("spider");
} else if (button == wolf) {
- setDisplay("wolf", false);
+ setDisplay("wolf");
+ } else if (button == enderman) {
+ setDisplay("enderman");
+ } else if (button == blaze) {
+ setDisplay("blaze");
} else if (button == auto) {
LootDisplay.auto = true;
ConfigHandler.writeBooleanConfig("misc", "autoDisplay", true);
} else if (button == fishing) {
- setDisplay("fishing", false);
+ setDisplay("fishing");
} else if (button == fishingWinter) {
- setDisplay("fishing_winter", false);
+ setDisplay("fishing_winter");
} else if (button == fishingFestival) {
- setDisplay("fishing_festival", false);
+ setDisplay("fishing_festival");
} else if (button == fishingSpooky) {
- setDisplay("fishing_spooky", false);
+ setDisplay("fishing_spooky");
+ } else if (button == fishingCH) {
+ setDisplay("fishing_ch");
+ } else if (button == fishingLava) {
+ setDisplay("fishing_lava");
} else if (button == mythological) {
- setDisplay("mythological", false);
+ setDisplay("mythological");
} else if (button == catacombsF1) {
- setDisplay("catacombs_floor_one", false);
+ setDisplay("catacombs_floor_one");
} else if (button == catacombsF2) {
- setDisplay("catacombs_floor_two", false);
+ setDisplay("catacombs_floor_two");
} else if (button == catacombsF3) {
- setDisplay("catacombs_floor_three", false);
+ setDisplay("catacombs_floor_three");
} else if (button == catacombsF4) {
- setDisplay("catacombs_floor_four", false);
+ setDisplay("catacombs_floor_four");
} else if (button == catacombsF5) {
- setDisplay("catacombs_floor_five", false);
+ setDisplay("catacombs_floor_five");
} else if (button == catacombsF6) {
- setDisplay("catacombs_floor_six", false);
+ setDisplay("catacombs_floor_six");
} else if (button == catacombsF7) {
- setDisplay("catacombs_floor_seven", false);
- } else if (button == ghost)
- setDisplay("ghost",false);
+ setDisplay("catacombs_floor_seven");
+ } else if (button == catacombsMM) {
+ setDisplay("catacombs_master");
+ } else if (button == ghost) {
+ setDisplay("ghost");
+ }
}
-
+
public void setDisplay(String display, boolean forceNoSession) {
if (!forceNoSession && addSession) display += "_session";
LootDisplay.auto = false;
@@ -165,5 +183,9 @@ public class DisplayGui extends GuiScreen {
ConfigHandler.writeBooleanConfig("misc", "autoDisplay", false);
ConfigHandler.writeStringConfig("misc", "display", display);
}
+
+ public void setDisplay(String display) {
+ setDisplay(display, false);
+ }
}
diff --git a/src/main/java/me/Danker/gui/EditLocationsGui.java b/src/main/java/me/Danker/gui/EditLocationsGui.java
index fed6ee9..b7f4b02 100644
--- a/src/main/java/me/Danker/gui/EditLocationsGui.java
+++ b/src/main/java/me/Danker/gui/EditLocationsGui.java
@@ -31,6 +31,8 @@ public class EditLocationsGui extends GuiScreen {
private LocationButton golemTimer;
private LocationButton teammatesInRadius;
private LocationButton giantHP;
+ private LocationButton abilityCooldown;
+ private LocationButton dungeonScore;
@Override
public boolean doesGuiPauseGame() {
@@ -99,6 +101,22 @@ public class EditLocationsGui extends GuiScreen {
EnumChatFormatting.LIGHT_PURPLE + "Jolly Pink Giant " + EnumChatFormatting.GREEN + "25M" + EnumChatFormatting.RED + "❤\n" +
EnumChatFormatting.DARK_AQUA + "The Diamond Giant " + EnumChatFormatting.GREEN + "25M" + EnumChatFormatting.RED + "❤";
+ String abilityCooldownText = EnumChatFormatting.GREEN + "Spirit Glide: " + EnumChatFormatting.YELLOW + "32.734s\n" +
+ EnumChatFormatting.GREEN + "Parley: " + EnumChatFormatting.YELLOW + "2.652s\n" +
+ EnumChatFormatting.GREEN + "Ice Spray: " + EnumChatFormatting.YELLOW + "1.429s";
+
+ String dungeonScoreText = " Secrets Found: " + EnumChatFormatting.GREEN + "100.0%\n" +
+ EnumChatFormatting.GOLD + "Skill:\n" +
+ EnumChatFormatting.GOLD + "Explore:\n" +
+ EnumChatFormatting.GOLD + "Speed:\n" +
+ EnumChatFormatting.GOLD + "Bonus:\n" +
+ EnumChatFormatting.GOLD + "Total:";
+ String dungeonScoreNums = "\n" +
+ EnumChatFormatting.GOLD + "100\n" +
+ EnumChatFormatting.GOLD + "100\n" +
+ EnumChatFormatting.GOLD + "100\n" +
+ EnumChatFormatting.GOLD + "5\n" +
+ EnumChatFormatting.GOLD + "305 " + EnumChatFormatting.GRAY + "(" + EnumChatFormatting.GOLD + "S+" + EnumChatFormatting.GRAY + ")";
display = new LocationButton(MoveCommand.displayXY[0], MoveCommand.displayXY[1], ScaleCommand.displayScale, displayText, displayNums, 110);
dungeonTimer = new LocationButton(MoveCommand.dungeonTimerXY[0], MoveCommand.dungeonTimerXY[1], ScaleCommand.dungeonTimerScale, dungeonTimerText, dungeonTimerNums, 80);
@@ -112,6 +130,8 @@ public class EditLocationsGui extends GuiScreen {
golemTimer = new LocationButton(MoveCommand.golemTimerXY[0], MoveCommand.golemTimerXY[1] + 5, ScaleCommand.golemTimerScale, GolemSpawningAlert.GOLEM_COLOUR + " 20s", null, null);
teammatesInRadius = new LocationButton(MoveCommand.teammatesInRadiusXY[0], MoveCommand.teammatesInRadiusXY[1], ScaleCommand.teammatesInRadiusScale, teammatesInRadiusText, null, null);
giantHP = new LocationButton(MoveCommand.giantHPXY[0], MoveCommand.giantHPXY[1], ScaleCommand.giantHPScale, giantHPText, null, null);
+ abilityCooldown = new LocationButton(MoveCommand.abilityCooldownsXY[0], MoveCommand.abilityCooldownsXY[1], ScaleCommand.abilityCooldownsScale, abilityCooldownText, null, null);
+ dungeonScore = new LocationButton(MoveCommand.dungeonScoreXY[0], MoveCommand.dungeonScoreXY[1], ScaleCommand.dungeonScoreScale, dungeonScoreText, dungeonScoreNums, 80);
this.buttonList.add(coords);
this.buttonList.add(dungeonTimer);
@@ -125,6 +145,8 @@ public class EditLocationsGui extends GuiScreen {
this.buttonList.add(golemTimer);
this.buttonList.add(teammatesInRadius);
this.buttonList.add(giantHP);
+ this.buttonList.add(abilityCooldown);
+ this.buttonList.add(dungeonScore);
}
@Override
@@ -234,6 +256,17 @@ public class EditLocationsGui extends GuiScreen {
giantHP.xPosition = MoveCommand.giantHPXY[0];
giantHP.yPosition = MoveCommand.giantHPXY[1];
break;
+ case "abilityCooldown":
+ MoveCommand.abilityCooldownsXY[0] += xMoved;
+ MoveCommand.abilityCooldownsXY[1] += yMoved;
+ abilityCooldown.xPosition = MoveCommand.abilityCooldownsXY[0];
+ abilityCooldown.yPosition = MoveCommand.abilityCooldownsXY[1];
+ break;
+ case "dungeonScore":
+ MoveCommand.dungeonScoreXY[0] += xMoved;
+ MoveCommand.dungeonScoreXY[1] += yMoved;
+ dungeonScore.xPosition = MoveCommand.dungeonScoreXY[0];
+ dungeonScore.yPosition = MoveCommand.dungeonScoreXY[1];
}
this.buttonList.clear();
initGui();
@@ -270,6 +303,10 @@ public class EditLocationsGui extends GuiScreen {
moving = "teammatesInRadius";
} else if (button == giantHP) {
moving = "giantHP";
+ } else if (button == abilityCooldown) {
+ moving = "abilityCooldown";
+ } else if (button == dungeonScore) {
+ moving = "dungeonScore";
}
}
}
@@ -302,6 +339,10 @@ public class EditLocationsGui extends GuiScreen {
ConfigHandler.writeIntConfig("locations", "teammatesInRadiusY", MoveCommand.teammatesInRadiusXY[1]);
ConfigHandler.writeIntConfig("locations", "giantHPX", MoveCommand.giantHPXY[0]);
ConfigHandler.writeIntConfig("locations", "giantHPY", MoveCommand.giantHPXY[1]);
+ ConfigHandler.writeIntConfig("locations", "abilityCooldownsX", MoveCommand.abilityCooldownsXY[0]);
+ ConfigHandler.writeIntConfig("locations", "abilityCooldownsY", MoveCommand.abilityCooldownsXY[1]);
+ ConfigHandler.writeIntConfig("locations", "dungeonScoreX", MoveCommand.dungeonScoreXY[0]);
+ ConfigHandler.writeIntConfig("locations", "dungeonScoreY", MoveCommand.dungeonScoreXY[1]);
}
}
diff --git a/src/main/java/me/Danker/gui/ExperimentsGui.java b/src/main/java/me/Danker/gui/ExperimentsGui.java
index c3f4f47..53eb118 100644
--- a/src/main/java/me/Danker/gui/ExperimentsGui.java
+++ b/src/main/java/me/Danker/gui/ExperimentsGui.java
@@ -1,6 +1,5 @@
package me.Danker.gui;
-import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
import me.Danker.handlers.ConfigHandler;
import me.Danker.utils.Utils;
@@ -52,7 +51,7 @@ public class ExperimentsGui extends GuiScreen {
@Override
public void actionPerformed(GuiButton button) {
if (button == goBack) {
- DankersSkyblockMod.guiToOpen = "dankergui1";
+ mc.displayGuiScreen(new DankerGui(1, ""));
} else if (button == ultrasequencer) {
ToggleCommand.ultrasequencerToggled = !ToggleCommand.ultrasequencerToggled;
ConfigHandler.writeBooleanConfig("toggles", "UltraSequencer", ToggleCommand.ultrasequencerToggled);
diff --git a/src/main/java/me/Danker/gui/OnlySlayerGui.java b/src/main/java/me/Danker/gui/OnlySlayerGui.java
new file mode 100644
index 0000000..c637ff9
--- /dev/null
+++ b/src/main/java/me/Danker/gui/OnlySlayerGui.java
@@ -0,0 +1,162 @@
+package me.Danker.gui;
+
+import me.Danker.features.BlockWrongSlayer;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.RenderUtils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+
+public class OnlySlayerGui extends GuiScreen {
+
+ private int onlyNumberInt = 4;
+ private String onlyName = "Revenant Horror";
+
+ private GuiButton goBack;
+ private GuiButton off;
+ private GuiButton zombie;
+ private GuiButton spider;
+ private GuiButton wolf;
+ private GuiButton enderman;
+ private GuiButton blaze;
+ private GuiButton one;
+ private GuiButton two;
+ private GuiButton three;
+ private GuiButton four;
+ private GuiButton five;
+
+ @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();
+
+ onlyName = BlockWrongSlayer.onlySlayerName;
+ switch (BlockWrongSlayer.onlySlayerNumber) {
+ case "I":
+ onlyNumberInt = 1;
+ break;
+ case "II":
+ onlyNumberInt = 2;
+ break;
+ case "III":
+ onlyNumberInt = 3;
+ break;
+ case "IV":
+ default:
+ onlyNumberInt = 4;
+ break;
+ case "V":
+ onlyNumberInt = 5;
+ break;
+ }
+
+ goBack = new GuiButton(0, 2, height - 30, 100, 20, "Go Back");
+ off = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Off");
+ zombie = new GuiButton(0, width / 2 - 270, (int) (height * 0.4), 100, 20, "Zombie");
+ spider = new GuiButton(0, width / 2 - 160, (int) (height * 0.4), 100, 20, "Spider");
+ wolf = new GuiButton(0, width / 2 - 50, (int) (height * 0.4), 100, 20, "Wolf");
+ enderman = new GuiButton(0, width / 2 + 60, (int) (height * 0.4), 100, 20, "Enderman");
+ blaze = new GuiButton(0, width / 2 + 170, (int) (height * 0.4), 100, 20, "Blaze");
+ one = new GuiButton(0, width / 2 - 190, (int) (height * 0.6), 60, 20, "I");
+ two = new GuiButton(0, width / 2 - 110, (int) (height * 0.6), 60, 20, "II");
+ three = new GuiButton(0, width / 2 - 30, (int) (height * 0.6), 60, 20, "III");
+ four = new GuiButton(0, width / 2 + 50, (int) (height * 0.6), 60, 20, "IV");
+ five = new GuiButton(0, width / 2 + 130, (int) (height * 0.6), 60, 20, "V");
+
+ this.buttonList.add(off);
+ this.buttonList.add(zombie);
+ this.buttonList.add(spider);
+ this.buttonList.add(wolf);
+ this.buttonList.add(enderman);
+ this.buttonList.add(blaze);
+ this.buttonList.add(one);
+ this.buttonList.add(two);
+ this.buttonList.add(three);
+ this.buttonList.add(four);
+ this.buttonList.add(five);
+ this.buttonList.add(goBack);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+
+ String displayText;
+ if (BlockWrongSlayer.onlySlayerName.equals("")) {
+ displayText = "Only Allow Slayer: Off";
+ } else {
+ displayText = "Only Allow Slayer: " + BlockWrongSlayer.onlySlayerName + " " + BlockWrongSlayer.onlySlayerNumber;
+ }
+ RenderUtils.drawCenteredText(displayText, width, 10, 1D);
+
+ super.drawScreen(mouseX, mouseY, partialTicks);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button) {
+ if (button == goBack) {
+ mc.displayGuiScreen(new DankerGui(1, ""));
+ return;
+ } else if (button == off) {
+ BlockWrongSlayer.onlySlayerName = "";
+ BlockWrongSlayer.onlySlayerNumber = "";
+ ConfigHandler.writeStringConfig("toggles", "BlockSlayer", "");
+ return;
+ } else if (button == zombie) {
+ onlyName = "Revenant Horror";
+ } else if (button == spider) {
+ onlyName = "Tarantula Broodfather";
+ } else if (button == wolf) {
+ onlyName = "Sven Packmaster";
+ } else if (button == enderman) {
+ onlyName = "Voidgloom Seraph";
+ } else if (button == blaze) {
+ onlyName = "Inferno Demonlord";
+ } else if (button == one) {
+ onlyNumberInt = 1;
+ } else if (button == two) {
+ onlyNumberInt = 2;
+ } else if (button == three) {
+ onlyNumberInt = 3;
+ } else if (button == four) {
+ onlyNumberInt = 4;
+ } else if (button == five) {
+ onlyNumberInt = 5;
+ }
+
+ String onlyNumber;
+ switch (onlyNumberInt) {
+ case 1:
+ onlyNumber = "I";
+ break;
+ case 2:
+ onlyNumber = "II";
+ break;
+ case 3:
+ onlyNumber = "III";
+ break;
+ case 4:
+ onlyNumber = "IV";
+ break;
+ case 5:
+ onlyNumber = "V";
+ break;
+ default:
+ onlyNumber = "IV";
+ }
+
+ BlockWrongSlayer.onlySlayerName = onlyName;
+ BlockWrongSlayer.onlySlayerNumber = onlyNumber;
+ ConfigHandler.writeStringConfig("toggles", "BlockSlayer", BlockWrongSlayer.onlySlayerName + " " + BlockWrongSlayer.onlySlayerNumber);
+ }
+
+}
diff --git a/src/main/java/me/Danker/gui/PuzzleSolversGui.java b/src/main/java/me/Danker/gui/PuzzleSolversGui.java
index 70cd982..2f87630 100644
--- a/src/main/java/me/Danker/gui/PuzzleSolversGui.java
+++ b/src/main/java/me/Danker/gui/PuzzleSolversGui.java
@@ -1,6 +1,5 @@
package me.Danker.gui;
-import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
import me.Danker.handlers.ConfigHandler;
import me.Danker.utils.Utils;
@@ -20,6 +19,7 @@ public class PuzzleSolversGui extends GuiScreen {
private GuiButton trivia;
private GuiButton blaze;
private GuiButton creeper;
+ private GuiButton creeperLines;
private GuiButton water;
private GuiButton ticTacToe;
private GuiButton boulder;
@@ -28,6 +28,9 @@ public class PuzzleSolversGui extends GuiScreen {
private GuiButton startsWith;
private GuiButton selectAll;
private GuiButton clickOrder;
+ private GuiButton sameColour;
+ private GuiButton blockClicks;
+ private GuiButton itemFrameOnSeaLanterns;
public PuzzleSolversGui(int page) {
this.page = page;
@@ -55,35 +58,47 @@ public class PuzzleSolversGui extends GuiScreen {
trivia = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Trivia Solver: " + Utils.getColouredBoolean(ToggleCommand.oruoToggled));
blaze = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Blaze Solver: " + Utils.getColouredBoolean(ToggleCommand.blazeToggled));
creeper = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Creeper Solver: " + Utils.getColouredBoolean(ToggleCommand.creeperToggled));
- water = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Water Solver: " + Utils.getColouredBoolean(ToggleCommand.waterToggled));
- ticTacToe = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Tic Tac Toe Solver: " + Utils.getColouredBoolean(ToggleCommand.ticTacToeToggled));
- boulder = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Boulder Solver: " + Utils.getColouredBoolean(ToggleCommand.boulderToggled));
+ creeperLines = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Lines In Creeper Solver: " + Utils.getColouredBoolean(ToggleCommand.creeperLinesToggled));
+ water = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Water Solver: " + Utils.getColouredBoolean(ToggleCommand.waterToggled));
+ ticTacToe = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Tic Tac Toe Solver: " + Utils.getColouredBoolean(ToggleCommand.ticTacToeToggled));
// Page 2
- silverfish = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Silverfish Solver: " + Utils.getColouredBoolean(ToggleCommand.silverfishToggled));
- iceWalk = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Ice Walk Solver: " + Utils.getColouredBoolean(ToggleCommand.iceWalkToggled));
- startsWith = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Starts With Letter Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.startsWithToggled));
- selectAll = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Select All Color Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.selectAllToggled));
- clickOrder = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Click in Order Terminal Helper: " + Utils.getColouredBoolean(ToggleCommand.clickInOrderToggled));
-
+ boulder = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Boulder Solver: " + Utils.getColouredBoolean(ToggleCommand.boulderToggled));
+ silverfish = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Silverfish Solver: " + Utils.getColouredBoolean(ToggleCommand.silverfishToggled));
+ iceWalk = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Ice Walk Solver: " + Utils.getColouredBoolean(ToggleCommand.iceWalkToggled));
+ startsWith = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Starts With Letter Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.startsWithToggled));
+ selectAll = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Select All Color Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.selectAllToggled));
+ clickOrder = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Click in Order Terminal Helper: " + Utils.getColouredBoolean(ToggleCommand.clickInOrderToggled));
+ sameColour = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Same Colour Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.sameColourToggled));
+ // Page 3
+ blockClicks = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Block Wrong Clicks on Terminals: " + Utils.getColouredBoolean(ToggleCommand.blockWrongTerminalClicksToggled));
+ itemFrameOnSeaLanterns = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Ignore Arrows On Sea Lanterns: " + Utils.getColouredBoolean(ToggleCommand.itemFrameOnSeaLanternsToggled));
+
switch (page) {
case 1:
this.buttonList.add(riddle);
this.buttonList.add(trivia);
this.buttonList.add(blaze);
this.buttonList.add(creeper);
+ this.buttonList.add(creeperLines);
this.buttonList.add(water);
this.buttonList.add(ticTacToe);
- this.buttonList.add(boulder);
this.buttonList.add(nextPage);
break;
case 2:
+ this.buttonList.add(boulder);
this.buttonList.add(silverfish);
this.buttonList.add(iceWalk);
this.buttonList.add(startsWith);
this.buttonList.add(selectAll);
this.buttonList.add(clickOrder);
+ this.buttonList.add(sameColour);
+ this.buttonList.add(nextPage);
this.buttonList.add(backPage);
break;
+ case 3:
+ this.buttonList.add(blockClicks);
+ this.buttonList.add(itemFrameOnSeaLanterns);
+ this.buttonList.add(backPage);
}
this.buttonList.add(goBack);
}
@@ -97,7 +112,7 @@ public class PuzzleSolversGui extends GuiScreen {
@Override
public void actionPerformed(GuiButton button) {
if (button == goBack) {
- DankersSkyblockMod.guiToOpen = "dankergui1";
+ mc.displayGuiScreen(new DankerGui(1, ""));
} else if (button == backPage) {
Minecraft.getMinecraft().displayGuiScreen(new PuzzleSolversGui(page - 1));
} else if (button == nextPage) {
@@ -118,6 +133,10 @@ public class PuzzleSolversGui extends GuiScreen {
ToggleCommand.creeperToggled = !ToggleCommand.creeperToggled;
ConfigHandler.writeBooleanConfig("toggles", "CreeperPuzzle", ToggleCommand.creeperToggled);
creeper.displayString = "Creeper Solver: " + Utils.getColouredBoolean(ToggleCommand.creeperToggled);
+ } else if (button == creeperLines) {
+ ToggleCommand.creeperLinesToggled = !ToggleCommand.creeperLinesToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "CreeperLines", ToggleCommand.creeperLinesToggled);
+ creeperLines.displayString = "Lines In Creeper Solver: " + Utils.getColouredBoolean(ToggleCommand.creeperLinesToggled);
} else if (button == water) {
ToggleCommand.waterToggled = !ToggleCommand.waterToggled;
ConfigHandler.writeBooleanConfig("toggles", "WaterPuzzle", ToggleCommand.waterToggled);
@@ -150,6 +169,18 @@ public class PuzzleSolversGui extends GuiScreen {
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);
+ itemFrameOnSeaLanterns.displayString = "Ignore Arrows On Sea Lanterns: " + Utils.getColouredBoolean(ToggleCommand.itemFrameOnSeaLanternsToggled);
+ } else if (button == sameColour) {
+ ToggleCommand.sameColourToggled = !ToggleCommand.sameColourToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "SameColourTerminal", ToggleCommand.sameColourToggled);
+ sameColour.displayString = "Same Colour Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.sameColourToggled);
}
}
diff --git a/src/main/java/me/Danker/gui/SkillTrackerGui.java b/src/main/java/me/Danker/gui/SkillTrackerGui.java
index fb7a7c9..e77f785 100644
--- a/src/main/java/me/Danker/gui/SkillTrackerGui.java
+++ b/src/main/java/me/Danker/gui/SkillTrackerGui.java
@@ -1,9 +1,8 @@
package me.Danker.gui;
-import me.Danker.DankersSkyblockMod;
import me.Danker.features.SkillTracker;
import me.Danker.handlers.ConfigHandler;
-import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
@@ -50,6 +49,7 @@ public class SkillTrackerGui extends GuiScreen {
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
this.drawDefaultBackground();
+
String stateText = "";
if (SkillTracker.skillStopwatch.isStarted() && !SkillTracker.skillStopwatch.isSuspended()) {
stateText = "Timer: Running";
@@ -59,15 +59,15 @@ public class SkillTrackerGui extends GuiScreen {
if (!SkillTracker.showSkillTracker) {
stateText += " (Hidden)";
}
- int stateTextWidth = mc.fontRendererObj.getStringWidth(stateText);
- new TextRenderer(mc, stateText, width / 2 - stateTextWidth / 2, 10, 1D);
+ RenderUtils.drawCenteredText(stateText, width, 10, 1D);
+
super.drawScreen(mouseX, mouseY, partialTicks);
}
@Override
public void actionPerformed(GuiButton button) {
if (button == goBack) {
- DankersSkyblockMod.guiToOpen = "dankergui1";
+ mc.displayGuiScreen(new DankerGui(1, ""));
} else if (button == start) {
if (SkillTracker.skillStopwatch.isStarted() && SkillTracker.skillStopwatch.isSuspended()) {
SkillTracker.skillStopwatch.resume();
diff --git a/src/main/java/me/Danker/gui/WarningGui.java b/src/main/java/me/Danker/gui/WarningGui.java
index db0c21b..901b59e 100644
--- a/src/main/java/me/Danker/gui/WarningGui.java
+++ b/src/main/java/me/Danker/gui/WarningGui.java
@@ -1,10 +1,11 @@
package me.Danker.gui;
-import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.util.EnumChatFormatting;
public class WarningGui extends GuiScreen {
private GuiButton close;
@@ -34,15 +35,11 @@ public class WarningGui extends GuiScreen {
@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);
+
+ RenderUtils.drawCenteredText(EnumChatFormatting.RED + "WARNING!", (int) (width * 0.9), (int) (height * 0.1), 2D);
+ RenderUtils.drawCenteredText("You are using SpiderFrog's Old Animations mod.", width, (int) (height * 0.3), 1D);
+ RenderUtils.drawCenteredText("This mod breaks Danker's Skyblock Mod.", width, (int) (height * 0.4), 1D);
+
super.drawScreen(mouseX, mouseY, partialTicks);
}
diff --git a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java
new file mode 100644
index 0000000..7a73f5a
--- /dev/null
+++ b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java
@@ -0,0 +1,91 @@
+package me.Danker.gui.alerts;
+
+import me.Danker.features.Alerts;
+import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.RenderUtils;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.util.EnumChatFormatting;
+
+public class AlertActionGui extends GuiScreen {
+
+ private final int id;
+
+ private GuiButton goBack;
+ private GuiButton toggle;
+ private GuiButton toggleDesktop;
+ private GuiButton edit;
+ private GuiButton delete;
+
+ public AlertActionGui(int id) {
+ this.id = id;
+ }
+
+ @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();
+
+ Alerts.Alert alert = Alerts.alerts.get(id);
+
+ goBack = new GuiButton(0, 2, height - 30, 100, 20, "Go Back");
+ toggle = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Enabled: " + Utils.getColouredBoolean(alert.toggled));
+ toggleDesktop = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Desktop Notification: " + Utils.getColouredBoolean(alert.desktop));
+ edit = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Edit >");
+ delete = new GuiButton(0, width / 2 - 100, (int) (height * 0.8), EnumChatFormatting.RED + "Delete Alert");
+
+ this.buttonList.add(toggle);
+ this.buttonList.add(toggleDesktop);
+ this.buttonList.add(edit);
+ this.buttonList.add(delete);
+ this.buttonList.add(goBack);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+
+ Alerts.Alert alert = Alerts.alerts.get(id);
+
+ RenderUtils.drawCenteredText(alert.alert, width, 10, 1D);
+ String alertText = alert.alert;
+ int textWidth = mc.fontRendererObj.getStringWidth(alertText);
+ new TextRenderer(mc, alertText, width / 2 - textWidth / 2, 10, 1D);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button) {
+ Alerts.Alert alert = Alerts.alerts.get(id);
+ if (button == goBack) {
+ mc.displayGuiScreen(new AlertsGui(1));
+ } else if (button == toggle) {
+ alert.toggle();
+ toggle.displayString = "Enabled: " + Utils.getColouredBoolean(alert.toggled);
+ } else if (button == toggleDesktop) {
+ alert.toggleDesktop();
+ toggleDesktop.displayString = "Desktop Notification: " + Utils.getColouredBoolean(alert.desktop);
+ } else if (button == edit) {
+ mc.displayGuiScreen(new AlertAddGui(alert, id));
+ } else if (button == delete) {
+ Alerts.alerts.remove(id);
+ Alerts.saveToFile();
+ mc.displayGuiScreen(new AlertsGui(1));
+ return;
+ }
+ Alerts.alerts.set(id, alert);
+ Alerts.saveToFile();
+ }
+
+}
diff --git a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java
new file mode 100644
index 0000000..5f01d6d
--- /dev/null
+++ b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java
@@ -0,0 +1,154 @@
+package me.Danker.gui.alerts;
+
+import me.Danker.features.Alerts;
+import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.RenderUtils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.GuiTextField;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraftforge.fml.client.config.GuiCheckBox;
+
+import java.io.IOException;
+
+public class AlertAddGui extends GuiScreen {
+
+ private boolean editing;
+ private Alerts.Alert base = null;
+ private int id;
+
+ private GuiButton cancel;
+
+ private String mode = "Contains";
+ private String location = "Skyblock";
+ private GuiButton startsWith;
+ private GuiButton contains;
+ private GuiButton endsWith;
+ private GuiButton everywhere;
+ private GuiButton skyblock;
+ private GuiButton dungeons;
+ private GuiTextField message;
+ private GuiTextField alert;
+ private GuiCheckBox desktop;
+ private GuiCheckBox toggled;
+ private GuiButton add;
+
+ public AlertAddGui() {}
+
+ public AlertAddGui(Alerts.Alert alert, int id) {
+ editing = true;
+ base = alert;
+ this.id = id;
+ }
+
+ @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();
+
+ cancel = new GuiButton(0, 2, height - 30, 100, 20, "Cancel");
+
+ startsWith = new GuiButton(0, width / 2 - 200, (int) (height * 0.2), 120, 20, "Starts With");
+ contains = new GuiButton(0, width / 2 - 60, (int) (height * 0.2), 120, 20, "Contains");
+ endsWith = new GuiButton(0, width / 2 + 80, (int) (height * 0.2), 120, 20, "Ends With");
+ everywhere = new GuiButton(0, width / 2 - 200, (int) (height * 0.3), 120, 20, "Everywhere");
+ skyblock = new GuiButton(0, width / 2 - 60, (int) (height * 0.3), 120, 20, "Skyblock");
+ dungeons = new GuiButton(0, width / 2 + 80, (int) (height * 0.3), 120, 20, "Dungeons");
+ message = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.4), 200, 20);
+ alert = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.5), 200, 20);
+ desktop = new GuiCheckBox(0, width / 2 - 58, (int) (height * 0.6), "Desktop Notification", false);
+ toggled = new GuiCheckBox(0, width / 2 - 26, (int) (height * 0.65), "Toggled", true);
+ add = new GuiButton(0, width / 2 - 25, (int) (height * 0.8), 50, 20, "Add");
+
+ if (editing) {
+ mode = base.mode;
+ location = base.location;
+ message.setText(base.message);
+ alert.setText(base.alert);
+ desktop.setIsChecked(base.desktop);
+ toggled.setIsChecked(base.toggled);
+ }
+
+ message.setVisible(true);
+ message.setEnabled(true);
+ alert.setVisible(true);
+ alert.setEnabled(true);
+
+ this.buttonList.add(cancel);
+ this.buttonList.add(startsWith);
+ this.buttonList.add(contains);
+ this.buttonList.add(endsWith);
+ this.buttonList.add(everywhere);
+ this.buttonList.add(skyblock);
+ this.buttonList.add(dungeons);
+ this.buttonList.add(desktop);
+ this.buttonList.add(toggled);
+ this.buttonList.add(add);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+
+ message.drawTextBox();
+ alert.drawTextBox();
+
+ RenderUtils.drawCenteredText("Mode: " + mode, width, (int) (height * 0.1), 1D);
+ RenderUtils.drawCenteredText("Location: " + location, width, (int) (height * 0.15), 1D);
+ new TextRenderer(mc, "Trigger:", width / 2 - 145, (int) (height * 0.42), 1D);
+ new TextRenderer(mc, "Alert Text:", width / 2 - 158, (int) (height * 0.52), 1D);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button) {
+ if (button == cancel) {
+ mc.displayGuiScreen(new AlertsGui(1));
+ } else if (button == startsWith) {
+ mode = "Starts With";
+ } else if (button == contains) {
+ mode = "Contains";
+ } else if (button == endsWith) {
+ mode = "Ends With";
+ } else if (button == everywhere) {
+ location = "Everywhere";
+ } else if (button == skyblock) {
+ location = "Skyblock";
+ } else if (button == dungeons) {
+ location = "Dungeons";
+ } else if (button == add) {
+ Alerts.Alert newAlert = new Alerts.Alert(mode, location, message.getText(), alert.getText(), desktop.isChecked(), toggled.isChecked());
+ if (editing) {
+ Alerts.alerts.set(id, newAlert);
+ } else {
+ Alerts.alerts.add(newAlert);
+ }
+ Alerts.saveToFile();
+ mc.displayGuiScreen(new AlertsGui(1));
+ }
+ }
+
+ @Override
+ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
+ super.mouseClicked(mouseX, mouseY, mouseButton);
+ message.mouseClicked(mouseX, mouseY, mouseButton);
+ alert.mouseClicked(mouseX, mouseY, mouseButton);
+ }
+
+ @Override
+ protected void keyTyped(char typedChar, int keyCode) throws IOException {
+ super.keyTyped(typedChar, keyCode);
+ message.textboxKeyTyped(typedChar, keyCode);
+ alert.textboxKeyTyped(typedChar, keyCode);
+ }
+
+}
diff --git a/src/main/java/me/Danker/gui/alerts/AlertsGui.java b/src/main/java/me/Danker/gui/alerts/AlertsGui.java
new file mode 100644
index 0000000..d73d56a
--- /dev/null
+++ b/src/main/java/me/Danker/gui/alerts/AlertsGui.java
@@ -0,0 +1,103 @@
+package me.Danker.gui.alerts;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.features.Alerts;
+import me.Danker.gui.DankerGui;
+import me.Danker.gui.buttons.FeatureButton;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.RenderUtils;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AlertsGui extends GuiScreen {
+
+ private final int page;
+ private final List<GuiButton> allButtons = new ArrayList<>();
+
+ private GuiButton goBack;
+ private GuiButton backPage;
+ private GuiButton nextPage;
+ private GuiButton add;
+ private GuiButton alerts;
+
+ public AlertsGui(int page) {
+ this.page = page;
+ }
+
+ @Override
+ public void initGui() {
+ super.initGui();
+
+ ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
+ int height = sr.getScaledHeight();
+ int width = sr.getScaledWidth();
+
+ goBack = new GuiButton(0, 2, height - 30, 100, 20, "Go Back");
+ backPage = new GuiButton(0, width / 2 - 100, (int) (height * 0.8), 80, 20, "< Back");
+ nextPage = new GuiButton(0, width / 2 + 20, (int) (height * 0.8), 80, 20, "Next >");
+ alerts = new FeatureButton("Alerts: " + Utils.getColouredBoolean(ToggleCommand.alerts), "Sends custom alert when a message is recieved");
+ add = new GuiButton(0, 0, 0, "Add Alert");
+
+ allButtons.clear();
+ allButtons.add(alerts);
+ allButtons.add(add);
+ for (int i = 0; i < Alerts.alerts.size(); i++) {
+ Alerts.Alert alert = Alerts.alerts.get(i);
+ GuiButton button = new GuiButton(i, 0, 0, alert.alert + " >");
+ allButtons.add(button);
+ }
+
+ reInit();
+ }
+
+ public void reInit() {
+ this.buttonList.clear();
+
+ for (int i = (page - 1) * 7, iteration = 0; iteration < 7 && i < allButtons.size(); i++, iteration++) {
+ GuiButton button = allButtons.get(i);
+ button.xPosition = width / 2 - 100;
+ button.yPosition = (int) (height * (0.1 * (iteration + 1)));
+ this.buttonList.add(button);
+ }
+
+ if (page > 1) this.buttonList.add(backPage);
+ if (page < Math.ceil(allButtons.size() / 7D)) this.buttonList.add(nextPage);
+
+ this.buttonList.add(goBack);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+
+ String pageText = "Page: " + page + "/" + (int) Math.ceil(allButtons.size() / 7D);
+ RenderUtils.drawCenteredText(pageText, width, 10, 1D);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button) {
+ if (button == goBack) {
+ mc.displayGuiScreen(new DankerGui(1, ""));
+ } else if (button == nextPage) {
+ mc.displayGuiScreen(new AlertsGui(page + 1));
+ } else if (button == backPage) {
+ mc.displayGuiScreen(new AlertsGui(page - 1));
+ } else if (button == add) {
+ mc.displayGuiScreen(new AlertAddGui());
+ } else if (button == alerts) {
+ ToggleCommand.alerts = !ToggleCommand.alerts;
+ ConfigHandler.writeBooleanConfig("toggles", "Alerts", ToggleCommand.alerts);
+ alerts.displayString = "Alerts: " + Utils.getColouredBoolean(ToggleCommand.alerts);
+ } else {
+ mc.displayGuiScreen(new AlertActionGui(button.id));
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/gui/buttons/LocationButton.java b/src/main/java/me/Danker/gui/buttons/LocationButton.java
index f328c58..8da1ab9 100644
--- a/src/main/java/me/Danker/gui/buttons/LocationButton.java
+++ b/src/main/java/me/Danker/gui/buttons/LocationButton.java
@@ -40,24 +40,19 @@ public class LocationButton extends GuiButton {
}
this.longestText = longestText;
+ int offset = text2Offset == null ? 0 : text2Offset;
this.height = (int) ((splitText.length * 9 + 3) * scale);
- this.width = (int) ((this.longestText + 3) * scale);
+ this.width = (int) ((this.longestText + offset + 3) * scale);
}
@Override
public void drawButton(Minecraft mc, int mouseX, int mouseY) {
- if (text2 == null) {
- drawRect(x - 2, y - 2, x + width, y + height, 0x40D3D3D3);
- } else {
- drawRect(x - 2, y - 2, (int) (x + (longestText + text2Offset + 3) * scale), y + height, 0x40D3D3D3);
- new TextRenderer(mc, text2, (int) (x + (text2Offset * scale)), y, scale);
- }
+ drawRect(x - 2, y - 2, x + width, y + height, 0x40D3D3D3);
+ if (text2 != null) new TextRenderer(mc, text2, (int) (x + (text2Offset * scale)), y, scale);
new TextRenderer(mc, text, x, y, scale);
}
@Override
- public void playPressSound(SoundHandler soundHandler) {
-
- }
+ public void playPressSound(SoundHandler soundHandler) {}
}
diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java
new file mode 100644
index 0000000..df91f04
--- /dev/null
+++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java
@@ -0,0 +1,118 @@
+package me.Danker.gui.crystalhollowwaypoints;
+
+import me.Danker.features.CrystalHollowWaypoints;
+import me.Danker.handlers.TextRenderer;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.GuiTextField;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.BlockPos;
+
+import java.io.IOException;
+
+public class CrystalHollowAddWaypointGui extends GuiScreen {
+
+ private GuiButton cancel;
+
+ private GuiTextField name;
+ private GuiButton curPos;
+ private GuiTextField x;
+ private GuiTextField y;
+ private GuiTextField z;
+ private GuiButton add;
+
+ @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();
+
+ cancel = new GuiButton(0, 2, height - 30, 100, 20, "Cancel");
+
+ name = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.1), 200, 20);
+ curPos = new GuiButton(0, width / 2 - 50, (int) (height * 0.25), 100, 20, "Current Position");
+ x = new GuiTextField(0, this.fontRendererObj, width / 2 - 85, (int) (height * 0.4), 50, 20);
+ y = new GuiTextField(0, this.fontRendererObj, width / 2 - 25, (int) (height * 0.4), 50, 20);
+ z = new GuiTextField(0, this.fontRendererObj, width / 2 + 35, (int) (height * 0.4), 50, 20);
+ add = new GuiButton(0, width / 2 - 25, (int) (height * 0.6), 50, 20, "Add");
+
+ name.setVisible(true);
+ name.setEnabled(true);
+ x.setVisible(true);
+ x.setEnabled(true);
+ y.setVisible(true);
+ y.setEnabled(true);
+ z.setVisible(true);
+ z.setEnabled(true);
+
+ this.buttonList.add(cancel);
+ this.buttonList.add(curPos);
+ this.buttonList.add(add);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+
+ name.drawTextBox();
+ x.drawTextBox();
+ y.drawTextBox();
+ z.drawTextBox();
+
+ new TextRenderer(mc, "X:", width / 2 - 85, (int) (height * 0.35), 1D);
+ new TextRenderer(mc, "Y:", width / 2 - 25, (int) (height * 0.35), 1D);
+ new TextRenderer(mc, "Z:", width / 2 + 35, (int) (height * 0.35), 1D);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button) {
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+
+ if (button == cancel) {
+ mc.displayGuiScreen(new CrystalHollowWaypointsGui(1));
+ } else if (button == curPos) {
+ x.setText(Integer.toString(player.getPosition().getX()));
+ y.setText(Integer.toString(player.getPosition().getY()));
+ z.setText(Integer.toString(player.getPosition().getZ()));
+ } else if (button == add) {
+ String loc = name.getText().length() == 0 ? Integer.toString(CrystalHollowWaypoints.waypoints.size()) : name.getText();
+ int xPos = x.getText().matches("[-]?\\d+") ? Integer.parseInt(x.getText()) : player.getPosition().getX();
+ int yPos = y.getText().matches("[-]?\\d+") ? Integer.parseInt(y.getText()) : player.getPosition().getY();
+ int zPos = z.getText().matches("[-]?\\d+") ? Integer.parseInt(z.getText()) : player.getPosition().getZ();
+
+ BlockPos pos = new BlockPos(xPos, yPos, zPos);
+ CrystalHollowWaypoints.waypoints.add(new CrystalHollowWaypoints.Waypoint(loc, pos));
+
+ mc.displayGuiScreen(new CrystalHollowWaypointsGui(1));
+ }
+ }
+
+ @Override
+ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
+ super.mouseClicked(mouseX, mouseY, mouseButton);
+ name.mouseClicked(mouseX, mouseY, mouseButton);
+ x.mouseClicked(mouseX, mouseY, mouseButton);
+ y.mouseClicked(mouseX, mouseY, mouseButton);
+ z.mouseClicked(mouseX, mouseY, mouseButton);
+ }
+
+ @Override
+ protected void keyTyped(char typedChar, int keyCode) throws IOException {
+ super.keyTyped(typedChar, keyCode);
+ name.textboxKeyTyped(typedChar, keyCode);
+ x.textboxKeyTyped(typedChar, keyCode);
+ y.textboxKeyTyped(typedChar, keyCode);
+ z.textboxKeyTyped(typedChar, keyCode);
+ }
+
+}
diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java
new file mode 100644
index 0000000..8d6fa85
--- /dev/null
+++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java
@@ -0,0 +1,93 @@
+package me.Danker.gui.crystalhollowwaypoints;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.features.CrystalHollowWaypoints;
+import me.Danker.utils.RenderUtils;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.util.EnumChatFormatting;
+
+public class CrystalHollowWaypointActionGui extends GuiScreen {
+
+ private int id;
+
+ private GuiButton goBack;
+ private GuiButton toggle;
+ private GuiButton sendNormal;
+ private GuiButton sendDSM;
+ private GuiButton sendSBE;
+ private GuiButton delete;
+
+ public CrystalHollowWaypointActionGui(int id) {
+ this.id = id;
+ }
+
+ @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();
+
+ CrystalHollowWaypoints.Waypoint waypoint = CrystalHollowWaypoints.waypoints.get(id);
+
+ goBack = new GuiButton(0, 2, height - 30, 100, 20, "Go Back");
+ toggle = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Set Visibility: " + Utils.getColouredBoolean(waypoint.toggled));
+ sendNormal = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Send Location And Coordinates");
+ sendDSM = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Send DSM Formatted Waypoint");
+ sendSBE = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Send SBE Formatted Waypoint");
+ delete = new GuiButton(0, width / 2 - 100, (int) (height * 0.8), EnumChatFormatting.RED + "Delete Waypoint");
+
+ this.buttonList.add(toggle);
+ this.buttonList.add(sendNormal);
+ this.buttonList.add(sendDSM);
+ this.buttonList.add(sendSBE);
+ this.buttonList.add(delete);
+ this.buttonList.add(goBack);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+
+ CrystalHollowWaypoints.Waypoint waypoint = CrystalHollowWaypoints.waypoints.get(id);
+
+ RenderUtils.drawCenteredText(waypoint.location + " @ " + waypoint.getPos(), width, 10, 1D);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button) {
+ CrystalHollowWaypoints.Waypoint waypoint = CrystalHollowWaypoints.waypoints.get(id);
+ EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+ if (button == goBack) {
+ mc.displayGuiScreen(new CrystalHollowWaypointsGui(1));
+ DankersSkyblockMod.guiToOpen = "crystalwaypoints";
+ } else if (button == toggle) {
+ waypoint.toggle();
+ toggle.displayString = "Set Visibility: " + Utils.getColouredBoolean(waypoint.toggled);
+ } else if (button == sendNormal) {
+ player.sendChatMessage(waypoint.location + " @ " + waypoint.getPos());
+ } else if (button == sendDSM) {
+ player.sendChatMessage("$DSMCHWP:" + waypoint.getFormattedWaypoint());
+ } else if (button == sendSBE) {
+ player.sendChatMessage("$SBECHWP:" + waypoint.getFormattedWaypoint());
+ } else if (button == delete) {
+ CrystalHollowWaypoints.waypoints.remove(id);
+ mc.displayGuiScreen(new CrystalHollowWaypointsGui(1));
+ return;
+ }
+ CrystalHollowWaypoints.waypoints.set(id, waypoint);
+ }
+
+}
diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java
new file mode 100644
index 0000000..6780542
--- /dev/null
+++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java
@@ -0,0 +1,150 @@
+package me.Danker.gui.crystalhollowwaypoints;
+
+import me.Danker.commands.ToggleCommand;
+import me.Danker.features.CrystalHollowWaypoints;
+import me.Danker.gui.DankerGui;
+import me.Danker.gui.buttons.FeatureButton;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.RenderUtils;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CrystalHollowWaypointsGui extends GuiScreen {
+
+ private final int page;
+ private final List<GuiButton> allButtons = new ArrayList<>();
+
+ private GuiButton goBack;
+ private GuiButton backPage;
+ private GuiButton nextPage;
+ private GuiButton sendDSM;
+ private GuiButton sendSBE;
+ private GuiButton add;
+ private FeatureButton crystalHollowWaypoints;
+ private FeatureButton crystalAutoWaypoints;
+ private FeatureButton crystalAutoPlayerWaypoints;
+
+ public CrystalHollowWaypointsGui(int page) {
+ this.page = page;
+ }
+
+ @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();
+
+ goBack = new GuiButton(0, 2, height - 30, 100, 20, "Go Back");
+ backPage = new GuiButton(0, width / 2 - 100, (int) (height * 0.8), 80, 20, "< Back");
+ nextPage = new GuiButton(0, width / 2 + 20, (int) (height * 0.8), 80, 20, "Next >");
+ sendDSM = new GuiButton(0, 2, 10, 175, 20, "Send DSM Formatted Waypoints");
+ sendSBE = new GuiButton(0, 2, 40, 175, 20, "Send SBE Formatted Waypoints");
+ add = new GuiButton(0, 0, 0, "Add Waypoint");
+ crystalHollowWaypoints = new FeatureButton("Crystal Hollows Waypoints: " + Utils.getColouredBoolean(ToggleCommand.crystalHollowWaypoints), "Shows waypoints to various places in the Crystal Hollows.");
+ crystalAutoWaypoints = new FeatureButton("Auto Waypoints: " + Utils.getColouredBoolean(ToggleCommand.crystalAutoWaypoints), "Automatically creates waypoints when you visit a special place in the Crystal Hollows.");
+ crystalAutoPlayerWaypoints = new FeatureButton("Auto Add Player Waypoints: " + Utils.getColouredBoolean(ToggleCommand.crystalAutoPlayerWaypoints), "Automatically adds waypoints sent from players.");
+
+ allButtons.clear();
+ allButtons.add(add);
+ allButtons.add(crystalHollowWaypoints);
+ allButtons.add(crystalAutoWaypoints);
+ allButtons.add(crystalAutoPlayerWaypoints);
+ for (int i = 0; i < CrystalHollowWaypoints.waypoints.size(); i++) {
+ CrystalHollowWaypoints.Waypoint waypoint = CrystalHollowWaypoints.waypoints.get(i);
+ GuiButton button = new GuiButton(i, 0, 0, waypoint.location + " >");
+ allButtons.add(button);
+ }
+
+ reInit();
+ }
+
+ public void reInit() {
+ this.buttonList.clear();
+
+ for (int i = (page - 1) * 7, iteration = 0; iteration < 7 && i < allButtons.size(); i++, iteration++) {
+ GuiButton button = allButtons.get(i);
+ button.xPosition = width / 2 - 100;
+ button.yPosition = (int) (height * (0.1 * (iteration + 1)));
+ this.buttonList.add(button);
+ }
+
+ if (page > 1) this.buttonList.add(backPage);
+ if (page < Math.ceil(allButtons.size() / 7D)) this.buttonList.add(nextPage);
+
+ this.buttonList.add(goBack);
+ this.buttonList.add(sendDSM);
+ this.buttonList.add(sendSBE);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+
+ String pageText = "Page: " + page + "/" + (int) Math.ceil(allButtons.size() / 7D);
+ RenderUtils.drawCenteredText(pageText, width, 10, 1D);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button) {
+ EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
+ if (button == goBack) {
+ mc.displayGuiScreen(new DankerGui(1, ""));
+ } else if (button == nextPage) {
+ mc.displayGuiScreen(new CrystalHollowWaypointsGui(page + 1));
+ } else if (button == backPage) {
+ mc.displayGuiScreen(new CrystalHollowWaypointsGui(page - 1));
+ } else if (button == sendDSM) {
+ if (CrystalHollowWaypoints.waypoints.size() > 0) {
+ StringBuilder message = new StringBuilder();
+ for (CrystalHollowWaypoints.Waypoint waypoint : CrystalHollowWaypoints.waypoints) {
+ if (message.length() > 0) message.append("\\n");
+ message.append(waypoint.getFormattedWaypoint());
+ }
+ message.insert(0, "$DSMCHWP:");
+ player.sendChatMessage(message.toString());
+ }
+ } else if (button == sendSBE) {
+ if (CrystalHollowWaypoints.waypoints.size() > 0) {
+ StringBuilder message = new StringBuilder();
+ for (CrystalHollowWaypoints.Waypoint waypoint : CrystalHollowWaypoints.waypoints) {
+ if (message.length() > 0) message.append("\\n");
+ message.append(waypoint.getFormattedWaypoint());
+ }
+ message.insert(0, "$SBECHWP:");
+ player.sendChatMessage(message.toString());
+ }
+ } else if (button == add) {
+ mc.displayGuiScreen(new CrystalHollowAddWaypointGui());
+ } else if (button == crystalHollowWaypoints) {
+ ToggleCommand.crystalHollowWaypoints = !ToggleCommand.crystalHollowWaypoints;
+ ConfigHandler.writeBooleanConfig("toggles", "CrystalHollowWaypoints", ToggleCommand.crystalHollowWaypoints);
+ crystalHollowWaypoints.displayString = "Crystal Hollows Waypoints: " + Utils.getColouredBoolean(ToggleCommand.crystalHollowWaypoints);
+ } else if (button == crystalAutoWaypoints) {
+ ToggleCommand.crystalAutoWaypoints = !ToggleCommand.crystalAutoWaypoints;
+ ConfigHandler.writeBooleanConfig("toggles", "CrystalAutoWaypoints", ToggleCommand.crystalAutoWaypoints);
+ crystalAutoWaypoints.displayString = "Auto Waypoints: " + Utils.getColouredBoolean(ToggleCommand.crystalAutoWaypoints);
+ } else if (button == crystalAutoPlayerWaypoints) {
+ ToggleCommand.crystalAutoPlayerWaypoints = !ToggleCommand.crystalAutoPlayerWaypoints;
+ ConfigHandler.writeBooleanConfig("toggles", "CrystalAutoPlayerWaypoints", ToggleCommand.crystalAutoPlayerWaypoints);
+ crystalAutoPlayerWaypoints.displayString = "Auto Add Player Waypoints: " + Utils.getColouredBoolean(ToggleCommand.crystalAutoPlayerWaypoints);
+ } else {
+ mc.displayGuiScreen(new CrystalHollowWaypointActionGui(button.id));
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/handlers/APIHandler.java b/src/main/java/me/Danker/handlers/APIHandler.java
index 66001a3..3c3d9b2 100644
--- a/src/main/java/me/Danker/handlers/APIHandler.java
+++ b/src/main/java/me/Danker/handlers/APIHandler.java
@@ -8,6 +8,12 @@ import me.Danker.DankersSkyblockMod;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentText;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
import java.io.BufferedReader;
import java.io.IOException;
@@ -15,10 +21,11 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.Scanner;
public class APIHandler {
- public static JsonObject getResponse(String urlString) {
+ public static JsonObject getResponse(String urlString, boolean hasError) {
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
try {
@@ -28,7 +35,7 @@ public class APIHandler {
conn.setRequestProperty("User-Agent", "Dsm/1.0");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
- BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+ BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
String input;
StringBuilder response = new StringBuilder();
@@ -41,7 +48,7 @@ public class APIHandler {
return gson.fromJson(response.toString(), JsonObject.class);
} else {
- if (urlString.startsWith("https://api.hypixel.net/") || urlString.startsWith("https://hypixel-api.senither.com")) {
+ if (hasError) {
InputStream errorStream = conn.getErrorStream();
try (Scanner scanner = new Scanner(errorStream)) {
scanner.useDelimiter("\\Z");
@@ -63,6 +70,29 @@ public class APIHandler {
return new JsonObject();
}
+
+ public static JsonObject getResponsePOST(String urlString, JsonObject body, boolean hasError) throws IOException {
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+
+ CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+
+ try {
+ HttpPost req = new HttpPost(urlString);
+ StringEntity params = new StringEntity(body.toString());
+ req.addHeader("content-type", "application/json");
+ req.setEntity(params);
+ HttpResponse response = httpClient.execute(req);
+
+ return new Gson().fromJson(EntityUtils.toString(response.getEntity(), "UTF-8"), JsonObject.class);
+ } catch (Exception ex) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "An error has occured. See logs for more details."));
+ ex.printStackTrace();
+ } finally {
+ httpClient.close();
+ }
+
+ return new JsonObject();
+ }
// Only used for UUID => Username
public static JsonArray getArrayResponse(String urlString) {
@@ -98,7 +128,7 @@ public class APIHandler {
}
public static String getUUID(String username) {
- JsonObject uuidResponse = getResponse("https://api.mojang.com/users/profiles/minecraft/" + username);
+ JsonObject uuidResponse = getResponse("https://api.mojang.com/users/profiles/minecraft/" + username, false);
return uuidResponse.get("id").getAsString();
}
@@ -108,7 +138,7 @@ public class APIHandler {
// Get profiles
System.out.println("Fetching profiles...");
- JsonObject profilesResponse = getResponse("https://api.hypixel.net/skyblock/profiles?uuid=" + UUID + "&key=" + key);
+ JsonObject profilesResponse = getResponse("https://api.hypixel.net/skyblock/profiles?uuid=" + UUID + "&key=" + key, true);
if (!profilesResponse.get("success").getAsBoolean()) {
String reason = profilesResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java
index ce0df16..f5e2706 100644
--- a/src/main/java/me/Danker/handlers/ConfigHandler.java
+++ b/src/main/java/me/Danker/handlers/ConfigHandler.java
@@ -1,12 +1,13 @@
package me.Danker.handlers;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
import me.Danker.DankersSkyblockMod;
import me.Danker.commands.MoveCommand;
import me.Danker.commands.ScaleCommand;
import me.Danker.commands.ToggleCommand;
import me.Danker.features.*;
-import me.Danker.features.loot.LootDisplay;
-import me.Danker.features.loot.LootTracker;
+import me.Danker.features.loot.*;
import me.Danker.features.puzzlesolvers.*;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
@@ -15,6 +16,11 @@ import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Configuration;
import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
public class ConfigHandler {
public static Configuration config;
@@ -195,6 +201,7 @@ public class ConfigHandler {
ToggleCommand.coordsToggled = initBoolean("toggles", "Coords", false);
ToggleCommand.goldenToggled = initBoolean("toggles", "Golden", false);
ToggleCommand.slayerCountTotal = initBoolean("toggles", "SlayerCount", true);
+ ToggleCommand.masterSPlusDisplay = initBoolean("toggles", "MasterSPlusDisplay", true);
ToggleCommand.rngesusAlerts = initBoolean("toggles", "RNGesusAlerts", false);
ToggleCommand.ghostDisplay = initBoolean("toggles", "GhostDisplay", true);
ToggleCommand.dungeonTimerToggled = initBoolean("toggles", "GhostTimer", false);
@@ -215,15 +222,14 @@ public class ConfigHandler {
ToggleCommand.teammatesInRadius = initBoolean("toggles", "TeammatesInRadius", false);
ToggleCommand.giantHP = initBoolean("toggles", "GiantHP", false);
ToggleCommand.hidePetCandy = initBoolean("toggles", "HidePetCandy", false);
- // Chat Messages
- ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true);
- ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true);
- ToggleCommand.implosionMessages = initBoolean("toggles", "ImplosionMessages", true);
- ToggleCommand.healMessages = initBoolean("toggles", "HealMessages", true);
- ToggleCommand.cooldownMessages = initBoolean("toggles", "CooldownMessages", true);
- ToggleCommand.manaMessages = initBoolean("toggles", "ManaMessages", true);
- ToggleCommand.killComboMessages = initBoolean("toggles", "KillComboMessages", true);
- // Dungeons
+ ToggleCommand.customColouredNames = initBoolean("toggles", "CustomColouredNames", true); // enabled by default
+ ToggleCommand.endOfFarmAlert = initBoolean("toggles", "EndOfFarmAlert", false);
+ ToggleCommand.gemstoneLore = initBoolean("toggles", "GemstoneLore", false);
+ ToggleCommand.crystalHollowWaypoints = initBoolean("toggles", "CrystalHollowWaypoints", false);
+ ToggleCommand.crystalAutoWaypoints = initBoolean("toggles", "CrystalAutoWaypoints", true); // enabled by default
+ ToggleCommand.crystalAutoPlayerWaypoints = initBoolean("toggles", "CrystalAutoPlayerWaypoints", false);
+ ToggleCommand.autoAcceptReparty = initBoolean("toggles", "AutoAcceptReparty", false);
+ ToggleCommand.abilityCooldowns = initBoolean("toggles", "AbilityCooldowns", false);
ToggleCommand.dungeonTimerToggled = initBoolean("toggles", "DungeonTimer", false);
ToggleCommand.lowHealthNotifyToggled = initBoolean("toggles", "LowHealthNotify", false);
ToggleCommand.lividSolverToggled = initBoolean("toggles", "LividSolver", false);
@@ -233,12 +239,26 @@ public class ConfigHandler {
ToggleCommand.necronNotificationsToggled = initBoolean("toggles", "NecronNotifications", false);
ToggleCommand.bonzoTimerToggled = initBoolean("toggles", "BonzoTimer", false);
ToggleCommand.swapToPickBlockToggled = initBoolean("toggles", "PickBlock", false);
- ToggleCommand.autoSkillTrackerToggled = initBoolean("toggles", "AutoSkillTracker", false);
+ ToggleCommand.flowerWeaponsToggled = initBoolean("toggles", "FlowerWeapons", false);
+ ToggleCommand.autoSkillTrackerToggled = initBoolean("toggles", "AutoSkillTracker", false);
+ ToggleCommand.alerts = initBoolean("toggles", "Alerts", false);
+ ToggleCommand.dungeonScore = initBoolean("toggles", "DungeonScore", false);
+ ToggleCommand.hideArmour = initBoolean("toggles", "HideArmour", false);
+ ToggleCommand.autoJoinSkyblock = initBoolean("toggles", "AutoJoinSkyblock", false);
+ // Chat Messages
+ ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true);
+ ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true);
+ ToggleCommand.implosionMessages = initBoolean("toggles", "ImplosionMessages", true);
+ ToggleCommand.healMessages = initBoolean("toggles", "HealMessages", true);
+ ToggleCommand.cooldownMessages = initBoolean("toggles", "CooldownMessages", true);
+ ToggleCommand.manaMessages = initBoolean("toggles", "ManaMessages", true);
+ ToggleCommand.killComboMessages = initBoolean("toggles", "KillComboMessages", true);
// Puzzle Solvers
ToggleCommand.threeManToggled = initBoolean("toggles", "ThreeManPuzzle", false);
ToggleCommand.oruoToggled = initBoolean("toggles", "OruoPuzzle", false);
ToggleCommand.blazeToggled = initBoolean("toggles", "BlazePuzzle", false);
ToggleCommand.creeperToggled = initBoolean("toggles", "CreeperPuzzle", false);
+ ToggleCommand.creeperLinesToggled = initBoolean("toggles", "CreeperLines", true);
ToggleCommand.waterToggled = initBoolean("toggles", "WaterPuzzle", false);
ToggleCommand.ticTacToeToggled = initBoolean("toggles", "TicTacToePuzzle", false);
ToggleCommand.boulderToggled = initBoolean("toggles", "BoulderPuzzle", false);
@@ -247,6 +267,9 @@ public class ConfigHandler {
ToggleCommand.startsWithToggled = initBoolean("toggles", "StartsWithTerminal", false);
ToggleCommand.selectAllToggled = initBoolean("toggles", "SelectAllTerminal", false);
ToggleCommand.clickInOrderToggled = initBoolean("toggles", "ClickInOrderTerminal", false);
+ ToggleCommand.sameColourToggled = initBoolean("toggles", "SameColourTerminal", false);
+ ToggleCommand.blockWrongTerminalClicksToggled = initBoolean("toggles", "BlockWrongTerminalClicks", false);
+ ToggleCommand.itemFrameOnSeaLanternsToggled = initBoolean("toggles", "IgnoreItemFrameOnSeaLanterns", false);
// Experiment Solvers
ToggleCommand.ultrasequencerToggled = initBoolean("toggles", "UltraSequencer", false);
ToggleCommand.chronomatronToggled = initBoolean("toggles", "Chronomatron", false);
@@ -256,182 +279,315 @@ public class ConfigHandler {
ToggleCommand.dungeonBossMusic = initBoolean("toggles", "DungeonBossMusic", false);
ToggleCommand.bloodRoomMusic = initBoolean("toggles", "BloodRoomMusic", false);
ToggleCommand.dungeonMusic = initBoolean("toggles", "DungeonMusic", false);
+ ToggleCommand.hubMusic = initBoolean("toggles", "HubMusic", false);
+ ToggleCommand.islandMusic = initBoolean("toggles", "IslandMusic", false);
+ ToggleCommand.dungeonHubMusic = initBoolean("toggles", "DungeonHubMusic", false);
+ ToggleCommand.farmingIslandsMusic = initBoolean("toggles", "FarmingIslandsMusic", false);
+ ToggleCommand.goldMineMusic = initBoolean("toggles", "GoldMineMusic", false);
+ ToggleCommand.deepCavernsMusic = initBoolean("toggles", "DeepCavernsMusic", false);
+ ToggleCommand.dwarvenMinesMusic = initBoolean("toggles", "DwarvenMinesMusic", false);
+ ToggleCommand.crystalHollowsMusic = initBoolean("toggles", "CrystalHollowsMusic", false);
+ ToggleCommand.spidersDenMusic = initBoolean("toggles", "SpidersDenMusic", false);
+ ToggleCommand.crimsonIsleMusic = initBoolean("toggles", "CrimsonIsleMusic", false);
+ ToggleCommand.endMusic = initBoolean("toggles", "Music", false);
+ ToggleCommand.parkMusic = initBoolean("toggles", "Music", false);
// Music Volume
CustomMusic.dungeonbossVolume = initInt("music", "DungeonBossVolume", 50);
CustomMusic.bloodroomVolume = initInt("music", "BloodRoomVolume", 50);
CustomMusic.dungeonVolume = initInt("music", "DungeonVolume", 50);
+ CustomMusic.hubVolume = initInt("music", "HubVolume", 50);
+ CustomMusic.islandVolume = initInt("music", "IslandVolume", 50);
+ CustomMusic.dungeonHubVolume = initInt("music", "DungeonHubVolume", 50);
+ CustomMusic.farmingIslandsVolume = initInt("music", "FarmingIslandsVolume", 50);
+ CustomMusic.goldMineVolume = initInt("music", "GoldMineVolume", 50);
+ CustomMusic.deepCavernsVolume = initInt("music", "DeepCavernsVolume", 50);
+ CustomMusic.dwarvenMinesVolume = initInt("music", "DwarvenMinesVolume", 50);
+ CustomMusic.crystalHollowsVolume = initInt("music", "CrystalHollowsVolume", 50);
+ CustomMusic.spidersDenVolume = initInt("music", "SpidersDenVolume", 50);
+ CustomMusic.crimsonIsleVolume = initInt("music", "CrimsonIsleVolume", 50);
+ CustomMusic.endVolume = initInt("music", "EndVolume", 50);
+ CustomMusic.parkVolume = initInt("music", "ParkVolume", 50);
// API
if (!hasKey("api", "APIKey")) writeStringConfig("api", "APIKey", "");
+
+ // Block Wrong Slayer
+ if (!hasKey("toggles", "BlockSlayer")) writeStringConfig("toggles", "BlockSlayer", "");
+ String onlySlayer = getString("toggles", "BlockSlayer");
+ if (!onlySlayer.equals("")) {
+ BlockWrongSlayer.onlySlayerName = onlySlayer.substring(0, onlySlayer.lastIndexOf(" "));
+ BlockWrongSlayer.onlySlayerNumber = onlySlayer.substring(onlySlayer.lastIndexOf(" ") + 1);
+ }
// Wolf
- LootTracker.wolfSvens = initInt("wolf", "svens", 0);
- LootTracker.wolfTeeth = initInt("wolf", "teeth", 0);
- LootTracker.wolfWheels = initInt("wolf", "wheel", 0);
- LootTracker.wolfWheelsDrops = initInt("wolf", "wheelDrops", 0);
- LootTracker.wolfSpirits = initInt("wolf", "spirit", 0);
- LootTracker.wolfBooks = initInt("wolf", "book", 0);
- LootTracker.wolfEggs = initInt("wolf", "egg", 0);
- LootTracker.wolfCoutures = initInt("wolf", "couture", 0);
- LootTracker.wolfBaits = initInt("wolf", "bait", 0);
- LootTracker.wolfFluxes = initInt("wolf", "flux", 0);
- LootTracker.wolfTime = initDouble("wolf", "timeRNG", -1);
- LootTracker.wolfBosses = initInt("wolf", "bossRNG", -1);
+ WolfTracker.wolfSvens = initInt("wolf", "svens", 0);
+ WolfTracker.wolfTeeth = initInt("wolf", "teeth", 0);
+ WolfTracker.wolfWheels = initInt("wolf", "wheel", 0);
+ WolfTracker.wolfWheelsDrops = initInt("wolf", "wheelDrops", 0);
+ WolfTracker.wolfSpirits = initInt("wolf", "spirit", 0);
+ WolfTracker.wolfBooks = initInt("wolf", "book", 0);
+ WolfTracker.wolfEggs = initInt("wolf", "egg", 0);
+ WolfTracker.wolfCoutures = initInt("wolf", "couture", 0);
+ WolfTracker.wolfBaits = initInt("wolf", "bait", 0);
+ WolfTracker.wolfFluxes = initInt("wolf", "flux", 0);
+ WolfTracker.wolfTime = initDouble("wolf", "timeRNG", -1);
+ WolfTracker.wolfBosses = initInt("wolf", "bossRNG", -1);
// Spider
- LootTracker.spiderTarantulas = initInt("spider", "tarantulas", 0);
- LootTracker.spiderWebs = initInt("spider", "web", 0);
- LootTracker.spiderTAP = initInt("spider", "tap", 0);
- LootTracker.spiderTAPDrops = initInt("spider", "tapDrops", 0);
- LootTracker.spiderBites = initInt("spider", "bite", 0);
- LootTracker.spiderCatalysts = initInt("spider", "catalyst", 0);
- LootTracker.spiderBooks = initInt("spider", "book", 0);
- LootTracker.spiderSwatters = initInt("spider", "swatter", 0);
- LootTracker.spiderTalismans = initInt("spider", "talisman", 0);
- LootTracker.spiderMosquitos = initInt("spider", "mosquito", 0);
- LootTracker.spiderTime = initDouble("spider", "timeRNG", -1);
- LootTracker.spiderBosses = initInt("spider", "bossRNG", -1);
+ SpiderTracker.spiderTarantulas = initInt("spider", "tarantulas", 0);
+ SpiderTracker.spiderWebs = initInt("spider", "web", 0);
+ SpiderTracker.spiderTAP = initInt("spider", "tap", 0);
+ SpiderTracker.spiderTAPDrops = initInt("spider", "tapDrops", 0);
+ SpiderTracker.spiderBites = initInt("spider", "bite", 0);
+ SpiderTracker.spiderCatalysts = initInt("spider", "catalyst", 0);
+ SpiderTracker.spiderBooks = initInt("spider", "book", 0);
+ SpiderTracker.spiderSwatters = initInt("spider", "swatter", 0);
+ SpiderTracker.spiderTalismans = initInt("spider", "talisman", 0);
+ SpiderTracker.spiderMosquitos = initInt("spider", "mosquito", 0);
+ SpiderTracker.spiderTime = initDouble("spider", "timeRNG", -1);
+ SpiderTracker.spiderBosses = initInt("spider", "bossRNG", -1);
// Zombie
- LootTracker.zombieRevs = initInt("zombie", "revs", 0);
- LootTracker.zombieRevFlesh = initInt("zombie", "revFlesh", 0);
- LootTracker.zombieFoulFlesh = initInt("zombie", "foulFlesh", 0);
- LootTracker.zombieFoulFleshDrops = initInt("zombie", "foulFleshDrops", 0);
- LootTracker.zombiePestilences = initInt("zombie", "pestilence", 0);
- LootTracker.zombieUndeadCatas = initInt("zombie", "undeadCatalyst", 0);
- LootTracker.zombieBooks = initInt("zombie", "book", 0);
- LootTracker.zombieBeheadeds = initInt("zombie", "beheaded", 0);
- LootTracker.zombieRevCatas = initInt("zombie", "revCatalyst", 0);
- LootTracker.zombieSnakes = initInt("zombie", "snake", 0);
- LootTracker.zombieScythes = initInt("zombie", "scythe", 0);
- LootTracker.zombieShards = initInt("zombie", "shard", 0);
- LootTracker.zombieWardenHearts = initInt("zombie", "heart", 0);
- LootTracker.zombieTime = initDouble("zombie", "timeRNG", -1);
- LootTracker.zombieBosses = initInt("zombie", "bossRNG", -1);
-
+ ZombieTracker.zombieRevs = initInt("zombie", "revs", 0);
+ ZombieTracker.zombieRevFlesh = initInt("zombie", "revFlesh", 0);
+ ZombieTracker.zombieRevViscera = initInt("zombie", "revViscera", 0);
+ ZombieTracker.zombieFoulFlesh = initInt("zombie", "foulFlesh", 0);
+ ZombieTracker.zombieFoulFleshDrops = initInt("zombie", "foulFleshDrops", 0);
+ ZombieTracker.zombiePestilences = initInt("zombie", "pestilence", 0);
+ ZombieTracker.zombieUndeadCatas = initInt("zombie", "undeadCatalyst", 0);
+ ZombieTracker.zombieBooks = initInt("zombie", "book", 0);
+ ZombieTracker.zombieBeheadeds = initInt("zombie", "beheaded", 0);
+ ZombieTracker.zombieRevCatas = initInt("zombie", "revCatalyst", 0);
+ ZombieTracker.zombieSnakes = initInt("zombie", "snake", 0);
+ ZombieTracker.zombieScythes = initInt("zombie", "scythe", 0);
+ ZombieTracker.zombieShards = initInt("zombie", "shard", 0);
+ ZombieTracker.zombieWardenHearts = initInt("zombie", "heart", 0);
+ ZombieTracker.zombieTime = initDouble("zombie", "timeRNG", -1);
+ ZombieTracker.zombieBosses = initInt("zombie", "bossRNG", -1);
+ // Enderman
+ EndermanTracker.endermanVoidglooms = initInt("enderman", "voidglooms", 0);
+ EndermanTracker.endermanNullSpheres = initInt("enderman", "nullSpheres", 0);
+ EndermanTracker.endermanTAP = initInt("enderman", "tap", 0);
+ EndermanTracker.endermanTAPDrops = initInt("enderman", "tapDrops", 0);
+ EndermanTracker.endermanEndersnakes = initInt("enderman", "endersnakes", 0);
+ EndermanTracker.endermanSummoningEyes = initInt("enderman", "summoningEyes", 0);
+ EndermanTracker.endermanManaBooks = initInt("enderman", "manaBooks", 0);
+ EndermanTracker.endermanTuners = initInt("enderman", "tuners", 0);
+ EndermanTracker.endermanAtoms = initInt("enderman", "atoms", 0);
+ EndermanTracker.endermanEspressoMachines = initInt("enderman", "espressoMachines", 0);
+ EndermanTracker.endermanSmartyBooks = initInt("enderman", "smartyBooks", 0);
+ EndermanTracker.endermanEndRunes = initInt("enderman", "endRunes", 0);
+ EndermanTracker.endermanChalices = initInt("enderman", "chalices", 0);
+ EndermanTracker.endermanDice = initInt("enderman", "dice", 0);
+ EndermanTracker.endermanArtifacts = initInt("enderman", "artifacts", 0);
+ EndermanTracker.endermanSkins = initInt("enderman", "skins", 0);
+ EndermanTracker.endermanMergers = initInt("enderman", "mergers", 0);
+ EndermanTracker.endermanCores = initInt("enderman", "cores", 0);
+ EndermanTracker.endermanEnchantRunes = initInt("enderman", "enchantRunes", 0);
+ EndermanTracker.endermanEnderBooks = initInt("enderman", "enderBooks", 0);
+ EndermanTracker.endermanTime = initDouble("enderman", "timeRNG", -1);
+ EndermanTracker.endermanBosses = initInt("enderman", "bossRNG", -1);
+ // Blaze
+ BlazeTracker.demonlords = initInt("blaze", "demonlords", 0);
+ BlazeTracker.derelictAshes = initInt("blaze", "derelictAshes", 0);
+ BlazeTracker.lavatearRunes = initInt("blaze", "lavatearRunes", 0);
+ BlazeTracker.splashPotions = initInt("blaze", "splashPotions", 0);
+ BlazeTracker.magmaArrows = initInt("blaze", "magmaArrows", 0);
+ BlazeTracker.manaDisintegrators = initInt("blaze", "manaDisintegrators", 0);
+ BlazeTracker.scorchedBooks = initInt("blaze", "scorchedBooks", 0);
+ BlazeTracker.kelvinInverters = initInt("blaze", "kelvinInverters", 0);
+ BlazeTracker.blazeRodDistillates = initInt("blaze", "blazeRodDistillates", 0);
+ BlazeTracker.glowstoneDistillates = initInt("blaze", "glowstoneDistillates", 0);
+ BlazeTracker.magmaCreamDistillates = initInt("blaze", "magmaCreamDistillates", 0);
+ BlazeTracker.netherWartDistillates = initInt("blaze", "netherWartDistillates", 0);
+ BlazeTracker.gabagoolDistillates = initInt("blaze", "gabagoolDistillates", 0);
+ BlazeTracker.scorchedPowerCrystals = initInt("blaze", "scorchedPowerCrystals", 0);
+ BlazeTracker.fireAspectBooks = initInt("blaze", "fireAspectBooks", 0);
+ BlazeTracker.fieryBurstRunes = initInt("blaze", "fieryBurstRunes", 0);
+ BlazeTracker.opalGems = initInt("blaze", "opalGems", 0);
+ BlazeTracker.archfiendDice = initInt("blaze", "archfiendDice", 0);
+ BlazeTracker.duplexBooks = initInt("blaze", "duplexBooks", 0);
+ BlazeTracker.highClassArchfiendDice = initInt("blaze", "highClassArchfiendDice", 0);
+ BlazeTracker.engineeringPlans = initInt("blaze", "engineeringPlans", 0);
+ BlazeTracker.subzeroInverters = initInt("blaze", "subzeroInverters", 0);
+ BlazeTracker.time = initDouble("blaze", "timeRNG", -1);
+ BlazeTracker.bosses = initInt("blaze", "bossRNG", -1);
+
// Fishing
- LootTracker.seaCreatures = initInt("fishing", "seaCreature", 0);
- LootTracker.goodCatches = initInt("fishing", "goodCatch", 0);
- LootTracker.greatCatches = initInt("fishing", "greatCatch", 0);
- LootTracker.squids = initInt("fishing", "squid", 0);
- LootTracker.seaWalkers = initInt("fishing", "seaWalker", 0);
- LootTracker.nightSquids = initInt("fishing", "nightSquid", 0);
- LootTracker.seaGuardians = initInt("fishing", "seaGuardian", 0);
- LootTracker.seaWitches = initInt("fishing", "seaWitch", 0);
- LootTracker.seaArchers = initInt("fishing", "seaArcher", 0);
- LootTracker.monsterOfTheDeeps = initInt("fishing", "monsterOfDeep", 0);
- LootTracker.catfishes = initInt("fishing", "catfish", 0);
- LootTracker.carrotKings = initInt("fishing", "carrotKing", 0);
- LootTracker.seaLeeches = initInt("fishing", "seaLeech", 0);
- LootTracker.guardianDefenders = initInt("fishing", "guardianDefender", 0);
- LootTracker.deepSeaProtectors = initInt("fishing", "deepSeaProtector", 0);
- LootTracker.hydras = initInt("fishing", "hydra", 0);
- LootTracker.seaEmperors = initInt("fishing", "seaEmperor", 0);
- LootTracker.empTime = initDouble("fishing", "empTime", -1);
- LootTracker.empSCs = initInt("fishing", "empSC", -1);
- LootTracker.fishingMilestone = initInt("fishing", "milestone", 0);
+ FishingTracker.seaCreatures = initInt("fishing", "seaCreature", 0);
+ FishingTracker.goodCatches = initInt("fishing", "goodCatch", 0);
+ FishingTracker.greatCatches = initInt("fishing", "greatCatch", 0);
+ FishingTracker.squids = initInt("fishing", "squid", 0);
+ FishingTracker.seaWalkers = initInt("fishing", "seaWalker", 0);
+ FishingTracker.nightSquids = initInt("fishing", "nightSquid", 0);
+ FishingTracker.seaGuardians = initInt("fishing", "seaGuardian", 0);
+ FishingTracker.seaWitches = initInt("fishing", "seaWitch", 0);
+ FishingTracker.seaArchers = initInt("fishing", "seaArcher", 0);
+ FishingTracker.monsterOfTheDeeps = initInt("fishing", "monsterOfDeep", 0);
+ FishingTracker.catfishes = initInt("fishing", "catfish", 0);
+ FishingTracker.carrotKings = initInt("fishing", "carrotKing", 0);
+ FishingTracker.seaLeeches = initInt("fishing", "seaLeech", 0);
+ FishingTracker.guardianDefenders = initInt("fishing", "guardianDefender", 0);
+ FishingTracker.deepSeaProtectors = initInt("fishing", "deepSeaProtector", 0);
+ FishingTracker.hydras = initInt("fishing", "hydra", 0);
+ FishingTracker.seaEmperors = initInt("fishing", "seaEmperor", 0);
+ FishingTracker.empTime = initDouble("fishing", "empTime", -1);
+ FishingTracker.empSCs = initInt("fishing", "empSC", -1);
+ FishingTracker.fishingMilestone = initInt("fishing", "milestone", 0);
// Fishing Winter
- LootTracker.frozenSteves = initInt("fishing", "frozenSteve", 0);
- LootTracker.frostyTheSnowmans = initInt("fishing", "snowman", 0);
- LootTracker.grinches = initInt("fishing", "grinch", 0);
- LootTracker.yetis = initInt("fishing", "yeti", 0);
- LootTracker.yetiTime = initDouble("fishing", "yetiTime", -1);
- LootTracker.yetiSCs = initInt("fishing", "yetiSC", -1);
+ FishingTracker.frozenSteves = initInt("fishing", "frozenSteve", 0);
+ FishingTracker.frostyTheSnowmans = initInt("fishing", "snowman", 0);
+ FishingTracker.grinches = initInt("fishing", "grinch", 0);
+ FishingTracker.yetis = initInt("fishing", "yeti", 0);
+ FishingTracker.yetiTime = initDouble("fishing", "yetiTime", -1);
+ FishingTracker.yetiSCs = initInt("fishing", "yetiSC", -1);
// Fishing Festival
- LootTracker.nurseSharks = initInt("fishing", "nurseShark", 0);
- LootTracker.blueSharks = initInt("fishing", "blueShark", 0);
- LootTracker.tigerSharks = initInt("fishing", "tigerShark", 0);
- LootTracker.greatWhiteSharks = initInt("fishing", "greatWhiteShark", 0);
+ FishingTracker.nurseSharks = initInt("fishing", "nurseShark", 0);
+ FishingTracker.blueSharks = initInt("fishing", "blueShark", 0);
+ FishingTracker.tigerSharks = initInt("fishing", "tigerShark", 0);
+ FishingTracker.greatWhiteSharks = initInt("fishing", "greatWhiteShark", 0);
// Spooky Fishing
- LootTracker.scarecrows = initInt("fishing", "scarecrow", 0);
- LootTracker.nightmares = initInt("fishing", "nightmare", 0);
- LootTracker.werewolfs = initInt("fishing", "werewolf", 0);
- LootTracker.phantomFishers = initInt("fishing", "phantomFisher", 0);
- LootTracker.grimReapers = initInt("fishing", "grimReaper", 0);
+ FishingTracker.scarecrows = initInt("fishing", "scarecrow", 0);
+ FishingTracker.nightmares = initInt("fishing", "nightmare", 0);
+ FishingTracker.werewolfs = initInt("fishing", "werewolf", 0);
+ FishingTracker.phantomFishers = initInt("fishing", "phantomFisher", 0);
+ FishingTracker.grimReapers = initInt("fishing", "grimReaper", 0);
+ // CH Fishing
+ FishingTracker.waterWorms = initInt("fishing", "waterWorm", 0);
+ FishingTracker.poisonedWaterWorms = initInt("fishing", "poisonedWaterWorm", 0);
+ FishingTracker.flamingWorms = initInt("fishing", "flamingWorm", 0);
+ FishingTracker.lavaBlazes = initInt("fishing", "lavaBlaze", 0);
+ FishingTracker.lavaPigmen = initInt("fishing", "lavaPigman", 0);
+ FishingTracker.zombieMiners = initInt("fishing", "zombieMiner", 0);
+ // Lava Fishing
+ FishingTracker.magmaSlugs = initInt("fishing", "magmaSlug", 0);
+ FishingTracker.moogmas = initInt("fishing", "moogma", 0);
+ FishingTracker.lavaLeeches = initInt("fishing", "lavaLeech", 0);
+ FishingTracker.pyroclasticWorms = initInt("fishing", "pyroclasticWorm", 0);
+ FishingTracker.lavaFlames = initInt("fishing", "lavaFlame", 0);
+ FishingTracker.fireEels = initInt("fishing", "fireEel", 0);
+ FishingTracker.tauruses = initInt("fishing", "taurus", 0);
+ FishingTracker.thunders = initInt("fishing", "thunder", 0);
+ FishingTracker.lordJawbuses = initInt("fishing", "lordJawbus", 0);
+ FishingTracker.jawbusTime = initDouble("fishing", "jawbusTime", -1);
+ FishingTracker.jawbusSCs = initInt("fishing", "jawbusSC", -1);
// Mythological
- LootTracker.mythCoins = initDouble("mythological", "coins", 0);
- LootTracker.griffinFeathers = initInt("mythological", "griffinFeather", 0);
- LootTracker.crownOfGreeds = initInt("mythological", "crownOfGreed", 0);
- LootTracker.washedUpSouvenirs = initInt("mythological", "washedUpSouvenir", 0);
- LootTracker.minosHunters = initInt("mythological", "minosHunter", 0);
- LootTracker.siameseLynxes = initInt("mythological", "siameseLynx", 0);
- LootTracker.minotaurs = initInt("mythological", "minotaur", 0);
- LootTracker.gaiaConstructs = initInt("mythological", "gaiaConstruct", 0);
- LootTracker.minosChampions = initInt("mythological", "minosChampion", 0);
- LootTracker.minosInquisitors = initInt("mythological", "minosInquisitor", 0);
+ MythologicalTracker.mythCoins = initDouble("mythological", "coins", 0);
+ MythologicalTracker.griffinFeathers = initInt("mythological", "griffinFeather", 0);
+ MythologicalTracker.crownOfGreeds = initInt("mythological", "crownOfGreed", 0);
+ MythologicalTracker.washedUpSouvenirs = initInt("mythological", "washedUpSouvenir", 0);
+ MythologicalTracker.minosHunters = initInt("mythological", "minosHunter", 0);
+ MythologicalTracker.siameseLynxes = initInt("mythological", "siameseLynx", 0);
+ MythologicalTracker.minotaurs = initInt("mythological", "minotaur", 0);
+ MythologicalTracker.gaiaConstructs = initInt("mythological", "gaiaConstruct", 0);
+ MythologicalTracker.minosChampions = initInt("mythological", "minosChampion", 0);
+ MythologicalTracker.minosInquisitors = initInt("mythological", "minosInquisitor", 0);
// Dungeons
- LootTracker.recombobulators = initInt("catacombs", "recombobulator", 0);
- LootTracker.fumingPotatoBooks = initInt("catacombs", "fumingBooks", 0);
+ CatacombsTracker.recombobulators = initInt("catacombs", "recombobulator", 0);
+ CatacombsTracker.fumingPotatoBooks = initInt("catacombs", "fumingBooks", 0);
// F1
- LootTracker.bonzoStaffs = initInt("catacombs", "bonzoStaff", 0);
- LootTracker.f1CoinsSpent = initDouble("catacombs", "floorOneCoins", 0);
- LootTracker.f1TimeSpent = initDouble("catacombs", "floorOneTime", 0);
+ CatacombsTracker.f1SPlus = initInt("catacombs", "floorOneSPlus", 0);
+ CatacombsTracker.bonzoStaffs = initInt("catacombs", "bonzoStaff", 0);
+ CatacombsTracker.f1CoinsSpent = initDouble("catacombs", "floorOneCoins", 0);
+ CatacombsTracker.f1TimeSpent = initDouble("catacombs", "floorOneTime", 0);
// F2
- LootTracker.scarfStudies = initInt("catacombs", "scarfStudies", 0);
- LootTracker.f2CoinsSpent = initDouble("catacombs", "floorTwoCoins", 0);
- LootTracker.f2TimeSpent = initDouble("catacombs", "floorTwoTime", 0);
+ CatacombsTracker.f2SPlus = initInt("catacombs", "floorTwoSPlus", 0);
+ CatacombsTracker.scarfStudies = initInt("catacombs", "scarfStudies", 0);
+ CatacombsTracker.f2CoinsSpent = initDouble("catacombs", "floorTwoCoins", 0);
+ CatacombsTracker.f2TimeSpent = initDouble("catacombs", "floorTwoTime", 0);
// F3
- LootTracker.adaptiveHelms = initInt("catacombs", "adaptiveHelm", 0);
- LootTracker.adaptiveChests = initInt("catacombs", "adaptiveChest", 0);
- LootTracker.adaptiveLegs = initInt("catacombs", "adaptiveLegging", 0);
- LootTracker.adaptiveBoots = initInt("catacombs", "adaptiveBoot", 0);
- LootTracker.adaptiveSwords = initInt("catacombs", "adaptiveSword", 0);
- LootTracker.f3CoinsSpent = initDouble("catacombs", "floorThreeCoins", 0);
- LootTracker.f3TimeSpent = initDouble("catacombs", "floorThreeTime", 0);
+ CatacombsTracker.f3SPlus = initInt("catacombs", "floorThreeSPlus", 0);
+ CatacombsTracker.adaptiveHelms = initInt("catacombs", "adaptiveHelm", 0);
+ CatacombsTracker.adaptiveChests = initInt("catacombs", "adaptiveChest", 0);
+ CatacombsTracker.adaptiveLegs = initInt("catacombs", "adaptiveLegging", 0);
+ CatacombsTracker.adaptiveBoots = initInt("catacombs", "adaptiveBoot", 0);
+ CatacombsTracker.adaptiveSwords = initInt("catacombs", "adaptiveSword", 0);
+ CatacombsTracker.f3CoinsSpent = initDouble("catacombs", "floorThreeCoins", 0);
+ CatacombsTracker.f3TimeSpent = initDouble("catacombs", "floorThreeTime", 0);
// F4
- LootTracker.spiritWings = initInt("catacombs", "spiritWing", 0);
- LootTracker.spiritBones = initInt("catacombs", "spiritBone", 0);
- LootTracker.spiritBoots = initInt("catacombs", "spiritBoot", 0);
- LootTracker.spiritSwords = initInt("catacombs", "spiritSword", 0);
- LootTracker.spiritBows = initInt("catacombs", "spiritBow", 0);
- LootTracker.epicSpiritPets = initInt("catacombs", "spiritPetEpic", 0);
- LootTracker.legSpiritPets = initInt("catacombs", "spiritPetLeg", 0);
- LootTracker.f4CoinsSpent = initDouble("catacombs", "floorFourCoins", 0);
- LootTracker.f4TimeSpent = initDouble("catacombs", "floorFourTime", 0);
+ CatacombsTracker.f4SPlus = initInt("catacombs", "floorFourSPlus", 0);
+ CatacombsTracker.spiritWings = initInt("catacombs", "spiritWing", 0);
+ CatacombsTracker.spiritBones = initInt("catacombs", "spiritBone", 0);
+ CatacombsTracker.spiritBoots = initInt("catacombs", "spiritBoot", 0);
+ CatacombsTracker.spiritSwords = initInt("catacombs", "spiritSword", 0);
+ CatacombsTracker.spiritBows = initInt("catacombs", "spiritBow", 0);
+ CatacombsTracker.epicSpiritPets = initInt("catacombs", "spiritPetEpic", 0);
+ CatacombsTracker.legSpiritPets = initInt("catacombs", "spiritPetLeg", 0);
+ CatacombsTracker.f4CoinsSpent = initDouble("catacombs", "floorFourCoins", 0);
+ CatacombsTracker.f4TimeSpent = initDouble("catacombs", "floorFourTime", 0);
// F5
- LootTracker.warpedStones = initInt("catacombs", "warpedStone", 0);
- LootTracker.shadowAssHelms = initInt("catacombs", "shadowAssassinHelm", 0);
- LootTracker.shadowAssChests = initInt("catacombs", "shadowAssassinChest", 0);
- LootTracker.shadowAssLegs = initInt("catacombs", "shadowAssassinLegging", 0);
- LootTracker.shadowAssBoots = initInt("catacombs", "shadowAssassinBoot", 0);
- LootTracker.lastBreaths = initInt("catacombs", "lastBreath", 0);
- LootTracker.lividDaggers = initInt("catacombs", "lividDagger", 0);
- LootTracker.shadowFurys = initInt("catacombs", "shadowFury", 0);
- LootTracker.f5CoinsSpent = initDouble("catacombs", "floorFiveCoins", 0);
- LootTracker.f5TimeSpent = initDouble("catacombs", "floorFiveTime", 0);
+ CatacombsTracker.f5SPlus = initInt("catacombs", "floorFiveSPlus", 0);
+ CatacombsTracker.warpedStones = initInt("catacombs", "warpedStone", 0);
+ CatacombsTracker.shadowAssHelms = initInt("catacombs", "shadowAssassinHelm", 0);
+ CatacombsTracker.shadowAssChests = initInt("catacombs", "shadowAssassinChest", 0);
+ CatacombsTracker.shadowAssLegs = initInt("catacombs", "shadowAssassinLegging", 0);
+ CatacombsTracker.shadowAssBoots = initInt("catacombs", "shadowAssassinBoot", 0);
+ CatacombsTracker.lastBreaths = initInt("catacombs", "lastBreath", 0);
+ CatacombsTracker.lividDaggers = initInt("catacombs", "lividDagger", 0);
+ CatacombsTracker.shadowFurys = initInt("catacombs", "shadowFury", 0);
+ CatacombsTracker.f5CoinsSpent = initDouble("catacombs", "floorFiveCoins", 0);
+ CatacombsTracker.f5TimeSpent = initDouble("catacombs", "floorFiveTime", 0);
// F6
- LootTracker.ancientRoses = initInt("catacombs", "ancientRose", 0);
- LootTracker.precursorEyes = initInt("catacombs", "precursorEye", 0);
- LootTracker.giantsSwords = initInt("catacombs", "giantsSword", 0);
- LootTracker.necroLordHelms = initInt("catacombs", "necroLordHelm", 0);
- LootTracker.necroLordChests = initInt("catacombs", "necroLordChest", 0);
- LootTracker.necroLordLegs = initInt("catacombs", "necroLordLegging", 0);
- LootTracker.necroLordBoots = initInt("catacombs", "necroLordBoot", 0);
- LootTracker.necroSwords = initInt("catacombs", "necroSword", 0);
- LootTracker.f6CoinsSpent = initDouble("catacombs", "floorSixCoins", 0);
- LootTracker.f6TimeSpent = initDouble("catacombs", "floorSixTime", 0);
+ CatacombsTracker.f6SPlus = initInt("catacombs", "floorSixSPlus", 0);
+ CatacombsTracker.ancientRoses = initInt("catacombs", "ancientRose", 0);
+ CatacombsTracker.precursorEyes = initInt("catacombs", "precursorEye", 0);
+ CatacombsTracker.giantsSwords = initInt("catacombs", "giantsSword", 0);
+ CatacombsTracker.necroLordHelms = initInt("catacombs", "necroLordHelm", 0);
+ CatacombsTracker.necroLordChests = initInt("catacombs", "necroLordChest", 0);
+ CatacombsTracker.necroLordLegs = initInt("catacombs", "necroLordLegging", 0);
+ CatacombsTracker.necroLordBoots = initInt("catacombs", "necroLordBoot", 0);
+ CatacombsTracker.necroSwords = initInt("catacombs", "necroSword", 0);
+ CatacombsTracker.f6Rerolls = initInt("catacombs", "floorSixRerolls", 0);
+ CatacombsTracker.f6CoinsSpent = initDouble("catacombs", "floorSixCoins", 0);
+ CatacombsTracker.f6TimeSpent = initDouble("catacombs", "floorSixTime", 0);
// F7
- LootTracker.witherBloods = initInt("catacombs", "witherBlood", 0);
- LootTracker.witherCloaks = initInt("catacombs", "witherCloak", 0);
- LootTracker.implosions = initInt("catacombs", "implosion", 0);
- LootTracker.witherShields = initInt("catacombs", "witherShield", 0);
- LootTracker.shadowWarps = initInt("catacombs", "shadowWarp", 0);
- LootTracker.necronsHandles = initInt("catacombs", "necronsHandle", 0);
- LootTracker.autoRecombs = initInt("catacombs", "autoRecomb", 0);
- LootTracker.witherHelms = initInt("catacombs", "witherHelm", 0);
- LootTracker.witherChests = initInt("catacombs", "witherChest", 0);
- LootTracker.witherLegs = initInt("catacombs", "witherLegging", 0);
- LootTracker.witherBoots = initInt("catacombs", "witherBoot", 0);
- LootTracker.f7CoinsSpent = initDouble("catacombs", "floorSevenCoins", 0);
- LootTracker.f7TimeSpent = initDouble("catacombs", "floorSevenTime", 0);
+ CatacombsTracker.f7SPlus = initInt("catacombs", "floorSevenSPlus", 0);
+ CatacombsTracker.witherBloods = initInt("catacombs", "witherBlood", 0);
+ CatacombsTracker.witherCloaks = initInt("catacombs", "witherCloak", 0);
+ CatacombsTracker.implosions = initInt("catacombs", "implosion", 0);
+ CatacombsTracker.witherShields = initInt("catacombs", "witherShield", 0);
+ CatacombsTracker.shadowWarps = initInt("catacombs", "shadowWarp", 0);
+ CatacombsTracker.necronsHandles = initInt("catacombs", "necronsHandle", 0);
+ CatacombsTracker.autoRecombs = initInt("catacombs", "autoRecomb", 0);
+ CatacombsTracker.witherHelms = initInt("catacombs", "witherHelm", 0);
+ CatacombsTracker.witherChests = initInt("catacombs", "witherChest", 0);
+ CatacombsTracker.witherLegs = initInt("catacombs", "witherLegging", 0);
+ CatacombsTracker.witherBoots = initInt("catacombs", "witherBoot", 0);
+ CatacombsTracker.f7Rerolls = initInt("catacombs", "floorSevenRerolls", 0);
+ CatacombsTracker.f7CoinsSpent = initDouble("catacombs", "floorSevenCoins", 0);
+ CatacombsTracker.f7TimeSpent = initDouble("catacombs", "floorSevenTime", 0);
+ // MM
+ CatacombsTracker.m1S = initInt("catacombs", "masterOneS", 0);
+ CatacombsTracker.m1SPlus = initInt("catacombs", "masterOneSPlus", 0);
+ CatacombsTracker.m2S = initInt("catacombs", "masterTwoS", 0);
+ CatacombsTracker.m2SPlus = initInt("catacombs", "masterTwoSPlus", 0);
+ CatacombsTracker.m3S = initInt("catacombs", "masterThreeS", 0);
+ CatacombsTracker.m3SPlus = initInt("catacombs", "masterThreeSPlus", 0);
+ CatacombsTracker.m4S = initInt("catacombs", "masterFourS", 0);
+ CatacombsTracker.m4SPlus = initInt("catacombs", "masterFourSPlus", 0);
+ CatacombsTracker.m5S = initInt("catacombs", "masterFiveS", 0);
+ CatacombsTracker.m5SPlus = initInt("catacombs", "masterFiveSPlus", 0);
+ CatacombsTracker.m6S = initInt("catacombs", "masterSixS", 0);
+ CatacombsTracker.m6SPlus = initInt("catacombs", "masterSixSPlus", 0);
+ CatacombsTracker.m7S = initInt("catacombs", "masterSevenS", 0);
+ CatacombsTracker.m7SPlus = initInt("catacombs", "masterSevenSPlus", 0);
+ CatacombsTracker.firstStars = initInt("catacombs", "firstStar", 0);
+ CatacombsTracker.secondStars = initInt("catacombs", "secondStar", 0);
+ CatacombsTracker.thirdStars = initInt("catacombs", "thirdStar", 0);
+ CatacombsTracker.fourthStars = initInt("catacombs", "fourthStar", 0);
+ CatacombsTracker.fifthStars = initInt("catacombs", "fifthStar", 0);
+ CatacombsTracker.necronDyes = initInt("catacombs", "necronDye", 0);
+ CatacombsTracker.darkClaymores = initInt("catacombs", "darkClaymore", 0);
+ CatacombsTracker.masterRerolls = initInt("catacombs", "masterRerolls", 0);
+ CatacombsTracker.masterCoinsSpent = initDouble("catacombs", "masterCoins", 0);
+ CatacombsTracker.masterTimeSpent = initDouble("catacombs", "masterTime", 0);
// Ghost
- LootTracker.sorrows = initInt("ghosts", "sorrow", 0);
- LootTracker.voltas = initInt("ghosts", "volta", 0);
- LootTracker.plasmas = initInt("ghosts", "plasma", 0);
- LootTracker.ghostlyBoots = initInt("ghosts", "ghostlyBoots", 0);
- LootTracker.bagOfCashs = initInt("ghosts", "bagOfCash", 0);
-
+ GhostTracker.sorrows = initInt("ghosts", "sorrow", 0);
+ GhostTracker.voltas = initInt("ghosts", "volta", 0);
+ GhostTracker.plasmas = initInt("ghosts", "plasma", 0);
+ GhostTracker.ghostlyBoots = initInt("ghosts", "ghostlyBoots", 0);
+ GhostTracker.bagOfCashs = initInt("ghosts", "bagOfCash", 0);
// Misc
LootDisplay.display = initString("misc", "display", "off");
@@ -440,6 +596,8 @@ public class ConfigHandler {
CakeTimer.cakeTime = initDouble("misc", "cakeTime", 0);
SkillTracker.showSkillTracker = initBoolean("misc", "showSkillTracker", false);
DankersSkyblockMod.firstLaunch = initBoolean("misc", "firstLaunch", true);
+ EndOfFarmAlert.min = initDouble("misc", "farmMin", -78.5);
+ EndOfFarmAlert.max = initDouble("misc", "farmMax", 79.5);
// Locations
ScaledResolution scaled = new ScaledResolution(Minecraft.getMinecraft());
@@ -468,6 +626,10 @@ public class ConfigHandler {
MoveCommand.teammatesInRadiusXY[1] = initInt("locations", "teammatesInRadiusY", 100);
MoveCommand.giantHPXY[0] = initInt("locations", "giantHPX", 80);
MoveCommand.giantHPXY[1] = initInt("locations", "giantHPY", 150);
+ MoveCommand.abilityCooldownsXY[0] = initInt("locations", "abilityCooldownsX", 120);
+ MoveCommand.abilityCooldownsXY[1] = initInt("locations", "abilityCooldownsY", 150);
+ MoveCommand.dungeonScoreXY[0] = initInt("locations", "dungeonScoreX", 150);
+ MoveCommand.dungeonScoreXY[1] = initInt("locations", "dungeonScoreY", 150);
// Scales
ScaleCommand.coordsScale = initDouble("scales", "coordsScale", 1);
@@ -482,11 +644,23 @@ public class ConfigHandler {
ScaleCommand.golemTimerScale = initDouble("scales", "golemTimerScale", 1);
ScaleCommand.teammatesInRadiusScale = initDouble("scales", "teammatesInRadiusScale", 1);
ScaleCommand.giantHPScale = initDouble("scales", "giantHPScale", 1);
+ ScaleCommand.abilityCooldownsScale = initDouble("scales", "abilityCooldownsScale", 1);
+ ScaleCommand.dungeonScoreScale = initDouble("scales", "dungeonScoreScale", 1);
+
+ // Skills
+ DankersSkyblockMod.farmingLevel = initInt("skills", "farming", -1);
+ DankersSkyblockMod.miningLevel = initInt("skills", "mining", -1);
+ DankersSkyblockMod.combatLevel = initInt("skills", "combat", -1);
+ DankersSkyblockMod.foragingLevel = initInt("skills", "foraging", -1);
+ DankersSkyblockMod.fishingLevel = initInt("skills", "fishing", -1);
+ DankersSkyblockMod.enchantingLevel = initInt("skills", "enchanting", -1);
+ DankersSkyblockMod.alchemyLevel = initInt("skills", "alchemy", -1);
+ DankersSkyblockMod.carpentryLevel = initInt("skills", "carpentry", -1);
// Colours
DankersSkyblockMod.MAIN_COLOUR = initString("colors", "main", EnumChatFormatting.GREEN.toString());
DankersSkyblockMod.SECONDARY_COLOUR = initString("colors", "secondary", EnumChatFormatting.DARK_GREEN.toString());
- DankersSkyblockMod.DELIMITER_COLOUR = initString("colors", "delimiter", EnumChatFormatting.AQUA.toString() + EnumChatFormatting.STRIKETHROUGH.toString());
+ DankersSkyblockMod.DELIMITER_COLOUR = initString("colors", "delimiter", EnumChatFormatting.AQUA.toString() + EnumChatFormatting.STRIKETHROUGH);
DankersSkyblockMod.ERROR_COLOUR = initString("colors", "error", EnumChatFormatting.RED.toString());
DankersSkyblockMod.TYPE_COLOUR = initString("colors", "type", EnumChatFormatting.GREEN.toString());
DankersSkyblockMod.VALUE_COLOUR = initString("colors", "value", EnumChatFormatting.DARK_GREEN.toString());
@@ -507,7 +681,7 @@ public class ConfigHandler {
PetColours.PET_1_TO_9 = initInt("colors", "pet1To9", 0x999999); // Grey
PetColours.PET_10_TO_19 = initInt("colors", "pet10To19", 0xD62440); // Red
PetColours.PET_20_TO_29 = initInt("colors", "pet20To29", 0xEF5230); // Orange
- PetColours.PET_30_TO_39 = initInt("colors", "pet30To39", 0xFFC400); // Yellow
+ PetColours.PET_30_TO_39 = initInt("colors", "pet30To39", 0x113CF2); // Dark Blue
PetColours.PET_40_TO_49 = initInt("colors", "pet40To49", 0x0EAC35); // Green
PetColours.PET_50_TO_59 = initInt("colors", "pet50To59", 0x008AD8); // Light Blue
PetColours.PET_60_TO_69 = initInt("colors", "pet60To69", 0x7E4FC6); // Purple
@@ -529,6 +703,21 @@ public class ConfigHandler {
// Commands
if (!hasKey("commands", "reparty")) writeBooleanConfig("commands", "reparty", false);
+
+ // JSON
+ Gson gson = new Gson();
+
+ try {
+ if (!(new File(Alerts.configFile).exists())) {
+ FileWriter file = new FileWriter(Alerts.configFile);
+ file.write(new JsonArray().toString());
+ file.close();
+ }
+ Alerts.Alert[] alerts = gson.fromJson(new FileReader(Alerts.configFile), Alerts.Alert[].class);
+ if (alerts != null) Alerts.alerts = new ArrayList<>(Arrays.asList(alerts));
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
}
}
diff --git a/src/main/java/me/Danker/handlers/PacketHandler.java b/src/main/java/me/Danker/handlers/PacketHandler.java
index a4fd85e..a5a858b 100644
--- a/src/main/java/me/Danker/handlers/PacketHandler.java
+++ b/src/main/java/me/Danker/handlers/PacketHandler.java
@@ -2,29 +2,30 @@ package me.Danker.handlers;
import io.netty.channel.ChannelDuplexHandler;
import io.netty.channel.ChannelHandlerContext;
-import me.Danker.utils.Utils;
-import net.minecraft.client.Minecraft;
+import io.netty.channel.ChannelPromise;
+import me.Danker.events.PacketReadEvent;
+import me.Danker.events.PacketWriteEvent;
import net.minecraft.network.Packet;
-import net.minecraft.network.play.server.S04PacketEntityEquipment;
-
-import java.lang.reflect.Field;
+import net.minecraftforge.common.MinecraftForge;
public class PacketHandler extends ChannelDuplexHandler {
-
- // Spirit boots fix
+
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
- if (Utils.inSkyblock && msg instanceof Packet && msg.getClass().getName().endsWith("S04PacketEntityEquipment")) { // Inventory packet name
- S04PacketEntityEquipment packet = (S04PacketEntityEquipment) msg;
- if (packet.getEntityID() == Minecraft.getMinecraft().thePlayer.getEntityId()) {
- Field slot = packet.getClass().getDeclaredField("field_149392_b"); // equipmentSlot
- slot.setAccessible(true);
- slot.setInt(packet, slot.getInt(packet) + 1);
- msg = packet;
- }
+ if (msg instanceof Packet) {
+ if (MinecraftForge.EVENT_BUS.post(new PacketReadEvent((Packet) msg))) return;
}
-
+
super.channelRead(ctx, msg);
}
+
+ @Override
+ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
+ if (msg instanceof Packet) {
+ if (MinecraftForge.EVENT_BUS.post(new PacketWriteEvent((Packet) msg))) return;
+ }
+
+ super.write(ctx, msg, promise);
+ }
}
diff --git a/src/main/java/me/Danker/utils/BoulderUtils.java b/src/main/java/me/Danker/utils/BoulderUtils.java
index 2d437d0..ca26c96 100644
--- a/src/main/java/me/Danker/utils/BoulderUtils.java
+++ b/src/main/java/me/Danker/utils/BoulderUtils.java
@@ -254,26 +254,26 @@ public class BoulderUtils {
double averageZ = (aabb.minZ + aabb.maxZ) / 2;
if (((boulderRoomDirection.equals("north") || boulderRoomDirection.equals("south")) && (direction == 'u' || direction == 'd')) ||
((boulderRoomDirection.equals("east") || boulderRoomDirection.equals("west")) && (direction == 'l' || direction == 'r'))) {
- Utils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.minZ), new Vec3(averageX, aabb.minY, aabb.maxZ), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.minZ), new Vec3(averageX, aabb.minY, aabb.maxZ), colourInt, 10, false, partialTicks);
} else {
- Utils.draw3DLine(new Vec3(aabb.minX, aabb.minY, averageZ), new Vec3(aabb.maxX, aabb.minY, averageZ), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(aabb.minX, aabb.minY, averageZ), new Vec3(aabb.maxX, aabb.minY, averageZ), colourInt, 10, false, partialTicks);
}
if ((boulderRoomDirection.equals("north") && direction == 'u') || (boulderRoomDirection.equals("south") && direction == 'd') ||
(boulderRoomDirection.equals("east") && direction == 'l') || (boulderRoomDirection.equals("west") && direction == 'r')) {
- Utils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.minZ), new Vec3(aabb.minX + thirtyPercent, aabb.minY, aabb.minZ + thirtyPercent), colourInt, 10, false, partialTicks);
- Utils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.minZ), new Vec3(aabb.maxX - thirtyPercent, aabb.minY, aabb.minZ + thirtyPercent), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.minZ), new Vec3(aabb.minX + thirtyPercent, aabb.minY, aabb.minZ + thirtyPercent), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.minZ), new Vec3(aabb.maxX - thirtyPercent, aabb.minY, aabb.minZ + thirtyPercent), colourInt, 10, false, partialTicks);
} else if ((boulderRoomDirection.equals("north") && direction == 'd') || (boulderRoomDirection.equals("south") && direction == 'u') ||
(boulderRoomDirection.equals("east") && direction == 'r') || (boulderRoomDirection.equals("west") && direction == 'l')) {
- Utils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.maxZ), new Vec3(aabb.minX + thirtyPercent, aabb.minY, aabb.maxZ - thirtyPercent), colourInt, 10, false, partialTicks);
- Utils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.maxZ), new Vec3(aabb.maxX - thirtyPercent, aabb.minY, aabb.maxZ - thirtyPercent), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.maxZ), new Vec3(aabb.minX + thirtyPercent, aabb.minY, aabb.maxZ - thirtyPercent), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(averageX, aabb.minY, aabb.maxZ), new Vec3(aabb.maxX - thirtyPercent, aabb.minY, aabb.maxZ - thirtyPercent), colourInt, 10, false, partialTicks);
} else if ((boulderRoomDirection.equals("north") && direction == 'l') || (boulderRoomDirection.equals("south") && direction == 'r') ||
(boulderRoomDirection.equals("east") && direction == 'd') || (boulderRoomDirection.equals("west") && direction == 'u')) {
- Utils.draw3DLine(new Vec3(aabb.minX, aabb.minY, averageZ), new Vec3(aabb.minX + thirtyPercent, aabb.minY, aabb.minZ + thirtyPercent), colourInt, 10, false, partialTicks);
- Utils.draw3DLine(new Vec3(aabb.minX, aabb.minY, averageZ), new Vec3(aabb.minX + thirtyPercent, aabb.minY, aabb.maxZ - thirtyPercent), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(aabb.minX, aabb.minY, averageZ), new Vec3(aabb.minX + thirtyPercent, aabb.minY, aabb.minZ + thirtyPercent), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(aabb.minX, aabb.minY, averageZ), new Vec3(aabb.minX + thirtyPercent, aabb.minY, aabb.maxZ - thirtyPercent), colourInt, 10, false, partialTicks);
} else {
- Utils.draw3DLine(new Vec3(aabb.maxX, aabb.minY, averageZ), new Vec3(aabb.maxX - thirtyPercent, aabb.minY, aabb.minZ + thirtyPercent), colourInt, 10, false, partialTicks);
- Utils.draw3DLine(new Vec3(aabb.maxX, aabb.minY, averageZ), new Vec3(aabb.maxX - thirtyPercent, aabb.minY, aabb.maxZ - thirtyPercent), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(aabb.maxX, aabb.minY, averageZ), new Vec3(aabb.maxX - thirtyPercent, aabb.minY, aabb.minZ + thirtyPercent), colourInt, 10, false, partialTicks);
+ RenderUtils.draw3DLine(new Vec3(aabb.maxX, aabb.minY, averageZ), new Vec3(aabb.maxX - thirtyPercent, aabb.minY, aabb.maxZ - thirtyPercent), colourInt, 10, false, partialTicks);
}
}
diff --git a/src/main/java/me/Danker/utils/RenderUtils.java b/src/main/java/me/Danker/utils/RenderUtils.java
new file mode 100644
index 0000000..b5ede19
--- /dev/null
+++ b/src/main/java/me/Danker/utils/RenderUtils.java
@@ -0,0 +1,388 @@
+package me.Danker.utils;
+
+import me.Danker.features.CrystalHollowWaypoints;
+import me.Danker.handlers.TextRenderer;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.Gui;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.renderer.*;
+import net.minecraft.client.renderer.entity.RenderManager;
+import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.Vec3;
+import org.lwjgl.opengl.GL11;
+
+import java.awt.*;
+
+public class RenderUtils {
+
+ public static void drawTitle(String text) {
+ Minecraft mc = Minecraft.getMinecraft();
+ ScaledResolution scaledResolution = new ScaledResolution(mc);
+
+ int height = scaledResolution.getScaledHeight();
+ int width = scaledResolution.getScaledWidth();
+ int drawHeight = 0;
+ String[] splitText = text.split("\n");
+ for (String title : splitText) {
+ int textLength = mc.fontRendererObj.getStringWidth(title);
+
+ double scale = 4;
+ if (textLength * scale > (width * 0.9F)) {
+ scale = (width * 0.9F) / (float) textLength;
+ }
+
+ int titleX = (int) ((width / 2) - (textLength * scale / 2));
+ int titleY = (int) ((height * 0.45) / scale) + (int) (drawHeight * scale);
+ new TextRenderer(mc, title, titleX, titleY, scale);
+ drawHeight += mc.fontRendererObj.FONT_HEIGHT;
+ }
+ }
+
+ public static void drawOnSlot(int size, int xSlotPos, int ySlotPos, int colour) {
+ ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
+ int guiLeft = (sr.getScaledWidth() - 176) / 2;
+ int guiTop = (sr.getScaledHeight() - 222) / 2;
+ int x = guiLeft + xSlotPos;
+ int y = guiTop + ySlotPos;
+ // Move down when chest isn't 6 rows
+ if (size != 90) y += (6 - (size - 36) / 9) * 9;
+
+ GL11.glTranslated(0, 0, 1);
+ Gui.drawRect(x, y, x + 16, y + 16, colour);
+ GL11.glTranslated(0, 0, -1);
+ }
+
+ public static void drawTextOnSlot(int size, int xSlotPos, int ySlotPos, String text) {
+ Minecraft mc = Minecraft.getMinecraft();
+ ScaledResolution sr = new ScaledResolution(mc);
+ int guiLeft = (sr.getScaledWidth() - 176) / 2;
+ int guiTop = (sr.getScaledHeight() - 222) / 2;
+ int x = guiLeft + xSlotPos;
+ int y = guiTop + ySlotPos;
+ // Move down when chest isn't 6 rows
+ if (size != 90) y += (6 - (size - 36) / 9) * 9;
+
+ int width = mc.fontRendererObj.getStringWidth(text);
+ GL11.glTranslated(0, 0, 1);
+ mc.fontRendererObj.drawString(text, x + 8 - width / 2, y + 5, 0xFFFFFF, true);
+ GL11.glTranslated(0, 0, -1);
+ }
+
+ public static void draw3DLine(Vec3 pos1, Vec3 pos2, int colourInt, int lineWidth, boolean depth, 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.translate(-realX, -realY, -realZ);
+ GlStateManager.disableTexture2D();
+ GlStateManager.enableBlend();
+ GlStateManager.disableAlpha();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ GL11.glLineWidth(lineWidth);
+ if (!depth) {
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+ GlStateManager.depthMask(false);
+ }
+ 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();
+ worldRenderer.pos(pos2.xCoord, pos2.yCoord, pos2.zCoord).endVertex();
+ Tessellator.getInstance().draw();
+
+ GlStateManager.translate(realX, realY, realZ);
+ if (!depth) {
+ GL11.glEnable(GL11.GL_DEPTH_TEST);
+ GlStateManager.depthMask(true);
+ }
+ GlStateManager.disableBlend();
+ GlStateManager.enableAlpha();
+ GlStateManager.enableTexture2D();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.popMatrix();
+ }
+
+ public static void draw3DString(BlockPos pos, String text, int colour, float partialTicks) {
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayer player = mc.thePlayer;
+ double x = (pos.getX() - player.lastTickPosX) + ((pos.getX() - player.posX) - (pos.getX() - player.lastTickPosX)) * partialTicks;
+ double y = (pos.getY() - player.lastTickPosY) + ((pos.getY() - player.posY) - (pos.getY() - player.lastTickPosY)) * partialTicks;
+ double z = (pos.getZ() - player.lastTickPosZ) + ((pos.getZ() - player.posZ) - (pos.getZ() - player.lastTickPosZ)) * partialTicks;
+ RenderManager renderManager = mc.getRenderManager();
+
+ float f = 1.6F;
+ float f1 = 0.016666668F * f;
+ int width = mc.fontRendererObj.getStringWidth(text) / 2;
+ GlStateManager.pushMatrix();
+ GlStateManager.translate(x, y, z);
+ GL11.glNormal3f(0f, 1f, 0f);
+ GlStateManager.rotate(-renderManager.playerViewY, 0f, 1f, 0f);
+ GlStateManager.rotate(renderManager.playerViewX, 1f, 0f, 0f);
+ GlStateManager.scale(-f1, -f1, -f1);
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ mc.fontRendererObj.drawString(text, -width, 0, colour);
+ GlStateManager.disableBlend();
+ GlStateManager.popMatrix();
+ }
+
+ // I couldnt get waypoint strings to work so in the end I just copied from NEU
+ // If anyone sees this please help
+ /*public static void draw3DWaypointString(CrystalHollowWaypoints.Waypoint waypoint, float partialTicks) {
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayer player = mc.thePlayer;
+ BlockPos pos = waypoint.pos;
+ double x = (pos.getX() - player.lastTickPosX) + ((pos.getX() - player.posX) - (pos.getX() - player.lastTickPosX)) * partialTicks;
+ double y = (pos.getY() - player.lastTickPosY) + ((pos.getY() - player.posY) - (pos.getY() - player.lastTickPosY)) * partialTicks;
+ double z = (pos.getZ() - player.lastTickPosZ) + ((pos.getZ() - player.posZ) - (pos.getZ() - player.lastTickPosZ)) * partialTicks;
+
+ double distance = player.getDistance(x, y, z);
+ if (distance > 12) {
+ x *= 12 / distance;
+ y *= 12 / distance;
+ z *= 12 / distance;
+ }
+
+ RenderManager renderManager = mc.getRenderManager();
+ Entity viewer = Minecraft.getMinecraft().getRenderViewEntity();
+
+ float f = 1.6F;
+ float f1 = 0.016666668F * f;
+ int width = mc.fontRendererObj.getStringWidth(waypoint.location) / 2;
+ int width2 = mc.fontRendererObj.getStringWidth(waypoint.getDistance(player)) / 2;
+ GlStateManager.pushMatrix();
+ GlStateManager.translate(x, y, z);
+ GL11.glNormal3f(0f, 1f, 0f);
+ GlStateManager.rotate(-renderManager.playerViewY, 0f, 1f, 0f);
+ GlStateManager.rotate(renderManager.playerViewX, 1f, 0f, 0f);
+ GlStateManager.scale(-f1, -f1, -f1);
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+ GlStateManager.depthMask(false);
+
+ mc.fontRendererObj.drawString(waypoint.location, -width, 0, 0x55FFFF);
+
+ GlStateManager.rotate(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
+ GlStateManager.rotate(renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
+ GlStateManager.translate(0, -1, 0);
+ GlStateManager.rotate(-renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
+ GlStateManager.rotate(renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
+
+ mc.fontRendererObj.drawString(waypoint.getDistance(player), -width2, 0, 0xFFFF55);
+
+ GL11.glEnable(GL11.GL_DEPTH_TEST);
+ GlStateManager.depthMask(true);
+ GlStateManager.disableBlend();
+ GlStateManager.popMatrix();
+ }*/
+
+ // https://github.com/Moulberry/NotEnoughUpdates/blob/master/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DwarvenMinesWaypoints.java#L261
+ public static void draw3DWaypointString(CrystalHollowWaypoints.Waypoint waypoint, float partialTicks) {
+ GlStateManager.alphaFunc(516, 0.1F);
+
+ GlStateManager.pushMatrix();
+
+ Entity viewer = Minecraft.getMinecraft().getRenderViewEntity();
+ double viewerX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * partialTicks;
+ double viewerY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * partialTicks;
+ double viewerZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * partialTicks;
+
+ double x = waypoint.pos.getX()-viewerX+0.5f;
+ double y = waypoint.pos.getY()-viewerY-viewer.getEyeHeight();
+ double z = waypoint.pos.getZ()-viewerZ+0.5f;
+
+ double distSq = x*x + y*y + z*z;
+ double dist = Math.sqrt(distSq);
+ if(distSq > 144) {
+ x *= 12/dist;
+ y *= 12/dist;
+ z *= 12/dist;
+ }
+ GlStateManager.translate(x, y, z);
+ GlStateManager.translate(0, viewer.getEyeHeight(), 0);
+
+ renderNametag(EnumChatFormatting.AQUA + waypoint.location);
+
+ GlStateManager.rotate(-Minecraft.getMinecraft().getRenderManager().playerViewY, 0.0F, 1.0F, 0.0F);
+ GlStateManager.rotate(Minecraft.getMinecraft().getRenderManager().playerViewX, 1.0F, 0.0F, 0.0F);
+ GlStateManager.translate(0, -0.25f, 0);
+ GlStateManager.rotate(-Minecraft.getMinecraft().getRenderManager().playerViewX, 1.0F, 0.0F, 0.0F);
+ GlStateManager.rotate(Minecraft.getMinecraft().getRenderManager().playerViewY, 0.0F, 1.0F, 0.0F);
+
+ renderNametag(EnumChatFormatting.YELLOW + waypoint.getDistance(Minecraft.getMinecraft().thePlayer));
+
+ GlStateManager.popMatrix();
+
+ GlStateManager.disableLighting();
+ }
+
+ // https://github.com/Moulberry/NotEnoughUpdates/blob/master/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DwarvenMinesWaypoints.java#L300
+ public static void renderNametag(String str) {
+ FontRenderer fontrenderer = Minecraft.getMinecraft().fontRendererObj;
+ float f = 1.6F;
+ float f1 = 0.016666668F * f;
+ GlStateManager.pushMatrix();
+ GL11.glNormal3f(0.0F, 1.0F, 0.0F);
+ GlStateManager.rotate(-Minecraft.getMinecraft().getRenderManager().playerViewY, 0.0F, 1.0F, 0.0F);
+ GlStateManager.rotate(Minecraft.getMinecraft().getRenderManager().playerViewX, 1.0F, 0.0F, 0.0F);
+ GlStateManager.scale(-f1, -f1, f1);
+ GlStateManager.disableLighting();
+ GlStateManager.depthMask(false);
+ GlStateManager.disableDepth();
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ Tessellator tessellator = Tessellator.getInstance();
+ WorldRenderer worldrenderer = tessellator.getWorldRenderer();
+ int i = 0;
+
+ int j = fontrenderer.getStringWidth(str) / 2;
+ GlStateManager.disableTexture2D();
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR);
+ worldrenderer.pos(-j - 1, -1 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
+ worldrenderer.pos(-j - 1, 8 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
+ worldrenderer.pos(j + 1, 8 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
+ worldrenderer.pos(j + 1, -1 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
+ tessellator.draw();
+ GlStateManager.enableTexture2D();
+ fontrenderer.drawString(str, -fontrenderer.getStringWidth(str) / 2, i, 553648127);
+ GlStateManager.depthMask(true);
+
+ fontrenderer.drawString(str, -fontrenderer.getStringWidth(str) / 2, i, -1);
+
+ GlStateManager.enableDepth();
+ GlStateManager.enableBlend();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.popMatrix();
+ }
+
+ public static void draw3DBox(AxisAlignedBB aabb, int colourInt, float partialTicks) {
+ Entity render = Minecraft.getMinecraft().getRenderViewEntity();
+ 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.translate(-realX, -realY, -realZ);
+ GlStateManager.disableTexture2D();
+ GlStateManager.enableBlend();
+ GlStateManager.disableAlpha();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ GL11.glLineWidth(2);
+
+ RenderGlobal.drawOutlinedBoundingBox(aabb, colour.getRed(), colour.getGreen(), colour.getBlue(), colour.getAlpha());
+
+ GlStateManager.translate(realX, realY, realZ);
+ GlStateManager.disableBlend();
+ GlStateManager.enableAlpha();
+ GlStateManager.enableTexture2D();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.popMatrix();
+ }
+
+ public static void drawFilled3DBox(AxisAlignedBB aabb, int colourInt, boolean translucent, boolean depth, 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.disableCull();
+ GlStateManager.tryBlendFuncSeparate(770, translucent ? 1 : 771, 1, 0);
+ if (!depth) {
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+ GlStateManager.depthMask(false);
+ }
+ 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);
+ if (!depth) {
+ GL11.glEnable(GL11.GL_DEPTH_TEST);
+ GlStateManager.depthMask(true);
+ }
+ 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();
+ RenderHelper.enableGUIStandardItemLighting();
+ GlStateManager.enableDepth();
+
+ GlStateManager.pushMatrix();
+ GlStateManager.translate(x, y, z);
+ Minecraft.getMinecraft().getRenderItem().renderItemIntoGUI(item, 0, 0);
+ GlStateManager.popMatrix();
+
+ GlStateManager.disableDepth();
+ RenderHelper.disableStandardItemLighting();
+ GlStateManager.disableRescaleNormal();
+ }
+
+ public static void drawCenteredText(String text, int screenWidth, int height, double scale) {
+ Minecraft mc = Minecraft.getMinecraft();
+ int textWidth = mc.fontRendererObj.getStringWidth(text);
+ new TextRenderer(mc, text, screenWidth / 2 - textWidth / 2, height, scale);
+ }
+
+}
diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java
index d3d6325..c9021f7 100644
--- a/src/main/java/me/Danker/utils/Utils.java
+++ b/src/main/java/me/Danker/utils/Utils.java
@@ -1,18 +1,14 @@
package me.Danker.utils;
import me.Danker.DankersSkyblockMod;
+import me.Danker.features.ColouredNames;
import me.Danker.features.GoldenEnchants;
+import me.Danker.handlers.APIHandler;
+import me.Danker.handlers.ConfigHandler;
import me.Danker.handlers.ScoreboardHandler;
-import me.Danker.handlers.TextRenderer;
import net.minecraft.block.Block;
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.*;
-import net.minecraft.client.renderer.entity.RenderManager;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityItemFrame;
import net.minecraft.entity.player.EntityPlayer;
@@ -22,20 +18,18 @@ 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.Collections;
-import java.util.List;
+import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
public class Utils {
public static boolean inSkyblock = false;
public static boolean inDungeons = false;
+ public static DungeonFloor currentFloor = DungeonFloor.NONE;
+ public static String tabLocation = "";
public static int[] skillXPPerLevel = {0, 50, 125, 200, 300, 500, 750, 1000, 1500, 2000, 3500, 5000, 7500, 10000, 15000, 20000, 30000, 50000,
75000, 100000, 200000, 300000, 400000, 500000, 600000, 700000, 800000, 900000, 1000000, 1100000,
1200000, 1300000, 1400000, 1500000, 1600000, 1700000, 1800000, 1900000, 2000000, 2100000, 2200000,
@@ -47,6 +41,15 @@ public class Utils {
19000000, 24000000, 30000000, 38000000, 48000000, 60000000, 75000000, 93000000, 116250000};
static int[] expertiseKills = {50, 100, 250, 500, 1000, 2500, 5500, 10000, 15000};
static Pattern boldPattern = Pattern.compile("(?i)\\u00A7L");
+ static Map<Character, Integer> romanNumerals = new HashMap<Character, Integer>(){{
+ put('I', 1);
+ put('V', 5);
+ put('X', 10);
+ put('L', 50);
+ put('C', 100);
+ put('D', 500);
+ put('M', 1000);
+ }};
public static int getItems(String item) {
Minecraft mc = Minecraft.getMinecraft();
@@ -99,29 +102,6 @@ public class Utils {
DankersSkyblockMod.showTitle = true;
DankersSkyblockMod.titleText = text;
}
-
- public static void drawTitle(String text) {
- Minecraft mc = Minecraft.getMinecraft();
- ScaledResolution scaledResolution = new ScaledResolution(mc);
-
- int height = scaledResolution.getScaledHeight();
- int width = scaledResolution.getScaledWidth();
- int drawHeight = 0;
- String[] splitText = text.split("\n");
- for (String title : splitText) {
- int textLength = mc.fontRendererObj.getStringWidth(title);
-
- double scale = 4;
- if (textLength * scale > (width * 0.9F)) {
- scale = (width * 0.9F) / (float) textLength;
- }
-
- int titleX = (int) ((width / 2) - (textLength * scale / 2));
- int titleY = (int) ((height * 0.45) / scale) + (int) (drawHeight * scale);
- new TextRenderer(mc, title, titleX, titleY, scale);
- drawHeight += mc.fontRendererObj.FONT_HEIGHT;
- }
- }
public static boolean isOnHypixel() {
Minecraft mc = Minecraft.getMinecraft();
@@ -156,6 +136,46 @@ public class Utils {
inDungeons = false;
}
+ public static void checkForDungeonFloor() {
+ if (inDungeons) {
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+
+ if (sCleaned.contains("The Catacombs (")) {
+ String floor = sCleaned.substring(sCleaned.indexOf("(") + 1, sCleaned.indexOf(")"));
+
+ try {
+ currentFloor = DungeonFloor.valueOf(floor);
+ } catch (IllegalArgumentException ex) {
+ currentFloor = DungeonFloor.NONE;
+ ex.printStackTrace();
+ }
+
+ break;
+ }
+ }
+ } else {
+ currentFloor = DungeonFloor.NONE;
+ }
+ }
+
+ public static void checkTabLocation() {
+ if (inSkyblock) {
+ Collection<NetworkPlayerInfo> players = Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap();
+ for (NetworkPlayerInfo player : players) {
+ if (player == null || player.getDisplayName() == null) continue;
+ String text = player.getDisplayName().getUnformattedText();
+ if (text.startsWith("Area: ")) {
+ tabLocation = text.substring(text.indexOf(":") + 2);
+ return;
+ }
+ }
+ }
+ tabLocation = "";
+ }
+
public static boolean isInScoreboard(String text) {
List<String> scoreboard = ScoreboardHandler.getSidebarLines();
for (String s : scoreboard) {
@@ -182,20 +202,6 @@ public class Utils {
return result;
}
- public static void drawOnSlot(int size, int xSlotPos, int ySlotPos, int colour) {
- ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
- int guiLeft = (sr.getScaledWidth() - 176) / 2;
- int guiTop = (sr.getScaledHeight() - 222) / 2;
- int x = guiLeft + xSlotPos;
- int y = guiTop + ySlotPos;
- // Move down when chest isn't 6 rows
- if (size != 90) y += (6 - (size - 36) / 9) * 9;
-
- GL11.glTranslated(0, 0, 1);
- Gui.drawRect(x, y, x + 16, y + 16, colour);
- GL11.glTranslated(0, 0, -1);
- }
-
public static String getTimeBetween(double timeOne, double timeTwo) {
double secondsBetween = Math.floor(timeTwo - timeOne);
@@ -246,10 +252,10 @@ public class Utils {
xpAdded += dungeonsXPPerLevel[i];
if (xp < xpAdded) {
double level = (i - 1) + (xp - (xpAdded - dungeonsXPPerLevel[i])) / dungeonsXPPerLevel[i];
- return (double) Math.round(level * 100) / 100;
+ return (double) Math.round(level * 100D) / 100;
}
}
- return 50D;
+ return 50D + MathHelper.clamp_double(Math.round((xp - 569809640D) / 200000000D * 100D) / 100D, 0D, 49D);
}
public static int expertiseKillsLeft(int kills) {
@@ -260,7 +266,8 @@ public class Utils {
}
return -1;
}
-
+
+ // Only used when over limit
public static int getPastXpEarned(int currentLevelXp, int limit) {
if (currentLevelXp == 0) {
int xpAdded = 0;
@@ -275,6 +282,16 @@ public class Utils {
}
return 0;
}
+
+ public static double getTotalXpEarned(int currentLevel, double percentage) {
+ double progress = 0;
+ if (currentLevel < 60) progress = skillXPPerLevel[currentLevel + 1] * (percentage / 100D);
+ double xpAdded = 0;
+ for (int i = 1; i <= currentLevel; i++) {
+ xpAdded += skillXPPerLevel[i];
+ }
+ return xpAdded + progress;
+ }
public static String getColouredBoolean(boolean bool) {
return bool ? EnumChatFormatting.GREEN + "On" : EnumChatFormatting.RED + "Off";
@@ -312,180 +329,6 @@ public class Utils {
});
}
- public static void draw3DLine(Vec3 pos1, Vec3 pos2, int colourInt, int lineWidth, boolean depth, 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.translate(-realX, -realY, -realZ);
- GlStateManager.disableTexture2D();
- GlStateManager.enableBlend();
- GlStateManager.disableAlpha();
- GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
- GL11.glLineWidth(lineWidth);
- if (!depth) {
- GL11.glDisable(GL11.GL_DEPTH_TEST);
- GlStateManager.depthMask(false);
- }
- 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();
- worldRenderer.pos(pos2.xCoord, pos2.yCoord, pos2.zCoord).endVertex();
- Tessellator.getInstance().draw();
-
- GlStateManager.translate(realX, realY, realZ);
- if (!depth) {
- GL11.glEnable(GL11.GL_DEPTH_TEST);
- GlStateManager.depthMask(true);
- }
- GlStateManager.disableBlend();
- GlStateManager.enableAlpha();
- GlStateManager.enableTexture2D();
- GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
- GlStateManager.popMatrix();
- }
-
- public static void draw3DString(BlockPos pos, String text, int colour, float partialTicks) {
- Minecraft mc = Minecraft.getMinecraft();
- EntityPlayer player = mc.thePlayer;
- double x = (pos.getX() - player.lastTickPosX) + ((pos.getX() - player.posX) - (pos.getX() - player.lastTickPosX)) * partialTicks;
- double y = (pos.getY() - player.lastTickPosY) + ((pos.getY() - player.posY) - (pos.getY() - player.lastTickPosY)) * partialTicks;
- double z = (pos.getZ() - player.lastTickPosZ) + ((pos.getZ() - player.posZ) - (pos.getZ() - player.lastTickPosZ)) * partialTicks;
- RenderManager renderManager = mc.getRenderManager();
-
- float f = 1.6F;
- float f1 = 0.016666668F * f;
- int width = mc.fontRendererObj.getStringWidth(text) / 2;
- GlStateManager.pushMatrix();
- GlStateManager.translate(x, y, z);
- GL11.glNormal3f(0f, 1f, 0f);
- GlStateManager.rotate(-renderManager.playerViewY, 0f, 1f, 0f);
- GlStateManager.rotate(renderManager.playerViewX, 1f, 0f, 0f);
- GlStateManager.scale(-f1, -f1, -f1);
- GlStateManager.enableBlend();
- GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
- mc.fontRendererObj.drawString(text, -width, 0, colour);
- GlStateManager.disableBlend();
- GlStateManager.popMatrix();
- }
-
- public static void draw3DBox(AxisAlignedBB aabb, int colourInt, float partialTicks) {
- Entity render = Minecraft.getMinecraft().getRenderViewEntity();
- 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.translate(-realX, -realY, -realZ);
- GlStateManager.disableTexture2D();
- GlStateManager.enableBlend();
- GlStateManager.disableAlpha();
- GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
- GL11.glLineWidth(2);
-
- RenderGlobal.drawOutlinedBoundingBox(aabb, colour.getRed(), colour.getGreen(), colour.getBlue(), colour.getAlpha());
-
- GlStateManager.translate(realX, realY, realZ);
- GlStateManager.disableBlend();
- GlStateManager.enableAlpha();
- GlStateManager.enableTexture2D();
- GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
- GlStateManager.popMatrix();
- }
-
- public static void drawFilled3DBox(AxisAlignedBB aabb, int colourInt, boolean translucent, boolean depth, 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.disableCull();
- GlStateManager.tryBlendFuncSeparate(770, translucent ? 1 : 771, 1, 0);
- if (!depth) {
- GL11.glDisable(GL11.GL_DEPTH_TEST);
- GlStateManager.depthMask(false);
- }
- 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);
- if (!depth) {
- GL11.glEnable(GL11.GL_DEPTH_TEST);
- GlStateManager.depthMask(true);
- }
- 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();
- RenderHelper.enableGUIStandardItemLighting();
- GlStateManager.enableDepth();
-
- GlStateManager.pushMatrix();
- GlStateManager.translate(x, y, z);
- Minecraft.getMinecraft().getRenderItem().renderItemIntoGUI(item, 0, 0);
- GlStateManager.popMatrix();
-
- GlStateManager.disableDepth();
- RenderHelper.disableStandardItemLighting();
- GlStateManager.disableRescaleNormal();
- }
-
public static BlockPos getFirstBlockPosAfterVectors(Minecraft mc, Vec3 pos1, Vec3 pos2, int strength, int distance) {
double x = pos2.xCoord - pos1.xCoord;
double y = pos2.yCoord - pos1.yCoord;
@@ -546,7 +389,125 @@ public class Utils {
}
public static String removeBold(String text) {
- return boldPattern.matcher(text).replaceAll("");
+ return boldPattern.matcher(text).replaceAll("");
}
-
+
+ public static int getIntFromString(String text, boolean romanNumeral) {
+ if (text.matches(".*\\d.*")) {
+ return Integer.parseInt(StringUtils.stripControlCodes(text).replaceAll("[^\\d]", ""));
+ } else if (romanNumeral) {
+ int number = 0;
+
+ for (int i = 0; i < text.length(); i++) {
+ if (!romanNumerals.containsKey(text.charAt(i))) continue;
+ int roman = romanNumerals.get(text.charAt(i));
+
+ if (i != text.length() - 1 && romanNumerals.containsKey(text.charAt(i + 1)) && roman < romanNumerals.get(text.charAt(i + 1))) {
+ number += romanNumerals.get(text.charAt(i + 1)) - roman;
+ i++;
+ } else {
+ number += roman;
+ }
+ }
+
+ return number;
+ }
+
+ return -1;
+ }
+
+ public static boolean skillsInitialized() {
+ return DankersSkyblockMod.miningLevel != -1;
+ }
+
+ public static int initializeSkill(ItemStack skillStack, String configValue) {
+ int level = -1;
+
+ if (skillStack != null) {
+ String display = skillStack.getDisplayName();
+ if (display.startsWith("§a")) {
+ if (display.contains(" ")) {
+ level = Utils.getIntFromString(display.substring(display.indexOf(" ") + 1), true);
+ } else {
+ level = 0;
+ }
+ }
+ }
+
+ ConfigHandler.writeIntConfig("skills", configValue, level);
+ return level;
+ }
+
+ public static void refreshRepo() {
+ DankersSkyblockMod.data = APIHandler.getResponse("https://raw.githubusercontent.com/bowser0000/SkyblockMod-REPO/main/data.json", false);
+ System.out.println("Loaded data from GitHub?: " + (DankersSkyblockMod.data != null && DankersSkyblockMod.data.has("trivia")));
+ ColouredNames.users = DankersSkyblockMod.data.get("colourednames").getAsJsonObject().entrySet().stream()
+ .map(Map.Entry::getKey)
+ .collect(Collectors.toCollection(ArrayList::new));
+ System.out.println("Refreshed DSM repo at " + System.currentTimeMillis());
+ }
+
+ public static int getCooldownFromAbility(String ability) {
+ EntityPlayer player = Minecraft.getMinecraft().thePlayer;
+ boolean foundAbility = false;
+
+ List<ItemStack> itemsToSearch = new ArrayList<>();
+
+ for (int i = 0; i < 8; i++) {
+ ItemStack hotbarItem = player.inventory.getStackInSlot(i);
+ if (hotbarItem == null) continue;
+ itemsToSearch.add(hotbarItem);
+ }
+
+ for (int i = 0; i < 4; i++) {
+ ItemStack armorItem = player.inventory.armorItemInSlot(0);
+ if (armorItem == null) continue;
+ itemsToSearch.add(armorItem);
+ }
+
+ for (ItemStack item : itemsToSearch) {
+ List<String> tooltip = item.getTooltip(player, false);
+
+ for (String line : tooltip) {
+ if (line.contains(EnumChatFormatting.GOLD + "Ability: ") || line.contains(EnumChatFormatting.GOLD + "Full Set Bonus: ")) {
+ if (line.contains(EnumChatFormatting.GOLD + "Ability: " + ability)) {
+ foundAbility = true;
+ continue;
+ } else if (foundAbility) {
+ break;
+ }
+ }
+
+ if (foundAbility && line.contains(EnumChatFormatting.DARK_GRAY + "Cooldown: ")) {
+ return Integer.parseInt(StringUtils.stripControlCodes(line).replaceAll("[^\\d]", ""));
+ }
+ }
+ }
+
+ return 0;
+ }
+
+ public static double getCooldownReductionFromLevel(int level) {
+ return (Math.floor(level / 2D) + 25) / 100D;
+ }
+
+ public enum DungeonFloor {
+ NONE,
+ E0,
+ F1,
+ F2,
+ F3,
+ F4,
+ F5,
+ F6,
+ F7,
+ M1,
+ M2,
+ M3,
+ M4,
+ M5,
+ M6,
+ M7
+ }
+
}
diff --git a/src/main/resources/assets/dsm/textures/generic_63.png b/src/main/resources/assets/dsm/textures/generic_63.png
new file mode 100644
index 0000000..0ccafd7
--- /dev/null
+++ b/src/main/resources/assets/dsm/textures/generic_63.png
Binary files differ