From 09291c4f8ee992d2b1c037dfeac84ee362e6288e Mon Sep 17 00:00:00 2001 From: CuzImClicks Date: Sat, 3 Apr 2021 19:59:46 +0200 Subject: added Completed Commission Highlighting --- src/main/java/me/Danker/gui/DankerGui.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 569f4d1..22cc001 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -6,10 +6,7 @@ import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.TextRenderer; 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.GuiTextField; -import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.gui.*; import net.minecraft.util.StringUtils; import java.awt.*; @@ -60,6 +57,7 @@ public class DankerGui extends GuiScreen { private GuiButton autoSkillTracker; private GuiButton highlightArachne; private GuiButton highlightSlayer; + private GuiButton highlightCommissions; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -143,6 +141,7 @@ public class DankerGui extends GuiScreen { melodyTooltips = new GuiButton(0, 0, 0, "Hide tooltips in Melody's Harp: " + Utils.getColouredBoolean(ToggleCommand.melodyTooltips)); highlightArachne = new GuiButton(0, 0, 0, "Highlight Arachne: " + Utils.getColouredBoolean(ToggleCommand.highlightArachne)); highlightSlayer = new GuiButton(0, 0, 0, "Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers)); + highlightCommissions = new GuiButton(0, 0, 0, "Highlight Commissions: " + Utils.getColouredBoolean(ToggleCommand.highlightCommissions)); allButtons.add(changeDisplay); allButtons.add(puzzleSolvers); @@ -183,6 +182,7 @@ public class DankerGui extends GuiScreen { allButtons.add(melodyTooltips); allButtons.add(highlightArachne); allButtons.add(highlightSlayer); + allButtons.add(highlightCommissions); search.setText(initSearchText); search.setVisible(true); @@ -402,6 +402,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.highlightSlayers = !ToggleCommand.highlightSlayers; ConfigHandler.writeBooleanConfig("toggles", "HighlightSlayers", ToggleCommand.highlightSlayers); highlightSlayer.displayString = "Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers); + } else if (button == highlightCommissions) { + ToggleCommand.highlightCommissions = !ToggleCommand.highlightCommissions; + ConfigHandler.writeBooleanConfig("toggles", "HighlightCommissions", ToggleCommand.highlightCommissions); + highlightCommissions.displayString = "Highlight Commissions: " + Utils.getColouredBoolean(ToggleCommand.highlightCommissions); } } -- cgit From a929ac303271b62e630a1c0d7c7602b321333291 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 9 Apr 2021 10:00:57 -0400 Subject: Add short descriptions to features in /dsm --- build.gradle | 2 +- src/main/java/me/Danker/DankersSkyblockMod.java | 2 +- src/main/java/me/Danker/gui/DankerGui.java | 77 ++++++++++++---------- .../java/me/Danker/gui/buttons/FeatureButton.java | 17 +++++ 4 files changed, 62 insertions(+), 36 deletions(-) create mode 100644 src/main/java/me/Danker/gui/buttons/FeatureButton.java (limited to 'src/main/java/me/Danker/gui') diff --git a/build.gradle b/build.gradle index 59f72e9..d87c2a7 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ plugins { id "net.minecraftforge.gradle.forge" version "2.0.2" } */ -version = "1.8.6" +version = "1.8.7-beta1" group= "me.Danker.DankersSkyblockMod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "Danker's Skyblock Mod" diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index ee24b84..76046e6 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -62,7 +62,7 @@ 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.6"; + public static final String VERSION = "1.8.7-beta1"; public static int titleTimer = -1; public static boolean showTitle = false; public static String titleText = ""; diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 569f4d1..c5145e6 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -2,6 +2,7 @@ package me.Danker.gui; import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; +import me.Danker.gui.buttons.FeatureButton; import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.TextRenderer; import me.Danker.utils.Utils; @@ -10,6 +11,7 @@ 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.util.EnumChatFormatting; import net.minecraft.util.StringUtils; import java.awt.*; @@ -109,40 +111,40 @@ public class DankerGui extends GuiScreen { 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"); - outlineText = new GuiButton(0, 0, 0, "Outline Displayed Text: " + Utils.getColouredBoolean(ToggleCommand.outlineTextToggled)); - pickBlock = new GuiButton(0, 0, 0, "Auto-Swap to Pick Block: " + Utils.getColouredBoolean(ToggleCommand.swapToPickBlockToggled)); - coords = new GuiButton(0, 0, 0, "Coordinate/Angle Display: " + Utils.getColouredBoolean(ToggleCommand.coordsToggled)); - chatMaddox = new GuiButton(0, 0, 0, "Click On-Screen to Open Maddox: " + Utils.getColouredBoolean(ToggleCommand.chatMaddoxToggled)); - cakeTimer = new GuiButton(0, 0, 0, "Cake Timer: " + Utils.getColouredBoolean(ToggleCommand.cakeTimerToggled)); - skill50Display = new GuiButton(0, 0, 0, "Display Progress To Skill Level 50: " + Utils.getColouredBoolean(ToggleCommand.skill50DisplayToggled)); - slayerCount = new GuiButton(0, 0, 0, "Count Total 20% Drops: " + Utils.getColouredBoolean(ToggleCommand.slayerCountTotal)); - spiritBearAlert = new GuiButton(0, 0, 0, "Spirit Bear Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.spiritBearAlerts)); - sceptreMessages = new GuiButton(0, 0, 0, "Spirit Sceptre Messages: " + Utils.getColouredBoolean(ToggleCommand.sceptreMessages)); - midasStaffMessages = new GuiButton(0, 0, 0, "Midas Staff Messages: " + Utils.getColouredBoolean(ToggleCommand.midasStaffMessages)); - implosionMessages = new GuiButton(0, 0, 0, "Implosion Messages: " + Utils.getColouredBoolean(ToggleCommand.implosionMessages)); - healMessages = new GuiButton(0, 0, 0, "Heal Messages: " + Utils.getColouredBoolean(ToggleCommand.healMessages)); - cooldownMessages = new GuiButton(0, 0, 0, "Cooldown Messages: " + Utils.getColouredBoolean(ToggleCommand.cooldownMessages)); - manaMessages = new GuiButton(0, 0, 0, "Mana Messages: " + Utils.getColouredBoolean(ToggleCommand.manaMessages)); - killComboMessages = new GuiButton(0, 0, 0, "Kill Combo Messages: " + Utils.getColouredBoolean(ToggleCommand.killComboMessages)); - goldenEnch = new GuiButton(0, 0, 0, "Golden T10/T6/T4 Enchantments: " + Utils.getColouredBoolean(ToggleCommand.goldenToggled)); - petColours = new GuiButton(0, 0, 0, "Colour Pet Backgrounds: " + Utils.getColouredBoolean(ToggleCommand.petColoursToggled)); - expertiseLore = new GuiButton(0, 0, 0, "Expertise Kills In Lore: " + Utils.getColouredBoolean(ToggleCommand.expertiseLoreToggled)); - gparty = new GuiButton(0, 0, 0, "Guild Party Notifications: " + Utils.getColouredBoolean(ToggleCommand.gpartyToggled)); - golemAlerts = new GuiButton(0, 0, 0, "Golem Spawn Alert And Timer: " + Utils.getColouredBoolean(ToggleCommand.golemAlertToggled)); - rngesusAlert = new GuiButton(0, 0, 0, "RNGesus Alerts: " + Utils.getColouredBoolean(ToggleCommand.rngesusAlerts)); - splitFishing = new GuiButton(0, 0, 0, "Split Fishing Display: " + Utils.getColouredBoolean(ToggleCommand.splitFishing)); - lowHealthNotify = new GuiButton(0, 0, 0, "Low Health Notifications: " + Utils.getColouredBoolean(ToggleCommand.lowHealthNotifyToggled)); - lividSolver = new GuiButton(0, 0, 0, "Find Correct Livid: " + Utils.getColouredBoolean(ToggleCommand.lividSolverToggled)); - dungeonTimer = new GuiButton(0, 0, 0, "Display Dungeon Timers: " + Utils.getColouredBoolean(ToggleCommand.dungeonTimerToggled)); - stopSalvageStarred = new GuiButton(0, 0, 0, "Stop Salvaging Starred Items: " + Utils.getColouredBoolean(ToggleCommand.stopSalvageStarredToggled)); - watcherReadyMessage = new GuiButton(0, 0, 0, "Display Watcher Ready Message: " + Utils.getColouredBoolean(ToggleCommand.watcherReadyToggled)); - notifySlayerSlain = new GuiButton(0, 0, 0, "Notify when Slayer Slain: " + Utils.getColouredBoolean(ToggleCommand.notifySlayerSlainToggled)); - necronNotifications = new GuiButton(0, 0, 0, "Necron Phase Notifications: " + Utils.getColouredBoolean(ToggleCommand.necronNotificationsToggled)); - bonzoTimer = new GuiButton(0, 0, 0, "Bonzo's Mask Timer: " + Utils.getColouredBoolean(ToggleCommand.bonzoTimerToggled)); - autoSkillTracker = new GuiButton(0, 0, 0, "Auto Start/Stop Skill Tracker: " + Utils.getColouredBoolean(ToggleCommand.autoSkillTrackerToggled)); - melodyTooltips = new GuiButton(0, 0, 0, "Hide tooltips in Melody's Harp: " + Utils.getColouredBoolean(ToggleCommand.melodyTooltips)); - highlightArachne = new GuiButton(0, 0, 0, "Highlight Arachne: " + Utils.getColouredBoolean(ToggleCommand.highlightArachne)); - highlightSlayer = new GuiButton(0, 0, 0, "Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers)); + 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."); + chatMaddox = new FeatureButton("Click On-Screen to Open Maddox: " + Utils.getColouredBoolean(ToggleCommand.chatMaddoxToggled), "Open chat then click anywhere after calling Maddox to open the menu."); + 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."); + 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."); + implosionMessages = new FeatureButton("Implosion Messages: " + Utils.getColouredBoolean(ToggleCommand.implosionMessages), "Turn " + EnumChatFormatting.RED + "off" + EnumChatFormatting.RESET + " to hide Implosion messages."); + healMessages = new FeatureButton("Heal Messages: " + Utils.getColouredBoolean(ToggleCommand.healMessages), "Turn " + EnumChatFormatting.RED + "off" + EnumChatFormatting.RESET + " to hide healing messages."); + cooldownMessages = new FeatureButton("Cooldown Messages: " + Utils.getColouredBoolean(ToggleCommand.cooldownMessages), "Turn " + EnumChatFormatting.RED + "off" + EnumChatFormatting.RESET + " to hide cooldown messages."); + manaMessages = new FeatureButton("Mana Messages: " + Utils.getColouredBoolean(ToggleCommand.manaMessages), "Turn " + EnumChatFormatting.RED + "off" + EnumChatFormatting.RESET + " to hide out of mana messages."); + killComboMessages = new FeatureButton("Kill Combo Messages: " + Utils.getColouredBoolean(ToggleCommand.killComboMessages), "Turn " + EnumChatFormatting.RED + "off" + EnumChatFormatting.RESET + " to hide kill combo messages."); + goldenEnch = new FeatureButton("Golden T10/T6/T4 Enchantments: " + Utils.getColouredBoolean(ToggleCommand.goldenToggled), "Turns expensive enchants golden in tooltips."); + petColours = new FeatureButton("Colour Pet Backgrounds: " + Utils.getColouredBoolean(ToggleCommand.petColoursToggled), "Colors pets based on their level."); + expertiseLore = new FeatureButton("Expertise Kills In Lore: " + Utils.getColouredBoolean(ToggleCommand.expertiseLoreToggled), "Adds expertise kills to fishing rod tooltip."); + gparty = new FeatureButton("Guild Party Notifications: " + Utils.getColouredBoolean(ToggleCommand.gpartyToggled), "Creates desktop notification on guild party."); + golemAlerts = new FeatureButton("Golem Spawn Alert And Timer: " + Utils.getColouredBoolean(ToggleCommand.golemAlertToggled), "Creates alert with 20s countdown when golem is spawning."); + rngesusAlert = new FeatureButton("RNGesus Alerts: " + Utils.getColouredBoolean(ToggleCommand.rngesusAlerts), "Alerts when an RNGesus item is dropped."); + splitFishing = new FeatureButton("Split Fishing Display: " + Utils.getColouredBoolean(ToggleCommand.splitFishing), "Splits fishing display in half to save vertical space."); + lowHealthNotify = new FeatureButton("Low Health Notifications: " + Utils.getColouredBoolean(ToggleCommand.lowHealthNotifyToggled), "Alerts when dungeon teammate has low health."); + lividSolver = new FeatureButton("Find Correct Livid: " + Utils.getColouredBoolean(ToggleCommand.lividSolverToggled), "Shows health and color of correct Livid."); + 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."); + 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."); + 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."); + highlightArachne = new FeatureButton("Highlight Arachne: " + Utils.getColouredBoolean(ToggleCommand.highlightArachne), "Highlights Arachne boss."); + highlightSlayer = new FeatureButton("Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers), "Highlights Slayer boss."); allButtons.add(changeDisplay); allButtons.add(puzzleSolvers); @@ -231,6 +233,13 @@ public class DankerGui extends GuiScreen { int pageWidth = mc.fontRendererObj.getStringWidth(pageText); new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 10, 1D); + for (GuiButton button : this.buttonList) { + if (button instanceof FeatureButton && button.isMouseOver()) { + FeatureButton feature = (FeatureButton) button; + drawHoveringText(feature.hoverText, mouseX - 5, mouseY); + } + } + search.drawTextBox(); } diff --git a/src/main/java/me/Danker/gui/buttons/FeatureButton.java b/src/main/java/me/Danker/gui/buttons/FeatureButton.java new file mode 100644 index 0000000..a997e09 --- /dev/null +++ b/src/main/java/me/Danker/gui/buttons/FeatureButton.java @@ -0,0 +1,17 @@ +package me.Danker.gui.buttons; + +import net.minecraft.client.gui.GuiButton; + +import java.util.Arrays; +import java.util.List; + +public class FeatureButton extends GuiButton { + + public List hoverText; + + public FeatureButton(String displayString, String hoverText) { + super(0, 0, 0, displayString); + this.hoverText = Arrays.asList(hoverText.split("\n")); + } + +} -- cgit From 5360b5ceb83feab156f1e70460b842ba7721544b Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 9 Apr 2021 10:25:27 -0400 Subject: Fix /dsm buttons duplicating when resizing window --- src/main/java/me/Danker/gui/DankerGui.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index c5145e6..1c839c3 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -146,6 +146,7 @@ public class DankerGui extends GuiScreen { highlightArachne = new FeatureButton("Highlight Arachne: " + Utils.getColouredBoolean(ToggleCommand.highlightArachne), "Highlights Arachne boss."); highlightSlayer = new FeatureButton("Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers), "Highlights Slayer boss."); + allButtons.clear(); allButtons.add(changeDisplay); allButtons.add(puzzleSolvers); allButtons.add(experimentationTableSolvers); @@ -424,6 +425,7 @@ public class DankerGui extends GuiScreen { protected void keyTyped(char typedChar, int keyCode) throws IOException { super.keyTyped(typedChar, keyCode); search.textboxKeyTyped(typedChar, keyCode); + initSearchText = search.getText(); reInit(); } -- cgit From 6c870810d6798bd9e445f2586455311d1a817976 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sun, 18 Apr 2021 17:49:02 -0400 Subject: Add highlighting Skeleton Masters --- README.md | 4 +-- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 5 ++- .../java/me/Danker/commands/ToggleCommand.java | 22 ++++++++---- .../Danker/features/HighlightSkeletonMasters.java | 42 ++++++++++++++++++++++ .../Danker/features/puzzlesolvers/LividSolver.java | 14 +------- src/main/java/me/Danker/gui/DankerGui.java | 11 ++++-- .../java/me/Danker/handlers/ConfigHandler.java | 2 ++ src/main/java/me/Danker/utils/Utils.java | 23 +++++++----- 9 files changed, 90 insertions(+), 34 deletions(-) create mode 100644 src/main/java/me/Danker/features/HighlightSkeletonMasters.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index f5f9786..d2ee9a7 100644 --- a/README.md +++ b/README.md @@ -51,12 +51,12 @@ Discord Server: https://discord.gg/QsEkNQS - Reparty command - Highlight Slayer Bosses - Highlight Arachne - +- Highlight Skeleton Masters ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 76046e6..cf5caee 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -105,6 +105,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new GolemSpawningAlert()); MinecraftForge.EVENT_BUS.register(new GpartyNotifications()); 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()); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 5076ef7..923fcbe 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -88,7 +88,10 @@ public class DankerGuiCommand extends CommandBase { 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("[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("[dungeonbossmusic][").append(ToggleCommand.dungeonBossMusic).append("]\n"); debug.append("[bloodroommusic][").append(ToggleCommand.bloodRoomMusic).append("]\n"); debug.append("[dungeonmusic][").append(ToggleCommand.dungeonMusic).append("]\n"); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index a6f20fc..528f376 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -33,6 +33,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean cakeTimerToggled; public static boolean highlightSlayers; public static boolean highlightArachne; + public static boolean highlightSkeletonMasters; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -92,7 +93,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "creeperpuzzle/waterpuzzle/tictactoepuzzle/boulderpuzzle/silverfishpuzzle/icewalkpuzzle/watchermessage/" + "startswithterminal/selectallterminal/clickinorderterminal/" + "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + - "melodytooltips/highlightslayers/highlightarachne/dungeonbossmusic/bloodroommusic/" + + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/dungeonbossmusic/bloodroommusic/" + "dungeonmusic/list>"; } @@ -121,7 +122,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "selectallterminal", "clickinorderterminal", "ultrasequencer", "chronomatron", "superpairs", "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", - "dungeonbossmusic", "bloodroommusic", "dungeonmusic", "list"); + "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", "list"); } return null; } @@ -392,10 +393,16 @@ public class ToggleCommand extends CommandBase implements ICommand { ConfigHandler.writeBooleanConfig("toggles", "HighlightSlayers", highlightSlayers); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Slayer Bosses " + DankersSkyblockMod.SECONDARY_COLOUR + highlightSlayers + DankersSkyblockMod.MAIN_COLOUR + ".")); break; - case "highlightArachne": + case "highlightarachne": highlightArachne = !highlightArachne; ConfigHandler.writeBooleanConfig("toggles", "HighlightArachne", highlightArachne); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Arachne " + DankersSkyblockMod.SECONDARY_COLOUR + highlightArachne + DankersSkyblockMod.MAIN_COLOUR + ".")); + break; + case "highlightskeletonmasters": + highlightSkeletonMasters = !highlightSkeletonMasters; + ConfigHandler.writeBooleanConfig("toggles", "HighlightSkeletonMasters", highlightSkeletonMasters); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Skeleton Masters " + DankersSkyblockMod.SECONDARY_COLOUR + highlightSkeletonMasters + DankersSkyblockMod.MAIN_COLOUR + ".")); + break; case "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; CustomMusic.dungeonboss.stop(); @@ -455,10 +462,11 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Chronomatron solver: " + DankersSkyblockMod.VALUE_COLOUR + chronomatronToggled + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Superpairs solver: " + DankersSkyblockMod.VALUE_COLOUR + superpairsToggled + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Hide tooltips in experiment addons: " + DankersSkyblockMod.VALUE_COLOUR + hideTooltipsInExperimentAddonsToggled + "\n" + - DankersSkyblockMod.TYPE_COLOUR + " Auto-swap to pick block " + DankersSkyblockMod.VALUE_COLOUR + swapToPickBlockToggled + "\n" + - DankersSkyblockMod.TYPE_COLOUR + " Hide tooltips in Melody's Harp " + DankersSkyblockMod.VALUE_COLOUR + melodyTooltips + "\n" + - DankersSkyblockMod.TYPE_COLOUR + " Highlight Slayer Bosses " + DankersSkyblockMod.VALUE_COLOUR + highlightSlayers + "\n" + - DankersSkyblockMod.TYPE_COLOUR + " Highlight Arachne Boss " + DankersSkyblockMod.VALUE_COLOUR + highlightArachne + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Auto-swap to pick block: " + DankersSkyblockMod.VALUE_COLOUR + swapToPickBlockToggled + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Hide tooltips in Melody's Harp: " + DankersSkyblockMod.VALUE_COLOUR + melodyTooltips + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Highlight Slayer Bosses: " + DankersSkyblockMod.VALUE_COLOUR + highlightSlayers + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Highlight Arachne Boss: " + DankersSkyblockMod.VALUE_COLOUR + highlightArachne + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Highlight Skeleton Masters: " + DankersSkyblockMod.VALUE_COLOUR + highlightSkeletonMasters + "\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 diff --git a/src/main/java/me/Danker/features/HighlightSkeletonMasters.java b/src/main/java/me/Danker/features/HighlightSkeletonMasters.java new file mode 100644 index 0000000..f97699c --- /dev/null +++ b/src/main/java/me/Danker/features/HighlightSkeletonMasters.java @@ -0,0 +1,42 @@ +package me.Danker.features; + +import me.Danker.commands.ToggleCommand; +import me.Danker.utils.Utils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.event.RenderLivingEvent; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.ArrayList; +import java.util.List; + +public class HighlightSkeletonMasters { + + static List skeletonMasters = new ArrayList<>(); + public static int SKELETON_MASTER_COLOUR; + + @SubscribeEvent + public void onRenderEntity(RenderLivingEvent.Pre event) { + if (ToggleCommand.highlightSkeletonMasters && event.entity instanceof EntitySkeleton && Utils.inDungeons) { + ItemStack helmet = event.entity.getCurrentArmor(3); + if (helmet != null && helmet.getDisplayName().endsWith("Skeleton Master Helmet")) { + skeletonMasters.add(event.entity); + } + } + } + + @SubscribeEvent + public void onWorldRender(RenderWorldLastEvent event) { + if (ToggleCommand.highlightSkeletonMasters) { + for (Entity skeletonMaster : skeletonMasters) { + if (!skeletonMaster.isDead) + Utils.draw3DBox(skeletonMaster.getEntityBoundingBox(), SKELETON_MASTER_COLOUR, event.partialTicks); + } + skeletonMasters.clear(); + } + } + +} diff --git a/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java index b537198..6f02982 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java @@ -5,7 +5,6 @@ import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; import me.Danker.commands.ToggleCommand; import me.Danker.events.RenderOverlay; -import me.Danker.handlers.ScoreboardHandler; import me.Danker.handlers.TextRenderer; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; @@ -39,18 +38,7 @@ public class LividSolver { World world = Minecraft.getMinecraft().theWorld; if (DankersSkyblockMod.tickAmount % 20 == 0) { if (ToggleCommand.lividSolverToggled && Utils.inDungeons && !foundLivid && world != null) { - boolean inF5 = false; - - List scoreboard = ScoreboardHandler.getSidebarLines(); - for (String s : scoreboard) { - String sCleaned = ScoreboardHandler.cleanSB(s); - if (sCleaned.contains("The Catacombs (F5)")) { - inF5 = true; - break; - } - } - - if (inF5) { + if (Utils.isInScoreboard("The Catacombs (F5)")) { List loadedLivids = new ArrayList<>(); List entities = world.getLoadedEntityList(); for (Entity entity : entities) { diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 1c839c3..68d1017 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -62,6 +62,7 @@ public class DankerGui extends GuiScreen { private GuiButton autoSkillTracker; private GuiButton highlightArachne; private GuiButton highlightSlayer; + private GuiButton highlightSkeletonMasters; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -143,8 +144,9 @@ public class DankerGui extends GuiScreen { 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."); - highlightArachne = new FeatureButton("Highlight Arachne: " + Utils.getColouredBoolean(ToggleCommand.highlightArachne), "Highlights Arachne boss."); - highlightSlayer = new FeatureButton("Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers), "Highlights Slayer boss."); + highlightArachne = new FeatureButton("Highlight Arachne: " + Utils.getColouredBoolean(ToggleCommand.highlightArachne), "Highlights Arachne bosses."); + highlightSlayer = new FeatureButton("Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers), "Highlights Slayer bosses."); + highlightSkeletonMasters = new FeatureButton("Highlight Skeleton Masters: " + Utils.getColouredBoolean(ToggleCommand.highlightSkeletonMasters), "Highlights Skeleton Masters."); allButtons.clear(); allButtons.add(changeDisplay); @@ -186,6 +188,7 @@ public class DankerGui extends GuiScreen { allButtons.add(melodyTooltips); allButtons.add(highlightArachne); allButtons.add(highlightSlayer); + allButtons.add(highlightSkeletonMasters); search.setText(initSearchText); search.setVisible(true); @@ -412,6 +415,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.highlightSlayers = !ToggleCommand.highlightSlayers; ConfigHandler.writeBooleanConfig("toggles", "HighlightSlayers", ToggleCommand.highlightSlayers); highlightSlayer.displayString = "Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers); + } else if (button == highlightSkeletonMasters) { + ToggleCommand.highlightSkeletonMasters = !ToggleCommand.highlightSkeletonMasters; + ConfigHandler.writeBooleanConfig("toggles", "HighlightSkeletonMasters", ToggleCommand.highlightSkeletonMasters); + highlightSkeletonMasters.displayString = "Highlight Skeleton Masters: " + Utils.getColouredBoolean(ToggleCommand.highlightSkeletonMasters); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index d3b7464..5668953 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -228,6 +228,7 @@ public class ConfigHandler { ToggleCommand.melodyTooltips = initBoolean("toggles", "MelodyTooltips", false); ToggleCommand.highlightSlayers = initBoolean("toggles", "HighlightSlayers", false); ToggleCommand.highlightArachne = initBoolean("toggles", "HighlightArachne", false); + ToggleCommand.highlightSkeletonMasters = initBoolean("toggles", "HighlightSkeletonMasters", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -510,6 +511,7 @@ public class ConfigHandler { BlazeSolver.HIGHEST_BLAZE_COLOUR = initInt("colors", "blazeHighest", 0x40FF40); SlayerESP.SLAYER_COLOUR = initInt("colors", "slayerColor", 0x0000FF); ArachneESP.ARACHANE_COLOUR = initInt("colors", "arachneColor", 0x00FF00); + HighlightSkeletonMasters.SKELETON_MASTER_COLOUR = initInt("colors", "skeletonMaster", 0xFF0000); 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 diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 1a24c69..160fc0a 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -145,17 +145,22 @@ public class Utils { } public static void checkForDungeons() { - if (inSkyblock) { - List scoreboard = ScoreboardHandler.getSidebarLines(); - for (String s : scoreboard) { - String sCleaned = ScoreboardHandler.cleanSB(s); - if (sCleaned.contains("The Catacombs")) { - inDungeons = true; - return; - } + if (inSkyblock) { + if (isInScoreboard("The Catacombs")) { + inDungeons = true; + return; } } - inDungeons = false; + inDungeons = false; + } + + public static boolean isInScoreboard(String text) { + List scoreboard = ScoreboardHandler.getSidebarLines(); + for (String s : scoreboard) { + String sCleaned = ScoreboardHandler.cleanSB(s); + if (sCleaned.contains(text)) return true; + } + return false; } public static String capitalizeString(String string) { -- cgit From be0594f3ce39b560d5d30fd9e463bd42304c440e Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Mon, 19 Apr 2021 11:10:14 -0400 Subject: Add display for teammates in 30 block radius --- README.md | 7 +-- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 1 + src/main/java/me/Danker/commands/MoveCommand.java | 13 ++++- src/main/java/me/Danker/commands/ScaleCommand.java | 11 +++- .../java/me/Danker/commands/ToggleCommand.java | 22 +++++--- .../java/me/Danker/features/TetherDisplay.java | 60 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 +++ src/main/java/me/Danker/gui/EditLocationsGui.java | 22 ++++++++ .../java/me/Danker/handlers/ConfigHandler.java | 4 ++ src/main/java/me/Danker/utils/Utils.java | 4 ++ 11 files changed, 138 insertions(+), 14 deletions(-) create mode 100644 src/main/java/me/Danker/features/TetherDisplay.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index d2ee9a7..db18e13 100644 --- a/README.md +++ b/README.md @@ -52,18 +52,19 @@ Discord Server: https://discord.gg/QsEkNQS - Highlight Slayer Bosses - Highlight Arachne - Highlight Skeleton Masters +- Show teammates in 30 block radius ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. - /display [winter/festival/spooky/f(1-7)/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. -- /move - Moves text display to specified X and Y coordinates. -- /scale - Scales text display to a specified multipler between 0.1x and 10x. +- /move - Moves text display to specified X and Y coordinates. +- /scale - Scales text display to a specified multipler between 0.1x and 10x. - /slayer [player] - Uses API to get slayer xp of a person. If no name is provided, it checks yours. - /skills [player] - Uses API to get skill levels of a person. If no name is provided, it checks yours. - /lobbyskills - Uses API to find the average skills of the lobby, as well the three players with the highest skill average. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index cf5caee..3ffa0f1 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -126,6 +126,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new StartsWithSolver()); MinecraftForge.EVENT_BUS.register(new StopSalvagingStarredItems()); MinecraftForge.EVENT_BUS.register(new SuperpairsSolver()); + MinecraftForge.EVENT_BUS.register(new TetherDisplay()); MinecraftForge.EVENT_BUS.register(new ThreeManSolver()); MinecraftForge.EVENT_BUS.register(new TicTacToeSolver()); MinecraftForge.EVENT_BUS.register(new TriviaSolver()); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 923fcbe..6fede04 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -92,6 +92,7 @@ public class DankerGuiCommand extends CommandBase { 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("[dungeonbossmusic][").append(ToggleCommand.dungeonBossMusic).append("]\n"); debug.append("[bloodroommusic][").append(ToggleCommand.bloodRoomMusic).append("]\n"); debug.append("[dungeonmusic][").append(ToggleCommand.dungeonMusic).append("]\n"); diff --git a/src/main/java/me/Danker/commands/MoveCommand.java b/src/main/java/me/Danker/commands/MoveCommand.java index 6fe2939..33d1f78 100644 --- a/src/main/java/me/Danker/commands/MoveCommand.java +++ b/src/main/java/me/Danker/commands/MoveCommand.java @@ -23,6 +23,7 @@ public class MoveCommand extends CommandBase { public static int[] waterAnswerXY = {0, 0}; public static int[] bonzoTimerXY = {0, 0}; public static int[] golemTimerXY = {0 ,0}; + public static int[] teammatesInRadiusXY = {0, 0}; @Override public String getCommandName() { @@ -31,7 +32,7 @@ public class MoveCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " "; + return "/" + getCommandName() + " "; } public static String usage(ICommandSender arg0) { @@ -46,7 +47,8 @@ public class MoveCommand extends CommandBase { @Override public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { if (args.length == 1) { - return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", "skilltracker", "wateranswer", "bonzotimer", "golemtimer"); + return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", + "skilltracker", "wateranswer", "bonzotimer", "golemtimer", "teammatesinradius"); } return null; } @@ -131,6 +133,13 @@ public class MoveCommand extends CommandBase { ConfigHandler.writeIntConfig("locations", "golemTimerY", golemTimerXY[1]); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Golem timer has been moved to " + DankersSkyblockMod.SECONDARY_COLOUR + arg1[1] + ", " + arg1[2])); break; + case "teammatesinradius": + teammatesInRadiusXY[0] = Integer.parseInt(arg1[1]); + teammatesInRadiusXY[1] = Integer.parseInt(arg1[2]); + ConfigHandler.writeIntConfig("locations", "teammatesInRadiusX", teammatesInRadiusXY[0]); + ConfigHandler.writeIntConfig("locations", "teammatesInRadiusY", teammatesInRadiusXY[1]); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Teammates in radius 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/ScaleCommand.java b/src/main/java/me/Danker/commands/ScaleCommand.java index b27ac50..a95f1b1 100644 --- a/src/main/java/me/Danker/commands/ScaleCommand.java +++ b/src/main/java/me/Danker/commands/ScaleCommand.java @@ -23,6 +23,7 @@ public class ScaleCommand extends CommandBase { public static double waterAnswerScale; public static double bonzoTimerScale; public static double golemTimerScale; + public static double teammatesInRadiusScale; @Override public String getCommandName() { @@ -31,7 +32,7 @@ public class ScaleCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " "; + return "/" + getCommandName() + " "; } public static String usage(ICommandSender arg0) { @@ -46,7 +47,8 @@ public class ScaleCommand extends CommandBase { @Override public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { if (args.length == 1) { - return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", "skilltracker", "wateranswer", "bonzotimer", "golemtimer"); + return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", + "skilltracker", "wateranswer", "bonzotimer", "golemtimer", "teammatesinradius"); } return null; } @@ -117,6 +119,11 @@ public class ScaleCommand extends CommandBase { ConfigHandler.writeDoubleConfig("scales", "golemTimerScale", golemTimerScale); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Golem timer has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + golemTimerScale + "x")); break; + case "teammatesinradius": + teammatesInRadiusScale = scaleAmount; + ConfigHandler.writeDoubleConfig("scales", "teammatesInRadiusScale", teammatesInRadiusScale); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Teammates in radius has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + teammatesInRadiusScale + "x")); + break; default: player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0))); } diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 528f376..0eb52fd 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -34,6 +34,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean highlightSlayers; public static boolean highlightArachne; public static boolean highlightSkeletonMasters; + public static boolean teammatesInRadius; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -93,8 +94,8 @@ public class ToggleCommand extends CommandBase implements ICommand { "creeperpuzzle/waterpuzzle/tictactoepuzzle/boulderpuzzle/silverfishpuzzle/icewalkpuzzle/watchermessage/" + "startswithterminal/selectallterminal/clickinorderterminal/" + "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + - "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/dungeonbossmusic/bloodroommusic/" + - "dungeonmusic/list>"; + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + + "dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; } public static String usage(ICommandSender arg0) { @@ -122,7 +123,8 @@ public class ToggleCommand extends CommandBase implements ICommand { "selectallterminal", "clickinorderterminal", "ultrasequencer", "chronomatron", "superpairs", "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", - "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", "list"); + "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", + "teammatesinradius", "list"); } return null; } @@ -386,22 +388,27 @@ public class ToggleCommand extends CommandBase implements ICommand { case "melodytooltips": melodyTooltips = !melodyTooltips; ConfigHandler.writeBooleanConfig("toggles", "MelodyTooltips", melodyTooltips); - player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Hide tooltips in Melody's Harp " + DankersSkyblockMod.SECONDARY_COLOUR + melodyTooltips + DankersSkyblockMod.MAIN_COLOUR + ".")); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Hide tooltips in Melody's Harp has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + melodyTooltips + DankersSkyblockMod.MAIN_COLOUR + ".")); break; case "highlightslayers": highlightSlayers = !highlightSlayers; ConfigHandler.writeBooleanConfig("toggles", "HighlightSlayers", highlightSlayers); - player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Slayer Bosses " + DankersSkyblockMod.SECONDARY_COLOUR + highlightSlayers + DankersSkyblockMod.MAIN_COLOUR + ".")); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Slayer Bosses has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + highlightSlayers + DankersSkyblockMod.MAIN_COLOUR + ".")); break; case "highlightarachne": highlightArachne = !highlightArachne; ConfigHandler.writeBooleanConfig("toggles", "HighlightArachne", highlightArachne); - player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Arachne " + DankersSkyblockMod.SECONDARY_COLOUR + highlightArachne + DankersSkyblockMod.MAIN_COLOUR + ".")); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Arachne has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + highlightArachne + DankersSkyblockMod.MAIN_COLOUR + ".")); break; case "highlightskeletonmasters": highlightSkeletonMasters = !highlightSkeletonMasters; ConfigHandler.writeBooleanConfig("toggles", "HighlightSkeletonMasters", highlightSkeletonMasters); - player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Skeleton Masters " + DankersSkyblockMod.SECONDARY_COLOUR + highlightSkeletonMasters + DankersSkyblockMod.MAIN_COLOUR + ".")); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Highlight Skeleton Masters has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + highlightSkeletonMasters + DankersSkyblockMod.MAIN_COLOUR + ".")); + break; + case "teammatesinradius": + teammatesInRadius = !teammatesInRadius; + ConfigHandler.writeBooleanConfig("toggles", "TeammatesInRadius", teammatesInRadius); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Teammates in radius has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + teammatesInRadius + DankersSkyblockMod.MAIN_COLOUR + ".")); break; case "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; @@ -467,6 +474,7 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Highlight Slayer Bosses: " + DankersSkyblockMod.VALUE_COLOUR + highlightSlayers + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Highlight Arachne Boss: " + DankersSkyblockMod.VALUE_COLOUR + highlightArachne + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Highlight Skeleton Masters: " + DankersSkyblockMod.VALUE_COLOUR + highlightSkeletonMasters + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Teammates in radius: " + DankersSkyblockMod.VALUE_COLOUR + teammatesInRadius + "\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 diff --git a/src/main/java/me/Danker/features/TetherDisplay.java b/src/main/java/me/Danker/features/TetherDisplay.java new file mode 100644 index 0000000..363b90f --- /dev/null +++ b/src/main/java/me/Danker/features/TetherDisplay.java @@ -0,0 +1,60 @@ +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.handlers.TextRenderer; +import me.Danker.utils.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +import java.util.ArrayList; +import java.util.List; + +public class TetherDisplay { + + static List playersInRadius = new ArrayList<>(); + + @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 % 10 == 0) { + if (ToggleCommand.teammatesInRadius && Utils.inDungeons && player != null && world != null) { + playersInRadius.clear(); + List teammates = world.getEntitiesWithinAABB(EntityOtherPlayerMP.class, new AxisAlignedBB(player.posX - 30, player.posY - 30, player.posZ - 30, player.posX + 30, player.posY + 30, player.posZ + 30)); + + for (EntityPlayer teammate : teammates) { + if (Utils.isRealPlayer(teammate) && !teammate.isInvisible() && player.getDistanceToEntity(teammate) <= 30F) { + playersInRadius.add(teammate.getDisplayName().getSiblings().get(0).getFormattedText()); + } + } + } + } + } + + @SubscribeEvent + public void renderPlayerInfo(RenderOverlay event) { + if (ToggleCommand.teammatesInRadius && Utils.inDungeons) { + String teammates; + if (playersInRadius.size() > 0) { + teammates = String.join("\n", playersInRadius); + } else { + teammates = EnumChatFormatting.RED + "NONE"; + } + new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.AQUA + "Teammates In Radius:\n" + teammates, MoveCommand.teammatesInRadiusXY[0], MoveCommand.teammatesInRadiusXY[1], ScaleCommand.teammatesInRadiusScale); + } + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 68d1017..4797343 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -63,6 +63,7 @@ public class DankerGui extends GuiScreen { private GuiButton highlightArachne; private GuiButton highlightSlayer; private GuiButton highlightSkeletonMasters; + private GuiButton teammatesInRadius; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -147,6 +148,7 @@ public class DankerGui extends GuiScreen { highlightArachne = new FeatureButton("Highlight Arachne: " + Utils.getColouredBoolean(ToggleCommand.highlightArachne), "Highlights Arachne bosses."); highlightSlayer = new FeatureButton("Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers), "Highlights Slayer bosses."); highlightSkeletonMasters = new FeatureButton("Highlight Skeleton Masters: " + Utils.getColouredBoolean(ToggleCommand.highlightSkeletonMasters), "Highlights Skeleton Masters."); + teammatesInRadius = new FeatureButton("Display Players in 30 Block Radius: " + Utils.getColouredBoolean(ToggleCommand.teammatesInRadius), "Displays dungeon teammates in 30 block radius for tether and diversion."); allButtons.clear(); allButtons.add(changeDisplay); @@ -189,6 +191,7 @@ public class DankerGui extends GuiScreen { allButtons.add(highlightArachne); allButtons.add(highlightSlayer); allButtons.add(highlightSkeletonMasters); + allButtons.add(teammatesInRadius); search.setText(initSearchText); search.setVisible(true); @@ -419,6 +422,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.highlightSkeletonMasters = !ToggleCommand.highlightSkeletonMasters; ConfigHandler.writeBooleanConfig("toggles", "HighlightSkeletonMasters", ToggleCommand.highlightSkeletonMasters); highlightSkeletonMasters.displayString = "Highlight Skeleton Masters: " + Utils.getColouredBoolean(ToggleCommand.highlightSkeletonMasters); + } else if (button == teammatesInRadius) { + ToggleCommand.teammatesInRadius = !ToggleCommand.teammatesInRadius; + ConfigHandler.writeBooleanConfig("toggles", "TeammatesInRadius", ToggleCommand.teammatesInRadius); + teammatesInRadius.displayString = "Display Players in 30 Block Radius: " + Utils.getColouredBoolean(ToggleCommand.teammatesInRadius); } } diff --git a/src/main/java/me/Danker/gui/EditLocationsGui.java b/src/main/java/me/Danker/gui/EditLocationsGui.java index 3a7c94b..c263d5a 100644 --- a/src/main/java/me/Danker/gui/EditLocationsGui.java +++ b/src/main/java/me/Danker/gui/EditLocationsGui.java @@ -13,6 +13,8 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.EnumChatFormatting; import org.lwjgl.opengl.GL11; +import javax.xml.stream.Location; + public class EditLocationsGui extends GuiScreen { private String moving = null; @@ -29,6 +31,7 @@ public class EditLocationsGui extends GuiScreen { private LocationButton waterAnswer; private LocationButton bonzoTimer; private LocationButton golemTimer; + private LocationButton teammatesInRadius; @Override public boolean doesGuiPauseGame() { @@ -86,6 +89,13 @@ public class EditLocationsGui extends GuiScreen { EnumChatFormatting.GREEN + "Green: " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.GREEN + "Emerald\n" + EnumChatFormatting.RED + "Red: " + EnumChatFormatting.YELLOW + "Gold, " + EnumChatFormatting.AQUA + "Diamond, " + EnumChatFormatting.GREEN + "Emerald, " + EnumChatFormatting.RED + "Clay"; + String teammatesInRadiusText = EnumChatFormatting.AQUA + "Teammates In Radius:\n" + + EnumChatFormatting.GREEN + "NoticeMehSenpai\n" + + EnumChatFormatting.GREEN + "DeathStreeks\n" + + EnumChatFormatting.GREEN + "Not_A_Neko\n" + + EnumChatFormatting.GREEN + "Minikloon"; + + // ive lost my marbles display = new LocationButton(0, MoveCommand.displayXY[0], MoveCommand.displayXY[1], 145 * ScaleCommand.displayScale, 102 * ScaleCommand.displayScale, ScaleCommand.displayScale, displayText, displayNums, 110); dungeonTimer = new LocationButton(0, MoveCommand.dungeonTimerXY[0], MoveCommand.dungeonTimerXY[1], 113 * ScaleCommand.dungeonTimerScale, 57 * ScaleCommand.dungeonTimerScale, ScaleCommand.dungeonTimerScale, dungeonTimerText, dungeonTimerNums, 80); coords = new LocationButton(0, MoveCommand.coordsXY[0], MoveCommand.coordsXY[1], 141 * ScaleCommand.coordsScale, 12 * ScaleCommand.coordsScale, ScaleCommand.coordsScale, NoF3Coords.COORDS_COLOUR + "74 / 14 / -26 (141.1 / 6.7)", null, null); @@ -96,6 +106,7 @@ public class EditLocationsGui extends GuiScreen { waterAnswer = new LocationButton(0, MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], 190 * ScaleCommand.waterAnswerScale, 54 * ScaleCommand.waterAnswerScale, ScaleCommand.waterAnswerScale, waterAnswerText, null, null); bonzoTimer = new LocationButton(0, MoveCommand.bonzoTimerXY[0], MoveCommand.bonzoTimerXY[1] + 5, 53 * ScaleCommand.bonzoTimerScale, 18 * ScaleCommand.bonzoTimerScale, ScaleCommand.bonzoTimerScale, BonzoMaskTimer.BONZO_COLOR + " 3m30s", null, null); golemTimer = new LocationButton(0, MoveCommand.golemTimerXY[0], MoveCommand.golemTimerXY[1] + 5, 42 * ScaleCommand.golemTimerScale, 18 * ScaleCommand.golemTimerScale, ScaleCommand.golemTimerScale, GolemSpawningAlert.GOLEM_COLOUR + " 20s", null, null); + teammatesInRadius = new LocationButton(0, MoveCommand.teammatesInRadiusXY[0], MoveCommand.teammatesInRadiusXY[1], 107 * ScaleCommand.teammatesInRadiusScale, 45 * ScaleCommand.teammatesInRadiusScale, ScaleCommand.teammatesInRadiusScale, teammatesInRadiusText, null, null); this.buttonList.add(coords); this.buttonList.add(dungeonTimer); @@ -107,6 +118,7 @@ public class EditLocationsGui extends GuiScreen { this.buttonList.add(display); this.buttonList.add(skill50); this.buttonList.add(golemTimer); + this.buttonList.add(teammatesInRadius); } @Override @@ -204,6 +216,12 @@ public class EditLocationsGui extends GuiScreen { golemTimer.xPosition = MoveCommand.golemTimerXY[0]; golemTimer.yPosition = MoveCommand.golemTimerXY[1]; break; + case "teammatesInRadius": + MoveCommand.teammatesInRadiusXY[0] += xMoved; + MoveCommand.teammatesInRadiusXY[1] += yMoved; + teammatesInRadius.xPosition = MoveCommand.teammatesInRadiusXY[0]; + teammatesInRadius.yPosition = MoveCommand.teammatesInRadiusXY[1]; + break; } this.buttonList.clear(); initGui(); @@ -236,6 +254,8 @@ public class EditLocationsGui extends GuiScreen { moving = "bonzoTimer"; } else if (button == golemTimer) { moving = "golemTimer"; + } else if (button == teammatesInRadius) { + moving = "teammatesInRadius"; } } } @@ -264,6 +284,8 @@ public class EditLocationsGui extends GuiScreen { ConfigHandler.writeIntConfig("locations", "bonzoTimerY", MoveCommand.bonzoTimerXY[1]); ConfigHandler.writeIntConfig("locations", "golemTimerX", MoveCommand.golemTimerXY[0]); ConfigHandler.writeIntConfig("locations", "golemTimerY", MoveCommand.golemTimerXY[1]); + ConfigHandler.writeIntConfig("locations", "teammatesInRadiusX", MoveCommand.teammatesInRadiusXY[0]); + ConfigHandler.writeIntConfig("locations", "teammatesInRadiusY", MoveCommand.teammatesInRadiusXY[1]); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 5668953..dcb2368 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -229,6 +229,7 @@ public class ConfigHandler { ToggleCommand.highlightSlayers = initBoolean("toggles", "HighlightSlayers", false); ToggleCommand.highlightArachne = initBoolean("toggles", "HighlightArachne", false); ToggleCommand.highlightSkeletonMasters = initBoolean("toggles", "HighlightSkeletonMasters", false); + ToggleCommand.teammatesInRadius = initBoolean("toggles", "TeammatesInRadius", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -478,6 +479,8 @@ public class ConfigHandler { MoveCommand.bonzoTimerXY[1] = initInt("locations", "bonzoTimerY", 80); MoveCommand.golemTimerXY[0] = initInt("locations", "golemTimerX", 100); MoveCommand.golemTimerXY[1] = initInt("locations", "golemTimerY", 30); + MoveCommand.teammatesInRadiusXY[0] = initInt("locations", "teammatesInRadiusX", 80); + MoveCommand.teammatesInRadiusXY[1] = initInt("locations", "teammatesInRadiusY", 100); // Scales ScaleCommand.coordsScale = initDouble("scales", "coordsScale", 1); @@ -490,6 +493,7 @@ public class ConfigHandler { ScaleCommand.waterAnswerScale = initDouble("scales", "waterAnswerScale", 1); ScaleCommand.bonzoTimerScale = initDouble("scales", "bonzoTimerScale", 1); ScaleCommand.golemTimerScale = initDouble("scales", "golemTimerScale", 1); + ScaleCommand.teammatesInRadiusScale = initDouble("scales", "teammatesInRadiusScale", 1); // Colours DankersSkyblockMod.MAIN_COLOUR = initString("colors", "main", EnumChatFormatting.GREEN.toString()); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 160fc0a..b7927c3 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -538,5 +538,9 @@ public class Utils { return null; } } + + public static boolean isRealPlayer(EntityPlayer player) { + return player.getUniqueID().version() == 4 && !player.isPlayerSleeping(); + } } -- cgit From 01822bff56d23b98885227943bd1e042e4f9e946 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 29 Apr 2021 01:06:57 -0400 Subject: Add giant hp display Also make LocationButton easy to add --- README.md | 7 ++- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 1 + src/main/java/me/Danker/commands/MoveCommand.java | 13 +++- src/main/java/me/Danker/commands/ScaleCommand.java | 11 +++- .../java/me/Danker/commands/ToggleCommand.java | 11 +++- .../java/me/Danker/features/GiantHPDisplay.java | 71 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 +++ src/main/java/me/Danker/gui/EditLocationsGui.java | 43 +++++++++---- .../java/me/Danker/gui/buttons/LocationButton.java | 27 ++++---- .../java/me/Danker/handlers/ConfigHandler.java | 10 +-- src/main/java/me/Danker/utils/Utils.java | 6 ++ 12 files changed, 171 insertions(+), 37 deletions(-) create mode 100644 src/main/java/me/Danker/features/GiantHPDisplay.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 507f2d0..da48eda 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ Discord Server: https://discord.gg/QsEkNQS - Watcher ready message - Catacombs F7 Stage 3 solvers (Starts with letter, select all colour) - Find correct Livid (with graphic display of HP) +- Catacombs F6 and F7 Giant HP display - Use custom music in supported locations - Experimentation solvers (Ultrasequencer, Chronomatron, Superpairs) - Hide tooltips in experiment addons @@ -57,14 +58,14 @@ Discord Server: https://discord.gg/QsEkNQS ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. - /display [winter/festival/spooky/f(1-7)/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. -- /move - Moves text display to specified X and Y coordinates. -- /scale - Scales text display to a specified multipler between 0.1x and 10x. +- /move - Moves text display to specified X and Y coordinates. +- /scale - Scales text display to a specified multipler between 0.1x and 10x. - /slayer [player] - Uses API to get slayer xp of a person. If no name is provided, it checks yours. - /skill [player] - Uses API to get skill levels of a person. If no name is provided, it checks yours. - /lobbyskills - Uses API to find the average skills of the lobby, as well the three players with the highest skill average. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 2e49f55..bf71dda 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -101,6 +101,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new DungeonTimer()); MinecraftForge.EVENT_BUS.register(new ExpertiseLore()); MinecraftForge.EVENT_BUS.register(new FasterMaddoxCalling()); + MinecraftForge.EVENT_BUS.register(new GiantHPDisplay()); MinecraftForge.EVENT_BUS.register(new GoldenEnchants()); MinecraftForge.EVENT_BUS.register(new GolemSpawningAlert()); MinecraftForge.EVENT_BUS.register(new GpartyNotifications()); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 6fede04..2cc706e 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -93,6 +93,7 @@ public class DankerGuiCommand extends CommandBase { 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("[dungeonbossmusic][").append(ToggleCommand.dungeonBossMusic).append("]\n"); debug.append("[bloodroommusic][").append(ToggleCommand.bloodRoomMusic).append("]\n"); debug.append("[dungeonmusic][").append(ToggleCommand.dungeonMusic).append("]\n"); diff --git a/src/main/java/me/Danker/commands/MoveCommand.java b/src/main/java/me/Danker/commands/MoveCommand.java index 33d1f78..b17794c 100644 --- a/src/main/java/me/Danker/commands/MoveCommand.java +++ b/src/main/java/me/Danker/commands/MoveCommand.java @@ -24,6 +24,7 @@ public class MoveCommand extends CommandBase { public static int[] bonzoTimerXY = {0, 0}; public static int[] golemTimerXY = {0 ,0}; public static int[] teammatesInRadiusXY = {0, 0}; + public static int[] giantHPXY = {0, 0}; @Override public String getCommandName() { @@ -32,7 +33,7 @@ public class MoveCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " "; + return "/" + getCommandName() + " "; } public static String usage(ICommandSender arg0) { @@ -48,7 +49,8 @@ public class MoveCommand extends CommandBase { public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", - "skilltracker", "wateranswer", "bonzotimer", "golemtimer", "teammatesinradius"); + "skilltracker", "wateranswer", "bonzotimer", "golemtimer", "teammatesinradius", + "gianthp"); } return null; } @@ -140,6 +142,13 @@ public class MoveCommand extends CommandBase { ConfigHandler.writeIntConfig("locations", "teammatesInRadiusY", teammatesInRadiusXY[1]); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Teammates in radius has been moved to " + DankersSkyblockMod.SECONDARY_COLOUR + arg1[1] + ", " + arg1[2])); break; + case "gianthp": + giantHPXY[0] = Integer.parseInt(arg1[1]); + giantHPXY[1] = Integer.parseInt(arg1[2]); + ConfigHandler.writeIntConfig("locations", "giantHPX", giantHPXY[0]); + 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; default: player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0))); } diff --git a/src/main/java/me/Danker/commands/ScaleCommand.java b/src/main/java/me/Danker/commands/ScaleCommand.java index a95f1b1..def0e57 100644 --- a/src/main/java/me/Danker/commands/ScaleCommand.java +++ b/src/main/java/me/Danker/commands/ScaleCommand.java @@ -24,6 +24,7 @@ public class ScaleCommand extends CommandBase { public static double bonzoTimerScale; public static double golemTimerScale; public static double teammatesInRadiusScale; + public static double giantHPScale; @Override public String getCommandName() { @@ -32,7 +33,7 @@ public class ScaleCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " "; + return "/" + getCommandName() + " "; } public static String usage(ICommandSender arg0) { @@ -48,7 +49,8 @@ public class ScaleCommand extends CommandBase { public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, "coords", "display", "dungeontimer", "skill50", "lividhp", "caketimer", - "skilltracker", "wateranswer", "bonzotimer", "golemtimer", "teammatesinradius"); + "skilltracker", "wateranswer", "bonzotimer", "golemtimer", "teammatesinradius", + "gianthp"); } return null; } @@ -124,6 +126,11 @@ public class ScaleCommand extends CommandBase { ConfigHandler.writeDoubleConfig("scales", "teammatesInRadiusScale", teammatesInRadiusScale); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Teammates in radius has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + teammatesInRadiusScale + "x")); break; + case "gianthp": + giantHPScale = scaleAmount; + ConfigHandler.writeDoubleConfig("scales", "giantHPScale", giantHPScale); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Giant hp has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + giantHPScale + "x")); + break; default: player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0))); } diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 0eb52fd..a9fe663 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -35,6 +35,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean highlightArachne; public static boolean highlightSkeletonMasters; public static boolean teammatesInRadius; + public static boolean giantHP; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -95,7 +96,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "startswithterminal/selectallterminal/clickinorderterminal/" + "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + - "dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; + "gianthp/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; } public static String usage(ICommandSender arg0) { @@ -124,7 +125,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "ultrasequencer", "chronomatron", "superpairs", "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", - "teammatesinradius", "list"); + "teammatesinradius", "gianthp", "list"); } return null; } @@ -410,6 +411,11 @@ public class ToggleCommand extends CommandBase implements ICommand { ConfigHandler.writeBooleanConfig("toggles", "TeammatesInRadius", teammatesInRadius); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Teammates in radius has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + teammatesInRadius + DankersSkyblockMod.MAIN_COLOUR + ".")); break; + case "gianthp": + giantHP = !giantHP; + ConfigHandler.writeBooleanConfig("toggles", "GiantHP", giantHP); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Giant HP display has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + giantHP + DankersSkyblockMod.MAIN_COLOUR + ".")); + break; case "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; CustomMusic.dungeonboss.stop(); @@ -475,6 +481,7 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Highlight Arachne Boss: " + DankersSkyblockMod.VALUE_COLOUR + highlightArachne + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Highlight Skeleton Masters: " + DankersSkyblockMod.VALUE_COLOUR + highlightSkeletonMasters + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Teammates in radius: " + DankersSkyblockMod.VALUE_COLOUR + teammatesInRadius + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Giant HP display: " + DankersSkyblockMod.VALUE_COLOUR + giantHP + "\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 diff --git a/src/main/java/me/Danker/features/GiantHPDisplay.java b/src/main/java/me/Danker/features/GiantHPDisplay.java new file mode 100644 index 0000000..07378dd --- /dev/null +++ b/src/main/java/me/Danker/features/GiantHPDisplay.java @@ -0,0 +1,71 @@ +package me.Danker.features; + +import me.Danker.DankersSkyblockMod; +import me.Danker.commands.ToggleCommand; +import me.Danker.events.RenderOverlay; +import me.Danker.handlers.ScoreboardHandler; +import me.Danker.handlers.TextRenderer; +import me.Danker.utils.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.util.StringUtils; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +public class GiantHPDisplay { + + static Pattern f6GiantPattern = Pattern.compile("(Jolly Pink Giant|L\\.A\\.S\\.R\\.|The Diamond Giant|Bigfoot).*"); + static List giants = new ArrayList<>(); + + @SubscribeEvent + public void onTick(TickEvent.ClientTickEvent event) { + if (event.phase != TickEvent.Phase.START) return; + + World world = Minecraft.getMinecraft().theWorld; + if (DankersSkyblockMod.tickAmount % 20 == 0) { + if (ToggleCommand.giantHP && Utils.inDungeons && world != null) { + giants.clear(); + List scoreboard = ScoreboardHandler.getSidebarLines(); + String firstLine = ScoreboardHandler.cleanSB(scoreboard.get(scoreboard.size() - 1)); + + if (firstLine.contains("sadan")) { + List entities = world.getLoadedEntityList(); + + for (Entity entity : entities) { + String name = StringUtils.stripControlCodes(entity.getName()); + if (f6GiantPattern.matcher(name).find()) { + giants.add(entity); + } + } + } else if (firstLine.contains("138,30") || firstLine.contains("354,66") || firstLine.contains("138,66")) { + List entities = world.getLoadedEntityList(); + + for (Entity entity : entities) { + if (entity.getName().contains("Giant ")) { + giants.add(entity); + } + } + } + } + } + } + + @SubscribeEvent + public void renderPlayerInfo(RenderOverlay event) { + if (ToggleCommand.giantHP && Utils.inDungeons && giants.size() > 0) { + StringBuilder sb = new StringBuilder(); + + for (Entity giant : giants) { + if (!giant.isDead) sb.append(Utils.removeBold(giant.getDisplayName().getFormattedText())).append("\n"); + } + + new TextRenderer(Minecraft.getMinecraft(), sb.toString(), 100, 100, 1); + } + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 4797343..cc33514 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -64,6 +64,7 @@ public class DankerGui extends GuiScreen { private GuiButton highlightSlayer; private GuiButton highlightSkeletonMasters; private GuiButton teammatesInRadius; + private GuiButton giantHP; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -149,6 +150,7 @@ public class DankerGui extends GuiScreen { highlightSlayer = new FeatureButton("Highlight Slayer: " + Utils.getColouredBoolean(ToggleCommand.highlightSlayers), "Highlights Slayer bosses."); highlightSkeletonMasters = new FeatureButton("Highlight Skeleton Masters: " + Utils.getColouredBoolean(ToggleCommand.highlightSkeletonMasters), "Highlights Skeleton Masters."); teammatesInRadius = new FeatureButton("Display Players in 30 Block Radius: " + Utils.getColouredBoolean(ToggleCommand.teammatesInRadius), "Displays dungeon teammates in 30 block radius for tether and diversion."); + giantHP = new FeatureButton("Display Giant HP: " + Utils.getColouredBoolean(ToggleCommand.giantHP), "Displays health of Sadan's giants during F6 bossfight and F7 blood room."); allButtons.clear(); allButtons.add(changeDisplay); @@ -192,6 +194,7 @@ public class DankerGui extends GuiScreen { allButtons.add(highlightSlayer); allButtons.add(highlightSkeletonMasters); allButtons.add(teammatesInRadius); + allButtons.add(giantHP); search.setText(initSearchText); search.setVisible(true); @@ -426,6 +429,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.teammatesInRadius = !ToggleCommand.teammatesInRadius; ConfigHandler.writeBooleanConfig("toggles", "TeammatesInRadius", ToggleCommand.teammatesInRadius); teammatesInRadius.displayString = "Display Players in 30 Block Radius: " + Utils.getColouredBoolean(ToggleCommand.teammatesInRadius); + } else if (button == giantHP) { + ToggleCommand.giantHP = !ToggleCommand.giantHP; + ConfigHandler.writeBooleanConfig("toggles", "GiantHP", ToggleCommand.giantHP); + giantHP.displayString = "Display Giant HP: " + Utils.getColouredBoolean(ToggleCommand.giantHP); } } diff --git a/src/main/java/me/Danker/gui/EditLocationsGui.java b/src/main/java/me/Danker/gui/EditLocationsGui.java index c263d5a..2c8b336 100644 --- a/src/main/java/me/Danker/gui/EditLocationsGui.java +++ b/src/main/java/me/Danker/gui/EditLocationsGui.java @@ -1,5 +1,6 @@ package me.Danker.gui; +import javafx.scene.transform.Scale; import me.Danker.DankersSkyblockMod; import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; @@ -32,6 +33,7 @@ public class EditLocationsGui extends GuiScreen { private LocationButton bonzoTimer; private LocationButton golemTimer; private LocationButton teammatesInRadius; + private LocationButton giantHP; @Override public boolean doesGuiPauseGame() { @@ -95,18 +97,24 @@ public class EditLocationsGui extends GuiScreen { EnumChatFormatting.GREEN + "Not_A_Neko\n" + EnumChatFormatting.GREEN + "Minikloon"; - // ive lost my marbles - display = new LocationButton(0, MoveCommand.displayXY[0], MoveCommand.displayXY[1], 145 * ScaleCommand.displayScale, 102 * ScaleCommand.displayScale, ScaleCommand.displayScale, displayText, displayNums, 110); - dungeonTimer = new LocationButton(0, MoveCommand.dungeonTimerXY[0], MoveCommand.dungeonTimerXY[1], 113 * ScaleCommand.dungeonTimerScale, 57 * ScaleCommand.dungeonTimerScale, ScaleCommand.dungeonTimerScale, dungeonTimerText, dungeonTimerNums, 80); - coords = new LocationButton(0, MoveCommand.coordsXY[0], MoveCommand.coordsXY[1], 141 * ScaleCommand.coordsScale, 12 * ScaleCommand.coordsScale, ScaleCommand.coordsScale, NoF3Coords.COORDS_COLOUR + "74 / 14 / -26 (141.1 / 6.7)", null, null); - skill50 = new LocationButton(0, MoveCommand.skill50XY[0], MoveCommand.skill50XY[1], 233 * ScaleCommand.skill50Scale, 12 * ScaleCommand.skill50Scale, ScaleCommand.skill50Scale, Skill50Display.SKILL_50_COLOUR + "+3.5 Farming (28,882,117.7/55,172,425) 52.34%", null, null); - lividHP = new LocationButton(0, MoveCommand.lividHpXY[0], MoveCommand.lividHpXY[1], 85 * ScaleCommand.lividHpScale, 12 * ScaleCommand.lividHpScale, ScaleCommand.lividHpScale, EnumChatFormatting.WHITE + "﴾ Livid " + EnumChatFormatting.YELLOW + "6.9M" + EnumChatFormatting.RED + "❤ " + EnumChatFormatting.WHITE + "﴿", null, null); - cakeTimer = new LocationButton(0, MoveCommand.cakeTimerXY[0], MoveCommand.cakeTimerXY[1] + 5, 85 * ScaleCommand.cakeTimerScale, 18 * ScaleCommand.cakeTimerScale, ScaleCommand.cakeTimerScale, CakeTimer.CAKE_COLOUR + " 11h16m", null, null); - skillTracker = new LocationButton(0, MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[1], 150 * ScaleCommand.skillTrackerScale, 28 * ScaleCommand.skillTrackerScale, ScaleCommand.skillTrackerScale, skillTrackerText, null, null); - waterAnswer = new LocationButton(0, MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], 190 * ScaleCommand.waterAnswerScale, 54 * ScaleCommand.waterAnswerScale, ScaleCommand.waterAnswerScale, waterAnswerText, null, null); - bonzoTimer = new LocationButton(0, MoveCommand.bonzoTimerXY[0], MoveCommand.bonzoTimerXY[1] + 5, 53 * ScaleCommand.bonzoTimerScale, 18 * ScaleCommand.bonzoTimerScale, ScaleCommand.bonzoTimerScale, BonzoMaskTimer.BONZO_COLOR + " 3m30s", null, null); - golemTimer = new LocationButton(0, MoveCommand.golemTimerXY[0], MoveCommand.golemTimerXY[1] + 5, 42 * ScaleCommand.golemTimerScale, 18 * ScaleCommand.golemTimerScale, ScaleCommand.golemTimerScale, GolemSpawningAlert.GOLEM_COLOUR + " 20s", null, null); - teammatesInRadius = new LocationButton(0, MoveCommand.teammatesInRadiusXY[0], MoveCommand.teammatesInRadiusXY[1], 107 * ScaleCommand.teammatesInRadiusScale, 45 * ScaleCommand.teammatesInRadiusScale, ScaleCommand.teammatesInRadiusScale, teammatesInRadiusText, null, null); + String giantHPText = EnumChatFormatting.DARK_RED + "L.A.S.R. " + EnumChatFormatting.GREEN + "25M" + EnumChatFormatting.RED + "❤\n" + + EnumChatFormatting.RED + "Bigfoot " + EnumChatFormatting.GREEN + "25M" + EnumChatFormatting.RED + "❤\n" + + EnumChatFormatting.LIGHT_PURPLE + "Jolly Pink Giant " + EnumChatFormatting.GREEN + "25M" + EnumChatFormatting.RED + "❤\n" + + EnumChatFormatting.DARK_AQUA + "The Diamond Giant " + EnumChatFormatting.GREEN + "25M" + EnumChatFormatting.RED + "❤"; + + + 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); + coords = new LocationButton(MoveCommand.coordsXY[0], MoveCommand.coordsXY[1], ScaleCommand.coordsScale, NoF3Coords.COORDS_COLOUR + "74 / 14 / -26 (141.1 / 6.7)", null, null); + skill50 = new LocationButton(MoveCommand.skill50XY[0], MoveCommand.skill50XY[1], ScaleCommand.skill50Scale, Skill50Display.SKILL_50_COLOUR + "+3.5 Farming (28,882,117.7/55,172,425) 52.34%", null, null); + lividHP = new LocationButton(MoveCommand.lividHpXY[0], MoveCommand.lividHpXY[1], ScaleCommand.lividHpScale, EnumChatFormatting.WHITE + "﴾ Livid " + EnumChatFormatting.YELLOW + "6.9M" + EnumChatFormatting.RED + "❤ " + EnumChatFormatting.WHITE + "﴿", null, null); + cakeTimer = new LocationButton(MoveCommand.cakeTimerXY[0], MoveCommand.cakeTimerXY[1] + 5, ScaleCommand.cakeTimerScale, CakeTimer.CAKE_COLOUR + " 11h16m", null, null); + skillTracker = new LocationButton(MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[1], ScaleCommand.skillTrackerScale, skillTrackerText, null, null); + waterAnswer = new LocationButton(MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], ScaleCommand.waterAnswerScale, waterAnswerText, null, null); + bonzoTimer = new LocationButton(MoveCommand.bonzoTimerXY[0], MoveCommand.bonzoTimerXY[1] + 5, ScaleCommand.bonzoTimerScale, BonzoMaskTimer.BONZO_COLOR + " 3m30s", null, null); + 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); this.buttonList.add(coords); this.buttonList.add(dungeonTimer); @@ -119,6 +127,7 @@ public class EditLocationsGui extends GuiScreen { this.buttonList.add(skill50); this.buttonList.add(golemTimer); this.buttonList.add(teammatesInRadius); + this.buttonList.add(giantHP); } @Override @@ -222,6 +231,12 @@ public class EditLocationsGui extends GuiScreen { teammatesInRadius.xPosition = MoveCommand.teammatesInRadiusXY[0]; teammatesInRadius.yPosition = MoveCommand.teammatesInRadiusXY[1]; break; + case "giantHP": + MoveCommand.giantHPXY[0] += xMoved; + MoveCommand.giantHPXY[1] += yMoved; + giantHP.xPosition = MoveCommand.giantHPXY[0]; + giantHP.yPosition = MoveCommand.giantHPXY[1]; + break; } this.buttonList.clear(); initGui(); @@ -256,6 +271,8 @@ public class EditLocationsGui extends GuiScreen { moving = "golemTimer"; } else if (button == teammatesInRadius) { moving = "teammatesInRadius"; + } else if (button == giantHP) { + moving = "giantHP"; } } } @@ -286,6 +303,8 @@ public class EditLocationsGui extends GuiScreen { ConfigHandler.writeIntConfig("locations", "golemTimerY", MoveCommand.golemTimerXY[1]); ConfigHandler.writeIntConfig("locations", "teammatesInRadiusX", MoveCommand.teammatesInRadiusXY[0]); ConfigHandler.writeIntConfig("locations", "teammatesInRadiusY", MoveCommand.teammatesInRadiusXY[1]); + ConfigHandler.writeIntConfig("locations", "giantHPX", MoveCommand.giantHPXY[0]); + ConfigHandler.writeIntConfig("locations", "giantHPY", MoveCommand.giantHPXY[1]); } } diff --git a/src/main/java/me/Danker/gui/buttons/LocationButton.java b/src/main/java/me/Danker/gui/buttons/LocationButton.java index a8937fd..f328c58 100644 --- a/src/main/java/me/Danker/gui/buttons/LocationButton.java +++ b/src/main/java/me/Danker/gui/buttons/LocationButton.java @@ -13,21 +13,17 @@ public class LocationButton extends GuiButton { private String text; private String text2; private Integer text2Offset; + private int longestText; - public LocationButton(int buttonId, int x, int y, double width, double height, double scale, String text, String text2, Integer text2Offset) { - super(buttonId, x, y, text); + public LocationButton(int x, int y, double scale, String text, String text2, Integer text2Offset) { + super(0, x, y, text); this.x = x; this.y = y; - this.width = (int) width; - this.height = (int) height; this.scale = scale; this.text = text; this.text2 = text2; this.text2Offset = text2Offset; - } - - @Override - public void drawButton(Minecraft mc, int mouseX, int mouseY) { + String[] splitText; if (text2 == null) { splitText = text.split("\n"); @@ -37,16 +33,23 @@ public class LocationButton extends GuiButton { int longestText = -1; for (String s : splitText) { - int stringLength = mc.fontRendererObj.getStringWidth(s); + int stringLength = Minecraft.getMinecraft().fontRendererObj.getStringWidth(s); if (stringLength > longestText) { longestText = stringLength; } } - + + this.longestText = longestText; + this.height = (int) ((splitText.length * 9 + 3) * scale); + this.width = (int) ((this.longestText + 3) * scale); + } + + @Override + public void drawButton(Minecraft mc, int mouseX, int mouseY) { if (text2 == null) { - drawRect(x - 2, y - 2, (int) (x + longestText * scale + 3), (int) (y + (splitText.length * 9 + 3) * scale), 0x40D3D3D3); + drawRect(x - 2, y - 2, x + width, y + height, 0x40D3D3D3); } else { - drawRect(x - 2, y - 2, (int) (x + (longestText + text2Offset) * scale + 3), (int) (y + (splitText.length * 9 + 3) * scale), 0x40D3D3D3); + drawRect(x - 2, y - 2, (int) (x + (longestText + text2Offset + 3) * scale), y + height, 0x40D3D3D3); new TextRenderer(mc, text2, (int) (x + (text2Offset * scale)), y, scale); } new TextRenderer(mc, text, x, y, scale); diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index dcb2368..a200b01 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -105,9 +105,7 @@ public class ConfigHandler { } public static void writeDoubleConfig(String category, String key, double value) { - config = new Configuration(new File(file)); try { - config.load(); double set = config.get(category, key, value).getDouble(); config.getCategory(category).get(key).set(value); } catch (Exception ex) { @@ -131,9 +129,7 @@ public class ConfigHandler { } public static void writeBooleanConfig(String category, String key, boolean value) { - config = new Configuration(new File(file)); try { - config.load(); boolean set = config.get(category, key, value).getBoolean(); config.getCategory(category).get(key).set(value); } catch (Exception ex) { @@ -208,6 +204,8 @@ public class ConfigHandler { } public static void reloadConfig() { + init(); + // Toggles ToggleCommand.gpartyToggled = initBoolean("toggles", "GParty", false); ToggleCommand.coordsToggled = initBoolean("toggles", "Coords", false); @@ -230,6 +228,7 @@ public class ConfigHandler { ToggleCommand.highlightArachne = initBoolean("toggles", "HighlightArachne", false); ToggleCommand.highlightSkeletonMasters = initBoolean("toggles", "HighlightSkeletonMasters", false); ToggleCommand.teammatesInRadius = initBoolean("toggles", "TeammatesInRadius", false); + ToggleCommand.giantHP = initBoolean("toggles", "GiantHP", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -481,6 +480,8 @@ public class ConfigHandler { MoveCommand.golemTimerXY[1] = initInt("locations", "golemTimerY", 30); MoveCommand.teammatesInRadiusXY[0] = initInt("locations", "teammatesInRadiusX", 80); MoveCommand.teammatesInRadiusXY[1] = initInt("locations", "teammatesInRadiusY", 100); + MoveCommand.giantHPXY[0] = initInt("locations", "giantHPX", 80); + MoveCommand.giantHPXY[1] = initInt("locations", "giantHPY", 150); // Scales ScaleCommand.coordsScale = initDouble("scales", "coordsScale", 1); @@ -494,6 +495,7 @@ public class ConfigHandler { ScaleCommand.bonzoTimerScale = initDouble("scales", "bonzoTimerScale", 1); ScaleCommand.golemTimerScale = initDouble("scales", "golemTimerScale", 1); ScaleCommand.teammatesInRadiusScale = initDouble("scales", "teammatesInRadiusScale", 1); + ScaleCommand.giantHPScale = initDouble("scales", "giantHPScale", 1); // Colours DankersSkyblockMod.MAIN_COLOUR = initString("colors", "main", EnumChatFormatting.GREEN.toString()); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index b7927c3..d3d6325 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -30,6 +30,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.regex.Matcher; +import java.util.regex.Pattern; public class Utils { @@ -45,6 +46,7 @@ public class Utils { 1065000, 1410000, 1900000, 2500000, 3300000, 4300000, 5600000, 7200000, 9200000, 12000000, 15000000, 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"); public static int getItems(String item) { Minecraft mc = Minecraft.getMinecraft(); @@ -542,5 +544,9 @@ public class Utils { public static boolean isRealPlayer(EntityPlayer player) { return player.getUniqueID().version() == 4 && !player.isPlayerSleeping(); } + + public static String removeBold(String text) { + return boldPattern.matcher(text).replaceAll(""); + } } -- cgit From 1d0cfd9f652990c396d6c58be61797c792fba8a2 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 29 Apr 2021 01:26:03 -0400 Subject: Add hiding pet candy in pet tooltip --- README.md | 3 ++- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 11 +++++++-- src/main/java/me/Danker/features/HidePetCandy.java | 26 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 ++++++ .../java/me/Danker/handlers/ConfigHandler.java | 1 + 7 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/Danker/features/HidePetCandy.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index da48eda..8e0e769 100644 --- a/README.md +++ b/README.md @@ -54,11 +54,12 @@ Discord Server: https://discord.gg/QsEkNQS - Highlight Arachne - Highlight Skeleton Masters - Show teammates in 30 block radius +- Hide pet candy in pet tooltip ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index bf71dda..b3701cb 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -105,6 +105,7 @@ public class DankersSkyblockMod { 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 HideTooltipsInExperiments()); MinecraftForge.EVENT_BUS.register(new HighlightSkeletonMasters()); MinecraftForge.EVENT_BUS.register(new IceWalkSolver()); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 2cc706e..6f548fa 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -94,6 +94,7 @@ public class DankerGuiCommand extends CommandBase { 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"); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index a9fe663..27167b6 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -36,6 +36,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean highlightSkeletonMasters; public static boolean teammatesInRadius; public static boolean giantHP; + public static boolean hidePetCandy; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -96,7 +97,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "startswithterminal/selectallterminal/clickinorderterminal/" + "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + - "gianthp/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; + "gianthp/hidepetcandy/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; } public static String usage(ICommandSender arg0) { @@ -125,7 +126,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "ultrasequencer", "chronomatron", "superpairs", "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", - "teammatesinradius", "gianthp", "list"); + "teammatesinradius", "gianthp", "hidepetcandy", "list"); } return null; } @@ -416,6 +417,11 @@ public class ToggleCommand extends CommandBase implements ICommand { ConfigHandler.writeBooleanConfig("toggles", "GiantHP", giantHP); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Giant HP display has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + giantHP + DankersSkyblockMod.MAIN_COLOUR + ".")); break; + case "hidepetcandy": + hidePetCandy = !hidePetCandy; + ConfigHandler.writeBooleanConfig("toggles", "HidePetCandy", hidePetCandy); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Hide pet candy has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + hidePetCandy + DankersSkyblockMod.MAIN_COLOUR + ".")); + break; case "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; CustomMusic.dungeonboss.stop(); @@ -482,6 +488,7 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Highlight Skeleton Masters: " + DankersSkyblockMod.VALUE_COLOUR + highlightSkeletonMasters + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Teammates in radius: " + DankersSkyblockMod.VALUE_COLOUR + teammatesInRadius + "\n" + 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 + " 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 diff --git a/src/main/java/me/Danker/features/HidePetCandy.java b/src/main/java/me/Danker/features/HidePetCandy.java new file mode 100644 index 0000000..8ef28d2 --- /dev/null +++ b/src/main/java/me/Danker/features/HidePetCandy.java @@ -0,0 +1,26 @@ +package me.Danker.features; + +import me.Danker.commands.ToggleCommand; +import me.Danker.utils.Utils; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +public class HidePetCandy { + + @SubscribeEvent + public void onTooltip(ItemTooltipEvent event) { + if (!Utils.inSkyblock) return; + if (event.toolTip == null) return; + + if (ToggleCommand.hidePetCandy) { + for (int i = 0; i < event.toolTip.size(); i++) { + if (event.toolTip.get(i).endsWith("Pet Candy Used")) { + event.toolTip.remove(i); + event.toolTip.remove(i); + break; + } + } + } + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index cc33514..16e0640 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -65,6 +65,7 @@ public class DankerGui extends GuiScreen { private GuiButton highlightSkeletonMasters; private GuiButton teammatesInRadius; private GuiButton giantHP; + private GuiButton hidePetCandy; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -151,6 +152,7 @@ public class DankerGui extends GuiScreen { highlightSkeletonMasters = new FeatureButton("Highlight Skeleton Masters: " + Utils.getColouredBoolean(ToggleCommand.highlightSkeletonMasters), "Highlights Skeleton Masters."); teammatesInRadius = new FeatureButton("Display Players in 30 Block Radius: " + Utils.getColouredBoolean(ToggleCommand.teammatesInRadius), "Displays dungeon teammates in 30 block radius for tether and diversion."); 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."); allButtons.clear(); allButtons.add(changeDisplay); @@ -195,6 +197,7 @@ public class DankerGui extends GuiScreen { allButtons.add(highlightSkeletonMasters); allButtons.add(teammatesInRadius); allButtons.add(giantHP); + allButtons.add(hidePetCandy); search.setText(initSearchText); search.setVisible(true); @@ -433,6 +436,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.giantHP = !ToggleCommand.giantHP; ConfigHandler.writeBooleanConfig("toggles", "GiantHP", ToggleCommand.giantHP); giantHP.displayString = "Display Giant HP: " + Utils.getColouredBoolean(ToggleCommand.giantHP); + } else if (button == hidePetCandy) { + ToggleCommand.hidePetCandy = !ToggleCommand.hidePetCandy; + ConfigHandler.writeBooleanConfig("toggles", "HidePetCandy", ToggleCommand.hidePetCandy); + hidePetCandy.displayString = "Hide Pet Candy: " + Utils.getColouredBoolean(ToggleCommand.hidePetCandy); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 810def2..db33cb2 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -213,6 +213,7 @@ public class ConfigHandler { ToggleCommand.highlightSkeletonMasters = initBoolean("toggles", "HighlightSkeletonMasters", false); 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); -- cgit From 4e6be104aaa579abc06fff0613eb2dec991a7487 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 29 Apr 2021 21:44:00 -0400 Subject: Auto update trivia and three man solutions --- src/main/java/me/Danker/DankersSkyblockMod.java | 8 ++ .../features/puzzlesolvers/ThreeManSolver.java | 71 ++++++++++------ .../features/puzzlesolvers/TriviaSolver.java | 99 ++++++++++++++++------ src/main/java/me/Danker/gui/EditLocationsGui.java | 3 - 4 files changed, 127 insertions(+), 54 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index b3701cb..f176bbe 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -1,5 +1,6 @@ package me.Danker; +import com.google.gson.JsonObject; import me.Danker.commands.*; import me.Danker.events.ChestSlotClickedEvent; import me.Danker.events.GuiChestBackgroundDrawnEvent; @@ -9,6 +10,7 @@ import me.Danker.features.loot.LootDisplay; import me.Danker.features.loot.LootTracker; 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.Utils; @@ -74,6 +76,7 @@ public class DankersSkyblockMod { public static String guiToOpen = null; public static boolean firstLaunch = false; public static String configDirectory; + public static JsonObject data = null; public static String MAIN_COLOUR; public static String SECONDARY_COLOUR; @@ -149,6 +152,11 @@ public class DankersSkyblockMod { for (KeyBinding keyBinding : keyBindings) { 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(); } @EventHandler diff --git a/src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java index 8f7de95..500c8eb 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/ThreeManSolver.java @@ -1,5 +1,6 @@ package me.Danker.features.puzzlesolvers; +import com.google.gson.JsonArray; import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; import me.Danker.utils.Utils; @@ -16,6 +17,7 @@ import java.util.List; public class ThreeManSolver { + // Hard coded solutions if api call fails static String[] riddleSolutions = {"The reward is not in my chest!", "At least one of them is lying, and the reward is not in", "My chest doesn't have the reward. We are all telling the truth", "My chest has the reward and I'm telling the truth", "The reward isn't in any of our chests", "Both of them are telling the truth."}; @@ -33,33 +35,22 @@ public class ThreeManSolver { if (!Utils.inDungeons) return; if (ToggleCommand.threeManToggled && message.contains("[NPC]")) { - for (String solution : riddleSolutions) { - if (message.contains(solution)) { - Minecraft mc = Minecraft.getMinecraft(); - String npcName = message.substring(message.indexOf("]") + 2, message.indexOf(":")); - mc.thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.ANSWER_COLOUR + EnumChatFormatting.BOLD + StringUtils.stripControlCodes(npcName) + DankersSkyblockMod.MAIN_COLOUR + " has the blessing.")); - if (riddleChest == null) { - List entities = mc.theWorld.getLoadedEntityList(); - for (Entity entity : entities) { - if (entity == null || !entity.hasCustomName()) continue; - if (entity.getCustomNameTag().contains(npcName)) { - BlockPos npcLocation = new BlockPos(entity.posX, 69, entity.posZ); - if (mc.theWorld.getBlockState(npcLocation.north()).getBlock() == Blocks.chest) { - riddleChest = npcLocation.north(); - } else if (mc.theWorld.getBlockState(npcLocation.east()).getBlock() == Blocks.chest) { - riddleChest = npcLocation.east(); - } else if (mc.theWorld.getBlockState(npcLocation.south()).getBlock() == Blocks.chest) { - riddleChest = npcLocation.south(); - } else if (mc.theWorld.getBlockState(npcLocation.west()).getBlock() == Blocks.chest) { - riddleChest = npcLocation.west(); - } else { - System.out.print("Could not find correct riddle chest."); - } - break; - } - } + if (DankersSkyblockMod.data != null && DankersSkyblockMod.data.has("threeman")) { + JsonArray riddleSolutions = DankersSkyblockMod.data.get("threeman").getAsJsonArray(); + + for (int i = 0; i < riddleSolutions.size(); i++) { + String solution = riddleSolutions.get(i).getAsString(); + if (message.contains(solution)) { + answer(message); + break; + } + } + } else { + for (String solution : riddleSolutions) { + if (message.contains(solution)) { + answer(message); + break; } - break; } } } @@ -72,4 +63,32 @@ public class ThreeManSolver { } } + public static void answer(String message) { + Minecraft mc = Minecraft.getMinecraft(); + String npcName = message.substring(message.indexOf("]") + 2, message.indexOf(":")); + mc.thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.ANSWER_COLOUR + EnumChatFormatting.BOLD + StringUtils.stripControlCodes(npcName) + DankersSkyblockMod.MAIN_COLOUR + " has the blessing.")); + + if (riddleChest == null) { + List entities = mc.theWorld.getLoadedEntityList(); + for (Entity entity : entities) { + if (entity == null || !entity.hasCustomName()) continue; + if (entity.getCustomNameTag().contains(npcName)) { + BlockPos npcLocation = new BlockPos(entity.posX, 69, entity.posZ); + if (mc.theWorld.getBlockState(npcLocation.north()).getBlock() == Blocks.chest) { + riddleChest = npcLocation.north(); + } else if (mc.theWorld.getBlockState(npcLocation.east()).getBlock() == Blocks.chest) { + riddleChest = npcLocation.east(); + } else if (mc.theWorld.getBlockState(npcLocation.south()).getBlock() == Blocks.chest) { + riddleChest = npcLocation.south(); + } else if (mc.theWorld.getBlockState(npcLocation.west()).getBlock() == Blocks.chest) { + riddleChest = npcLocation.west(); + } else { + System.out.print("Could not find correct riddle chest."); + } + break; + } + } + } + } + } diff --git a/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java index 9adc555..dd2c23e 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java @@ -1,5 +1,9 @@ package me.Danker.features.puzzlesolvers; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; import me.Danker.utils.Utils; import net.minecraft.util.ChatComponentText; @@ -9,16 +13,21 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public class TriviaSolver { static Map triviaSolutions = new HashMap<>(); static String[] triviaAnswers = null; + static JsonArray triviaAnswersJson = null; public static String TRIVIA_WRONG_ANSWER_COLOUR; public static void init() { + // Hard coded solutions if api call fails triviaSolutions.put("What is the status of The Watcher?", new String[]{"Stalker"}); triviaSolutions.put("What is the status of Bonzo?", new String[]{"New Necromancer"}); triviaSolutions.put("What is the status of Scarf?", new String[]{"Apprentice Necromancer"}); @@ -30,11 +39,10 @@ public class TriviaSolver { triviaSolutions.put("What is the status of Goldor?", new String[]{"Wither Soldier"}); triviaSolutions.put("What is the status of Storm?", new String[]{"Elementalist"}); triviaSolutions.put("What is the status of Necron?", new String[]{"Wither Lord"}); - triviaSolutions.put("How many total Fairy Souls are there?", new String[]{"222 Fairy Souls"}); + triviaSolutions.put("How many total Fairy Souls are there?", new String[]{"227 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in Spider's Den?", new String[]{"19 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in The End?", new String[]{"12 Fairy Souls"}); - triviaSolutions.put("How many Fairy Souls are there in The Barn?", new String[]{"7 Fairy Souls"}); - triviaSolutions.put("How many Fairy Souls are there in Mushroom Desert?", new String[]{"8 Fairy Souls"}); + triviaSolutions.put("How many Fairy Souls are there in The Farming Islands?", new String[]{"20 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in Blazing Fortress?", new String[]{"19 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in The Park?", new String[]{"11 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in Jerry's Workshop?", new String[]{"5 Fairy Souls"}); @@ -65,35 +73,76 @@ public class TriviaSolver { if (event.type == 2) return; if (ToggleCommand.oruoToggled) { - if (message.contains("What SkyBlock year is it?")) { - double currentTime = System.currentTimeMillis() /1000L; + if (DankersSkyblockMod.data != null && DankersSkyblockMod.data.has("trivia")) { + if (message.contains("What SkyBlock year is it?")) { + double currentTime = System.currentTimeMillis() / 1000L; - double diff = Math.floor(currentTime - 1560276000); + double diff = Math.floor(currentTime - 1560276000); - int year = (int) (diff / 446400 + 1); - triviaAnswers = new String[]{"Year " + year}; - } else { - for (String question : triviaSolutions.keySet()) { - if (message.contains(question)) { - triviaAnswers = triviaSolutions.get(question); - break; + int year = (int) (diff / 446400 + 1); + triviaAnswersJson = new JsonArray(); + triviaAnswersJson.add(new JsonPrimitive("Year " + year)); + } else { + JsonObject triviaSolutions = DankersSkyblockMod.data.get("trivia").getAsJsonObject(); + + List triviaSolutionsList = triviaSolutions.entrySet().stream() + .map(Map.Entry::getKey) + .collect(Collectors.toCollection(ArrayList::new)); + for (String question : triviaSolutionsList) { + if (message.contains(question)) { + triviaAnswersJson = triviaSolutions.get(question).getAsJsonArray(); + break; + } } } - } - // Set wrong answers to red and remove click events - if (triviaAnswers != null && (message.contains("ⓐ") || message.contains("ⓑ") || message.contains("ⓒ"))) { - boolean isSolution = false; - for (String solution : triviaAnswers) { - if (message.contains(solution)) { - isSolution = true; - break; + // Set wrong answers to red and remove click events + if (triviaAnswersJson != null && (message.contains("ⓐ") || message.contains("ⓑ") || message.contains("ⓒ"))) { + boolean isSolution = false; + for (int i = 0; i < triviaAnswersJson.size(); i++) { + String solution = triviaAnswersJson.get(i).getAsString(); + if (message.contains(solution)) { + isSolution = true; + break; + } + } + if (!isSolution) { + char letter = message.charAt(5); + String option = message.substring(6); + event.message = new ChatComponentText(" " + EnumChatFormatting.GOLD + letter + TRIVIA_WRONG_ANSWER_COLOUR + option); + } + } + } else { + if (message.contains("What SkyBlock year is it?")) { + double currentTime = System.currentTimeMillis() / 1000L; + + double diff = Math.floor(currentTime - 1560276000); + + int year = (int) (diff / 446400 + 1); + triviaAnswers = new String[]{"Year " + year}; + } else { + for (String question : triviaSolutions.keySet()) { + if (message.contains(question)) { + triviaAnswers = triviaSolutions.get(question); + break; + } } } - if (!isSolution) { - char letter = message.charAt(5); - String option = message.substring(6); - event.message = new ChatComponentText(" " + EnumChatFormatting.GOLD + letter + TRIVIA_WRONG_ANSWER_COLOUR + option); + + // Set wrong answers to red and remove click events + if (triviaAnswers != null && (message.contains("ⓐ") || message.contains("ⓑ") || message.contains("ⓒ"))) { + boolean isSolution = false; + for (String solution : triviaAnswers) { + if (message.contains(solution)) { + isSolution = true; + break; + } + } + if (!isSolution) { + char letter = message.charAt(5); + String option = message.substring(6); + event.message = new ChatComponentText(" " + EnumChatFormatting.GOLD + letter + TRIVIA_WRONG_ANSWER_COLOUR + option); + } } } } diff --git a/src/main/java/me/Danker/gui/EditLocationsGui.java b/src/main/java/me/Danker/gui/EditLocationsGui.java index 2c8b336..fed6ee9 100644 --- a/src/main/java/me/Danker/gui/EditLocationsGui.java +++ b/src/main/java/me/Danker/gui/EditLocationsGui.java @@ -1,6 +1,5 @@ package me.Danker.gui; -import javafx.scene.transform.Scale; import me.Danker.DankersSkyblockMod; import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; @@ -14,8 +13,6 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.EnumChatFormatting; import org.lwjgl.opengl.GL11; -import javax.xml.stream.Location; - public class EditLocationsGui extends GuiScreen { private String moving = null; -- cgit From efa2c0dd2c1500edff663a2efd0b1d1ea902ce34 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sun, 2 May 2021 20:24:51 -0400 Subject: Add custom name colours --- README.md | 5 +- build.gradle | 2 +- src/main/java/me/Danker/DankersSkyblockMod.java | 10 ++- .../java/me/Danker/commands/DankerGuiCommand.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 12 +++- .../java/me/Danker/features/ColouredNames.java | 78 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 ++ .../java/me/Danker/handlers/ConfigHandler.java | 1 + 8 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 src/main/java/me/Danker/features/ColouredNames.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 8e0e769..fbda774 100644 --- a/README.md +++ b/README.md @@ -55,11 +55,12 @@ Discord Server: https://discord.gg/QsEkNQS - Highlight Skeleton Masters - Show teammates in 30 block radius - Hide pet candy in pet tooltip +- Custom name colors ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. @@ -112,3 +113,5 @@ Software | License [SkyblockAddons](https://github.com/BiscuitDevelopment/SkyblockAddons/) | [MIT License](https://github.com/BiscuitDevelopment/SkyblockAddons/blob/master/LICENSE) [Zealot Counter](https://github.com/symt/zealot-counter/) | [Apache License](https://github.com/symt/zealot-counter/blob/master/LICENSE.md) [NotEnoughUpdates](https://github.com/Moulberry/NotEnoughUpdates/) | [Creative Commons Public License](https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE) +[HyChat](https://github.com/Moulberry/Hychat) | [Creative Commons Public License](https://github.com/Moulberry/Hychat/blob/master/LICENSE) +[SkyblockCatia](https://github.com/SteveKunG/SkyBlockcatia) | [MIT License](https://github.com/SteveKunG/SkyBlockcatia/blob/1.8.9/LICENSE.md) diff --git a/build.gradle b/build.gradle index d87c2a7..38434de 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ plugins { id "net.minecraftforge.gradle.forge" version "2.0.2" } */ -version = "1.8.7-beta1" +version = "1.8.7-beta2" group= "me.Danker.DankersSkyblockMod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "Danker's Skyblock Mod" diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index f176bbe..d2b8017 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -58,13 +58,15 @@ import org.lwjgl.input.Mouse; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @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-beta2"; public static int titleTimer = -1; public static boolean showTitle = false; public static String titleText = ""; @@ -99,6 +101,7 @@ public class DankersSkyblockMod { 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 CustomMusic()); MinecraftForge.EVENT_BUS.register(new DungeonTimer()); @@ -154,8 +157,11 @@ public class DankersSkyblockMod { } new Thread(() -> { - DankersSkyblockMod.data = APIHandler.getResponse("https://raw.githubusercontent.com/bowser0000/SkyblockMod-REPO/main/data.json"); + 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"))); + ColouredNames.users = data.get("colourednames").getAsJsonObject().entrySet().stream() + .map(Map.Entry::getKey) + .collect(Collectors.toCollection(ArrayList::new)); }).start(); } diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 6f548fa..a92cb80 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -95,6 +95,7 @@ public class DankerGuiCommand extends CommandBase { 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("[customcolourednames][").append(ToggleCommand.customColouredNames).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"); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 27167b6..1f2fe5c 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -37,6 +37,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean teammatesInRadius; public static boolean giantHP; public static boolean hidePetCandy; + public static boolean customColouredNames; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -97,7 +98,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "startswithterminal/selectallterminal/clickinorderterminal/" + "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + - "gianthp/hidepetcandy/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; + "gianthp/hidepetcandy/customcolorednames/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; } public static String usage(ICommandSender arg0) { @@ -126,7 +127,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "ultrasequencer", "chronomatron", "superpairs", "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", - "teammatesinradius", "gianthp", "hidepetcandy", "list"); + "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "list"); } return null; } @@ -422,6 +423,12 @@ public class ToggleCommand extends CommandBase implements ICommand { ConfigHandler.writeBooleanConfig("toggles", "HidePetCandy", hidePetCandy); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Hide pet candy has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + hidePetCandy + DankersSkyblockMod.MAIN_COLOUR + ".")); break; + 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 "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; CustomMusic.dungeonboss.stop(); @@ -489,6 +496,7 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Teammates in radius: " + DankersSkyblockMod.VALUE_COLOUR + teammatesInRadius + "\n" + 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 + " Custom name colors: " + DankersSkyblockMod.VALUE_COLOUR + customColouredNames + "\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 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..eec2d5c --- /dev/null +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -0,0 +1,78 @@ +package me.Danker.features; + +import me.Danker.DankersSkyblockMod; +import me.Danker.commands.ToggleCommand; +import me.Danker.utils.Utils; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ColouredNames { + + public static List users = new ArrayList<>(); + + @SubscribeEvent + public void onChat(ClientChatReceivedEvent event) { + if (!ToggleCommand.customColouredNames || !Utils.inSkyblock || event.type != 0) return; + long startTime = System.currentTimeMillis(); + + for (String user : users) { + if (event.message.getFormattedText().contains(user)) { + event.message = replaceChat(event.message, user); + } + } + System.out.println("Chat time: " + ((System.currentTimeMillis() - startTime) / 1000D) + "s"); + } + + @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))); + } + } + } + } + + // 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("(?:.*(?:(?\\u00a7[0-9a-fbr])" + name + ")\\b.*)").matcher(text); + + if (prevColourMat.matches()) { + return text.replaceAll(namePattern, colour + name + prevColourMat.group("colour")); + } + 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) { + return "§" + DankersSkyblockMod.data.get("colourednames").getAsJsonObject().get(name).getAsString(); + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 16e0640..ce795f3 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -66,6 +66,7 @@ public class DankerGui extends GuiScreen { private GuiButton teammatesInRadius; private GuiButton giantHP; private GuiButton hidePetCandy; + private GuiButton customColouredNames; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -153,6 +154,7 @@ public class DankerGui extends GuiScreen { teammatesInRadius = new FeatureButton("Display Players in 30 Block Radius: " + Utils.getColouredBoolean(ToggleCommand.teammatesInRadius), "Displays dungeon teammates in 30 block radius for tether and diversion."); 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."); + customColouredNames = new FeatureButton("Custom Name Colors: " + Utils.getColouredBoolean(ToggleCommand.customColouredNames), "Replaces some player's usernames with a custom color."); allButtons.clear(); allButtons.add(changeDisplay); @@ -198,6 +200,7 @@ public class DankerGui extends GuiScreen { allButtons.add(teammatesInRadius); allButtons.add(giantHP); allButtons.add(hidePetCandy); + allButtons.add(customColouredNames); search.setText(initSearchText); search.setVisible(true); @@ -440,6 +443,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.hidePetCandy = !ToggleCommand.hidePetCandy; ConfigHandler.writeBooleanConfig("toggles", "HidePetCandy", ToggleCommand.hidePetCandy); hidePetCandy.displayString = "Hide Pet Candy: " + Utils.getColouredBoolean(ToggleCommand.hidePetCandy); + } else if (button == customColouredNames) { + ToggleCommand.customColouredNames = !ToggleCommand.customColouredNames; + ConfigHandler.writeBooleanConfig("toggles", "CustomColouredNames", ToggleCommand.customColouredNames); + customColouredNames.displayString = "Custom Name Colors: " + Utils.getColouredBoolean(ToggleCommand.customColouredNames); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index db33cb2..6d32f99 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -214,6 +214,7 @@ public class ConfigHandler { ToggleCommand.teammatesInRadius = initBoolean("toggles", "TeammatesInRadius", false); ToggleCommand.giantHP = initBoolean("toggles", "GiantHP", false); ToggleCommand.hidePetCandy = initBoolean("toggles", "HidePetCandy", false); + ToggleCommand.customColouredNames = initBoolean("toggles", "CustomColouredNames", true); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); -- cgit From bcf86f8f76994cd31cd8ebecde855c4cfc5fd773 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 8 May 2021 23:55:28 -0400 Subject: Add option to hides lines in creeper solver --- README.md | 2 +- .../java/me/Danker/commands/DankerGuiCommand.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 11 ++++++++-- .../features/puzzlesolvers/CreeperSolver.java | 3 ++- src/main/java/me/Danker/gui/PuzzleSolversGui.java | 25 ++++++++++++++-------- .../java/me/Danker/handlers/ConfigHandler.java | 1 + 6 files changed, 30 insertions(+), 13 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 1c67f66..d737522 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Discord Server: https://discord.gg/QsEkNQS ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index a92cb80..edec93f 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -74,6 +74,7 @@ public class DankerGuiCommand extends CommandBase { 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("[creeperlines][").append(ToggleCommand.creeperLinesToggled).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"); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 1f2fe5c..11b15f3 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -61,6 +61,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; @@ -94,7 +95,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "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/" + + "creeperpuzzle/creeperlines/waterpuzzle/tictactoepuzzle/boulderpuzzle/silverfishpuzzle/icewalkpuzzle/watchermessage/" + "startswithterminal/selectallterminal/clickinorderterminal/" + "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + @@ -121,7 +122,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "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", @@ -318,6 +319,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); @@ -476,6 +482,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" + diff --git a/src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java index cd6bcf4..eb9e268 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/CreeperSolver.java @@ -81,7 +81,8 @@ 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); + + if (ToggleCommand.creeperLinesToggled) 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); } diff --git a/src/main/java/me/Danker/gui/PuzzleSolversGui.java b/src/main/java/me/Danker/gui/PuzzleSolversGui.java index 70cd982..f671f33 100644 --- a/src/main/java/me/Danker/gui/PuzzleSolversGui.java +++ b/src/main/java/me/Danker/gui/PuzzleSolversGui.java @@ -20,6 +20,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; @@ -55,15 +56,16 @@ 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)); switch (page) { case 1: @@ -71,12 +73,13 @@ public class PuzzleSolversGui extends GuiScreen { 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); @@ -118,6 +121,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); diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 6d32f99..250c1f2 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -239,6 +239,7 @@ public class ConfigHandler { 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); -- cgit From 9e5039be5c1f874a6622301daca2b6780dec02ca Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 17 Jun 2021 00:07:21 -0400 Subject: Add enderman slayer tracker Also add support for counting 20% drops in chat and tier 5 rev dropping viscera --- README.md | 6 +- .../java/me/Danker/commands/DisplayCommand.java | 11 +- src/main/java/me/Danker/commands/LootCommand.java | 92 ++++++++- .../java/me/Danker/commands/ResetLootCommand.java | 36 +++- src/main/java/me/Danker/features/AutoDisplay.java | 3 + .../java/me/Danker/features/loot/LootDisplay.java | 124 ++++++++++++ .../java/me/Danker/features/loot/LootTracker.java | 215 ++++++++++++++++++--- src/main/java/me/Danker/gui/DisplayGui.java | 11 +- .../java/me/Danker/handlers/ConfigHandler.java | 24 +++ 9 files changed, 485 insertions(+), 37 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index d737522..f6a4814 100644 --- a/README.md +++ b/README.md @@ -63,9 +63,9 @@ Discord Server: https://discord.gg/QsEkNQS - /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. -- /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. -- /display [winter/festival/spooky/f(1-7)/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. -- /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. +- /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. +- /display [winter/festival/spooky/f(1-7)/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. +- /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. - /move - Moves text display to specified X and Y coordinates. - /scale - Scales text display to a specified multipler between 0.1x and 10x. - /slayer [player] - Uses API to get slayer xp of a person. If no name is provided, it checks yours. diff --git a/src/main/java/me/Danker/commands/DisplayCommand.java b/src/main/java/me/Danker/commands/DisplayCommand.java index 990e9d1..e248888 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() + " [winter/festival/spooky/session/f(1-7)]"; + return "/" + getCommandName() + " [winter/festival/spooky/session/f(1-7)]"; } public static String usage(ICommandSender arg0) { @@ -36,7 +36,7 @@ public class DisplayCommand extends CommandBase { @Override public List 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", "fishing", "catacombs", "mythological", "ghost", "auto", "off"); } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "session"); } else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) { @@ -82,6 +82,13 @@ public class DisplayCommand extends CommandBase { LootDisplay.display = "zombie"; } break; + case "enderman": + if (showSession) { + LootDisplay.display = "enderman_session"; + } else { + LootDisplay.display = "enderman"; + } + break; case "fishing": if (arg1.length > 1) { switch (arg1[1].toLowerCase()) { diff --git a/src/main/java/me/Danker/commands/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java index 51347a3..d0b4272 100644 --- a/src/main/java/me/Danker/commands/LootCommand.java +++ b/src/main/java/me/Danker/commands/LootCommand.java @@ -24,7 +24,7 @@ public class LootCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [winter/festival/spooky/f(1-7)/session]"; + return "/" + getCommandName() + " [winter/festival/spooky/f(1-7)/session]"; } public static String usage(ICommandSender arg0) { @@ -39,7 +39,7 @@ public class LootCommand extends CommandBase { @Override public List 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", "fishing", "catacombs", "mythological"); } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "session"); } else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) { @@ -223,6 +223,7 @@ public class LootCommand extends CommandBase { 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.GREEN + " Revenant Viscera: " + nf.format(LootTracker.zombieRevVisceraSession) + "\n" + EnumChatFormatting.BLUE + " Foul Flesh: " + drop20 + "\n" + EnumChatFormatting.DARK_GREEN + " Pestilence Runes: " +LootTracker.zombiePestilencesSession + "\n" + EnumChatFormatting.WHITE + " Smite VI Books: " + LootTracker.zombieBooksSession + "\n" + @@ -259,6 +260,7 @@ public class LootCommand extends CommandBase { 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.GREEN + " Revenant Viscera: " + nf.format(LootTracker.zombieRevViscera) + "\n" + EnumChatFormatting.BLUE + " Foul Flesh: " + drop20 + "\n" + EnumChatFormatting.DARK_GREEN + " Pestilence Runes: " + LootTracker.zombiePestilences + "\n" + EnumChatFormatting.WHITE + " Smite VI Books: " + LootTracker.zombieBooks + "\n" + @@ -273,6 +275,92 @@ public class LootCommand extends CommandBase { EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" + EnumChatFormatting.GREEN + EnumChatFormatting.BOLD + " -------------------")); break; + case "enderman": + if (showSession) { + if (LootTracker.endermanTimeSession == -1) { + timeBetween = "Never"; + } else { + timeBetween = Utils.getTimeBetween(LootTracker.endermanTimeSession, timeNow); + } + if (LootTracker.endermanBossesSession == -1) { + bossesBetween = "Never"; + } else { + bossesBetween = nf.format(LootTracker.endermanBossesSession); + } + if (ToggleCommand.slayerCountTotal) { + drop20 = nf.format(LootTracker.endermanTAPSession); + } else { + drop20 = nf.format(LootTracker.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(LootTracker.endermanVoidgloomsSession) + "\n" + + EnumChatFormatting.DARK_GRAY + " Null Spheres: " + nf.format(LootTracker.endermanNullSpheresSession) + "\n" + + EnumChatFormatting.DARK_PURPLE + " Arrow Poison: " + drop20 + "\n" + + EnumChatFormatting.LIGHT_PURPLE + " Endersnake Runes: " + LootTracker.endermanEndersnakesSession + "\n" + + EnumChatFormatting.DARK_GREEN + " Summoning Eyes: " + LootTracker.endermanSummoningEyesSession + "\n" + + EnumChatFormatting.AQUA + " Mana Steal Books: " + LootTracker.endermanManaBooksSession + "\n" + + EnumChatFormatting.BLUE + " Transmission Tuners: " + LootTracker.endermanTunersSession + "\n" + + EnumChatFormatting.YELLOW + " Null Atoms: " + LootTracker.endermanAtomsSession + "\n" + + EnumChatFormatting.AQUA + " Espresso Machines: " + LootTracker.endermanEspressoMachinesSession + "\n" + + EnumChatFormatting.WHITE + " Smarty Pants Books: " + LootTracker.endermanSmartyBooksSession + "\n" + + EnumChatFormatting.LIGHT_PURPLE + " End Runes: " + LootTracker.endermanEndRunesSession + "\n" + + EnumChatFormatting.RED + " Blood Chalices: " + LootTracker.endermanChalicesSession + "\n" + + EnumChatFormatting.RED + " Sinful Dice: " + LootTracker.endermanDiceSession + "\n" + + EnumChatFormatting.DARK_PURPLE + " Artifact Upgrader: " + LootTracker.endermanArtifactsSession + "\n" + + EnumChatFormatting.DARK_PURPLE + " Enderman Skins: " + LootTracker.endermanSkinsSession + "\n" + + EnumChatFormatting.GRAY + " Enchant Runes: " + LootTracker.endermanEnchantRunesSession + "\n" + + EnumChatFormatting.GOLD + " Etherwarp Mergers: " + LootTracker.endermanMergersSession + "\n" + + EnumChatFormatting.GOLD + " Judgement Cores: " + LootTracker.endermanCoresSession + "\n" + + EnumChatFormatting.RED + " Ender Slayer VII Books: " + LootTracker.endermanEnderBooksSession + "\n" + + EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" + + EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" + + EnumChatFormatting.DARK_PURPLE + EnumChatFormatting.BOLD + " -------------------")); + return; + } + + if (LootTracker.endermanTime == -1) { + timeBetween = "Never"; + } else { + timeBetween = Utils.getTimeBetween(LootTracker.endermanTime, timeNow); + } + if (LootTracker.endermanBosses == -1) { + bossesBetween = "Never"; + } else { + bossesBetween = nf.format(LootTracker.endermanBosses); + } + if (ToggleCommand.slayerCountTotal) { + drop20 = nf.format(LootTracker.endermanTAP); + } else { + drop20 = nf.format(LootTracker.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(LootTracker.endermanVoidglooms) + "\n" + + EnumChatFormatting.DARK_GRAY + " Null Spheres: " + nf.format(LootTracker.endermanNullSpheres) + "\n" + + EnumChatFormatting.DARK_PURPLE + " Arrow Poison: " + drop20 + "\n" + + EnumChatFormatting.LIGHT_PURPLE + " Endersnake Runes: " + LootTracker.endermanEndersnakes + "\n" + + EnumChatFormatting.DARK_GREEN + " Summoning Eyes: " + LootTracker.endermanSummoningEyes + "\n" + + EnumChatFormatting.AQUA + " Mana Steal Books: " + LootTracker.endermanManaBooks + "\n" + + EnumChatFormatting.BLUE + " Transmission Tuners: " + LootTracker.endermanTuners + "\n" + + EnumChatFormatting.YELLOW + " Null Atoms: " + LootTracker.endermanAtoms + "\n" + + EnumChatFormatting.AQUA + " Espresso Machines: " + LootTracker.endermanEspressoMachines + "\n" + + EnumChatFormatting.WHITE + " Smarty Pants Books: " + LootTracker.endermanSmartyBooks + "\n" + + EnumChatFormatting.LIGHT_PURPLE + " End Runes: " + LootTracker.endermanEndRunes + "\n" + + EnumChatFormatting.RED + " Blood Chalices: " + LootTracker.endermanChalices + "\n" + + EnumChatFormatting.RED + " Sinful Dice: " + LootTracker.endermanDice + "\n" + + EnumChatFormatting.DARK_PURPLE + " Artifact Upgrader: " + LootTracker.endermanArtifacts + "\n" + + EnumChatFormatting.DARK_PURPLE + " Enderman Skins: " + LootTracker.endermanSkins + "\n" + + EnumChatFormatting.GRAY + " Enchant Runes: " + LootTracker.endermanEnchantRunes + "\n" + + EnumChatFormatting.GOLD + " Etherwarp Mergers: " + LootTracker.endermanMergers + "\n" + + EnumChatFormatting.GOLD + " Judgement Cores: " + LootTracker.endermanCores + "\n" + + EnumChatFormatting.RED + " Ender Slayer VII Books: " + LootTracker.endermanEnderBooks + "\n" + + EnumChatFormatting.AQUA + " Time Since RNG: " + timeBetween + "\n" + + EnumChatFormatting.AQUA + " Bosses Since RNG: " + bossesBetween + "\n" + + EnumChatFormatting.DARK_PURPLE + EnumChatFormatting.BOLD + " -------------------")); + break; case "fishing": if (arg1.length > 1) { if (arg1[1].equalsIgnoreCase("winter")) { diff --git a/src/main/java/me/Danker/commands/ResetLootCommand.java b/src/main/java/me/Danker/commands/ResetLootCommand.java index eac4c88..e13b1a5 100644 --- a/src/main/java/me/Danker/commands/ResetLootCommand.java +++ b/src/main/java/me/Danker/commands/ResetLootCommand.java @@ -25,7 +25,7 @@ public class ResetLootCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + ""; + return "/" + getCommandName() + ""; } 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", "fishing", "mythological", "catacombs"); } } @@ -72,6 +72,9 @@ public class ResetLootCommand extends CommandBase { case "wolf": resetWolf(); break; + case "enderman": + resetEnderman(); + break; case "fishing": resetFishing(); break; @@ -98,6 +101,7 @@ public class ResetLootCommand extends CommandBase { case "zombie": case "spider": case "wolf": + case "enderman": case "fishing": case "mythological": case "catacombs": @@ -120,6 +124,7 @@ public class ResetLootCommand extends CommandBase { static void resetZombie() { LootTracker.zombieRevsSession = 0; LootTracker.zombieRevFleshSession = 0; + LootTracker.zombieRevVisceraSession = 0; LootTracker.zombieFoulFleshSession = 0; LootTracker.zombieFoulFleshDropsSession = 0; LootTracker.zombiePestilencesSession = 0; @@ -168,6 +173,33 @@ public class ResetLootCommand extends CommandBase { ConfigHandler.deleteCategory("wolf"); ConfigHandler.reloadConfig(); } + + static void resetEnderman() { + LootTracker.endermanVoidgloomsSession = 0; + LootTracker.endermanNullSpheresSession = 0; + LootTracker.endermanTAPSession = 0; + LootTracker.endermanTAPDropsSession = 0; + LootTracker.endermanEndersnakesSession = 0; + LootTracker.endermanSummoningEyesSession = 0; + LootTracker.endermanManaBooksSession = 0; + LootTracker.endermanTunersSession = 0; + LootTracker.endermanAtomsSession = 0; + LootTracker.endermanEspressoMachinesSession = 0; + LootTracker.endermanSmartyBooksSession = 0; + LootTracker.endermanEndRunesSession = 0; + LootTracker.endermanChalicesSession = 0; + LootTracker.endermanDiceSession = 0; + LootTracker.endermanArtifactsSession = 0; + LootTracker.endermanSkinsSession = 0; + LootTracker.endermanMergersSession = 0; + LootTracker.endermanCoresSession = 0; + LootTracker.endermanEnchantRunesSession = 0; + LootTracker.endermanEnderBooksSession = 0; + LootTracker.endermanTimeSession = -1; + LootTracker.endermanBossesSession = -1; + ConfigHandler.deleteCategory("enderman"); + ConfigHandler.reloadConfig(); + } static void resetFishing() { LootTracker.seaCreaturesSession = 0; diff --git a/src/main/java/me/Danker/features/AutoDisplay.java b/src/main/java/me/Danker/features/AutoDisplay.java index bead243..89b1750 100644 --- a/src/main/java/me/Danker/features/AutoDisplay.java +++ b/src/main/java/me/Danker/features/AutoDisplay.java @@ -38,6 +38,9 @@ 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("The Mist")){ LootDisplay.display = "ghost"; found = true; diff --git a/src/main/java/me/Danker/features/loot/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java index cd34da7..07a784a 100644 --- a/src/main/java/me/Danker/features/loot/LootDisplay.java +++ b/src/main/java/me/Danker/features/loot/LootDisplay.java @@ -213,6 +213,7 @@ public class LootDisplay { 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" + @@ -227,6 +228,7 @@ public class LootDisplay { EnumChatFormatting.AQUA + "Bosses Since RNG:"; countText = EnumChatFormatting.GOLD + nf.format(LootTracker.zombieRevs) + "\n" + EnumChatFormatting.GREEN + nf.format(LootTracker.zombieRevFlesh) + "\n" + + EnumChatFormatting.GREEN + nf.format(LootTracker.zombieRevViscera) + "\n" + EnumChatFormatting.BLUE + drop20 + "\n" + EnumChatFormatting.DARK_GREEN + LootTracker.zombiePestilences + "\n" + EnumChatFormatting.WHITE + LootTracker.zombieBooks + "\n" + @@ -259,6 +261,7 @@ public class LootDisplay { 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" + @@ -273,6 +276,7 @@ public class LootDisplay { EnumChatFormatting.AQUA + "Bosses Since RNG:"; countText = EnumChatFormatting.GOLD + nf.format(LootTracker.zombieRevsSession) + "\n" + EnumChatFormatting.GREEN + nf.format(LootTracker.zombieRevFleshSession) + "\n" + + EnumChatFormatting.GREEN + nf.format(LootTracker.zombieRevVisceraSession) + "\n" + EnumChatFormatting.BLUE + drop20 + "\n" + EnumChatFormatting.DARK_GREEN + LootTracker.zombiePestilencesSession + "\n" + EnumChatFormatting.WHITE + LootTracker.zombieBooksSession + "\n" + @@ -286,6 +290,126 @@ public class LootDisplay { EnumChatFormatting.AQUA + timeBetween + "\n" + EnumChatFormatting.AQUA + bossesBetween; break; + case "enderman": + if (LootTracker.endermanTime == -1) { + timeBetween = "Never"; + } else { + timeBetween = Utils.getTimeBetween(LootTracker.endermanTime, timeNow); + } + if (LootTracker.endermanBosses == -1) { + bossesBetween = "Never"; + } else { + bossesBetween = nf.format(LootTracker.endermanBosses); + } + if (ToggleCommand.slayerCountTotal) { + drop20 = nf.format(LootTracker.endermanTAP); + } else { + drop20 = nf.format(LootTracker.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(LootTracker.endermanVoidglooms) + "\n" + + EnumChatFormatting.DARK_GRAY + nf.format(LootTracker.endermanNullSpheres) + "\n" + + EnumChatFormatting.DARK_PURPLE + drop20 + "\n" + + EnumChatFormatting.LIGHT_PURPLE + LootTracker.endermanEndersnakes + "\n" + + EnumChatFormatting.DARK_GREEN + LootTracker.endermanSummoningEyes + "\n" + + EnumChatFormatting.AQUA + LootTracker.endermanManaBooks + "\n" + + EnumChatFormatting.BLUE + LootTracker.endermanTuners + "\n" + + EnumChatFormatting.YELLOW + LootTracker.endermanAtoms + "\n" + + EnumChatFormatting.AQUA + LootTracker.endermanEspressoMachines + "\n" + + EnumChatFormatting.WHITE + LootTracker.endermanSmartyBooks + "\n" + + EnumChatFormatting.LIGHT_PURPLE + LootTracker.endermanEndRunes + "\n" + + EnumChatFormatting.RED + LootTracker.endermanChalices + "\n" + + EnumChatFormatting.RED + LootTracker.endermanDice + "\n" + + EnumChatFormatting.DARK_PURPLE + LootTracker.endermanArtifacts + "\n" + + EnumChatFormatting.DARK_PURPLE + LootTracker.endermanSkins + "\n" + + EnumChatFormatting.GRAY + LootTracker.endermanEnchantRunes + "\n" + + EnumChatFormatting.GOLD + LootTracker.endermanMergers + "\n" + + EnumChatFormatting.GOLD + LootTracker.endermanCores + "\n" + + EnumChatFormatting.RED + LootTracker.endermanEnderBooks + "\n" + + EnumChatFormatting.AQUA + timeBetween + "\n" + + EnumChatFormatting.AQUA + bossesBetween; + break; + case "enderman_session": + if (LootTracker.endermanTimeSession == -1) { + timeBetween = "Never"; + } else { + timeBetween = Utils.getTimeBetween(LootTracker.endermanTimeSession, timeNow); + } + if (LootTracker.endermanBossesSession == -1) { + bossesBetween = "Never"; + } else { + bossesBetween = nf.format(LootTracker.endermanBossesSession); + } + if (ToggleCommand.slayerCountTotal) { + drop20 = nf.format(LootTracker.endermanTAPSession); + } else { + drop20 = nf.format(LootTracker.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(LootTracker.endermanVoidgloomsSession) + "\n" + + EnumChatFormatting.DARK_GRAY + nf.format(LootTracker.endermanNullSpheresSession) + "\n" + + EnumChatFormatting.DARK_PURPLE + drop20 + "\n" + + EnumChatFormatting.LIGHT_PURPLE + LootTracker.endermanEndersnakesSession + "\n" + + EnumChatFormatting.DARK_GREEN + LootTracker.endermanSummoningEyesSession + "\n" + + EnumChatFormatting.AQUA + LootTracker.endermanManaBooksSession + "\n" + + EnumChatFormatting.BLUE + LootTracker.endermanTunersSession + "\n" + + EnumChatFormatting.YELLOW + LootTracker.endermanAtomsSession + "\n" + + EnumChatFormatting.AQUA + LootTracker.endermanEspressoMachinesSession + "\n" + + EnumChatFormatting.WHITE + LootTracker.endermanSmartyBooksSession + "\n" + + EnumChatFormatting.LIGHT_PURPLE + LootTracker.endermanEndRunesSession + "\n" + + EnumChatFormatting.RED + LootTracker.endermanChalicesSession + "\n" + + EnumChatFormatting.RED + LootTracker.endermanDiceSession + "\n" + + EnumChatFormatting.DARK_PURPLE + LootTracker.endermanArtifactsSession + "\n" + + EnumChatFormatting.DARK_PURPLE + LootTracker.endermanSkinsSession + "\n" + + EnumChatFormatting.GRAY + LootTracker.endermanEnchantRunesSession + "\n" + + EnumChatFormatting.GOLD + LootTracker.endermanMergersSession + "\n" + + EnumChatFormatting.GOLD + LootTracker.endermanCoresSession + "\n" + + EnumChatFormatting.RED + LootTracker.endermanEnderBooksSession + "\n" + + EnumChatFormatting.AQUA + timeBetween + "\n" + + EnumChatFormatting.AQUA + bossesBetween; + break; case "fishing": if (LootTracker.empTime == -1) { timeBetween = "Never"; diff --git a/src/main/java/me/Danker/features/loot/LootTracker.java b/src/main/java/me/Danker/features/loot/LootTracker.java index d26c104..58f5a54 100644 --- a/src/main/java/me/Danker/features/loot/LootTracker.java +++ b/src/main/java/me/Danker/features/loot/LootTracker.java @@ -47,6 +47,7 @@ public class LootTracker { // Zombie public static int zombieRevs; public static int zombieRevFlesh; + public static int zombieRevViscera; public static int zombieFoulFlesh; public static int zombieFoulFleshDrops; public static int zombiePestilences; @@ -60,6 +61,29 @@ public class LootTracker { public static int zombieWardenHearts; public static double zombieTime; public static int zombieBosses; + // Enderman + 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; // Fishing public static int seaCreatures; @@ -184,9 +208,7 @@ public class LootTracker { public static int voltas = 0; public static int plasmas = 0; public static int ghostlyBoots = 0; - // public static double ghostsTimeSpent = -1; - - + // public static double ghostsTimeSpent = -1; // Single sessions (No config saves) // Wolf @@ -218,6 +240,7 @@ public class LootTracker { // Zombie 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; @@ -231,6 +254,29 @@ public class LootTracker { public static int zombieWardenHeartsSession = 0; public static double zombieTimeSession = -1; public static int zombieBossesSession = -1; + // Enderman + 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; // Fishing public static int seaCreaturesSession = 0; @@ -355,8 +401,7 @@ public class LootTracker { public static int voltaSession = 0; public static int plasmaSession = 0; public static int ghostlyBootsSession = 0; - // public static double ghostsSecondsSinceStarts = 0; - + // public static double ghostsSecondsSinceStarts = 0; static double checkItemsNow = 0; static double itemsChecked = 0; @@ -365,7 +410,6 @@ public class LootTracker { 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; @@ -373,8 +417,7 @@ public class LootTracker { boolean wolfRNG = false; boolean spiderRNG = false; boolean zombieRNG = false; - - + boolean endermanRNG = false; // Slayer tracker // T6 books @@ -409,9 +452,13 @@ public class LootTracker { } ConfigHandler.writeIntConfig("wolf", "svens", wolfSvens); ConfigHandler.writeIntConfig("wolf", "bossRNG", wolfBosses); - } else if (message.contains("RARE DROP! (Hamster Wheel)")) { + } else if (message.contains("RARE DROP! (") && message.contains("Hamster Wheel)")) { + int amount = 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++; @@ -452,9 +499,13 @@ public class LootTracker { } ConfigHandler.writeIntConfig("spider", "tarantulas", spiderTarantulas); ConfigHandler.writeIntConfig("spider", "bossRNG", spiderBosses); - } else if (message.contains("RARE DROP! (Toxic Arrow Poison)")) { + } else if (message.contains("RARE DROP! (") && message.contains("Toxic Arrow Poison)")) { + int amount = 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++; @@ -493,9 +544,18 @@ public class LootTracker { } ConfigHandler.writeIntConfig("zombie", "revs", zombieRevs); ConfigHandler.writeIntConfig("zombie", "bossRNG", zombieBosses); - } else if (message.contains("RARE DROP! (Foul Flesh)")) { + } else if (message.contains("RARE DROP! (") && message.contains("Revenant Viscera)")) { + int amount = getAmountfromMessage(message); + zombieRevViscera += amount; + zombieRevVisceraSession += amount; + ConfigHandler.writeIntConfig("zombie", "revViscera", zombieRevViscera); + } else if (message.contains("RARE DROP! (") && message.contains("Foul Flesh)")) { + int amount = 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++; @@ -533,12 +593,109 @@ public class LootTracker { 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)")) { + } else if (message.contains("INSANE DROP! (Warden Heart)") || message.contains("CRAZY RARE DROP! (Warden Heart)")) { zombieRNG = true; zombieWardenHearts++; zombieWardenHeartsSession++; ConfigHandler.writeIntConfig("zombie", "heart", zombieWardenHearts); if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "WARDEN HEART!", 5); + } else 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 = 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)")) { + endermanRNG = 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)")) { + endermanRNG = 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)")) { + endermanRNG = 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)")) { + endermanRNG = 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)")) { + endermanRNG = 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)")) { + endermanRNG = 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)")) { + endermanRNG = true; + endermanEnderBooks++; + endermanEnderBooksSession++; + ConfigHandler.writeIntConfig("enderman", "enderBooks", endermanEnderBooks); + if (ToggleCommand.rngesusAlerts) Utils.createTitle(EnumChatFormatting.RED + "ENDER SLAYER VII!", 3); } if (wolfRNG) { @@ -565,6 +722,14 @@ public class LootTracker { ConfigHandler.writeDoubleConfig("zombie", "timeRNG", zombieTime); ConfigHandler.writeIntConfig("zombie", "bossRNG", 0); } + if (endermanRNG) { + endermanTime = System.currentTimeMillis() / 1000; + endermanBosses = 0; + endermanTimeSession = System.currentTimeMillis() / 1000; + endermanBossesSession = 0; + ConfigHandler.writeDoubleConfig("enderman", "timeRNG", endermanTime); + ConfigHandler.writeIntConfig("enderman", "bossRNG", 0); + } // Fishing tracker if (message.contains("GOOD CATCH!")) { @@ -1095,34 +1260,26 @@ 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"); // 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 > 0) { itemsChecked = System.currentTimeMillis() / 1000; wolfTeeth += itemTeeth; - wolfWheels += itemWheels; spiderWebs += itemWebs; - spiderTAP += itemTAP; zombieRevFlesh += itemRev; - zombieFoulFlesh += itemFoul; + endermanNullSpheres += itemNullSphere; wolfTeethSession += itemTeeth; - wolfWheelsSession += itemWheels; spiderWebsSession += itemWebs; - spiderTAPSession += itemTAP; zombieRevFleshSession += itemRev; - zombieFoulFleshSession += itemFoul; + endermanNullSpheresSession += itemNullSphere; 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); + ConfigHandler.writeIntConfig("enderman", "nullSpheres", endermanNullSpheres); } } } @@ -1159,5 +1316,13 @@ public class LootTracker { ConfigHandler.writeIntConfig("fishing", "empSC", empSCs); ConfigHandler.writeIntConfig("fishing", "yetiSC", yetiSCs); } + + public int getAmountfromMessage(String message) { + if (message.charAt(message.indexOf("(") + 1) == 'x') { + return Integer.parseInt(message.substring(message.indexOf("(") + 1, message.indexOf("x"))); + } else { + return 1; + } + } } diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index 38459ee..e5a6641 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -20,6 +20,7 @@ public class DisplayGui extends GuiScreen { private GuiButton zombie; private GuiButton spider; private GuiButton wolf; + private GuiButton enderman; private GuiButton auto; private GuiButton fishing; private GuiButton fishingWinter; @@ -52,9 +53,10 @@ 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"); + zombie = new GuiButton(0, width / 2 - 230, (int) (height * 0.3), 100, 20, "Zombie"); + spider = new GuiButton(0, width / 2 - 110, (int) (height * 0.3), 100, 20, "Spider"); + wolf = new GuiButton(0, width / 2 + 10, (int) (height * 0.3), 100, 20, "Wolf"); + enderman = new GuiButton(0, width / 2 + 130, (int) (height * 0.3), 100, 20, "Enderman"); 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"); @@ -75,6 +77,7 @@ public class DisplayGui extends GuiScreen { this.buttonList.add(zombie); this.buttonList.add(spider); this.buttonList.add(wolf); + this.buttonList.add(enderman); this.buttonList.add(fishing); this.buttonList.add(fishingWinter); this.buttonList.add(fishingFestival); @@ -127,6 +130,8 @@ public class DisplayGui extends GuiScreen { setDisplay("spider", false); } else if (button == wolf) { setDisplay("wolf", false); + } else if (button == enderman) { + setDisplay("enderman", false); } else if (button == auto) { LootDisplay.auto = true; ConfigHandler.writeBooleanConfig("misc", "autoDisplay", true); diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index c289dac..002d9f7 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -294,6 +294,7 @@ public class ConfigHandler { // Zombie LootTracker.zombieRevs = initInt("zombie", "revs", 0); LootTracker.zombieRevFlesh = initInt("zombie", "revFlesh", 0); + LootTracker.zombieRevViscera = initInt("zombie", "revViscera", 0); LootTracker.zombieFoulFlesh = initInt("zombie", "foulFlesh", 0); LootTracker.zombieFoulFleshDrops = initInt("zombie", "foulFleshDrops", 0); LootTracker.zombiePestilences = initInt("zombie", "pestilence", 0); @@ -307,6 +308,29 @@ public class ConfigHandler { LootTracker.zombieWardenHearts = initInt("zombie", "heart", 0); LootTracker.zombieTime = initDouble("zombie", "timeRNG", -1); LootTracker.zombieBosses = initInt("zombie", "bossRNG", -1); + // Enderman + LootTracker.endermanVoidglooms = initInt("enderman", "voidglooms", 0); + LootTracker.endermanNullSpheres = initInt("enderman", "nullSpheres", 0); + LootTracker.endermanTAP = initInt("enderman", "tap", 0); + LootTracker.endermanTAPDrops = initInt("enderman", "tapDrops", 0); + LootTracker.endermanEndersnakes = initInt("enderman", "endersnakes", 0); + LootTracker.endermanSummoningEyes = initInt("enderman", "summoningEyes", 0); + LootTracker.endermanManaBooks = initInt("enderman", "manaBooks", 0); + LootTracker.endermanTuners = initInt("enderman", "tuners", 0); + LootTracker.endermanAtoms = initInt("enderman", "atoms", 0); + LootTracker.endermanEspressoMachines = initInt("enderman", "espressoMachines", 0); + LootTracker.endermanSmartyBooks = initInt("enderman", "smartyBooks", 0); + LootTracker.endermanEndRunes = initInt("enderman", "endRunes", 0); + LootTracker.endermanChalices = initInt("enderman", "chalices", 0); + LootTracker.endermanDice = initInt("enderman", "dice", 0); + LootTracker.endermanArtifacts = initInt("enderman", "artifacts", 0); + LootTracker.endermanSkins = initInt("enderman", "skins", 0); + LootTracker.endermanMergers = initInt("enderman", "mergers", 0); + LootTracker.endermanCores = initInt("enderman", "cores", 0); + LootTracker.endermanEnchantRunes = initInt("enderman", "enchantRunes", 0); + LootTracker.endermanEnderBooks = initInt("enderman", "enderBooks", 0); + LootTracker.endermanTime = initDouble("enderman", "timeRNG", -1); + LootTracker.endermanBosses = initInt("enderman", "bossRNG", -1); // Fishing LootTracker.seaCreatures = initInt("fishing", "seaCreature", 0); -- cgit From 5c7c3d0f5ca04df48c2b8f054a662300e9f0d14b Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 17 Jun 2021 00:31:22 -0400 Subject: Fix edit location buttons not having correct hitbox --- src/main/java/me/Danker/gui/buttons/LocationButton.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'src/main/java/me/Danker/gui') 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) {} } -- cgit From a44dc53ce80e9914595d5b646dc5623ddd3450b1 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Mon, 5 Jul 2021 12:52:46 -0400 Subject: Add alert when reaching end of farm --- README.md | 1 + build.gradle | 2 +- src/main/java/me/Danker/DankersSkyblockMod.java | 4 +- src/main/java/me/Danker/commands/DHelpCommand.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 3 ++ .../java/me/Danker/commands/FarmLengthCommand.java | 50 ++++++++++++++++++++++ .../java/me/Danker/commands/ToggleCommand.java | 13 +++++- .../java/me/Danker/features/EndOfFarmAlert.java | 40 +++++++++++++++++ .../java/me/Danker/features/Skill50Display.java | 2 +- src/main/java/me/Danker/gui/DankerGui.java | 7 +++ .../java/me/Danker/handlers/ConfigHandler.java | 4 +- 11 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 src/main/java/me/Danker/commands/FarmLengthCommand.java create mode 100644 src/main/java/me/Danker/features/EndOfFarmAlert.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 3c8de13..6cd9d90 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,7 @@ Discord Server: https://discord.gg/QsEkNQS - /player [player] - Uses API to find skills, slayers, coins and weight of a player. - /reloadconfig - Reloads Danker's Skyblock Mod config. - /reloaddsmrepo - Reloads Danker's Skyblock Mod repository. +- /dsmfarmlength - Sets coords to be used for end of farm alert. ## Keybinds - Open Maddox menu - M by default. diff --git a/build.gradle b/build.gradle index 38434de..a2bc00d 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ plugins { id "net.minecraftforge.gradle.forge" version "2.0.2" } */ -version = "1.8.7-beta2" +version = "1.8.7-beta3" group= "me.Danker.DankersSkyblockMod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "Danker's Skyblock Mod" diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 937b411..1b736ca 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -67,7 +67,7 @@ import java.util.stream.Collectors; @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-beta2"; + public static final String VERSION = "1.8.7-beta3"; public static int titleTimer = -1; public static boolean showTitle = false; public static String titleText = ""; @@ -115,6 +115,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new CreeperSolver()); MinecraftForge.EVENT_BUS.register(new CustomMusic()); 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 GiantHPDisplay()); @@ -185,6 +186,7 @@ public class DankersSkyblockMod { ClientCommandHandler.instance.registerCommand(new DisplayCommand()); ClientCommandHandler.instance.registerCommand(new DungeonsCommand()); ClientCommandHandler.instance.registerCommand(new FairySoulsCommand()); + ClientCommandHandler.instance.registerCommand(new FarmLengthCommand()); ClientCommandHandler.instance.registerCommand(new GetkeyCommand()); ClientCommandHandler.instance.registerCommand(new GuildOfCommand()); ClientCommandHandler.instance.registerCommand(new ImportFishingCommand()); diff --git a/src/main/java/me/Danker/commands/DHelpCommand.java b/src/main/java/me/Danker/commands/DHelpCommand.java index 42a82c4..b88f6cc 100644 --- a/src/main/java/me/Danker/commands/DHelpCommand.java +++ b/src/main/java/me/Danker/commands/DHelpCommand.java @@ -59,6 +59,7 @@ public class DHelpCommand extends CommandBase { EnumChatFormatting.GOLD + PlayerCommand.usage(arg0) + EnumChatFormatting.AQUA + " - Uses API to find skills, slayers, coins and weight of a player.\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.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 edec93f..4375d57 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; @@ -97,6 +98,7 @@ public class DankerGuiCommand extends CommandBase { debug.append("[gianthp][").append(ToggleCommand.giantHP).append("]\n"); debug.append("[hidepetcandy][").append(ToggleCommand.hidePetCandy).append("]\n"); debug.append("[customcolourednames][").append(ToggleCommand.customColouredNames).append("]\n"); + debug.append("[endoffarmalert][").append(ToggleCommand.endOfFarmAlert).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"); @@ -113,6 +115,7 @@ public class DankerGuiCommand extends CommandBase { 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/FarmLengthCommand.java b/src/main/java/me/Danker/commands/FarmLengthCommand.java new file mode 100644 index 0000000..6a28430 --- /dev/null +++ b/src/main/java/me/Danker/commands/FarmLengthCommand.java @@ -0,0 +1,50 @@ +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() + " "; + } + + 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)); + } 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); + } + +} diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 11b15f3..44b1df2 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -1,7 +1,9 @@ package me.Danker.commands; +import jdk.nashorn.internal.runtime.regexp.joni.Config; import me.Danker.DankersSkyblockMod; import me.Danker.features.CustomMusic; +import me.Danker.features.EndOfFarmAlert; import me.Danker.handlers.ConfigHandler; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; @@ -38,6 +40,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean giantHP; public static boolean hidePetCandy; public static boolean customColouredNames; + public static boolean endOfFarmAlert; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -99,7 +102,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "startswithterminal/selectallterminal/clickinorderterminal/" + "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + - "gianthp/hidepetcandy/customcolorednames/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; + "gianthp/hidepetcandy/customcolorednames/endoffarmalert/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; } public static String usage(ICommandSender arg0) { @@ -128,7 +131,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "ultrasequencer", "chronomatron", "superpairs", "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", - "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "list"); + "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert", "list"); } return null; } @@ -435,6 +438,11 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; CustomMusic.dungeonboss.stop(); @@ -504,6 +512,7 @@ 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 + " Custom name colors: " + DankersSkyblockMod.VALUE_COLOUR + customColouredNames + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " End of farm alert: " + DankersSkyblockMod.VALUE_COLOUR + endOfFarmAlert + "\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 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/Skill50Display.java b/src/main/java/me/Danker/features/Skill50Display.java index 99b1d62..54afb3a 100644 --- a/src/main/java/me/Danker/features/Skill50Display.java +++ b/src/main/java/me/Danker/features/Skill50Display.java @@ -114,7 +114,7 @@ public class Skill50Display { @SubscribeEvent public void renderPlayerInfo(RenderOverlay event) { - if (!Utils.skillsInitialized()) { + if (!Utils.skillsInitialized() && Utils.inSkyblock) { new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features.", MoveCommand.skill50XY[0], MoveCommand.skill50XY[0], ScaleCommand.skill50Scale); return; } diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index ce795f3..3f4ebe7 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -67,6 +67,7 @@ public class DankerGui extends GuiScreen { private GuiButton giantHP; private GuiButton hidePetCandy; private GuiButton customColouredNames; + private GuiButton endOfFarmAlert; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -155,6 +156,7 @@ 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."); 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."); allButtons.clear(); allButtons.add(changeDisplay); @@ -201,6 +203,7 @@ public class DankerGui extends GuiScreen { allButtons.add(giantHP); allButtons.add(hidePetCandy); allButtons.add(customColouredNames); + allButtons.add(endOfFarmAlert); search.setText(initSearchText); search.setVisible(true); @@ -447,6 +450,10 @@ public class DankerGui extends GuiScreen { 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); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 002d9f7..29fa882 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -215,6 +215,7 @@ public class ConfigHandler { ToggleCommand.giantHP = initBoolean("toggles", "GiantHP", false); ToggleCommand.hidePetCandy = initBoolean("toggles", "HidePetCandy", false); ToggleCommand.customColouredNames = initBoolean("toggles", "CustomColouredNames", true); + ToggleCommand.endOfFarmAlert = initBoolean("toggles", "EndOfFarmAlert", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -457,7 +458,6 @@ public class ConfigHandler { LootTracker.ghostlyBoots = initInt("ghosts", "ghostlyBoots", 0); LootTracker.bagOfCashs = initInt("ghosts", "bagOfCash", 0); - // Misc LootDisplay.display = initString("misc", "display", "off"); LootDisplay.auto = initBoolean("misc", "autoDisplay", false); @@ -465,6 +465,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()); -- cgit From 37977ec66605e240533180ebacf4377fc3a55a15 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 17 Jul 2021 00:00:25 -0400 Subject: Show applied gemstones in item lore --- README.md | 3 +- build.gradle | 2 +- src/main/java/me/Danker/DankersSkyblockMod.java | 4 +- .../java/me/Danker/commands/DankerGuiCommand.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 13 +++- .../java/me/Danker/features/GemstonesLore.java | 77 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 ++ .../java/me/Danker/handlers/ConfigHandler.java | 1 + 8 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 src/main/java/me/Danker/features/GemstonesLore.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 6cd9d90..8dbda56 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Discord Server: https://discord.gg/QsEkNQS - Slayer slain alert - Fishing, jerry fishing, fishing festival, spooky fishing trackers - Expertise kills in fishing rod lore +- Gemstones applied in item lore - Catacombs trackers - Dungeons puzzle solver (Riddle, trivia, blaze, creeper, water, tic tac toe, boulder, silverfish, ice walk) - Dungeons timer (watcher, boss, deaths, and puzzle fails) @@ -60,7 +61,7 @@ Discord Server: https://discord.gg/QsEkNQS ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. diff --git a/build.gradle b/build.gradle index a2bc00d..05a7231 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ plugins { id "net.minecraftforge.gradle.forge" version "2.0.2" } */ -version = "1.8.7-beta3" +version = "1.8.7-beta4" group= "me.Danker.DankersSkyblockMod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "Danker's Skyblock Mod" diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 9ee1d33..b85c608 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -64,7 +64,7 @@ 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-beta3"; + public static final String VERSION = "1.8.7-beta4"; public static int titleTimer = -1; public static boolean showTitle = false; public static String titleText = ""; @@ -116,6 +116,7 @@ public class DankersSkyblockMod { 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()); @@ -156,6 +157,7 @@ public class DankersSkyblockMod { GoldenEnchants.init(); TriviaSolver.init(); CustomMusic.init(configDirectory); + GemstonesLore.init(); keyBindings[0] = new KeyBinding("Open Maddox Menu", Keyboard.KEY_M, "Danker's Skyblock Mod"); keyBindings[1] = new KeyBinding("Regular Ability", Keyboard.KEY_NUMPAD4, "Danker's Skyblock Mod"); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 4375d57..9561074 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -99,6 +99,7 @@ public class DankerGuiCommand extends CommandBase { debug.append("[hidepetcandy][").append(ToggleCommand.hidePetCandy).append("]\n"); debug.append("[customcolourednames][").append(ToggleCommand.customColouredNames).append("]\n"); debug.append("[endoffarmalert][").append(ToggleCommand.endOfFarmAlert).append("]\n"); + debug.append("[gemstonelore][").append(ToggleCommand.gemstoneLore).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"); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 95c4d98..d52ee76 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -14,6 +14,7 @@ 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; @@ -39,6 +40,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean hidePetCandy; public static boolean customColouredNames; public static boolean endOfFarmAlert; + public static boolean gemstoneLore; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -100,7 +102,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "startswithterminal/selectallterminal/clickinorderterminal/" + "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + - "gianthp/hidepetcandy/customcolorednames/endoffarmalert/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; + "gianthp/hidepetcandy/customcolorednames/endoffarmalert/gemstonelore/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; } public static String usage(ICommandSender arg0) { @@ -129,7 +131,8 @@ public class ToggleCommand extends CommandBase implements ICommand { "ultrasequencer", "chronomatron", "superpairs", "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", - "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert", "list"); + "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert", + "gemstonelore", "list"); } return null; } @@ -441,6 +444,11 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; CustomMusic.dungeonboss.stop(); @@ -511,6 +519,7 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Hide pet candy: " + DankersSkyblockMod.VALUE_COLOUR + hidePetCandy + "\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 + " 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 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..dfae746 --- /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 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 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_")) { + 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/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 3f4ebe7..d7e2c16 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -68,6 +68,7 @@ public class DankerGui extends GuiScreen { private GuiButton hidePetCandy; private GuiButton customColouredNames; private GuiButton endOfFarmAlert; + private GuiButton gemstoneLore; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -157,6 +158,7 @@ public class DankerGui extends GuiScreen { hidePetCandy = new FeatureButton("Hide Pet Candy: " + Utils.getColouredBoolean(ToggleCommand.hidePetCandy), "Hide pet candy in pet tooltips."); 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."); allButtons.clear(); allButtons.add(changeDisplay); @@ -204,6 +206,7 @@ public class DankerGui extends GuiScreen { allButtons.add(hidePetCandy); allButtons.add(customColouredNames); allButtons.add(endOfFarmAlert); + allButtons.add(gemstoneLore); search.setText(initSearchText); search.setVisible(true); @@ -454,6 +457,10 @@ public class DankerGui extends GuiScreen { 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); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 29fa882..1d6311e 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -216,6 +216,7 @@ public class ConfigHandler { ToggleCommand.hidePetCandy = initBoolean("toggles", "HidePetCandy", false); ToggleCommand.customColouredNames = initBoolean("toggles", "CustomColouredNames", true); ToggleCommand.endOfFarmAlert = initBoolean("toggles", "EndOfFarmAlert", false); + ToggleCommand.gemstoneLore = initBoolean("toggles", "GemstoneLore", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); -- cgit From bc3f389c52aef41f6fb4351e8d0a5a8fed8336ef Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 24 Jul 2021 01:54:57 -0400 Subject: Add crystal hollows waypoints With support for SBE crystal hollows waypoints --- README.md | 3 +- src/main/java/me/Danker/DankersSkyblockMod.java | 6 + .../commands/CrystalHollowWaypointCommand.java | 50 ++++++ .../java/me/Danker/commands/DankerGuiCommand.java | 2 + .../java/me/Danker/commands/ToggleCommand.java | 22 ++- .../me/Danker/features/CrystalHollowWaypoints.java | 193 +++++++++++++++++++++ .../Danker/gui/CrystalHollowWaypointActionGui.java | 87 ++++++++++ .../me/Danker/gui/CrystalHollowWaypointsGui.java | 139 +++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 5 + .../java/me/Danker/handlers/ConfigHandler.java | 2 + src/main/java/me/Danker/utils/Utils.java | 147 ++++++++++++++++ 11 files changed, 651 insertions(+), 5 deletions(-) create mode 100644 src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java create mode 100644 src/main/java/me/Danker/features/CrystalHollowWaypoints.java create mode 100644 src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java create mode 100644 src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 8dbda56..55bcd1a 100644 --- a/README.md +++ b/README.md @@ -57,11 +57,12 @@ Discord Server: https://discord.gg/QsEkNQS - Show teammates in 30 block radius - Hide pet candy in pet tooltip - Custom name colors +- Crystal Hollows waypoints (with SkyblockExtras support) ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index b85c608..e02f12a 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -111,6 +111,7 @@ public class DankersSkyblockMod { 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 DungeonTimer()); MinecraftForge.EVENT_BUS.register(new EndOfFarmAlert()); @@ -175,6 +176,7 @@ public class DankersSkyblockMod { ClientCommandHandler.instance.registerCommand(new ArmourCommand()); ClientCommandHandler.instance.registerCommand(new BankCommand()); 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()); @@ -357,6 +359,7 @@ public class DankersSkyblockMod { if (player != null) { Utils.checkForSkyblock(); Utils.checkForDungeons(); + Utils.checkForCrystalHollows(); } tickAmount = 0; @@ -425,6 +428,9 @@ public class DankersSkyblockMod { case "custommusic": mc.displayGuiScreen(new CustomMusicGui()); break; + case "crystalwaypoints": + mc.displayGuiScreen(new CrystalHollowWaypointsGui(1)); + break; } } guiToOpen = null; 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..c545447 --- /dev/null +++ b/src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java @@ -0,0 +1,50 @@ +package me.Danker.commands; + +import me.Danker.DankersSkyblockMod; +import me.Danker.features.CrystalHollowWaypoints; +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() + " "; + } + + @Override + public int getRequiredPermissionLevel() { + return 0; + } + + @Override + public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { + EntityPlayer player = (EntityPlayer) arg0; + + if (arg1.length == 0) return; + + String[] waypoints = String.join(" ", arg1).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); + + 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/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 9561074..dc6845d 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -100,6 +100,8 @@ public class DankerGuiCommand extends CommandBase { debug.append("[customcolourednames][").append(ToggleCommand.customColouredNames).append("]\n"); debug.append("[endoffarmalert][").append(ToggleCommand.endOfFarmAlert).append("]\n"); debug.append("[gemstonelore][").append(ToggleCommand.gemstoneLore).append("]\n"); + debug.append("[crystalhollowwaypoints][").append(ToggleCommand.crystalHollowWaypoints).append("]\n"); + debug.append("[crystalautowaypoints][").append(ToggleCommand.crystalAutoWaypoints).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"); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index d52ee76..061a277 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -41,6 +41,8 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean customColouredNames; public static boolean endOfFarmAlert; public static boolean gemstoneLore; + public static boolean crystalHollowWaypoints; + public static boolean crystalAutoWaypoints; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -92,7 +94,6 @@ public class ToggleCommand extends CommandBase implements ICommand { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " "; + "gianthp/hidepetcandy/customcolorednames/endoffarmalert/gemstonelore/crystalhollowwaypoints/crystalautowaypoints/" + + "dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; } public static String usage(ICommandSender arg0) { - return new ToggleCommand().getCommandUsage(arg0); + return "/toggle "; } @Override @@ -132,7 +134,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert", - "gemstonelore", "list"); + "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "list"); } return null; } @@ -449,6 +451,16 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; CustomMusic.dungeonboss.stop(); @@ -520,6 +532,8 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 + " 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 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..17578fe --- /dev/null +++ b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java @@ -0,0 +1,193 @@ +package me.Danker.features; + +import me.Danker.DankersSkyblockMod; +import me.Danker.commands.ToggleCommand; +import me.Danker.handlers.ScoreboardHandler; +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 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.inCrystalHollows && world != null) { + boolean found = false; + List 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 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().endsWith("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; + + /* 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.inCrystalHollows) { + if (!message.contains(player.getName()) && (message.contains(": $DSMCHWP:") || message.contains(": $SBECHWP:"))) { + ChatComponentText add = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [ADD]\n"); + add.setChatStyle(add.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dsmaddcrystalhollowwaypoints " + message.substring(message.lastIndexOf(":") + 1)))); + + 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.inCrystalHollows) { + for (Waypoint waypoint : waypoints) { + if (waypoint.toggled) Utils.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/gui/CrystalHollowWaypointActionGui.java b/src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java new file mode 100644 index 0000000..d7f598d --- /dev/null +++ b/src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java @@ -0,0 +1,87 @@ +package me.Danker.gui; + +import me.Danker.DankersSkyblockMod; +import me.Danker.features.CrystalHollowWaypoints; +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); + } + + @Override + public void actionPerformed(GuiButton button) { + CrystalHollowWaypoints.Waypoint waypoint = CrystalHollowWaypoints.waypoints.get(id); + EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; + if (button == goBack) { + 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/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java new file mode 100644 index 0000000..392f16b --- /dev/null +++ b/src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java @@ -0,0 +1,139 @@ +package me.Danker.gui; + +import me.Danker.DankersSkyblockMod; +import me.Danker.commands.ToggleCommand; +import me.Danker.features.CrystalHollowWaypoints; +import me.Danker.gui.buttons.FeatureButton; +import me.Danker.handlers.ConfigHandler; +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.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 int page; + private List allButtons = new ArrayList<>(); + + private GuiButton goBack; + private GuiButton backPage; + private GuiButton nextPage; + private GuiButton sendDSM; + private GuiButton sendSBE; + private FeatureButton crystalHollowWaypoints; + private FeatureButton crystalAutoWaypoints; + + 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"); + 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."); + + allButtons.clear(); + allButtons.add(crystalHollowWaypoints); + allButtons.add(crystalAutoWaypoints); + 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); + int pageWidth = mc.fontRendererObj.getStringWidth(pageText); + new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 10, 1D); + } + + @Override + public void actionPerformed(GuiButton button) { + EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; + if (button == goBack) { + DankersSkyblockMod.guiToOpen = "dankergui1"; + } 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 == 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 { + mc.displayGuiScreen(new CrystalHollowWaypointActionGui(button.id)); + } + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index d7e2c16..bed219a 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -41,6 +41,7 @@ public class DankerGui extends GuiScreen { private GuiButton experimentationTableSolvers; private GuiButton skillTracker; private GuiButton customMusic; + private GuiButton crystalHollowWaypoints; // Toggles private GuiButton gparty; private GuiButton coords; @@ -118,6 +119,7 @@ public class DankerGui extends GuiScreen { 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"); 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."); @@ -166,6 +168,7 @@ public class DankerGui extends GuiScreen { allButtons.add(experimentationTableSolvers); allButtons.add(skillTracker); allButtons.add(customMusic); + allButtons.add(crystalHollowWaypoints); allButtons.add(outlineText); allButtons.add(pickBlock); allButtons.add(coords); @@ -297,6 +300,8 @@ public class DankerGui extends GuiScreen { DankersSkyblockMod.guiToOpen = "skilltracker"; } else if (button == customMusic) { DankersSkyblockMod.guiToOpen = "custommusic"; + } else if (button == crystalHollowWaypoints) { + DankersSkyblockMod.guiToOpen = "crystalwaypoints"; } else if (button == outlineText) { ToggleCommand.outlineTextToggled = !ToggleCommand.outlineTextToggled; ConfigHandler.writeBooleanConfig("toggles", "OutlineText", ToggleCommand.outlineTextToggled); diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 1d6311e..d5ff5bd 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -217,6 +217,8 @@ public class ConfigHandler { ToggleCommand.customColouredNames = initBoolean("toggles", "CustomColouredNames", true); ToggleCommand.endOfFarmAlert = initBoolean("toggles", "EndOfFarmAlert", false); ToggleCommand.gemstoneLore = initBoolean("toggles", "GemstoneLore", false); + ToggleCommand.crystalHollowWaypoints = initBoolean("toggles", "CrystalHollowWaypoints", false); + ToggleCommand.crystalAutoWaypoints = initBoolean("toggles", "CrystalAutoWaypoints", true); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index e1a99ea..dd6eed5 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -2,6 +2,7 @@ package me.Danker.utils; import me.Danker.DankersSkyblockMod; import me.Danker.features.ColouredNames; +import me.Danker.features.CrystalHollowWaypoints; import me.Danker.features.GoldenEnchants; import me.Danker.handlers.APIHandler; import me.Danker.handlers.ConfigHandler; @@ -9,6 +10,7 @@ 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.FontRenderer; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.network.NetworkPlayerInfo; @@ -38,6 +40,7 @@ public class Utils { public static boolean inSkyblock = false; public static boolean inDungeons = false; + public static boolean inCrystalHollows = false; 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, @@ -167,6 +170,20 @@ public class Utils { inDungeons = false; } + public static void checkForCrystalHollows() { + if (inSkyblock) { + Collection players = Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap(); + for (NetworkPlayerInfo player : players) { + if (player == null || player.getDisplayName() == null) continue; + if (player.getDisplayName().getUnformattedText().contains("Crystal Hollows")) { + inCrystalHollows = true; + return; + } + } + } + inCrystalHollows = false; + } + public static boolean isInScoreboard(String text) { List scoreboard = ScoreboardHandler.getSidebarLines(); for (String s : scoreboard) { @@ -397,6 +414,136 @@ public class Utils { 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); -- cgit From d534e7e9da3c3d20825cda831f2814249e212d5a Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 30 Jul 2021 02:14:10 -0400 Subject: Auto accept reparty --- README.md | 3 +- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 11 ++++++-- .../java/me/Danker/features/AutoAcceptReparty.java | 33 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 +++++ .../java/me/Danker/handlers/ConfigHandler.java | 1 + 7 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/Danker/features/AutoAcceptReparty.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 55bcd1a..7aaef81 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ Discord Server: https://discord.gg/QsEkNQS - API commands - Update checker - Reparty command +- Auto accept reparty - Highlight Slayer Bosses - Highlight Arachne - Highlight Skeleton Masters @@ -62,7 +63,7 @@ Discord Server: https://discord.gg/QsEkNQS ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index e02f12a..9258892 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -101,6 +101,7 @@ public class DankersSkyblockMod { public void init(FMLInitializationEvent event) throws UnsupportedAudioFileException, IOException, LineUnavailableException { MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(new ArachneESP()); + MinecraftForge.EVENT_BUS.register(new AutoAcceptReparty()); MinecraftForge.EVENT_BUS.register(new AutoDisplay()); MinecraftForge.EVENT_BUS.register(new AutoSwapToPickBlock()); MinecraftForge.EVENT_BUS.register(new BlazeSolver()); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 7c0bbd6..d6b92eb 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -109,6 +109,7 @@ public class DankerGuiCommand extends CommandBase { debug.append("[gemstonelore][").append(ToggleCommand.gemstoneLore).append("]\n"); debug.append("[crystalhollowwaypoints][").append(ToggleCommand.crystalHollowWaypoints).append("]\n"); debug.append("[crystalautowaypoints][").append(ToggleCommand.crystalAutoWaypoints).append("]\n"); + debug.append("[autoacceptreparty][").append(ToggleCommand.autoAcceptReparty).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"); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 061a277..c810eff 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -43,6 +43,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean gemstoneLore; public static boolean crystalHollowWaypoints; public static boolean crystalAutoWaypoints; + public static boolean autoAcceptReparty; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -104,7 +105,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + "gianthp/hidepetcandy/customcolorednames/endoffarmalert/gemstonelore/crystalhollowwaypoints/crystalautowaypoints/" + - "dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; + "autoacceptreparty/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; } public static String usage(ICommandSender arg0) { @@ -134,7 +135,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert", - "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "list"); + "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "autoacceptreparty", "list"); } return null; } @@ -461,6 +462,11 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 "dungeonbossmusic": dungeonBossMusic = !dungeonBossMusic; CustomMusic.dungeonboss.stop(); @@ -534,6 +540,7 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 + " 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 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..a89b30b --- /dev/null +++ b/src/main/java/me/Danker/features/AutoAcceptReparty.java @@ -0,0 +1,33 @@ +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) { + String message = StringUtils.stripControlCodes(event.message.getUnformattedText()); + + if (ToggleCommand.autoAcceptReparty) { + 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/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index bed219a..f2d3bf3 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -70,6 +70,7 @@ public class DankerGui extends GuiScreen { private GuiButton customColouredNames; private GuiButton endOfFarmAlert; private GuiButton gemstoneLore; + private GuiButton autoAcceptReparty; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -161,6 +162,7 @@ public class DankerGui extends GuiScreen { 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."); allButtons.clear(); allButtons.add(changeDisplay); @@ -210,6 +212,7 @@ public class DankerGui extends GuiScreen { allButtons.add(customColouredNames); allButtons.add(endOfFarmAlert); allButtons.add(gemstoneLore); + allButtons.add(autoAcceptReparty); search.setText(initSearchText); search.setVisible(true); @@ -466,6 +469,10 @@ public class DankerGui extends GuiScreen { 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); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index d5ff5bd..115f01b 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -219,6 +219,7 @@ public class ConfigHandler { ToggleCommand.gemstoneLore = initBoolean("toggles", "GemstoneLore", false); ToggleCommand.crystalHollowWaypoints = initBoolean("toggles", "CrystalHollowWaypoints", false); ToggleCommand.crystalAutoWaypoints = initBoolean("toggles", "CrystalAutoWaypoints", true); + ToggleCommand.autoAcceptReparty = initBoolean("toggles", "AutoAcceptReparty", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); -- cgit From a49b673bd9badcb7c4c02539f53c39c5b52c1b32 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 31 Jul 2021 19:58:02 -0400 Subject: Add custom music to every area Hub, island, farming islands, gold mine, deep caverns, dwarven mines, crystal hollows, blazing fortress, end, park --- README.md | 21 +++- src/main/java/me/Danker/DankersSkyblockMod.java | 4 +- .../me/Danker/commands/CustomMusicCommand.java | 88 +++++++++++--- .../java/me/Danker/commands/ToggleCommand.java | 100 +++++++++++++++- .../me/Danker/features/CrystalHollowWaypoints.java | 6 +- src/main/java/me/Danker/features/CustomMusic.java | 133 +++++++++++++++++---- src/main/java/me/Danker/gui/CustomMusicGui.java | 118 +++++++++++++++++- .../java/me/Danker/handlers/ConfigHandler.java | 22 ++++ src/main/java/me/Danker/utils/Utils.java | 13 +- 9 files changed, 442 insertions(+), 63 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 7aaef81..db33492 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Discord Server: https://discord.gg/QsEkNQS ## Commands - /dhelp - Returns this message in-game. - /dsm - Opens the GUI for Danker's Skyblock Mod. -- /toggle - Toggles features. /toggle list returns values of every toggle. +- /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. @@ -85,7 +85,7 @@ Discord Server: https://discord.gg/QsEkNQS - /reparty - Disbands and reparties all members in the party - /fairysouls - Check the fairysouls of a player - /lobbybank - 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). -- /dsmmusic [dungeonboss/bloodroom/dungeon] [1-100] - Stops, reloads or changes the volume of custom music. +- /dsmmusic [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/goldmine/deepcaverns/dwarvenmines/crystalhollows/blazingfortress/end/park] [1-100] - Stops, reloads or changes the volume of custom music. - /player [player] - Uses API to find skills, slayers, coins and weight of a player. - /reloadconfig - Reloads Danker's Skyblock Mod config. - /reloaddsmrepo - Reloads Danker's Skyblock Mod repository. @@ -98,9 +98,20 @@ Discord Server: https://discord.gg/QsEkNQS ## Custom Music 1. Place a music file with the given name in the `.minecraft/config/dsmmusic` folder: - - Dungeon music: `dungeon.wav` - - Blood room music: `bloodroom.wav` - - Dungeon boss music: `dungeonboss.wav` + - Dungeon: `dungeon.wav` + - Blood room: `bloodroom.wav` + - Dungeon boss: `dungeonboss.wav` + - Dungeon hub: `dungeonhub.wav` + - Hub: `hub.wav` + - Private Island: `island.wav` + - Farming Islands: `farmingislands.wav` + - Gold Mine: `goldmine.wav` + - Deep Caverns: `deepcaverns.wav` + - Dwarven Mines: `dwarvenmines.wav` + - Crystal Hollows: `crystalhollows.wav` + - Blazing Fortress: `blazingfortress.wav` + - The End: `end.wav` + - The Park: `park.wav` 2. Either run `/dsmmusic reload` or restart your game. 3. Enable the custom music in `/dsm`. 4. (Optional) Change the volume of the music with `/dsmmusic volume`. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 9258892..100db96 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -360,7 +360,7 @@ public class DankersSkyblockMod { if (player != null) { Utils.checkForSkyblock(); Utils.checkForDungeons(); - Utils.checkForCrystalHollows(); + Utils.checkTabLocation(); } tickAmount = 0; @@ -427,7 +427,7 @@ public class DankersSkyblockMod { mc.displayGuiScreen(new SkillTrackerGui()); break; case "custommusic": - mc.displayGuiScreen(new CustomMusicGui()); + mc.displayGuiScreen(new CustomMusicGui(1)); break; case "crystalwaypoints": mc.displayGuiScreen(new CrystalHollowWaypointsGui(1)); diff --git a/src/main/java/me/Danker/commands/CustomMusicCommand.java b/src/main/java/me/Danker/commands/CustomMusicCommand.java index 0e80dd3..45e3770 100644 --- a/src/main/java/me/Danker/commands/CustomMusicCommand.java +++ b/src/main/java/me/Danker/commands/CustomMusicCommand.java @@ -24,7 +24,8 @@ public class CustomMusicCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [dungeonboss/bloodroom/dungeon] [1-100]"; + return "/" + getCommandName() + " [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/" + + "goldmine/deepcaverns/dwarvenmines/crystalhollows/blazingfortress/end/park] [1-100]"; } public static String usage(ICommandSender arg0) { @@ -41,7 +42,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", "blazingfortress", "end", "park"); } return null; } @@ -76,36 +78,92 @@ 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 "blazingfortress": + if (!CustomMusic.blazingFortress.setVolume(volume)) return; + + CustomMusic.blazingFortressVolume = volume; + ConfigHandler.writeIntConfig("music", "BlazingFortressVolume", 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/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index c810eff..65900fd 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -14,6 +14,7 @@ import net.minecraft.util.ChatComponentText; import java.util.List; public class ToggleCommand extends CommandBase implements ICommand { + // i hate this file so much // 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; @@ -87,6 +88,17 @@ 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 blazingFortressMusic; + public static boolean endMusic; + public static boolean parkMusic; @Override public String getCommandName() { @@ -105,7 +117,9 @@ public class ToggleCommand extends CommandBase implements ICommand { "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + "gianthp/hidepetcandy/customcolorednames/endoffarmalert/gemstonelore/crystalhollowwaypoints/crystalautowaypoints/" + - "autoacceptreparty/dungeonbossmusic/bloodroommusic/dungeonmusic/list>"; + "autoacceptreparty/dungeonbossmusic/bloodroommusic/dungeonmusic/hubmusic/islandmusic/dungeonhubmusic/" + + "farmingislandsmusic/goldminemusic/deepcavernsmusic/crystalhollowsmusic/blazingfortressmusic/endmusic/" + + "parkmusic/list>"; } public static String usage(ICommandSender arg0) { @@ -135,7 +149,10 @@ public class ToggleCommand extends CommandBase implements ICommand { "hidetooltipsinaddons", "pickblock", "melodytooltips", "highlightslayers", "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert", - "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "autoacceptreparty", "list"); + "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "autoacceptreparty", + "hubmusic", "islandmusic", "dungeonhubmusic", "farmingislandsmusic", "goldminemusic", + "deepcavernsmusic", "dwarvenminesmusic", "crystalhollowsmusic", "blazingfortressmusic", + "endmusic", "parkmusic", "list"); } return null; } @@ -485,6 +502,72 @@ 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 "blazingfortressmusic": + blazingFortressMusic = !blazingFortressMusic; + CustomMusic.blazingFortress.stop(); + ConfigHandler.writeBooleanConfig("toggles", "BlazingFortressMusic", blazingFortressMusic); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom blazing fortress music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + blazingFortressMusic + 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 "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" + @@ -543,7 +626,18 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Auto accept reparty: " + DankersSkyblockMod.VALUE_COLOUR + autoAcceptReparty + "\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 blazing fortress music: " + DankersSkyblockMod.VALUE_COLOUR + blazingFortressMusic + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Custom end music: " + DankersSkyblockMod.VALUE_COLOUR + endMusic + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Custom park music: " + DankersSkyblockMod.VALUE_COLOUR + parkMusic )); break; default: diff --git a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java index 17578fe..37f709a 100644 --- a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java +++ b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java @@ -44,7 +44,7 @@ public class CrystalHollowWaypoints { World world = mc.theWorld; if (DankersSkyblockMod.tickAmount % 20 == 0) { - if (ToggleCommand.crystalAutoWaypoints && Utils.inCrystalHollows && world != null) { + if (ToggleCommand.crystalAutoWaypoints && Utils.tabLocation.equals("Crystal Hollows") && world != null) { boolean found = false; List scoreboard = ScoreboardHandler.getSidebarLines(); @@ -118,7 +118,7 @@ public class CrystalHollowWaypoints { $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.inCrystalHollows) { + if (ToggleCommand.crystalHollowWaypoints && Utils.tabLocation.equals("Crystal Hollows")) { if (!message.contains(player.getName()) && (message.contains(": $DSMCHWP:") || message.contains(": $SBECHWP:"))) { ChatComponentText add = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [ADD]\n"); add.setChatStyle(add.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dsmaddcrystalhollowwaypoints " + message.substring(message.lastIndexOf(":") + 1)))); @@ -137,7 +137,7 @@ public class CrystalHollowWaypoints { @SubscribeEvent public void onWorldRender(RenderWorldLastEvent event) { - if (ToggleCommand.crystalHollowWaypoints && Utils.inCrystalHollows) { + if (ToggleCommand.crystalHollowWaypoints && Utils.tabLocation.equals("Crystal Hollows")) { for (Waypoint waypoint : waypoints) { if (waypoint.toggled) Utils.draw3DWaypointString(waypoint, event.partialTicks); } diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java index 5080821..d61b640 100644 --- a/src/main/java/me/Danker/features/CustomMusic.java +++ b/src/main/java/me/Danker/features/CustomMusic.java @@ -35,6 +35,29 @@ public class CustomMusic { 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 blazingFortress; + public static int blazingFortressVolume; + public static Song end; + public static int endVolume; + public static Song park; + public static int parkVolume; + @SubscribeEvent public void onWorldChange(WorldEvent.Load event) { @@ -49,28 +72,66 @@ public class CustomMusic { EntityPlayerSP player = mc.thePlayer; World world = mc.theWorld; if (DankersSkyblockMod.tickAmount % 10 == 0) { - if (Utils.inDungeons && world != null && player != null) { - prevInDungeonBossRoom = inDungeonBossRoom; - List 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) { - bloodroom.stop(); - if (ToggleCommand.dungeonBossMusic) dungeonboss.start(); + if (world != null && player != null) { + if (Utils.inDungeons) { + prevInDungeonBossRoom = inDungeonBossRoom; + List 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) { + bloodroom.stop(); + if (ToggleCommand.dungeonBossMusic) dungeonboss.start(); + } + } else { + inDungeonBossRoom = false; } - } else { - inDungeonBossRoom = false; + } + } else { + switch (Utils.tabLocation) { + case "Hub": + if (ToggleCommand.hubMusic) hub.start(); + break; + case "Private World": + 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 "Blazing Fortress": + if (ToggleCommand.blazingFortressMusic) blazingFortress.start(); + break; + case "The End": + if (ToggleCommand.endMusic) end.start(); + break; + case "The Park": + if (ToggleCommand.parkMusic) park.start(); + break; } } } @@ -118,12 +179,34 @@ public class CustomMusic { 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); + blazingFortress = new Song(directory, "blazingfortress", blazingFortressVolume); + 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 (blazingFortress != null) blazingFortress.stop(); + if (end != null) end.stop(); + if (park != null) park.stop(); } public static class Song { @@ -153,8 +236,8 @@ public class CustomMusic { } public void start() { - reset(); - if (music != null) { + if (music != null && !music.isRunning()) { + reset(); shuffle(); cancelNotes = true; music.setMicrosecondPosition(0); @@ -183,9 +266,7 @@ public class CustomMusic { float decibels = (float) (20 * Math.log(volume / 100.0)); for (Clip music : playlist) { 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); } diff --git a/src/main/java/me/Danker/gui/CustomMusicGui.java b/src/main/java/me/Danker/gui/CustomMusicGui.java index 505bf34..3e634bf 100644 --- a/src/main/java/me/Danker/gui/CustomMusicGui.java +++ b/src/main/java/me/Danker/gui/CustomMusicGui.java @@ -12,11 +12,30 @@ 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 blazingFortressMusic; + private GuiButton endMusic; + private GuiButton parkMusic; + + public CustomMusicGui(int page) { + this.page = page; + } @Override public boolean doesGuiPauseGame() { @@ -32,13 +51,47 @@ 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)); + blazingFortressMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Custom Blazing Fortress Music: " + Utils.getColouredBoolean(ToggleCommand.blazingFortressMusic)); + endMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Custom End Music: " + Utils.getColouredBoolean(ToggleCommand.endMusic)); + parkMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "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(blazingFortressMusic); + this.buttonList.add(endMusic); + 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); } @@ -52,6 +105,10 @@ public class CustomMusicGui extends GuiScreen { public void actionPerformed(GuiButton button) { if (button == goBack) { DankersSkyblockMod.guiToOpen = "dankergui1"; + } 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 +124,61 @@ 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 == blazingFortressMusic) { + ToggleCommand.blazingFortressMusic = !ToggleCommand.blazingFortressMusic; + CustomMusic.blazingFortress.stop(); + ConfigHandler.writeBooleanConfig("toggles", "BlazingFortressMusic", ToggleCommand.blazingFortressMusic); + blazingFortressMusic.displayString = "Custom Blazing Fortress Music: " + Utils.getColouredBoolean(ToggleCommand.blazingFortressMusic); + } 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/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 115f01b..cfee6b2 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -262,10 +262,32 @@ 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.blazingFortressMusic = initBoolean("toggles", "BlazingFortressMusic", 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.blazingFortressVolume = initInt("music", "BlazingFortressVolume", 50); + CustomMusic.endVolume = initInt("music", "EndVolume", 50); + CustomMusic.parkVolume = initInt("music", "ParkVolume", 50); // API if (!hasKey("api", "APIKey")) writeStringConfig("api", "APIKey", ""); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index dd6eed5..c1e76d7 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -40,7 +40,7 @@ public class Utils { public static boolean inSkyblock = false; public static boolean inDungeons = false; - public static boolean inCrystalHollows = false; + 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, @@ -170,18 +170,19 @@ public class Utils { inDungeons = false; } - public static void checkForCrystalHollows() { - if (inSkyblock) { + public static void checkTabLocation() { + if (inSkyblock) { Collection players = Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap(); for (NetworkPlayerInfo player : players) { if (player == null || player.getDisplayName() == null) continue; - if (player.getDisplayName().getUnformattedText().contains("Crystal Hollows")) { - inCrystalHollows = true; + String text = player.getDisplayName().getUnformattedText(); + if (text.startsWith("Area: ")) { + tabLocation = text.substring(text.indexOf(":") + 2); return; } } } - inCrystalHollows = false; + tabLocation = ""; } public static boolean isInScoreboard(String text) { -- cgit From 5f2206d383afd3b6424ccda1a2d36522cfbe9b1f Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 31 Jul 2021 21:16:48 -0400 Subject: Add spiders den to custom music I forgot it existed --- README.md | 3 ++- .../java/me/Danker/commands/CustomMusicCommand.java | 10 ++++++++-- src/main/java/me/Danker/commands/ToggleCommand.java | 12 ++++++++++-- src/main/java/me/Danker/features/ArachneESP.java | 11 +---------- src/main/java/me/Danker/features/CustomMusic.java | 7 +++++++ src/main/java/me/Danker/gui/CustomMusicGui.java | 18 +++++++++++++++--- src/main/java/me/Danker/handlers/ConfigHandler.java | 2 ++ 7 files changed, 45 insertions(+), 18 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index db33492..ea7b8b3 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ Discord Server: https://discord.gg/QsEkNQS - /reparty - Disbands and reparties all members in the party - /fairysouls - Check the fairysouls of a player - /lobbybank - 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). -- /dsmmusic [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/goldmine/deepcaverns/dwarvenmines/crystalhollows/blazingfortress/end/park] [1-100] - Stops, reloads or changes the volume of custom music. +- /dsmmusic [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/goldmine/deepcaverns/dwarvenmines/crystalhollows/spidersden/blazingfortress/end/park] [1-100] - Stops, reloads or changes the volume of custom music. - /player [player] - Uses API to find skills, slayers, coins and weight of a player. - /reloadconfig - Reloads Danker's Skyblock Mod config. - /reloaddsmrepo - Reloads Danker's Skyblock Mod repository. @@ -109,6 +109,7 @@ Discord Server: https://discord.gg/QsEkNQS - Deep Caverns: `deepcaverns.wav` - Dwarven Mines: `dwarvenmines.wav` - Crystal Hollows: `crystalhollows.wav` + - Spider's Den: `spidersden.wav` - Blazing Fortress: `blazingfortress.wav` - The End: `end.wav` - The Park: `park.wav` diff --git a/src/main/java/me/Danker/commands/CustomMusicCommand.java b/src/main/java/me/Danker/commands/CustomMusicCommand.java index 45e3770..c07ab45 100644 --- a/src/main/java/me/Danker/commands/CustomMusicCommand.java +++ b/src/main/java/me/Danker/commands/CustomMusicCommand.java @@ -25,7 +25,7 @@ public class CustomMusicCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { return "/" + getCommandName() + " [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/" + - "goldmine/deepcaverns/dwarvenmines/crystalhollows/blazingfortress/end/park] [1-100]"; + "goldmine/deepcaverns/dwarvenmines/crystalhollows/spidersden/blazingfortress/end/park] [1-100]"; } public static String usage(ICommandSender arg0) { @@ -43,7 +43,7 @@ public class CustomMusicCommand extends CommandBase { return getListOfStringsMatchingLastWord(args, "stop", "reload", "volume"); } else if (args.length == 2) { return getListOfStringsMatchingLastWord(args, "dungeonboss", "bloodroom", "dungeon", "hub", "island", "dungeonhub", "farmingislands", "goldmine", - "deepcaverns", "dwarvenmines", "crystalhollows", "blazingfortress", "end", "park"); + "deepcaverns", "dwarvenmines", "crystalhollows", "spidersden", "blazingfortress", "end", "park"); } return null; } @@ -146,6 +146,12 @@ public class CustomMusicCommand extends CommandBase { 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 "blazingfortress": if (!CustomMusic.blazingFortress.setVolume(volume)) return; diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 65900fd..7d1020a 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -96,6 +96,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean deepCavernsMusic; public static boolean dwarvenMinesMusic; public static boolean crystalHollowsMusic; + public static boolean spidersDenMusic; public static boolean blazingFortressMusic; public static boolean endMusic; public static boolean parkMusic; @@ -118,7 +119,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + "gianthp/hidepetcandy/customcolorednames/endoffarmalert/gemstonelore/crystalhollowwaypoints/crystalautowaypoints/" + "autoacceptreparty/dungeonbossmusic/bloodroommusic/dungeonmusic/hubmusic/islandmusic/dungeonhubmusic/" + - "farmingislandsmusic/goldminemusic/deepcavernsmusic/crystalhollowsmusic/blazingfortressmusic/endmusic/" + + "farmingislandsmusic/goldminemusic/deepcavernsmusic/crystalhollowsmusic/spidersdenmusic/blazingfortressmusic/endmusic/" + "parkmusic/list>"; } @@ -151,7 +152,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert", "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "autoacceptreparty", "hubmusic", "islandmusic", "dungeonhubmusic", "farmingislandsmusic", "goldminemusic", - "deepcavernsmusic", "dwarvenminesmusic", "crystalhollowsmusic", "blazingfortressmusic", + "deepcavernsmusic", "dwarvenminesmusic", "crystalhollowsmusic", "spidersdenmusic", "blazingfortressmusic", "endmusic", "parkmusic", "list"); } return null; @@ -550,6 +551,12 @@ public class ToggleCommand extends CommandBase implements ICommand { 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": blazingFortressMusic = !blazingFortressMusic; CustomMusic.blazingFortress.stop(); @@ -635,6 +642,7 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 + blazingFortressMusic + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Custom end music: " + DankersSkyblockMod.VALUE_COLOUR + endMusic + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Custom park music: " + DankersSkyblockMod.VALUE_COLOUR + parkMusic diff --git a/src/main/java/me/Danker/features/ArachneESP.java b/src/main/java/me/Danker/features/ArachneESP.java index 7e39a8f..1848a9b 100644 --- a/src/main/java/me/Danker/features/ArachneESP.java +++ b/src/main/java/me/Danker/features/ArachneESP.java @@ -30,19 +30,10 @@ public class ArachneESP { arachne = null; } - public boolean inSpidersDen(List scoreboard) { - for (String s : scoreboard) { - if (ScoreboardHandler.cleanSB(s).contains("Spider's 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; diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java index 16fef34..4891fe3 100644 --- a/src/main/java/me/Danker/features/CustomMusic.java +++ b/src/main/java/me/Danker/features/CustomMusic.java @@ -49,6 +49,8 @@ public class CustomMusic { public static int dwarvenMinesVolume; public static Song crystalHollows; public static int crystalHollowsVolume; + public static Song spidersDen; + public static int spidersDenVolume; public static Song blazingFortress; public static int blazingFortressVolume; public static Song end; @@ -114,6 +116,9 @@ public class CustomMusic { case "Crystal Hollows": if (ToggleCommand.crystalHollowsMusic) crystalHollows.start(); break; + case "Spider's Den": + if (ToggleCommand.spidersDenMusic) spidersDen.start(); + break; case "Blazing Fortress": if (ToggleCommand.blazingFortressMusic) blazingFortress.start(); break; @@ -178,6 +183,7 @@ public class CustomMusic { deepCaverns = new Song(directory, "deepcaverns", deepCavernsVolume); dwarvenMines = new Song(directory, "dwarvenmines", dwarvenMinesVolume); crystalHollows = new Song(directory, "crystalhollows", crystalHollowsVolume); + spidersDen = new Song(directory, "spidersden", spidersDenVolume); blazingFortress = new Song(directory, "blazingfortress", blazingFortressVolume); end = new Song(directory, "end", endVolume); park = new Song(directory, "park", parkVolume); @@ -195,6 +201,7 @@ public class CustomMusic { if (deepCaverns != null) deepCaverns.stop(); if (dwarvenMines != null) dwarvenMines.stop(); if (crystalHollows != null) crystalHollows.stop(); + if (spidersDen != null) spidersDen.stop(); if (blazingFortress != null) blazingFortress.stop(); if (end != null) end.stop(); if (park != null) park.stop(); diff --git a/src/main/java/me/Danker/gui/CustomMusicGui.java b/src/main/java/me/Danker/gui/CustomMusicGui.java index 3e634bf..83bed09 100644 --- a/src/main/java/me/Danker/gui/CustomMusicGui.java +++ b/src/main/java/me/Danker/gui/CustomMusicGui.java @@ -29,6 +29,7 @@ public class CustomMusicGui extends GuiScreen { private GuiButton deepCavernsMusic; private GuiButton dwarvenMinesMusic; private GuiButton crystalHollowsMusic; + private GuiButton spidersDenMusic; private GuiButton blazingFortressMusic; private GuiButton endMusic; private GuiButton parkMusic; @@ -65,9 +66,10 @@ public class CustomMusicGui extends GuiScreen { 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)); - blazingFortressMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Custom Blazing Fortress Music: " + Utils.getColouredBoolean(ToggleCommand.blazingFortressMusic)); - endMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Custom End Music: " + Utils.getColouredBoolean(ToggleCommand.endMusic)); - parkMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Custom Park Music: " + Utils.getColouredBoolean(ToggleCommand.parkMusic)); + spidersDenMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Custom Spider's Den Music: " + Utils.getColouredBoolean(ToggleCommand.spidersDenMusic)); + blazingFortressMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Custom Blazing Fortress Music: " + Utils.getColouredBoolean(ToggleCommand.blazingFortressMusic)); + 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: @@ -85,8 +87,13 @@ public class CustomMusicGui extends GuiScreen { this.buttonList.add(deepCavernsMusic); this.buttonList.add(dwarvenMinesMusic); this.buttonList.add(crystalHollowsMusic); + this.buttonList.add(spidersDenMusic); this.buttonList.add(blazingFortressMusic); this.buttonList.add(endMusic); + this.buttonList.add(nextPage); + this.buttonList.add(backPage); + break; + case 3: this.buttonList.add(parkMusic); this.buttonList.add(backPage); break; @@ -164,6 +171,11 @@ public class CustomMusicGui extends GuiScreen { 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 == blazingFortressMusic) { ToggleCommand.blazingFortressMusic = !ToggleCommand.blazingFortressMusic; CustomMusic.blazingFortress.stop(); diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index cfee6b2..98368e1 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -270,6 +270,7 @@ public class ConfigHandler { 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.blazingFortressMusic = initBoolean("toggles", "BlazingFortressMusic", false); ToggleCommand.endMusic = initBoolean("toggles", "Music", false); ToggleCommand.parkMusic = initBoolean("toggles", "Music", false); @@ -285,6 +286,7 @@ public class ConfigHandler { 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.blazingFortressVolume = initInt("music", "BlazingFortressVolume", 50); CustomMusic.endVolume = initInt("music", "EndVolume", 50); CustomMusic.parkVolume = initInt("music", "ParkVolume", 50); -- cgit From 0707ac473037146819c5a43c808b6ee41f014a63 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Mon, 6 Sep 2021 22:16:11 -0400 Subject: Add ability cooldown display --- README.md | 5 +- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 6 ++ src/main/java/me/Danker/commands/MoveCommand.java | 13 +++- src/main/java/me/Danker/commands/ScaleCommand.java | 11 ++- .../java/me/Danker/commands/ToggleCommand.java | 11 ++- .../java/me/Danker/features/AbilityCooldowns.java | 81 ++++++++++++++++++++++ .../features/puzzlesolvers/TeleportPadSolver.java | 45 ++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 13 +++- src/main/java/me/Danker/gui/EditLocationsGui.java | 16 +++++ .../java/me/Danker/handlers/ConfigHandler.java | 8 ++- src/main/java/me/Danker/utils/Utils.java | 42 +++++++++++ 12 files changed, 239 insertions(+), 13 deletions(-) create mode 100644 src/main/java/me/Danker/features/AbilityCooldowns.java create mode 100644 src/main/java/me/Danker/features/puzzlesolvers/TeleportPadSolver.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 69c7aaf..4efae05 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Discord Server: https://discord.gg/QsEkNQS - Hide pet candy in pet tooltip - Custom name colors - Crystal Hollows waypoints (with SkyblockExtras support) +- Ability cooldowns display ## Commands - /dhelp - Returns this message in-game. @@ -69,8 +70,8 @@ Discord Server: https://discord.gg/QsEkNQS - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. - /display [winter/festival/spooky/f(1-7)/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. -- /move - Moves text display to specified X and Y coordinates. -- /scale - Scales text display to a specified multipler between 0.1x and 10x. +- /move - Moves text display to specified X and Y coordinates. +- /scale - Scales text display to a specified multipler between 0.1x and 10x. - /slayer [player] - Uses API to get slayer xp of a person. If no name is provided, it checks yours. - /skill [player] - Uses API to get skill levels of a person. If no name is provided, it checks yours. - /lobbyskills - Uses API to find the average skills of the lobby, as well the three players with the highest skill average. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index d1b797f..b0e0de0 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -127,6 +127,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new HideTooltipsInExperiments()); MinecraftForge.EVENT_BUS.register(new HighlightSkeletonMasters()); MinecraftForge.EVENT_BUS.register(new IceWalkSolver()); + MinecraftForge.EVENT_BUS.register(new AbilityCooldowns()); MinecraftForge.EVENT_BUS.register(new LividSolver()); MinecraftForge.EVENT_BUS.register(new LowHealthNotifications()); MinecraftForge.EVENT_BUS.register(new NecronNotifications()); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index d6b92eb..0f3b527 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -110,6 +110,7 @@ public class DankerGuiCommand extends CommandBase { debug.append("[crystalhollowwaypoints][").append(ToggleCommand.crystalHollowWaypoints).append("]\n"); debug.append("[crystalautowaypoints][").append(ToggleCommand.crystalAutoWaypoints).append("]\n"); debug.append("[autoacceptreparty][").append(ToggleCommand.autoAcceptReparty).append("]\n"); + debug.append("[abilitycooldowns][").append(ToggleCommand.abilityCooldowns).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"); @@ -122,6 +123,11 @@ 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("# Other Settings\n"); debug.append("[Current Display][").append(LootDisplay.display).append("]\n"); debug.append("[Auto Display][").append(LootDisplay.auto).append("]\n"); diff --git a/src/main/java/me/Danker/commands/MoveCommand.java b/src/main/java/me/Danker/commands/MoveCommand.java index b17794c..a43d09b 100644 --- a/src/main/java/me/Danker/commands/MoveCommand.java +++ b/src/main/java/me/Danker/commands/MoveCommand.java @@ -25,6 +25,7 @@ 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}; @Override public String getCommandName() { @@ -33,7 +34,8 @@ public class MoveCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " "; + return "/" + getCommandName() + " "; } public static String usage(ICommandSender arg0) { @@ -50,7 +52,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"); } return null; } @@ -149,6 +151,13 @@ 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; default: player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0))); } diff --git a/src/main/java/me/Danker/commands/ScaleCommand.java b/src/main/java/me/Danker/commands/ScaleCommand.java index def0e57..b38d57e 100644 --- a/src/main/java/me/Danker/commands/ScaleCommand.java +++ b/src/main/java/me/Danker/commands/ScaleCommand.java @@ -25,6 +25,7 @@ public class ScaleCommand extends CommandBase { public static double golemTimerScale; public static double teammatesInRadiusScale; public static double giantHPScale; + public static double abilityCooldownsScale; @Override public String getCommandName() { @@ -33,7 +34,8 @@ public class ScaleCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " "; + return "/" + getCommandName() + " "; } public static String usage(ICommandSender arg0) { @@ -50,7 +52,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"); } return null; } @@ -131,6 +133,11 @@ 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; default: player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0))); } diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 7d1020a..0255915 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -45,6 +45,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean crystalHollowWaypoints; public static boolean crystalAutoWaypoints; public static boolean autoAcceptReparty; + public static boolean abilityCooldowns; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -118,7 +119,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "ultrasequencer/chronomatron/superpairs/hidetooltipsinaddons/pickblock/" + "melodytooltips/highlightslayers/highlightarachne/highlightskeletonmasters/teammatesinradius/" + "gianthp/hidepetcandy/customcolorednames/endoffarmalert/gemstonelore/crystalhollowwaypoints/crystalautowaypoints/" + - "autoacceptreparty/dungeonbossmusic/bloodroommusic/dungeonmusic/hubmusic/islandmusic/dungeonhubmusic/" + + "autoacceptreparty/abilitycooldowns/dungeonbossmusic/bloodroommusic/dungeonmusic/hubmusic/islandmusic/dungeonhubmusic/" + "farmingislandsmusic/goldminemusic/deepcavernsmusic/crystalhollowsmusic/spidersdenmusic/blazingfortressmusic/endmusic/" + "parkmusic/list>"; } @@ -151,7 +152,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "highlightskeletonmasters", "dungeonbossmusic", "bloodroommusic", "dungeonmusic", "teammatesinradius", "gianthp", "hidepetcandy", "customcolorednames", "endoffarmalert", "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "autoacceptreparty", - "hubmusic", "islandmusic", "dungeonhubmusic", "farmingislandsmusic", "goldminemusic", + "itemcooldowns", "hubmusic", "islandmusic", "dungeonhubmusic", "farmingislandsmusic", "goldminemusic", "deepcavernsmusic", "dwarvenminesmusic", "crystalhollowsmusic", "spidersdenmusic", "blazingfortressmusic", "endmusic", "parkmusic", "list"); } @@ -485,6 +486,11 @@ public class ToggleCommand extends CommandBase implements ICommand { 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; CustomMusic.dungeonboss.stop(); @@ -631,6 +637,7 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 + "\n" + 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..ed6767e --- /dev/null +++ b/src/main/java/me/Danker/features/AbilityCooldowns.java @@ -0,0 +1,81 @@ +package me.Danker.features; + +import me.Danker.commands.MoveCommand; +import me.Danker.commands.ScaleCommand; +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.minecraft.util.StringUtils; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.ArrayList; +import java.util.List; + +public class AbilityCooldowns { + + List cooldowns = new ArrayList<>(); + + @SubscribeEvent(priority = EventPriority.LOW) + public void onChat(ClientChatReceivedEvent event) { + if (!Utils.inSkyblock || event.type != 2) return; + + 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))); + } + } + } + + @SubscribeEvent + public void renderPlayerInfo(RenderOverlayEvent event) { + if (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); + } + } + + public static class Ability { + + public final String ability; + private final long cooldown; + + public Ability(String ability, int cooldown) { + this.ability = ability; + this.cooldown = 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/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 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/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index f2d3bf3..7f407a6 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -23,9 +23,9 @@ import java.util.List; public class DankerGui extends GuiScreen { - private int page; - private List allButtons = new ArrayList<>(); - private List foundButtons = new ArrayList<>(); + private final int page; + private final List allButtons = new ArrayList<>(); + private final List foundButtons = new ArrayList<>(); String initSearchText; private GuiButton closeGUI; @@ -71,6 +71,7 @@ public class DankerGui extends GuiScreen { private GuiButton endOfFarmAlert; private GuiButton gemstoneLore; private GuiButton autoAcceptReparty; + private GuiButton abilityCooldown; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -163,6 +164,7 @@ public class DankerGui extends GuiScreen { 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."); allButtons.clear(); allButtons.add(changeDisplay); @@ -213,6 +215,7 @@ public class DankerGui extends GuiScreen { allButtons.add(endOfFarmAlert); allButtons.add(gemstoneLore); allButtons.add(autoAcceptReparty); + allButtons.add(abilityCooldown); search.setText(initSearchText); search.setVisible(true); @@ -473,6 +476,10 @@ public class DankerGui extends GuiScreen { 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); } } diff --git a/src/main/java/me/Danker/gui/EditLocationsGui.java b/src/main/java/me/Danker/gui/EditLocationsGui.java index fed6ee9..e24de8b 100644 --- a/src/main/java/me/Danker/gui/EditLocationsGui.java +++ b/src/main/java/me/Danker/gui/EditLocationsGui.java @@ -31,6 +31,7 @@ public class EditLocationsGui extends GuiScreen { private LocationButton golemTimer; private LocationButton teammatesInRadius; private LocationButton giantHP; + private LocationButton abilityCooldown; @Override public boolean doesGuiPauseGame() { @@ -99,6 +100,9 @@ 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"; 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 +116,7 @@ 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); this.buttonList.add(coords); this.buttonList.add(dungeonTimer); @@ -125,6 +130,7 @@ public class EditLocationsGui extends GuiScreen { this.buttonList.add(golemTimer); this.buttonList.add(teammatesInRadius); this.buttonList.add(giantHP); + this.buttonList.add(abilityCooldown); } @Override @@ -234,6 +240,12 @@ 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; } this.buttonList.clear(); initGui(); @@ -270,6 +282,8 @@ public class EditLocationsGui extends GuiScreen { moving = "teammatesInRadius"; } else if (button == giantHP) { moving = "giantHP"; + } else if (button == abilityCooldown) { + moving = "abilityCooldown"; } } } @@ -302,6 +316,8 @@ 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]); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 5323202..9195184 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -217,8 +217,9 @@ public class ConfigHandler { ToggleCommand.endOfFarmAlert = initBoolean("toggles", "EndOfFarmAlert", false); ToggleCommand.gemstoneLore = initBoolean("toggles", "GemstoneLore", false); ToggleCommand.crystalHollowWaypoints = initBoolean("toggles", "CrystalHollowWaypoints", false); - ToggleCommand.crystalAutoWaypoints = initBoolean("toggles", "CrystalAutoWaypoints", true); + ToggleCommand.crystalAutoWaypoints = initBoolean("toggles", "CrystalAutoWaypoints", true); // enabled by default ToggleCommand.autoAcceptReparty = initBoolean("toggles", "AutoAcceptReparty", false); + ToggleCommand.abilityCooldowns = initBoolean("toggles", "AbilityCooldowns", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -531,6 +532,8 @@ 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); // Scales ScaleCommand.coordsScale = initDouble("scales", "coordsScale", 1); @@ -545,6 +548,7 @@ 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); // Skills DankersSkyblockMod.farmingLevel = initInt("skills", "farming", -1); @@ -559,7 +563,7 @@ public class ConfigHandler { // 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()); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 71fc4ba..f7ebad6 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -9,6 +9,7 @@ import me.Danker.handlers.ScoreboardHandler; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.network.NetworkPlayerInfo; +import net.minecraft.client.settings.GameSettings; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItemFrame; import net.minecraft.entity.player.EntityPlayer; @@ -421,4 +422,45 @@ public class Utils { System.out.println("Refreshed DSM repo at " + System.currentTimeMillis()); } + public static int getCooldownFromAbility(String ability) { + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + boolean foundAbility = false; + + List 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 tooltip = item.getTooltip(player, false); + + for (String line : tooltip) { + System.out.println(line); + if (line.contains(EnumChatFormatting.GOLD + "Ability: ")) { + 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; + } + } -- cgit From fcc9c2d230244d261fe8b6215e0ed4453394b929 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sun, 12 Sep 2021 00:08:18 -0400 Subject: Add adding waypoints --- .../me/Danker/gui/CrystalHollowAddWaypointGui.java | 118 +++++++++++++++++++++ .../Danker/gui/CrystalHollowWaypointActionGui.java | 7 ++ .../me/Danker/gui/CrystalHollowWaypointsGui.java | 9 +- 3 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/Danker/gui/CrystalHollowAddWaypointGui.java (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/gui/CrystalHollowAddWaypointGui.java b/src/main/java/me/Danker/gui/CrystalHollowAddWaypointGui.java new file mode 100644 index 0000000..7bb26cf --- /dev/null +++ b/src/main/java/me/Danker/gui/CrystalHollowAddWaypointGui.java @@ -0,0 +1,118 @@ +package me.Danker.gui; + +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/CrystalHollowWaypointActionGui.java b/src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java index d7f598d..1575c18 100644 --- a/src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java +++ b/src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java @@ -2,6 +2,7 @@ package me.Danker.gui; import me.Danker.DankersSkyblockMod; import me.Danker.features.CrystalHollowWaypoints; +import me.Danker.handlers.TextRenderer; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; @@ -59,6 +60,12 @@ public class CrystalHollowWaypointActionGui extends GuiScreen { public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawDefaultBackground(); super.drawScreen(mouseX, mouseY, partialTicks); + + CrystalHollowWaypoints.Waypoint waypoint = CrystalHollowWaypoints.waypoints.get(id); + + String waypointText = waypoint.location + " @ " + waypoint.getPos(); + int pageWidth = mc.fontRendererObj.getStringWidth(waypointText); + new TextRenderer(mc, waypointText, width / 2 - pageWidth / 2, 10, 1D); } @Override diff --git a/src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java index 392f16b..de20cf1 100644 --- a/src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java +++ b/src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java @@ -18,14 +18,15 @@ import java.util.List; public class CrystalHollowWaypointsGui extends GuiScreen { - private int page; - private List allButtons = new ArrayList<>(); + private final int page; + private final List 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; @@ -51,10 +52,12 @@ public class CrystalHollowWaypointsGui extends GuiScreen { 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."); allButtons.clear(); + allButtons.add(add); allButtons.add(crystalHollowWaypoints); allButtons.add(crystalAutoWaypoints); for (int i = 0; i < CrystalHollowWaypoints.waypoints.size(); i++) { @@ -123,6 +126,8 @@ public class CrystalHollowWaypointsGui extends GuiScreen { 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); -- cgit From 871e4e7b1257ceb459cd78b33c9f4b107a8ab9bb Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Wed, 24 Nov 2021 17:48:30 -0500 Subject: Re-add blocking click features Add blocking starting wrong slayer quest Add block placing flower weapons Add blocking misclicks in solvers Add F7 arrow terminal solver (Source: https://cdn.discordapp.com/attachments/823769568933576764/906101631861526559/unknown.png) --- README.md | 4 +- src/main/java/me/Danker/DankersSkyblockMod.java | 8 + .../me/Danker/commands/BlockSlayerCommand.java | 105 +++++++++++++ src/main/java/me/Danker/commands/DHelpCommand.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 3 + .../java/me/Danker/commands/ToggleCommand.java | 43 +++--- .../me/Danker/features/BlockPlacingFlowers.java | 45 ++++++ .../java/me/Danker/features/BlockWrongSlayer.java | 42 ++++++ .../puzzlesolvers/ArrowTerminalSolver.java | 55 +++++++ .../puzzlesolvers/BlockWrongTerminalClicks.java | 112 ++++++++++++++ .../features/puzzlesolvers/ChronomatronSolver.java | 17 ++- .../puzzlesolvers/UltrasequencerSolver.java | 24 +++ src/main/java/me/Danker/gui/DankerGui.java | 27 +++- src/main/java/me/Danker/gui/OnlySlayerGui.java | 162 +++++++++++++++++++++ src/main/java/me/Danker/gui/PuzzleSolversGui.java | 20 ++- .../java/me/Danker/handlers/ConfigHandler.java | 11 ++ 16 files changed, 649 insertions(+), 30 deletions(-) create mode 100644 src/main/java/me/Danker/commands/BlockSlayerCommand.java create mode 100644 src/main/java/me/Danker/features/BlockPlacingFlowers.java create mode 100644 src/main/java/me/Danker/features/BlockWrongSlayer.java create mode 100644 src/main/java/me/Danker/features/puzzlesolvers/ArrowTerminalSolver.java create mode 100644 src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java create mode 100644 src/main/java/me/Danker/gui/OnlySlayerGui.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index a571231..559b60e 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Discord Server: https://discord.gg/QsEkNQS - RNGesus drop alerts - Click anywhere on-screen to open Maddox - Maddox menu keybind +- Block starting other slayer quests - Slayer slain alert - Fishing, jerry fishing, fishing festival, spooky fishing trackers - Expertise kills in fishing rod lore @@ -34,7 +35,7 @@ Discord Server: https://discord.gg/QsEkNQS - Dungeons puzzle solver (Riddle, trivia, blaze, creeper, water, tic tac toe, boulder, silverfish, ice walk) - Dungeons timer (watcher, boss, deaths, and puzzle fails) - Watcher ready message -- Catacombs F7 Stage 3 solvers (Starts with letter, select all colour) +- Catacombs F7 Stage 3 solvers (Starts with letter, select all colour, ignore arrows on sea lanterns) - Find correct Livid (with graphic display of HP) - Catacombs F6 and F7 Giant HP display - Use custom music in supported locations @@ -83,6 +84,7 @@ Discord Server: https://discord.gg/QsEkNQS - /weight [player] [lily] - 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. - /importfishing - Imports your fishing stats from your latest profile to your fishing tracker using the API. - /sbplayers - Uses API to find how many players are on each Skyblock island. +- /onlyslayer <1/2/3/4/5> - /skilltracker - Text display for skill xp/hour. - /reparty - Disbands and reparties all members in the party - /fairysouls - Check the fairysouls of a player diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 7aceb20..9fb7876 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -102,10 +102,14 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(new AbilityCooldowns()); 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 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()); @@ -187,6 +191,7 @@ public class DankersSkyblockMod { 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()); @@ -429,6 +434,9 @@ public class DankersSkyblockMod { case "displaygui": mc.displayGuiScreen(new DisplayGui()); break; + case "onlyslayergui": + mc.displayGuiScreen(new OnlySlayerGui()); + break; case "editlocations": mc.displayGuiScreen(new EditLocationsGui()); break; 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..9f51be6 --- /dev/null +++ b/src/main/java/me/Danker/commands/BlockSlayerCommand.java @@ -0,0 +1,105 @@ +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() + " <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 addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return getListOfStringsMatchingLastWord(args, "zombie", "spider", "wolf", "enderman"); + } 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 "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/DHelpCommand.java b/src/main/java/me/Danker/commands/DHelpCommand.java index ea3a5e3..d960237 100644 --- a/src/main/java/me/Danker/commands/DHelpCommand.java +++ b/src/main/java/me/Danker/commands/DHelpCommand.java @@ -53,6 +53,7 @@ public class DHelpCommand extends CommandBase { 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" + diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 0f3b527..0bf82f9 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -57,6 +57,7 @@ public class DankerGuiCommand extends CommandBase { 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("[flowerweapons][").append(ToggleCommand.flowerWeaponsToggled).append("]\n"); debug.append("[sceptremessages][").append(ToggleCommand.sceptreMessages).append("]\n"); debug.append("[petcolors][").append(ToggleCommand.petColoursToggled).append("]\n"); debug.append("[dungeontimer][").append(ToggleCommand.dungeonTimerToggled).append("]\n"); @@ -92,6 +93,8 @@ public class DankerGuiCommand extends CommandBase { debug.append("[startswithterminal][").append(ToggleCommand.startsWithToggled).append("]\n"); debug.append("[selectallterminal][").append(ToggleCommand.selectAllToggled).append("]\n"); debug.append("[clickinorderterminal][").append(ToggleCommand.clickInOrderToggled).append("]\n"); + debug.append("[blockwrongterminalclicks][").append(ToggleCommand.blockWrongTerminalClicksToggled).append("]\n"); + debug.append("[itemframeonsealanterns][").append(ToggleCommand.itemFrameOnSeaLanternsToggled).append("]\n"); debug.append("[ultrasequencer][").append(ToggleCommand.ultrasequencerToggled).append("]\n"); debug.append("[chronomatron][").append(ToggleCommand.chronomatronToggled).append("]\n"); debug.append("[superpairs][").append(ToggleCommand.superpairsToggled).append("]\n"); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 0255915..321458e 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -54,12 +54,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; @@ -79,6 +79,8 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean startsWithToggled; public static boolean selectAllToggled; public static boolean clickInOrderToggled; + public static boolean blockWrongTerminalClicksToggled; + public static boolean itemFrameOnSeaLanternsToggled; // Experiments public static boolean ultrasequencerToggled; public static boolean chronomatronToggled; @@ -109,23 +111,11 @@ public class ToggleCommand extends CommandBase implements ICommand { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " "; + return "/" + getCommandName() + " "; } public static String usage(ICommandSender arg0) { - return "/toggle "; + return new ToggleCommand().getCommandUsage(arg0); } @Override @@ -137,7 +127,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public List 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", @@ -146,8 +136,8 @@ public class ToggleCommand extends CommandBase implements ICommand { "bonzotimer", "threemanpuzzle", "oruopuzzle", "blazepuzzle", "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", "customcolorednames", "endoffarmalert", @@ -219,6 +209,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); @@ -395,6 +390,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); @@ -590,6 +595,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" + @@ -619,6 +625,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" + 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 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/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/BlockWrongTerminalClicks.java b/src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java new file mode 100644 index 0000000..5176e8b --- /dev/null +++ b/src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java @@ -0,0 +1,112 @@ +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 "Navigate the maze!": + if (item.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane)) { + shouldCancel = true; + break; + } + + if (item.getItemDamage() != 0) { + shouldCancel = true; + break; + } + + boolean isValid = false; + + int slotIndex = slot.getSlotIndex(); + + if (slotIndex % 9 != 8 && slotIndex != 53) { + ItemStack itemStack = inventory.getStackInSlot(slotIndex + 1); + if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true; + } + + if (!isValid && slotIndex % 9 != 0 && slotIndex != 0) { + ItemStack itemStack = inventory.getStackInSlot(slotIndex - 1); + if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true; + } + + if (!isValid && slotIndex <= 44) { + ItemStack itemStack = inventory.getStackInSlot(slotIndex + 9); + if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true; + } + + if (!isValid && slotIndex >= 9) { + ItemStack itemStack = inventory.getStackInSlot(slotIndex - 9); + if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true; + } + + shouldCancel = !isValid; + + break; + case "Click in order!": + + if (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; + } + + 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/ChronomatronSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/ChronomatronSolver.java index 51ffd0d..52da0ec 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/ChronomatronSolver.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/ChronomatronSolver.java @@ -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,22 @@ 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))) { - chronomatronMouseClicks++; + 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); + } + } + } else if (inventory.getStackInSlot(49).getDisplayName().startsWith("§aRemember the pattern!")) { + if (event.isCancelable()) event.setCanceled(true); } } } diff --git a/src/main/java/me/Danker/features/puzzlesolvers/UltrasequencerSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/UltrasequencerSolver.java index a3a97b6..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.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; @@ -49,6 +52,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 (")) { diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 7f407a6..acd997e 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -37,6 +37,7 @@ public class DankerGui extends GuiScreen { private GuiTextField search; private GuiButton changeDisplay; + private GuiButton onlySlayer; private GuiButton puzzleSolvers; private GuiButton experimentationTableSolvers; private GuiButton skillTracker; @@ -72,6 +73,14 @@ public class DankerGui extends GuiScreen { 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; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -80,14 +89,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; @@ -117,6 +118,7 @@ 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"); @@ -149,6 +151,7 @@ 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."); bonzoTimer = new FeatureButton("Bonzo's Mask Timer: " + Utils.getColouredBoolean(ToggleCommand.bonzoTimerToggled), "Displays cooldown of Bonzo Mask ability."); @@ -168,6 +171,7 @@ public class DankerGui extends GuiScreen { allButtons.clear(); allButtons.add(changeDisplay); + allButtons.add(onlySlayer); allButtons.add(puzzleSolvers); allButtons.add(experimentationTableSolvers); allButtons.add(skillTracker); @@ -200,6 +204,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); @@ -298,6 +303,8 @@ public class DankerGui extends GuiScreen { } } else if (button == changeDisplay) { DankersSkyblockMod.guiToOpen = "displaygui"; + } else if (button == onlySlayer) { + DankersSkyblockMod.guiToOpen = "onlyslayergui"; } else if (button == puzzleSolvers) { DankersSkyblockMod.guiToOpen = "puzzlesolvers"; } else if (button == experimentationTableSolvers) { @@ -424,6 +431,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); 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..8d56156 --- /dev/null +++ b/src/main/java/me/Danker/gui/OnlySlayerGui.java @@ -0,0 +1,162 @@ +package me.Danker.gui; + +import me.Danker.DankersSkyblockMod; +import me.Danker.commands.ToggleCommand; +import me.Danker.features.BlockWrongSlayer; +import me.Danker.handlers.ConfigHandler; +import me.Danker.handlers.TextRenderer; +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; + +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 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 - 230, (int) (height * 0.4), 100, 20, "Zombie"); + spider = new GuiButton(0, width / 2 - 110, (int) (height * 0.4), 100, 20, "Spider"); + wolf = new GuiButton(0, width / 2 + 10, (int) (height * 0.4), 100, 20, "Wolf"); + enderman = new GuiButton(0, width / 2 + 130, (int) (height * 0.4), 100, 20, "Enderman"); + 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(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(); + Minecraft mc = Minecraft.getMinecraft(); + + String displayText; + if (BlockWrongSlayer.onlySlayerName.equals("")) { + displayText = "Only Allow Slayer: Off"; + } else { + displayText = "Only Allow Slayer: " + BlockWrongSlayer.onlySlayerName + " " + BlockWrongSlayer.onlySlayerNumber; + } + int displayWidth = mc.fontRendererObj.getStringWidth(displayText); + new TextRenderer(mc, displayText, width / 2 - displayWidth / 2, 10, 1D); + + super.drawScreen(mouseX, mouseY, partialTicks); + } + + @Override + public void actionPerformed(GuiButton button) { + if (button == goBack) { + DankersSkyblockMod.guiToOpen = "dankergui1"; + 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 == 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 f671f33..27233d8 100644 --- a/src/main/java/me/Danker/gui/PuzzleSolversGui.java +++ b/src/main/java/me/Danker/gui/PuzzleSolversGui.java @@ -29,6 +29,8 @@ public class PuzzleSolversGui extends GuiScreen { private GuiButton startsWith; private GuiButton selectAll; private GuiButton clickOrder; + private GuiButton blockClicks; + private GuiButton itemFrameOnSeaLanterns; public PuzzleSolversGui(int page) { this.page = page; @@ -66,7 +68,10 @@ public class PuzzleSolversGui extends GuiScreen { 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)); - + blockClicks = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Block Wrong Clicks on Terminals: " + Utils.getColouredBoolean(ToggleCommand.blockWrongTerminalClicksToggled)); + // Page 3 + itemFrameOnSeaLanterns = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Ignore Arrows On Sea Lanterns: " + Utils.getColouredBoolean(ToggleCommand.itemFrameOnSeaLanternsToggled)); + switch (page) { case 1: this.buttonList.add(riddle); @@ -85,8 +90,13 @@ public class PuzzleSolversGui extends GuiScreen { this.buttonList.add(startsWith); this.buttonList.add(selectAll); this.buttonList.add(clickOrder); + this.buttonList.add(blockClicks); + this.buttonList.add(nextPage); this.buttonList.add(backPage); break; + case 3: + this.buttonList.add(itemFrameOnSeaLanterns); + this.buttonList.add(backPage); } this.buttonList.add(goBack); } @@ -157,6 +167,14 @@ 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); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 9195184..2a765ad 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -238,6 +238,7 @@ public class ConfigHandler { ToggleCommand.necronNotificationsToggled = initBoolean("toggles", "NecronNotifications", false); ToggleCommand.bonzoTimerToggled = initBoolean("toggles", "BonzoTimer", false); ToggleCommand.swapToPickBlockToggled = initBoolean("toggles", "PickBlock", false); + ToggleCommand.flowerWeaponsToggled = initBoolean("toggles", "FlowerWeapons", false); ToggleCommand.autoSkillTrackerToggled = initBoolean("toggles", "AutoSkillTracker", false); // Puzzle Solvers ToggleCommand.threeManToggled = initBoolean("toggles", "ThreeManPuzzle", false); @@ -253,6 +254,8 @@ public class ConfigHandler { ToggleCommand.startsWithToggled = initBoolean("toggles", "StartsWithTerminal", false); ToggleCommand.selectAllToggled = initBoolean("toggles", "SelectAllTerminal", false); ToggleCommand.clickInOrderToggled = initBoolean("toggles", "ClickInOrderTerminal", 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); @@ -293,6 +296,14 @@ public class ConfigHandler { // 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 WolfTracker.wolfSvens = initInt("wolf", "svens", 0); -- cgit From c466240003b130b43c17da9e585b80380154e4c4 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Wed, 24 Nov 2021 21:58:26 -0500 Subject: Add custom alerts based on chat Also move some other stuff around --- README.md | 1 + src/main/java/me/Danker/DankersSkyblockMod.java | 25 +--- .../java/me/Danker/commands/ToggleCommand.java | 11 +- src/main/java/me/Danker/features/Alerts.java | 81 ++++++++++++ .../me/Danker/gui/CrystalHollowAddWaypointGui.java | 118 ----------------- .../Danker/gui/CrystalHollowWaypointActionGui.java | 94 ------------- .../me/Danker/gui/CrystalHollowWaypointsGui.java | 144 -------------------- src/main/java/me/Danker/gui/CustomMusicGui.java | 2 +- src/main/java/me/Danker/gui/DankerGui.java | 23 ++-- src/main/java/me/Danker/gui/DisplayGui.java | 2 +- src/main/java/me/Danker/gui/ExperimentsGui.java | 2 +- src/main/java/me/Danker/gui/OnlySlayerGui.java | 2 +- src/main/java/me/Danker/gui/PuzzleSolversGui.java | 2 +- src/main/java/me/Danker/gui/SkillTrackerGui.java | 2 +- .../java/me/Danker/gui/alerts/AlertActionGui.java | 82 ++++++++++++ .../java/me/Danker/gui/alerts/AlertAddGui.java | 130 ++++++++++++++++++ src/main/java/me/Danker/gui/alerts/AlertsGui.java | 104 +++++++++++++++ .../CrystalHollowAddWaypointGui.java | 118 +++++++++++++++++ .../CrystalHollowWaypointActionGui.java | 95 ++++++++++++++ .../CrystalHollowWaypointsGui.java | 145 +++++++++++++++++++++ .../java/me/Danker/handlers/ConfigHandler.java | 42 ++++-- 21 files changed, 821 insertions(+), 404 deletions(-) create mode 100644 src/main/java/me/Danker/features/Alerts.java delete mode 100644 src/main/java/me/Danker/gui/CrystalHollowAddWaypointGui.java delete mode 100644 src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java delete mode 100644 src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java create mode 100644 src/main/java/me/Danker/gui/alerts/AlertActionGui.java create mode 100644 src/main/java/me/Danker/gui/alerts/AlertAddGui.java create mode 100644 src/main/java/me/Danker/gui/alerts/AlertsGui.java create mode 100644 src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java create mode 100644 src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java create mode 100644 src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 559b60e..4f82ca3 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ Discord Server: https://discord.gg/QsEkNQS - Custom name colors - Crystal Hollows waypoints (with SkyblockExtras support) - Ability cooldowns display +- Custom alerts based on chat ## Commands - /dhelp - Returns this message in-game. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 9fb7876..2ad5141 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -9,6 +9,7 @@ import me.Danker.features.*; import me.Danker.features.loot.*; import me.Danker.features.puzzlesolvers.*; import me.Danker.gui.*; +import me.Danker.gui.crystalhollowwaypoints.CrystalHollowWaypointsGui; import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.PacketHandler; import me.Danker.utils.RenderUtils; @@ -101,6 +102,7 @@ public class DankersSkyblockMod { 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()); @@ -170,6 +172,8 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new WolfTracker()); MinecraftForge.EVENT_BUS.register(new ZombieTracker()); + Alerts.configFile = configDirectory + "/dsmalerts.json"; + ConfigHandler.reloadConfig(); GoldenEnchants.init(); TriviaSolver.init(); @@ -434,27 +438,6 @@ public class DankersSkyblockMod { case "displaygui": mc.displayGuiScreen(new DisplayGui()); break; - case "onlyslayergui": - mc.displayGuiScreen(new OnlySlayerGui()); - break; - case "editlocations": - mc.displayGuiScreen(new EditLocationsGui()); - break; - case "puzzlesolvers": - mc.displayGuiScreen(new PuzzleSolversGui(1)); - break; - case "experimentsolvers": - mc.displayGuiScreen(new ExperimentsGui()); - break; - case "skilltracker": - mc.displayGuiScreen(new SkillTrackerGui()); - break; - case "custommusic": - mc.displayGuiScreen(new CustomMusicGui(1)); - break; - case "crystalwaypoints": - mc.displayGuiScreen(new CrystalHollowWaypointsGui(1)); - break; case "inventory": mc.displayGuiScreen(InventoryCommand.chest); break; diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 321458e..d9ef9b3 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -46,6 +46,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean crystalAutoWaypoints; public static boolean autoAcceptReparty; public static boolean abilityCooldowns; + public static boolean alerts; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -144,7 +145,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "autoacceptreparty", "itemcooldowns", "hubmusic", "islandmusic", "dungeonhubmusic", "farmingislandsmusic", "goldminemusic", "deepcavernsmusic", "dwarvenminesmusic", "crystalhollowsmusic", "spidersdenmusic", "blazingfortressmusic", - "endmusic", "parkmusic", "list"); + "endmusic", "parkmusic", "alerts", "list"); } return null; } @@ -586,6 +587,11 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 "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" + @@ -659,7 +665,8 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Custom spider's den music: " + DankersSkyblockMod.VALUE_COLOUR + spidersDenMusic + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Custom blazing fortress music: " + DankersSkyblockMod.VALUE_COLOUR + blazingFortressMusic + "\n" + DankersSkyblockMod.TYPE_COLOUR + " Custom end music: " + DankersSkyblockMod.VALUE_COLOUR + endMusic + "\n" + - DankersSkyblockMod.TYPE_COLOUR + " Custom park music: " + DankersSkyblockMod.VALUE_COLOUR + parkMusic + DankersSkyblockMod.TYPE_COLOUR + " Custom park music: " + DankersSkyblockMod.VALUE_COLOUR + parkMusic + "\n" + + DankersSkyblockMod.TYPE_COLOUR + " Alerts: " + DankersSkyblockMod.VALUE_COLOUR + alerts )); break; default: 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..2a00fef --- /dev/null +++ b/src/main/java/me/Danker/features/Alerts.java @@ -0,0 +1,81 @@ +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.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class Alerts { + + public static List alerts = new ArrayList<>(); + public static String configFile; + + @SubscribeEvent + public void onChat(ClientChatReceivedEvent event) { + if (!ToggleCommand.alerts || !Utils.inSkyblock || event.type == 2) return; + + String message = StringUtils.stripControlCodes(event.message.getUnformattedText()); + + for (Alert alert : alerts) { + if (!alert.toggled) 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); + 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 message; + public String alert; + public boolean toggled; + + public Alert(String mode, String message, String alert, boolean toggled) { + this.mode = mode; + this.message = message; + this.alert = alert; + this.toggled = toggled; + } + + public void toggle() { + toggled = !toggled; + } + + } + +} diff --git a/src/main/java/me/Danker/gui/CrystalHollowAddWaypointGui.java b/src/main/java/me/Danker/gui/CrystalHollowAddWaypointGui.java deleted file mode 100644 index 7bb26cf..0000000 --- a/src/main/java/me/Danker/gui/CrystalHollowAddWaypointGui.java +++ /dev/null @@ -1,118 +0,0 @@ -package me.Danker.gui; - -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/CrystalHollowWaypointActionGui.java b/src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java deleted file mode 100644 index 1575c18..0000000 --- a/src/main/java/me/Danker/gui/CrystalHollowWaypointActionGui.java +++ /dev/null @@ -1,94 +0,0 @@ -package me.Danker.gui; - -import me.Danker.DankersSkyblockMod; -import me.Danker.features.CrystalHollowWaypoints; -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.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); - - String waypointText = waypoint.location + " @ " + waypoint.getPos(); - int pageWidth = mc.fontRendererObj.getStringWidth(waypointText); - new TextRenderer(mc, waypointText, width / 2 - pageWidth / 2, 10, 1D); - } - - @Override - public void actionPerformed(GuiButton button) { - CrystalHollowWaypoints.Waypoint waypoint = CrystalHollowWaypoints.waypoints.get(id); - EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; - if (button == goBack) { - 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/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java deleted file mode 100644 index de20cf1..0000000 --- a/src/main/java/me/Danker/gui/CrystalHollowWaypointsGui.java +++ /dev/null @@ -1,144 +0,0 @@ -package me.Danker.gui; - -import me.Danker.DankersSkyblockMod; -import me.Danker.commands.ToggleCommand; -import me.Danker.features.CrystalHollowWaypoints; -import me.Danker.gui.buttons.FeatureButton; -import me.Danker.handlers.ConfigHandler; -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.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 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; - - 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."); - - allButtons.clear(); - allButtons.add(add); - allButtons.add(crystalHollowWaypoints); - allButtons.add(crystalAutoWaypoints); - 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); - int pageWidth = mc.fontRendererObj.getStringWidth(pageText); - new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 10, 1D); - } - - @Override - public void actionPerformed(GuiButton button) { - EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; - if (button == goBack) { - DankersSkyblockMod.guiToOpen = "dankergui1"; - } 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 { - mc.displayGuiScreen(new CrystalHollowWaypointActionGui(button.id)); - } - } - -} diff --git a/src/main/java/me/Danker/gui/CustomMusicGui.java b/src/main/java/me/Danker/gui/CustomMusicGui.java index 83bed09..6695b9a 100644 --- a/src/main/java/me/Danker/gui/CustomMusicGui.java +++ b/src/main/java/me/Danker/gui/CustomMusicGui.java @@ -111,7 +111,7 @@ 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) { diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index acd997e..2a081e1 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -2,7 +2,9 @@ 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.Utils; @@ -43,6 +45,7 @@ public class DankerGui extends GuiScreen { private GuiButton skillTracker; private GuiButton customMusic; private GuiButton crystalHollowWaypoints; + private GuiButton alerts; // Toggles private GuiButton gparty; private GuiButton coords; @@ -124,6 +127,7 @@ public class DankerGui extends GuiScreen { 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."); @@ -177,6 +181,7 @@ public class DankerGui extends GuiScreen { allButtons.add(skillTracker); allButtons.add(customMusic); allButtons.add(crystalHollowWaypoints); + allButtons.add(alerts); allButtons.add(outlineText); allButtons.add(pickBlock); allButtons.add(coords); @@ -288,7 +293,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")); @@ -302,19 +307,21 @@ public class DankerGui extends GuiScreen { ex.printStackTrace(); } } else if (button == changeDisplay) { - DankersSkyblockMod.guiToOpen = "displaygui"; + mc.displayGuiScreen(new DisplayGui()); } else if (button == onlySlayer) { - DankersSkyblockMod.guiToOpen = "onlyslayergui"; + 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) { - DankersSkyblockMod.guiToOpen = "crystalwaypoints"; + 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); diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index e5a6641..c6b1381 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -118,7 +118,7 @@ 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); diff --git a/src/main/java/me/Danker/gui/ExperimentsGui.java b/src/main/java/me/Danker/gui/ExperimentsGui.java index c3f4f47..3cc4929 100644 --- a/src/main/java/me/Danker/gui/ExperimentsGui.java +++ b/src/main/java/me/Danker/gui/ExperimentsGui.java @@ -52,7 +52,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 index 8d56156..c203b8a 100644 --- a/src/main/java/me/Danker/gui/OnlySlayerGui.java +++ b/src/main/java/me/Danker/gui/OnlySlayerGui.java @@ -106,7 +106,7 @@ public class OnlySlayerGui extends GuiScreen { @Override public void actionPerformed(GuiButton button) { if (button == goBack) { - DankersSkyblockMod.guiToOpen = "dankergui1"; + mc.displayGuiScreen(new DankerGui(1, "")); return; } else if (button == off) { BlockWrongSlayer.onlySlayerName = ""; diff --git a/src/main/java/me/Danker/gui/PuzzleSolversGui.java b/src/main/java/me/Danker/gui/PuzzleSolversGui.java index 27233d8..3356ead 100644 --- a/src/main/java/me/Danker/gui/PuzzleSolversGui.java +++ b/src/main/java/me/Danker/gui/PuzzleSolversGui.java @@ -110,7 +110,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) { diff --git a/src/main/java/me/Danker/gui/SkillTrackerGui.java b/src/main/java/me/Danker/gui/SkillTrackerGui.java index fb7a7c9..290310f 100644 --- a/src/main/java/me/Danker/gui/SkillTrackerGui.java +++ b/src/main/java/me/Danker/gui/SkillTrackerGui.java @@ -67,7 +67,7 @@ public class SkillTrackerGui extends GuiScreen { @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/alerts/AlertActionGui.java b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java new file mode 100644 index 0000000..06dfd91 --- /dev/null +++ b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java @@ -0,0 +1,82 @@ +package me.Danker.gui.alerts; + +import me.Danker.features.Alerts; +import me.Danker.handlers.TextRenderer; +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 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)); + edit = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Edit >"); + delete = new GuiButton(0, width / 2 - 100, (int) (height * 0.8), EnumChatFormatting.RED + "Delete Alert"); + + this.buttonList.add(toggle); + 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); + + 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 == 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); + } + +} 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..9014ea1 --- /dev/null +++ b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java @@ -0,0 +1,130 @@ +package me.Danker.gui.alerts; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import me.Danker.features.Alerts; +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.minecraftforge.fml.client.config.GuiCheckBox; + +import java.io.FileWriter; +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 GuiButton startsWith; + private GuiButton contains; + private GuiButton endsWith; + private GuiTextField message; + private GuiTextField alert; + 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"); + message = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.3), 200, 20); + alert = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.4), 200, 20); + toggled = new GuiCheckBox(0, width / 2 - 26, (int) (height * 0.5), "Toggled", true); + add = new GuiButton(0, width / 2 - 25, (int) (height * 0.7), 50, 20, "Add"); + + if (editing) { + mode = base.mode; + message.setText(base.message); + alert.setText(base.alert); + 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(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(); + + new TextRenderer(mc, "Mode: " + mode, width / 2 - 35, (int) (height * 0.15), 1D); + new TextRenderer(mc, "Trigger:", width / 2 - 145, (int) (height * 0.32), 1D); + new TextRenderer(mc, "Alert Text:", width / 2 - 158, (int) (height * 0.42), 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 == add) { + Alerts.alerts.add(new Alerts.Alert(mode, message.getText(), alert.getText(), toggled.isChecked())); + if (editing) Alerts.alerts.remove(id); + 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..3ccd869 --- /dev/null +++ b/src/main/java/me/Danker/gui/alerts/AlertsGui.java @@ -0,0 +1,104 @@ +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.handlers.TextRenderer; +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 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); + int pageWidth = mc.fontRendererObj.getStringWidth(pageText); + new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 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/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..f792892 --- /dev/null +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java @@ -0,0 +1,95 @@ +package me.Danker.gui.crystalhollowwaypoints; + +import me.Danker.DankersSkyblockMod; +import me.Danker.features.CrystalHollowWaypoints; +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.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); + + String waypointText = waypoint.location + " @ " + waypoint.getPos(); + int pageWidth = mc.fontRendererObj.getStringWidth(waypointText); + new TextRenderer(mc, waypointText, width / 2 - pageWidth / 2, 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..a3d0452 --- /dev/null +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java @@ -0,0 +1,145 @@ +package me.Danker.gui.crystalhollowwaypoints; + +import me.Danker.DankersSkyblockMod; +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.handlers.TextRenderer; +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 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; + + 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."); + + allButtons.clear(); + allButtons.add(add); + allButtons.add(crystalHollowWaypoints); + allButtons.add(crystalAutoWaypoints); + 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); + int pageWidth = mc.fontRendererObj.getStringWidth(pageText); + new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 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 { + mc.displayGuiScreen(new CrystalHollowWaypointActionGui(button.id)); + } + } + +} diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 2a765ad..28f22fe 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -1,5 +1,8 @@ package me.Danker.handlers; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; import me.Danker.DankersSkyblockMod; import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; @@ -13,7 +16,9 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.Configuration; -import java.io.File; +import java.io.*; +import java.util.ArrayList; +import java.util.Arrays; public class ConfigHandler { public static Configuration config; @@ -220,15 +225,6 @@ public class ConfigHandler { ToggleCommand.crystalAutoWaypoints = initBoolean("toggles", "CrystalAutoWaypoints", true); // enabled by default ToggleCommand.autoAcceptReparty = initBoolean("toggles", "AutoAcceptReparty", false); ToggleCommand.abilityCooldowns = initBoolean("toggles", "AbilityCooldowns", 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.dungeonTimerToggled = initBoolean("toggles", "DungeonTimer", false); ToggleCommand.lowHealthNotifyToggled = initBoolean("toggles", "LowHealthNotify", false); ToggleCommand.lividSolverToggled = initBoolean("toggles", "LividSolver", false); @@ -239,7 +235,16 @@ public class ConfigHandler { ToggleCommand.bonzoTimerToggled = initBoolean("toggles", "BonzoTimer", false); ToggleCommand.swapToPickBlockToggled = initBoolean("toggles", "PickBlock", false); ToggleCommand.flowerWeaponsToggled = initBoolean("toggles", "FlowerWeapons", false); - ToggleCommand.autoSkillTrackerToggled = initBoolean("toggles", "AutoSkillTracker", false); + ToggleCommand.autoSkillTrackerToggled = initBoolean("toggles", "AutoSkillTracker", false); + ToggleCommand.alerts = initBoolean("toggles", "Alerts", 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); @@ -616,6 +621,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(); + } } } -- cgit From aaba0391a06ac4546d7ec5ce684534c35d9cbc82 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 23 Dec 2021 01:35:10 -0500 Subject: Add dungeon score display --- README.md | 5 +- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 70 +------ src/main/java/me/Danker/commands/MoveCommand.java | 13 +- src/main/java/me/Danker/commands/ScaleCommand.java | 10 +- .../java/me/Danker/commands/ToggleCommand.java | 11 +- src/main/java/me/Danker/features/DungeonScore.java | 224 +++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 + src/main/java/me/Danker/gui/EditLocationsGui.java | 25 +++ .../java/me/Danker/handlers/ConfigHandler.java | 4 + 10 files changed, 293 insertions(+), 77 deletions(-) create mode 100644 src/main/java/me/Danker/features/DungeonScore.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 4f82ca3..4b4802c 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ Discord Server: https://discord.gg/QsEkNQS - Crystal Hollows waypoints (with SkyblockExtras support) - Ability cooldowns display - Custom alerts based on chat +- Predicted dungeon score display ## Commands - /dhelp - Returns this message in-game. @@ -72,8 +73,8 @@ Discord Server: https://discord.gg/QsEkNQS - /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. - /display [winter/festival/spooky/f(1-7)/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. -- /move - Moves text display to specified X and Y coordinates. -- /scale - Scales text display to a specified multipler between 0.1x and 10x. +- /move - Moves text display to specified X and Y coordinates. +- /scale - Scales text display to a specified multipler between 0.1x and 10x. - /slayer [player] - Uses API to get slayer xp of a person. If no name is provided, it checks yours. - /skill [player] - Uses API to get skill levels of a person. If no name is provided, it checks yours. - /lobbyskills - Uses API to find the average skills of the lobby, as well the three players with the highest skill average. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 2ad5141..91f561a 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -121,6 +121,7 @@ public class DankersSkyblockMod { 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()); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 0bf82f9..14041d1 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -48,75 +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("[flowerweapons][").append(ToggleCommand.flowerWeaponsToggled).append("]\n"); - debug.append("[sceptremessages][").append(ToggleCommand.sceptreMessages).append("]\n"); - debug.append("[petcolors][").append(ToggleCommand.petColoursToggled).append("]\n"); - debug.append("[dungeontimer][").append(ToggleCommand.dungeonTimerToggled).append("]\n"); - debug.append("[golemalerts][").append(ToggleCommand.golemAlertToggled).append("]\n"); - debug.append("[expertiselore][").append(ToggleCommand.expertiseLoreToggled).append("]\n"); - debug.append("[skill50display][").append(ToggleCommand.skill50DisplayToggled).append("]\n"); - debug.append("[outlinetext][").append(ToggleCommand.outlineTextToggled).append("]\n"); - debug.append("[midasstaffmessages][").append(ToggleCommand.midasStaffMessages).append("]\n"); - debug.append("[implosionmessages][").append(ToggleCommand.implosionMessages).append("]\n"); - debug.append("[healmessages][").append(ToggleCommand.healMessages).append("]\n"); - debug.append("[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("[creeperlines][").append(ToggleCommand.creeperLinesToggled).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("[blockwrongterminalclicks][").append(ToggleCommand.blockWrongTerminalClicksToggled).append("]\n"); - debug.append("[itemframeonsealanterns][").append(ToggleCommand.itemFrameOnSeaLanternsToggled).append("]\n"); - debug.append("[ultrasequencer][").append(ToggleCommand.ultrasequencerToggled).append("]\n"); - debug.append("[chronomatron][").append(ToggleCommand.chronomatronToggled).append("]\n"); - debug.append("[superpairs][").append(ToggleCommand.superpairsToggled).append("]\n"); - debug.append("[hidetooltipsinaddons][").append(ToggleCommand.hideTooltipsInExperimentAddonsToggled).append("]\n"); - debug.append("[pickblock][").append(ToggleCommand.swapToPickBlockToggled).append("]\n"); - debug.append("[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("[customcolourednames][").append(ToggleCommand.customColouredNames).append("]\n"); - debug.append("[endoffarmalert][").append(ToggleCommand.endOfFarmAlert).append("]\n"); - debug.append("[gemstonelore][").append(ToggleCommand.gemstoneLore).append("]\n"); - debug.append("[crystalhollowwaypoints][").append(ToggleCommand.crystalHollowWaypoints).append("]\n"); - debug.append("[crystalautowaypoints][").append(ToggleCommand.crystalAutoWaypoints).append("]\n"); - debug.append("[autoacceptreparty][").append(ToggleCommand.autoAcceptReparty).append("]\n"); - debug.append("[abilitycooldowns][").append(ToggleCommand.abilityCooldowns).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"); @@ -131,6 +62,7 @@ public class DankerGuiCommand extends CommandBase { 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"); diff --git a/src/main/java/me/Danker/commands/MoveCommand.java b/src/main/java/me/Danker/commands/MoveCommand.java index a43d09b..5a6c6a2 100644 --- a/src/main/java/me/Danker/commands/MoveCommand.java +++ b/src/main/java/me/Danker/commands/MoveCommand.java @@ -26,6 +26,7 @@ public class MoveCommand extends CommandBase { 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() { @@ -35,7 +36,8 @@ public class MoveCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { return "/" + getCommandName() + " "; + "wateranswer/bonzotimer/golemtimer/teammatesinradius/gianthp/" + + "abilitycooldowns/dungeonscore> "; } public static String usage(ICommandSender arg0) { @@ -52,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", "abilitycooldowns"); + "gianthp", "abilitycooldowns", "dungeonscore"); } return null; } @@ -158,6 +160,13 @@ public class MoveCommand extends CommandBase { 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/ScaleCommand.java b/src/main/java/me/Danker/commands/ScaleCommand.java index b38d57e..9bb1f08 100644 --- a/src/main/java/me/Danker/commands/ScaleCommand.java +++ b/src/main/java/me/Danker/commands/ScaleCommand.java @@ -26,6 +26,7 @@ public class ScaleCommand extends CommandBase { public static double teammatesInRadiusScale; public static double giantHPScale; public static double abilityCooldownsScale; + public static double dungeonScoreScale; @Override public String getCommandName() { @@ -35,7 +36,7 @@ public class ScaleCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { return "/" + getCommandName() + " "; + "bonzotimer/golemtimer/teammatesinradius/gianthp/abilitycooldown/dungeonscore> "; } public static String usage(ICommandSender arg0) { @@ -52,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", "abilitycooldowns"); + "gianthp", "abilitycooldowns", "dungeonscore"); } return null; } @@ -138,6 +139,11 @@ public class ScaleCommand extends CommandBase { 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/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index d9ef9b3..94425c0 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -47,6 +47,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean autoAcceptReparty; public static boolean abilityCooldowns; public static boolean alerts; + public static boolean dungeonScore; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -145,7 +146,7 @@ public class ToggleCommand extends CommandBase implements ICommand { "gemstonelore", "crystalhollowwaypoints", "crystalautowaypoints", "autoacceptreparty", "itemcooldowns", "hubmusic", "islandmusic", "dungeonhubmusic", "farmingislandsmusic", "goldminemusic", "deepcavernsmusic", "dwarvenminesmusic", "crystalhollowsmusic", "spidersdenmusic", "blazingfortressmusic", - "endmusic", "parkmusic", "alerts", "list"); + "endmusic", "parkmusic", "alerts", "dungeonscore", "list"); } return null; } @@ -592,6 +593,11 @@ public class ToggleCommand extends CommandBase implements ICommand { 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" + @@ -666,7 +672,8 @@ public class ToggleCommand extends CommandBase implements ICommand { DankersSkyblockMod.TYPE_COLOUR + " Custom blazing fortress music: " + DankersSkyblockMod.VALUE_COLOUR + blazingFortressMusic + "\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 + 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/features/DungeonScore.java b/src/main/java/me/Danker/features/DungeonScore.java new file mode 100644 index 0000000..a2bc6e3 --- /dev/null +++ b/src/main/java/me/Danker/features/DungeonScore.java @@ -0,0 +1,224 @@ +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.ConfigHandler; +import me.Danker.handlers.ScoreboardHandler; +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.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; +import java.util.List; + +public class DungeonScore { + + int failedPuzzles; + 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.")) { + skillScore = MathHelper.clamp_int(skillScore - 2, 0, 100); + } + } + + @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) { + String floor = ""; + List scoreboard = ScoreboardHandler.getSidebarLines(); + for (String s : scoreboard) { + String sCleaned = ScoreboardHandler.cleanSB(s); + if (sCleaned.contains("The Catacombs (")) { + if (sCleaned.contains("F1")) { + floor = "F1"; + } else if (sCleaned.contains("F2")) { + floor = "F2"; + } else if (sCleaned.contains("F3")) { + floor = "F3"; + } else if (sCleaned.contains("F4")) { + floor = "F4"; + } else if (sCleaned.contains("F5")) { + floor = "F5"; + } else if (sCleaned.contains("F6")) { + floor = "F6"; + } else if (sCleaned.contains("F7")) { + floor = "F7"; + } + } + } + + int missingPuzzles = 0; + double openedRooms = 0; + double completedRooms = 0; + double roomScore = 0; + double secretScore = 0; + + Collection 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 (floor) { + 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 (floor.equals("F2")) time -= 120; + + int base; + switch (floor) { + 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 = 100 - 14 * (failedPuzzles + missingPuzzles); + 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; + skillScore = 100; + secrets = ""; + exploreScore = 0; + timeScore = 100; + bonusScore = 0; + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 2a081e1..15360f0 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -84,6 +84,7 @@ public class DankerGui extends GuiScreen { private GuiButton flowerWeapons; private GuiButton necronNotifications; private GuiButton bonzoTimer; + private GuiButton dungeonScore; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -172,6 +173,7 @@ public class DankerGui extends GuiScreen { 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."); allButtons.clear(); allButtons.add(changeDisplay); @@ -226,6 +228,7 @@ public class DankerGui extends GuiScreen { allButtons.add(gemstoneLore); allButtons.add(autoAcceptReparty); allButtons.add(abilityCooldown); + allButtons.add(dungeonScore); search.setText(initSearchText); search.setVisible(true); @@ -498,6 +501,10 @@ public class DankerGui extends GuiScreen { 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); } } diff --git a/src/main/java/me/Danker/gui/EditLocationsGui.java b/src/main/java/me/Danker/gui/EditLocationsGui.java index e24de8b..b7f4b02 100644 --- a/src/main/java/me/Danker/gui/EditLocationsGui.java +++ b/src/main/java/me/Danker/gui/EditLocationsGui.java @@ -32,6 +32,7 @@ public class EditLocationsGui extends GuiScreen { private LocationButton teammatesInRadius; private LocationButton giantHP; private LocationButton abilityCooldown; + private LocationButton dungeonScore; @Override public boolean doesGuiPauseGame() { @@ -104,6 +105,19 @@ public class EditLocationsGui extends GuiScreen { 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); coords = new LocationButton(MoveCommand.coordsXY[0], MoveCommand.coordsXY[1], ScaleCommand.coordsScale, NoF3Coords.COORDS_COLOUR + "74 / 14 / -26 (141.1 / 6.7)", null, null); @@ -117,6 +131,7 @@ public class EditLocationsGui extends GuiScreen { 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); @@ -131,6 +146,7 @@ public class EditLocationsGui extends GuiScreen { this.buttonList.add(teammatesInRadius); this.buttonList.add(giantHP); this.buttonList.add(abilityCooldown); + this.buttonList.add(dungeonScore); } @Override @@ -246,6 +262,11 @@ public class EditLocationsGui extends GuiScreen { 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(); @@ -284,6 +305,8 @@ public class EditLocationsGui extends GuiScreen { moving = "giantHP"; } else if (button == abilityCooldown) { moving = "abilityCooldown"; + } else if (button == dungeonScore) { + moving = "dungeonScore"; } } } @@ -318,6 +341,8 @@ public class EditLocationsGui extends GuiScreen { 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/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 28f22fe..c785ff1 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -237,6 +237,7 @@ public class ConfigHandler { ToggleCommand.flowerWeaponsToggled = initBoolean("toggles", "FlowerWeapons", false); ToggleCommand.autoSkillTrackerToggled = initBoolean("toggles", "AutoSkillTracker", false); ToggleCommand.alerts = initBoolean("toggles", "Alerts", false); + ToggleCommand.dungeonScore = initBoolean("toggles", "DungeonScore", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -550,6 +551,8 @@ public class ConfigHandler { 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); @@ -565,6 +568,7 @@ public class ConfigHandler { 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); -- cgit From dda83961a0922b5753c7d4dd3e239a925d3afa7a Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sun, 26 Dec 2021 21:57:22 -0500 Subject: Add master mode loot tracker --- README.md | 4 +- .../java/me/Danker/commands/DisplayCommand.java | 11 +- src/main/java/me/Danker/commands/LootCommand.java | 37 +++++- src/main/java/me/Danker/features/AutoDisplay.java | 2 + .../me/Danker/features/loot/CatacombsTracker.java | 125 ++++++++++++++++----- .../java/me/Danker/features/loot/LootDisplay.java | 48 ++++++++ src/main/java/me/Danker/gui/DisplayGui.java | 62 +++++----- .../java/me/Danker/handlers/ConfigHandler.java | 10 ++ 8 files changed, 236 insertions(+), 63 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 4b4802c..d613908 100644 --- a/README.md +++ b/README.md @@ -70,8 +70,8 @@ Discord Server: https://discord.gg/QsEkNQS - /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. -- /loot [winter/festival/spooky/f(1-7)/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. -- /display [winter/festival/spooky/f(1-7)/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. +- /loot [winter/festival/spooky/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. +- /display [winter/festival/spooky/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. - /move - Moves text display to specified X and Y coordinates. - /scale - Scales text display to a specified multipler between 0.1x and 10x. diff --git a/src/main/java/me/Danker/commands/DisplayCommand.java b/src/main/java/me/Danker/commands/DisplayCommand.java index e248888..d335a8a 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() + " [winter/festival/spooky/session/f(1-7)]"; + return "/" + getCommandName() + " [winter/festival/spooky/session/f(1-7)/mm]"; } public static String usage(ICommandSender arg0) { @@ -40,7 +40,7 @@ public class DisplayCommand extends CommandBase { } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "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"); } @@ -198,6 +198,13 @@ 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 ")); return; diff --git a/src/main/java/me/Danker/commands/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java index 617a957..1437b36 100644 --- a/src/main/java/me/Danker/commands/LootCommand.java +++ b/src/main/java/me/Danker/commands/LootCommand.java @@ -24,7 +24,7 @@ public class LootCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [winter/festival/spooky/f(1-7)/session]"; + return "/" + getCommandName() + " [winter/festival/spooky/f(1-7)/mm/session]"; } public static String usage(ICommandSender arg0) { @@ -43,7 +43,7 @@ public class LootCommand extends CommandBase { } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "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"); } @@ -803,6 +803,39 @@ public class LootCommand extends CommandBase { 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 + " S Runs:" + nf.format(CatacombsTracker.masterSSession) + "\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.WHITE + " Rerolls:" + nf.format(CatacombsTracker.masterRerollsSession) + "\n" + + EnumChatFormatting.AQUA + " Coins Spent:" + nf.format(CatacombsTracker.masterCoinsSpentSession) + "\n" + + EnumChatFormatting.AQUA + " Time Spent:" + nf.format(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 + " S Runs:" + nf.format(CatacombsTracker.masterS) + "\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.WHITE + " Rerolls:" + nf.format(CatacombsTracker.masterRerolls) + "\n" + + EnumChatFormatting.AQUA + " Coins Spent:" + nf.format(CatacombsTracker.masterCoinsSpent) + "\n" + + EnumChatFormatting.AQUA + " Time Spent:" + nf.format(CatacombsTracker.masterTimeSpent) + "\n" + + EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + " -------------------")); default: player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /loot catacombs ")); } diff --git a/src/main/java/me/Danker/features/AutoDisplay.java b/src/main/java/me/Danker/features/AutoDisplay.java index 89b1750..8dbe359 100644 --- a/src/main/java/me/Danker/features/AutoDisplay.java +++ b/src/main/java/me/Danker/features/AutoDisplay.java @@ -59,6 +59,8 @@ public class AutoDisplay { LootDisplay.display = "catacombs_floor_six"; } else if (sCleaned.contains("F7")) { LootDisplay.display = "catacombs_floor_seven"; + } else if (sCleaned.contains("(M")) { + LootDisplay.display = "catacombs_master"; } found = true; } diff --git a/src/main/java/me/Danker/features/loot/CatacombsTracker.java b/src/main/java/me/Danker/features/loot/CatacombsTracker.java index ddcb7d5..86770d6 100644 --- a/src/main/java/me/Danker/features/loot/CatacombsTracker.java +++ b/src/main/java/me/Danker/features/loot/CatacombsTracker.java @@ -88,6 +88,16 @@ public class CatacombsTracker { public static int f7Rerolls; public static double f7CoinsSpent; public static double f7TimeSpent; + // MM + public static int masterS; + public static int firstStars; + public static int secondStars; + public static int thirdStars; + public static int fourthStars; + public static int fifthStars; + public static int masterRerolls; + public static double masterCoinsSpent; + public static double masterTimeSpent; // Catacombs Dungeons public static int recombobulatorsSession = 0; @@ -163,6 +173,16 @@ public class CatacombsTracker { public static int f7RerollsSession = 0; public static double f7CoinsSpentSession = 0; public static double f7TimeSpentSession = 0; + // MM + public static int masterSSession = 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 masterRerollsSession = 0; + public static double masterCoinsSpentSession = 0; + public static double masterTimeSpentSession = 0; @SubscribeEvent public void onChat(ClientChatReceivedEvent event) { @@ -173,37 +193,48 @@ public class CatacombsTracker { if (message.contains(" Team Score: ") && message.contains("(S+)")) { List scoreboard = ScoreboardHandler.getSidebarLines(); - for (String s : scoreboard) { - String sCleaned = ScoreboardHandler.cleanSB(s); - if (sCleaned.contains("The Catacombs (")) { - if (sCleaned.contains("F1")) { - f1SPlus++; - f1SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorOneSPlus", f1SPlus); - } else if (sCleaned.contains("F2")) { - f2SPlus++; - f2SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorTwoSPlus", f2SPlus); - } else if (sCleaned.contains("F3")) { - f3SPlus++; - f3SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorThreeSPlus", f3SPlus); - } else if (sCleaned.contains("F4")) { - f4SPlus++; - f4SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorFourSPlus", f4SPlus); - } else if (sCleaned.contains("F5")) { - f5SPlus++; - f5SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorFiveSPlus", f5SPlus); - } else if (sCleaned.contains("F6")) { - f6SPlus++; - f6SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorSixSPlus", f6SPlus); - } else if (sCleaned.contains("F7")) { - f7SPlus++; - f7SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorSevenSPlus", f7SPlus); + if (message.contains("(S+)")) { + for (String s : scoreboard) { + String sCleaned = ScoreboardHandler.cleanSB(s); + if (sCleaned.contains("The Catacombs (")) { + if (sCleaned.contains("F1")) { + f1SPlus++; + f1SPlusSession++; + ConfigHandler.writeIntConfig("catacombs", "floorOneSPlus", f1SPlus); + } else if (sCleaned.contains("F2")) { + f2SPlus++; + f2SPlusSession++; + ConfigHandler.writeIntConfig("catacombs", "floorTwoSPlus", f2SPlus); + } else if (sCleaned.contains("F3")) { + f3SPlus++; + f3SPlusSession++; + ConfigHandler.writeIntConfig("catacombs", "floorThreeSPlus", f3SPlus); + } else if (sCleaned.contains("F4")) { + f4SPlus++; + f4SPlusSession++; + ConfigHandler.writeIntConfig("catacombs", "floorFourSPlus", f4SPlus); + } else if (sCleaned.contains("F5")) { + f5SPlus++; + f5SPlusSession++; + ConfigHandler.writeIntConfig("catacombs", "floorFiveSPlus", f5SPlus); + } else if (sCleaned.contains("F6")) { + f6SPlus++; + f6SPlusSession++; + ConfigHandler.writeIntConfig("catacombs", "floorSixSPlus", f6SPlus); + } else if (sCleaned.contains("F7")) { + f7SPlus++; + f7SPlusSession++; + ConfigHandler.writeIntConfig("catacombs", "floorSevenSPlus", f7SPlus); + } + } + } + } else if (message.contains("(S)")) { + for (String s : scoreboard) { + String sCleaned = ScoreboardHandler.cleanSB(s); + if (sCleaned.contains("The Catacombs (M")) { + masterS++; + masterSSession++; + ConfigHandler.writeIntConfig("catacombs", "masterS", masterS); } } } @@ -384,6 +415,26 @@ public class CatacombsTracker { 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); } } @@ -422,6 +473,10 @@ public class CatacombsTracker { f7TimeSpent = Math.floor(f7TimeSpent + timeToAdd); f7TimeSpentSession = Math.floor(f7TimeSpentSession + timeToAdd); ConfigHandler.writeDoubleConfig("catacombs", "floorSevenTime", f7TimeSpent); + } else if (sCleaned.contains("(M")) { + masterTimeSpent = Math.floor(masterTimeSpent + timeToAdd); + masterTimeSpentSession = Math.floor(masterTimeSpentSession + timeToAdd); + ConfigHandler.writeDoubleConfig("catacombs", "masterTime", masterTimeSpent); } } else if (sCleaned.contains("Time Elapsed:")) { // Get floor time @@ -481,6 +536,10 @@ public class CatacombsTracker { f7CoinsSpent += coinsSpent; f7CoinsSpentSession += coinsSpent; ConfigHandler.writeDoubleConfig("catacombs", "floorSevenCoins", f7CoinsSpent); + } else if (sCleaned.contains("(M")) { + masterCoinsSpent += coinsSpent; + masterCoinsSpentSession += coinsSpent; + ConfigHandler.writeDoubleConfig("catacombs", "masterCoins", masterCoinsSpent); } } break; @@ -500,6 +559,10 @@ public class CatacombsTracker { f7Rerolls++; f7RerollsSession++; ConfigHandler.writeDoubleConfig("catacombs", "floorSevenRerolls", f7Rerolls); + } else if (sCleaned.contains("(M")) { + masterRerolls++; + masterRerollsSession++; + ConfigHandler.writeDoubleConfig("catacombs", "masterRerolls", masterRerolls); } break; } diff --git a/src/main/java/me/Danker/features/loot/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java index d7a5f74..1878b47 100644 --- a/src/main/java/me/Danker/features/loot/LootDisplay.java +++ b/src/main/java/me/Danker/features/loot/LootDisplay.java @@ -1064,6 +1064,54 @@ public class LootDisplay { EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.f7CoinsSpentSession) + "\n" + EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f7TimeSpentSession); break; + case "catacombs_master": + dropsText = EnumChatFormatting.GOLD + "S Runs:\n" + + 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.WHITE + "Rerolls:\n" + + EnumChatFormatting.AQUA + "Coins Spent:\n" + + EnumChatFormatting.AQUA + "Time Spent:"; + countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.masterS) + "\n" + + 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.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": + dropsText = EnumChatFormatting.GOLD + "S Runs:\n" + + 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.WHITE + "Rerolls:\n" + + EnumChatFormatting.AQUA + "Coins Spent:\n" + + EnumChatFormatting.AQUA + "Time Spent:"; + countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.masterSSession) + "\n" + + 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.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" + EnumChatFormatting.BLUE + "Sorrows:\n" + diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index c6b1381..06239b1 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -34,6 +34,7 @@ public class DisplayGui extends GuiScreen { private GuiButton catacombsF5; private GuiButton catacombsF6; private GuiButton catacombsF7; + private GuiButton catacombsMM; private GuiButton ghost; @Override @@ -63,13 +64,14 @@ public class DisplayGui extends GuiScreen { 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"); + 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"); this.buttonList.add(showSession); this.buttonList.add(off); @@ -90,6 +92,7 @@ public class DisplayGui extends GuiScreen { this.buttonList.add(catacombsF5); this.buttonList.add(catacombsF6); this.buttonList.add(catacombsF7); + this.buttonList.add(catacombsMM); this.buttonList.add(ghost); this.buttonList.add(goBack); } @@ -125,44 +128,47 @@ public class DisplayGui extends GuiScreen { } 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", false); + setDisplay("enderman"); } 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 == 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; @@ -170,5 +176,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/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index c785ff1..112d86d 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -504,6 +504,16 @@ public class ConfigHandler { CatacombsTracker.f7Rerolls = initInt("catacombs", "floorSevenRerolls", 0); CatacombsTracker.f7CoinsSpent = initDouble("catacombs", "floorSevenCoins", 0); CatacombsTracker.f7TimeSpent = initDouble("catacombs", "floorSevenTime", 0); + // MM + CatacombsTracker.masterS = initInt("catacombs", "masterS", 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.masterRerolls = initInt("catacombs", "masterRerolls", 0); + CatacombsTracker.masterCoinsSpent = initDouble("catacombs", "masterCoins", 0); + CatacombsTracker.masterTimeSpent = initDouble("catacombs", "masterTime", 0); // Ghost GhostTracker.sorrows = initInt("ghosts", "sorrow", 0); -- cgit From e660a2872bd5bb278dee6a8f7fbe26336dfd8b1d Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 4 Mar 2022 02:15:35 -0500 Subject: Update F7 notifications --- .../me/Danker/features/NecronNotifications.java | 79 +++++++++++----------- src/main/java/me/Danker/gui/DankerGui.java | 4 +- 2 files changed, 43 insertions(+), 40 deletions(-) (limited to 'src/main/java/me/Danker/gui') 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 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 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/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 15360f0..c7af0da 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -158,7 +158,7 @@ public class DankerGui extends GuiScreen { 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."); @@ -432,7 +432,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); -- cgit From 2b57ccad6d21b325c3164117fe14e00e13399a7c Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 4 Mar 2022 13:20:20 -0500 Subject: Add CH fishing tracker Organized change display GUI Add method to make centered text rendering easier --- README.md | 6 +- .../java/me/Danker/commands/DisplayCommand.java | 11 +- .../me/Danker/commands/ImportFishingCommand.java | 116 ++++++++++++++------- src/main/java/me/Danker/commands/LootCommand.java | 28 ++++- .../java/me/Danker/commands/ResetLootCommand.java | 6 ++ .../me/Danker/features/loot/FishingTracker.java | 44 ++++++++ .../java/me/Danker/features/loot/LootDisplay.java | 44 ++++++++ src/main/java/me/Danker/gui/DankerGui.java | 4 +- src/main/java/me/Danker/gui/DisplayGui.java | 51 +++++---- src/main/java/me/Danker/gui/OnlySlayerGui.java | 4 +- src/main/java/me/Danker/gui/SkillTrackerGui.java | 6 +- src/main/java/me/Danker/gui/WarningGui.java | 16 ++- .../java/me/Danker/gui/alerts/AlertActionGui.java | 2 + src/main/java/me/Danker/gui/alerts/AlertsGui.java | 4 +- .../CrystalHollowWaypointActionGui.java | 5 +- .../CrystalHollowWaypointsGui.java | 4 +- .../java/me/Danker/handlers/ConfigHandler.java | 7 ++ src/main/java/me/Danker/utils/RenderUtils.java | 6 ++ 18 files changed, 272 insertions(+), 92 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 8e31daa..4ae2a40 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Discord Server: https://discord.gg/QsEkNQS - Maddox menu keybind - Block starting other slayer quests - Slayer slain alert -- Fishing, jerry fishing, fishing festival, spooky fishing trackers +- Fishing, jerry fishing, fishing festival, spooky fishing, crystal hollows fishing trackers - Expertise kills in fishing rod lore - Gemstones applied in item lore - Catacombs trackers @@ -70,8 +70,8 @@ Discord Server: https://discord.gg/QsEkNQS - /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. -- /loot [winter/festival/spooky/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. -- /display [winter/festival/spooky/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. +- /loot [winter/festival/spooky/ch/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. +- /display [winter/festival/spooky/ch/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. - /move - Moves text display to specified X and Y coordinates. - /scale - Scales text display to a specified multipler between 0.1x and 10x. diff --git a/src/main/java/me/Danker/commands/DisplayCommand.java b/src/main/java/me/Danker/commands/DisplayCommand.java index d335a8a..3db6853 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() + " [winter/festival/spooky/session/f(1-7)/mm]"; + return "/" + getCommandName() + " [winter/festival/spooky/ch/session/f(1-7)/mm]"; } public static String usage(ICommandSender arg0) { @@ -38,7 +38,7 @@ public class DisplayCommand extends CommandBase { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "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", "session"); } else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) { return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7", "mm", "master"); } else if (args.length > 1) { @@ -113,6 +113,13 @@ public class DisplayCommand extends CommandBase { LootDisplay.display = "fishing_spooky"; } break; + case "ch": + if (showSession) { + LootDisplay.display = "fishing_ch"; + } else { + LootDisplay.display = "fishing_ch_session"; + } + break; default: if (showSession) { LootDisplay.display = "fishing_session"; diff --git a/src/main/java/me/Danker/commands/ImportFishingCommand.java b/src/main/java/me/Danker/commands/ImportFishingCommand.java index 3ee5ebd..bdd3281 100644 --- a/src/main/java/me/Danker/commands/ImportFishingCommand.java +++ b/src/main/java/me/Danker/commands/ImportFishingCommand.java @@ -37,22 +37,22 @@ 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, true); @@ -61,10 +61,10 @@ public class ImportFishingCommand extends CommandBase { 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(); - + FishingTracker.greatCatches = 0; FishingTracker.goodCatches = 0; if (statsObject.has("items_fished_treasure")) { @@ -75,44 +75,44 @@ public class ImportFishingCommand extends CommandBase { FishingTracker.goodCatches = statsObject.get("items_fished_treasure").getAsInt(); } } - + FishingTracker.seaCreatures = 0; FishingTracker.squids = 0; if (statsObject.has("kills_pond_squid")) { FishingTracker.squids = statsObject.get("kills_pond_squid").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.squids; - + FishingTracker.seaWalkers = 0; if (statsObject.has("kills_sea_walker")) { FishingTracker.seaWalkers = statsObject.get("kills_sea_walker").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.seaWalkers; - + FishingTracker.nightSquids = 0; if (statsObject.has("kills_night_squid")) { FishingTracker.nightSquids = statsObject.get("kills_night_squid").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.nightSquids; - + FishingTracker.seaGuardians = 0; if (statsObject.has("kills_sea_guardian")) { FishingTracker.seaGuardians = statsObject.get("kills_sea_guardian").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.seaGuardians; - + FishingTracker.seaWitches = 0; if (statsObject.has("kills_sea_witch")) { FishingTracker.seaWitches = statsObject.get("kills_sea_witch").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.seaWitches; - + FishingTracker.seaArchers = 0; if (statsObject.has("kills_sea_archer")) { FishingTracker.seaArchers = statsObject.get("kills_sea_archer").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.seaArchers; - + FishingTracker.monsterOfTheDeeps = 0; if (statsObject.has("kills_zombie_deep")) { if (statsObject.has("kills_chicken_deep")) { @@ -124,44 +124,44 @@ public class ImportFishingCommand extends CommandBase { FishingTracker.monsterOfTheDeeps = statsObject.get("kills_chicken_deep").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.monsterOfTheDeeps; - + FishingTracker.catfishes = 0; if (statsObject.has("kills_catfish")) { FishingTracker.catfishes = statsObject.get("kills_catfish").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.catfishes; - + FishingTracker.carrotKings = 0; if (statsObject.has("kills_carrot_king")) { FishingTracker.carrotKings = statsObject.get("kills_carrot_king").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.carrotKings; - + FishingTracker.seaLeeches = 0; if (statsObject.has("kills_sea_leech")) { FishingTracker.seaLeeches = statsObject.get("kills_sea_leech").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.seaLeeches; - + FishingTracker.guardianDefenders = 0; if (statsObject.has("kills_guardian_defender")) { FishingTracker.guardianDefenders = statsObject.get("kills_guardian_defender").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.guardianDefenders; - + FishingTracker.deepSeaProtectors = 0; if (statsObject.has("kills_deep_sea_protector")) { FishingTracker.deepSeaProtectors = statsObject.get("kills_deep_sea_protector").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.deepSeaProtectors; - + FishingTracker.hydras = 0; if (statsObject.has("kills_water_hydra")) { // Hydra splits FishingTracker.hydras = statsObject.get("kills_water_hydra").getAsInt() / 2; } FishingTracker.seaCreatures += FishingTracker.hydras; - + FishingTracker.seaEmperors = 0; if (statsObject.has("kills_skeleton_emperor")) { if (statsObject.has("kills_guardian_emperor")) { @@ -173,90 +173,126 @@ public class ImportFishingCommand extends CommandBase { FishingTracker.seaEmperors = statsObject.get("kills_guardian_emperor").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.seaEmperors; - + FishingTracker.fishingMilestone = 0; if (statsObject.has("pet_milestone_sea_creatures_killed")) { FishingTracker.fishingMilestone = statsObject.get("pet_milestone_sea_creatures_killed").getAsInt(); } - + FishingTracker.frozenSteves = 0; if (statsObject.has("kills_frozen_steve")) { FishingTracker.frozenSteves = statsObject.get("kills_frozen_steve").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.frozenSteves; - + FishingTracker.frostyTheSnowmans = 0; if (statsObject.has("kills_frosty_the_snowman")) { FishingTracker.frostyTheSnowmans = statsObject.get("kills_frosty_the_snowman").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.frostyTheSnowmans; - + FishingTracker.grinches = 0; if (statsObject.has("kills_grinch")) { FishingTracker.grinches = statsObject.get("kills_grinch").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.grinches; - + FishingTracker.yetis = 0; if (statsObject.has("kills_yeti")) { FishingTracker.yetis = statsObject.get("kills_yeti").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.yetis; - + FishingTracker.nurseSharks = 0; if (statsObject.has("kills_nurse_shark")) { FishingTracker.nurseSharks = statsObject.get("kills_nurse_shark").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.nurseSharks; - + FishingTracker.blueSharks = 0; if (statsObject.has("kills_nurse_shark")) { FishingTracker.blueSharks = statsObject.get("kills_blue_shark").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.blueSharks; - + FishingTracker.tigerSharks = 0; if (statsObject.has("kills_nurse_shark")) { FishingTracker.tigerSharks = statsObject.get("kills_tiger_shark").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.tigerSharks; - + FishingTracker.greatWhiteSharks = 0; if (statsObject.has("kills_nurse_shark")) { FishingTracker.greatWhiteSharks = statsObject.get("kills_great_white_shark").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.greatWhiteSharks; - + FishingTracker.scarecrows = 0; if (statsObject.has("kills_scarecrow")) { FishingTracker.scarecrows = statsObject.get("kills_scarecrow").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.scarecrows; - + FishingTracker.nightmares = 0; if (statsObject.has("kills_nightmare")) { FishingTracker.nightmares = statsObject.get("kills_nightmare").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.nightmares; - + FishingTracker.werewolfs = 0; if (statsObject.has("kills_werewolf")) { FishingTracker.werewolfs = statsObject.get("kills_werewolf").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.werewolfs; - + FishingTracker.phantomFishers = 0; if (statsObject.has("kills_phantom_fisherman")) { FishingTracker.phantomFishers = statsObject.get("kills_phantom_fisherman").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.phantomFishers; - + FishingTracker.grimReapers = 0; if (statsObject.has("kills_grim_reaper")) { FishingTracker.grimReapers = statsObject.get("kills_grim_reaper").getAsInt(); } FishingTracker.seaCreatures += FishingTracker.grimReapers; - + + FishingTracker.waterWorms = 0; + if (statsObject.has("kills_water_worm")) { + FishingTracker.waterWorms = statsObject.get("kills_water_worm").getAsInt(); + } + FishingTracker.seaCreatures += FishingTracker.waterWorms; + + FishingTracker.poisonedWaterWorms = 0; + if (statsObject.has("kills_poisoned_water_worm")) { + FishingTracker.poisonedWaterWorms = statsObject.get("kills_poisoned_water_worm").getAsInt(); + } + FishingTracker.seaCreatures += FishingTracker.poisonedWaterWorms; + + FishingTracker.flamingWorms = 0; + if (statsObject.has("kills_flaming_worm")) { + FishingTracker.flamingWorms = statsObject.get("kills_flaming_worm").getAsInt(); + } + FishingTracker.seaCreatures += FishingTracker.flamingWorms; + + FishingTracker.lavaBlazes = 0; + if (statsObject.has("kills_lava_blaze")) { + FishingTracker.lavaBlazes = statsObject.get("kills_lava_blaze").getAsInt(); + } + FishingTracker.seaCreatures += FishingTracker.lavaBlazes; + + FishingTracker.lavaPigmen = 0; + if (statsObject.has("kills_lava_pigman")) { + FishingTracker.lavaPigmen = statsObject.get("kills_lava_pigman").getAsInt(); + } + FishingTracker.seaCreatures += FishingTracker.lavaPigmen; + + FishingTracker.zombieMiners = 0; + if (statsObject.has("kills_zombie_miner")) { + FishingTracker.zombieMiners = statsObject.get("kills_zombie_miner").getAsInt(); + } + FishingTracker.seaCreatures += FishingTracker.zombieMiners; + System.out.println("Writing to config..."); ConfigHandler.writeIntConfig("fishing", "goodCatch", FishingTracker.goodCatches); ConfigHandler.writeIntConfig("fishing", "greatCatch", FishingTracker.greatCatches); @@ -289,7 +325,13 @@ public class ImportFishingCommand extends CommandBase { 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); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Fishing stats imported.")); }).start(); } diff --git a/src/main/java/me/Danker/commands/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java index 1437b36..2a647c6 100644 --- a/src/main/java/me/Danker/commands/LootCommand.java +++ b/src/main/java/me/Danker/commands/LootCommand.java @@ -24,7 +24,7 @@ public class LootCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [winter/festival/spooky/f(1-7)/mm/session]"; + return "/" + getCommandName() + " [winter/festival/spooky/ch/f(1-7)/mm/session]"; } public static String usage(ICommandSender arg0) { @@ -41,7 +41,7 @@ public class LootCommand extends CommandBase { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "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", "session"); } else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) { return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7", "mm", "master"); } else if (args.length > 1) { @@ -451,6 +451,30 @@ public class LootCommand extends CommandBase { EnumChatFormatting.GOLD + " Phantom Fishers: " + nf.format(FishingTracker.phantomFishers) + "\n" + EnumChatFormatting.GOLD + " Grim Reapers: " + nf.format(FishingTracker.grimReapers) + "\n" + EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------")); + } 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 + "-------------------")); } } diff --git a/src/main/java/me/Danker/commands/ResetLootCommand.java b/src/main/java/me/Danker/commands/ResetLootCommand.java index 2c5c947..cca7dda 100644 --- a/src/main/java/me/Danker/commands/ResetLootCommand.java +++ b/src/main/java/me/Danker/commands/ResetLootCommand.java @@ -238,6 +238,12 @@ public class ResetLootCommand extends CommandBase { FishingTracker.werewolfsSession = 0; FishingTracker.phantomFishersSession = 0; FishingTracker.grimReapersSession = 0; + FishingTracker.waterWorms = 0; + FishingTracker.poisonedWaterWorms = 0; + FishingTracker.flamingWorms = 0; + FishingTracker.lavaBlazes = 0; + FishingTracker.lavaPigmen = 0; + FishingTracker.zombieMiners = 0; ConfigHandler.deleteCategory("fishing"); ConfigHandler.reloadConfig(); } diff --git a/src/main/java/me/Danker/features/loot/FishingTracker.java b/src/main/java/me/Danker/features/loot/FishingTracker.java index c54f943..cf329aa 100644 --- a/src/main/java/me/Danker/features/loot/FishingTracker.java +++ b/src/main/java/me/Danker/features/loot/FishingTracker.java @@ -47,6 +47,13 @@ public class FishingTracker { 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; // Fishing public static int seaCreaturesSession = 0; @@ -87,6 +94,13 @@ public class FishingTracker { 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; @SubscribeEvent public void onChat(ClientChatReceivedEvent event) { @@ -252,6 +266,36 @@ public class FishingTracker { 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(); } } diff --git a/src/main/java/me/Danker/features/loot/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java index 1878b47..812108b 100644 --- a/src/main/java/me/Danker/features/loot/LootDisplay.java +++ b/src/main/java/me/Danker/features/loot/LootDisplay.java @@ -680,6 +680,50 @@ public class LootDisplay { 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 "mythological": dropsText = EnumChatFormatting.GOLD + "Coins:\n" + EnumChatFormatting.WHITE + "Griffin Feathers:\n" + diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index c7af0da..6edffa9 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -7,6 +7,7 @@ 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; @@ -274,8 +275,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()) { diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index 06239b1..4da92c6 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -4,6 +4,7 @@ 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; @@ -26,7 +27,7 @@ public class DisplayGui extends GuiScreen { private GuiButton fishingWinter; private GuiButton fishingFestival; private GuiButton fishingSpooky; - private GuiButton mythological; + private GuiButton fishingCH; private GuiButton catacombsF1; private GuiButton catacombsF2; private GuiButton catacombsF3; @@ -35,6 +36,7 @@ public class DisplayGui extends GuiScreen { private GuiButton catacombsF6; private GuiButton catacombsF7; private GuiButton catacombsMM; + private GuiButton mythological; private GuiButton ghost; @Override @@ -54,16 +56,15 @@ 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 - 230, (int) (height * 0.3), 100, 20, "Zombie"); - spider = new GuiButton(0, width / 2 - 110, (int) (height * 0.3), 100, 20, "Spider"); - wolf = new GuiButton(0, width / 2 + 10, (int) (height * 0.3), 100, 20, "Wolf"); - enderman = new GuiButton(0, width / 2 + 130, (int) (height * 0.3), 100, 20, "Enderman"); - 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"); + zombie = new GuiButton(0, width / 2 - 230, (int) (height * 0.35), 100, 20, "Zombie"); + spider = new GuiButton(0, width / 2 - 110, (int) (height * 0.35), 100, 20, "Spider"); + wolf = new GuiButton(0, width / 2 + 10, (int) (height * 0.35), 100, 20, "Wolf"); + enderman = new GuiButton(0, width / 2 + 130, (int) (height * 0.35), 100, 20, "Enderman"); + fishing = new GuiButton(0, width / 2 - 270, (int) (height * 0.5), 100, 20, "Fishing"); + fishingWinter = new GuiButton(0, width / 2 - 160, (int) (height * 0.5), 100, 20, "Fishing Winter"); + fishingFestival = new GuiButton(0, width / 2 - 50, (int) (height * 0.5), 100, 20, "Fishing Festival"); + fishingSpooky = new GuiButton(0, width / 2 + 60, (int) (height * 0.5), 100, 20, "Fishing Spooky"); + fishingCH = new GuiButton(0, width / 2 + 170, (int) (height * 0.5), 100, 20, "CH 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"); @@ -72,6 +73,8 @@ public class DisplayGui extends GuiScreen { 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); @@ -84,7 +87,7 @@ public class DisplayGui extends GuiScreen { this.buttonList.add(fishingWinter); this.buttonList.add(fishingFestival); this.buttonList.add(fishingSpooky); - this.buttonList.add(mythological); + this.buttonList.add(fishingCH); this.buttonList.add(catacombsF1); this.buttonList.add(catacombsF2); this.buttonList.add(catacombsF3); @@ -93,6 +96,7 @@ public class DisplayGui extends GuiScreen { this.buttonList.add(catacombsF6); this.buttonList.add(catacombsF7); this.buttonList.add(catacombsMM); + this.buttonList.add(mythological); this.buttonList.add(ghost); this.buttonList.add(goBack); } @@ -100,20 +104,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); } @@ -146,6 +143,8 @@ public class DisplayGui extends GuiScreen { setDisplay("fishing_festival"); } else if (button == fishingSpooky) { setDisplay("fishing_spooky"); + } else if (button == fishingCH) { + setDisplay("fishing_ch"); } else if (button == mythological) { setDisplay("mythological"); } else if (button == catacombsF1) { diff --git a/src/main/java/me/Danker/gui/OnlySlayerGui.java b/src/main/java/me/Danker/gui/OnlySlayerGui.java index c203b8a..a5674f8 100644 --- a/src/main/java/me/Danker/gui/OnlySlayerGui.java +++ b/src/main/java/me/Danker/gui/OnlySlayerGui.java @@ -5,6 +5,7 @@ import me.Danker.commands.ToggleCommand; import me.Danker.features.BlockWrongSlayer; 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; @@ -97,8 +98,7 @@ public class OnlySlayerGui extends GuiScreen { } else { displayText = "Only Allow Slayer: " + BlockWrongSlayer.onlySlayerName + " " + BlockWrongSlayer.onlySlayerNumber; } - int displayWidth = mc.fontRendererObj.getStringWidth(displayText); - new TextRenderer(mc, displayText, width / 2 - displayWidth / 2, 10, 1D); + RenderUtils.drawCenteredText(displayText, width, 10, 1D); super.drawScreen(mouseX, mouseY, partialTicks); } diff --git a/src/main/java/me/Danker/gui/SkillTrackerGui.java b/src/main/java/me/Danker/gui/SkillTrackerGui.java index 290310f..84cc2e3 100644 --- a/src/main/java/me/Danker/gui/SkillTrackerGui.java +++ b/src/main/java/me/Danker/gui/SkillTrackerGui.java @@ -4,6 +4,7 @@ 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 +51,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,8 +61,8 @@ 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); } diff --git a/src/main/java/me/Danker/gui/WarningGui.java b/src/main/java/me/Danker/gui/WarningGui.java index db0c21b..bb37b83 100644 --- a/src/main/java/me/Danker/gui/WarningGui.java +++ b/src/main/java/me/Danker/gui/WarningGui.java @@ -1,10 +1,12 @@ 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 +36,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 index 06dfd91..034ad79 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java @@ -2,6 +2,7 @@ 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; @@ -55,6 +56,7 @@ public class AlertActionGui extends GuiScreen { 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); diff --git a/src/main/java/me/Danker/gui/alerts/AlertsGui.java b/src/main/java/me/Danker/gui/alerts/AlertsGui.java index 3ccd869..8eaedca 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertsGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertsGui.java @@ -6,6 +6,7 @@ import me.Danker.gui.DankerGui; import me.Danker.gui.buttons.FeatureButton; 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; @@ -78,8 +79,7 @@ public class AlertsGui extends GuiScreen { super.drawScreen(mouseX, mouseY, partialTicks); String pageText = "Page: " + page + "/" + (int) Math.ceil(allButtons.size() / 7D); - int pageWidth = mc.fontRendererObj.getStringWidth(pageText); - new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 10, 1D); + RenderUtils.drawCenteredText(pageText, width, 10, 1D); } @Override diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java index f792892..30447a0 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java @@ -3,6 +3,7 @@ package me.Danker.gui.crystalhollowwaypoints; import me.Danker.DankersSkyblockMod; import me.Danker.features.CrystalHollowWaypoints; import me.Danker.handlers.TextRenderer; +import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; @@ -63,9 +64,7 @@ public class CrystalHollowWaypointActionGui extends GuiScreen { CrystalHollowWaypoints.Waypoint waypoint = CrystalHollowWaypoints.waypoints.get(id); - String waypointText = waypoint.location + " @ " + waypoint.getPos(); - int pageWidth = mc.fontRendererObj.getStringWidth(waypointText); - new TextRenderer(mc, waypointText, width / 2 - pageWidth / 2, 10, 1D); + RenderUtils.drawCenteredText(waypoint.location + " @ " + waypoint.getPos(), width, 10, 1D); } @Override diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java index a3d0452..2331ec0 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java @@ -7,6 +7,7 @@ import me.Danker.gui.DankerGui; import me.Danker.gui.buttons.FeatureButton; 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.entity.EntityPlayerSP; @@ -94,8 +95,7 @@ public class CrystalHollowWaypointsGui extends GuiScreen { super.drawScreen(mouseX, mouseY, partialTicks); String pageText = "Page: " + page + "/" + (int) Math.ceil(allButtons.size() / 7D); - int pageWidth = mc.fontRendererObj.getStringWidth(pageText); - new TextRenderer(mc, pageText, width / 2 - pageWidth / 2, 10, 1D); + RenderUtils.drawCenteredText(pageText, width, 10, 1D); } @Override diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 112d86d..e5ed372 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -417,6 +417,13 @@ public class ConfigHandler { 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); // Mythological MythologicalTracker.mythCoins = initDouble("mythological", "coins", 0); diff --git a/src/main/java/me/Danker/utils/RenderUtils.java b/src/main/java/me/Danker/utils/RenderUtils.java index f117969..50b9786 100644 --- a/src/main/java/me/Danker/utils/RenderUtils.java +++ b/src/main/java/me/Danker/utils/RenderUtils.java @@ -363,4 +363,10 @@ public class RenderUtils { 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); + } + } -- cgit From 4a9c72be2c81059569f6cf75e854b9cdefc2891a Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 4 Mar 2022 20:26:29 -0500 Subject: Add custom colours to titles --- src/main/java/me/Danker/DankersSkyblockMod.java | 1 - .../me/Danker/commands/CustomMusicCommand.java | 3 --- .../java/me/Danker/commands/InventoryCommand.java | 1 - .../java/me/Danker/features/AbilityCooldowns.java | 1 - .../java/me/Danker/features/ColouredNames.java | 31 ++++++++++++++++++++++ src/main/java/me/Danker/features/DungeonScore.java | 2 -- src/main/java/me/Danker/gui/CustomMusicGui.java | 1 - src/main/java/me/Danker/gui/DankerGui.java | 2 -- src/main/java/me/Danker/gui/DisplayGui.java | 2 -- src/main/java/me/Danker/gui/ExperimentsGui.java | 1 - src/main/java/me/Danker/gui/OnlySlayerGui.java | 4 --- src/main/java/me/Danker/gui/PuzzleSolversGui.java | 1 - src/main/java/me/Danker/gui/SkillTrackerGui.java | 2 -- src/main/java/me/Danker/gui/WarningGui.java | 1 - .../java/me/Danker/gui/alerts/AlertAddGui.java | 3 --- src/main/java/me/Danker/gui/alerts/AlertsGui.java | 1 - .../CrystalHollowWaypointActionGui.java | 1 - .../CrystalHollowWaypointsGui.java | 2 -- .../java/me/Danker/handlers/ConfigHandler.java | 6 +++-- src/main/java/me/Danker/utils/Utils.java | 1 - 20 files changed, 35 insertions(+), 32 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 0d7e577..ce39152 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -9,7 +9,6 @@ import me.Danker.features.*; import me.Danker.features.loot.*; import me.Danker.features.puzzlesolvers.*; import me.Danker.gui.*; -import me.Danker.gui.crystalhollowwaypoints.CrystalHollowWaypointsGui; import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.PacketHandler; import me.Danker.utils.RenderUtils; diff --git a/src/main/java/me/Danker/commands/CustomMusicCommand.java b/src/main/java/me/Danker/commands/CustomMusicCommand.java index d21d08e..283b748 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 { diff --git a/src/main/java/me/Danker/commands/InventoryCommand.java b/src/main/java/me/Danker/commands/InventoryCommand.java index d4b35ae..66a5725 100644 --- a/src/main/java/me/Danker/commands/InventoryCommand.java +++ b/src/main/java/me/Danker/commands/InventoryCommand.java @@ -12,7 +12,6 @@ import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; -import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryBasic; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/Danker/features/AbilityCooldowns.java b/src/main/java/me/Danker/features/AbilityCooldowns.java index 397857a..e98660e 100644 --- a/src/main/java/me/Danker/features/AbilityCooldowns.java +++ b/src/main/java/me/Danker/features/AbilityCooldowns.java @@ -12,7 +12,6 @@ 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.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StringUtils; import net.minecraftforge.client.event.ClientChatReceivedEvent; diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index f7f4d7a..aad1ab1 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -2,10 +2,12 @@ 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; @@ -16,7 +18,9 @@ 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; @@ -30,6 +34,8 @@ public class ColouredNames { public static Map 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; @@ -90,6 +96,31 @@ public class ColouredNames { } } + @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(); diff --git a/src/main/java/me/Danker/features/DungeonScore.java b/src/main/java/me/Danker/features/DungeonScore.java index 2b6b287..706ce62 100644 --- a/src/main/java/me/Danker/features/DungeonScore.java +++ b/src/main/java/me/Danker/features/DungeonScore.java @@ -5,12 +5,10 @@ import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; import me.Danker.commands.ToggleCommand; import me.Danker.events.RenderOverlayEvent; -import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.ScoreboardHandler; 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.network.NetworkPlayerInfo; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; diff --git a/src/main/java/me/Danker/gui/CustomMusicGui.java b/src/main/java/me/Danker/gui/CustomMusicGui.java index 6695b9a..4d5dcc9 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; diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 6edffa9..d5e9ee8 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -1,12 +1,10 @@ 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; diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index 4da92c6..17726f8 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -1,9 +1,7 @@ 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; diff --git a/src/main/java/me/Danker/gui/ExperimentsGui.java b/src/main/java/me/Danker/gui/ExperimentsGui.java index 3cc4929..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; diff --git a/src/main/java/me/Danker/gui/OnlySlayerGui.java b/src/main/java/me/Danker/gui/OnlySlayerGui.java index a5674f8..2a6d844 100644 --- a/src/main/java/me/Danker/gui/OnlySlayerGui.java +++ b/src/main/java/me/Danker/gui/OnlySlayerGui.java @@ -1,12 +1,8 @@ package me.Danker.gui; -import me.Danker.DankersSkyblockMod; -import me.Danker.commands.ToggleCommand; import me.Danker.features.BlockWrongSlayer; 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; import net.minecraft.client.gui.GuiScreen; diff --git a/src/main/java/me/Danker/gui/PuzzleSolversGui.java b/src/main/java/me/Danker/gui/PuzzleSolversGui.java index 3356ead..0cfa72b 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; diff --git a/src/main/java/me/Danker/gui/SkillTrackerGui.java b/src/main/java/me/Danker/gui/SkillTrackerGui.java index 84cc2e3..e77f785 100644 --- a/src/main/java/me/Danker/gui/SkillTrackerGui.java +++ b/src/main/java/me/Danker/gui/SkillTrackerGui.java @@ -1,9 +1,7 @@ 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; diff --git a/src/main/java/me/Danker/gui/WarningGui.java b/src/main/java/me/Danker/gui/WarningGui.java index bb37b83..901b59e 100644 --- a/src/main/java/me/Danker/gui/WarningGui.java +++ b/src/main/java/me/Danker/gui/WarningGui.java @@ -1,6 +1,5 @@ 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; diff --git a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java index 9014ea1..efc099c 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java @@ -1,7 +1,5 @@ package me.Danker.gui.alerts; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import me.Danker.features.Alerts; import me.Danker.handlers.TextRenderer; import net.minecraft.client.Minecraft; @@ -11,7 +9,6 @@ import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.ScaledResolution; import net.minecraftforge.fml.client.config.GuiCheckBox; -import java.io.FileWriter; import java.io.IOException; public class AlertAddGui extends GuiScreen { diff --git a/src/main/java/me/Danker/gui/alerts/AlertsGui.java b/src/main/java/me/Danker/gui/alerts/AlertsGui.java index 8eaedca..d73d56a 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertsGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertsGui.java @@ -5,7 +5,6 @@ import me.Danker.features.Alerts; import me.Danker.gui.DankerGui; import me.Danker.gui.buttons.FeatureButton; 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; diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java index 30447a0..8d6fa85 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java @@ -2,7 +2,6 @@ package me.Danker.gui.crystalhollowwaypoints; import me.Danker.DankersSkyblockMod; import me.Danker.features.CrystalHollowWaypoints; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java index 2331ec0..fc0f108 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java @@ -1,12 +1,10 @@ package me.Danker.gui.crystalhollowwaypoints; -import me.Danker.DankersSkyblockMod; 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.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index e5ed372..3839766 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -2,7 +2,6 @@ package me.Danker.handlers; import com.google.gson.Gson; import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import me.Danker.DankersSkyblockMod; import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; @@ -16,7 +15,10 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.Configuration; -import java.io.*; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 682c5af..8c48c54 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -9,7 +9,6 @@ import me.Danker.handlers.ScoreboardHandler; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.network.NetworkPlayerInfo; -import net.minecraft.client.settings.GameSettings; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItemFrame; import net.minecraft.entity.player.EntityPlayer; -- cgit From e1b746ce2ab5207a3c6df39697c94edb0fcd7801 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 5 Mar 2022 22:46:57 -0500 Subject: Update catacombs tracker Add Dark Claymore Track both S and S+ and allow switching Make floor detection easier and use less computing Allow livid detector to work in M5 Stop updating ToggleCommand --- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + src/main/java/me/Danker/commands/LootCommand.java | 32 +- .../java/me/Danker/commands/ToggleCommand.java | 5 +- src/main/java/me/Danker/features/AutoDisplay.java | 50 ++- src/main/java/me/Danker/features/DungeonScore.java | 57 +-- .../me/Danker/features/loot/CatacombsTracker.java | 420 ++++++++++++++------- .../java/me/Danker/features/loot/LootDisplay.java | 78 +++- .../Danker/features/puzzlesolvers/LividSolver.java | 2 +- src/main/java/me/Danker/gui/DankerGui.java | 7 + .../java/me/Danker/handlers/ConfigHandler.java | 17 +- src/main/java/me/Danker/utils/Utils.java | 45 +++ 11 files changed, 508 insertions(+), 206 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index ce39152..02eeff4 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -383,6 +383,7 @@ public class DankersSkyblockMod { if (player != null) { Utils.checkForSkyblock(); Utils.checkForDungeons(); + Utils.checkForDungeonFloor(); Utils.checkTabLocation(); } diff --git a/src/main/java/me/Danker/commands/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java index 2a647c6..246d1aa 100644 --- a/src/main/java/me/Danker/commands/LootCommand.java +++ b/src/main/java/me/Danker/commands/LootCommand.java @@ -832,7 +832,20 @@ public class LootCommand extends CommandBase { if (showSession) { player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" + EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs MM Summary (Current Session):\n" + - EnumChatFormatting.GOLD + " S Runs:" + nf.format(CatacombsTracker.masterSSession) + "\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" + @@ -840,6 +853,7 @@ public class LootCommand extends CommandBase { 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 + " Dark Claymores: " + nf.format(CatacombsTracker.darkClaymoresSession) + "\n" + EnumChatFormatting.WHITE + " Rerolls:" + nf.format(CatacombsTracker.masterRerollsSession) + "\n" + EnumChatFormatting.AQUA + " Coins Spent:" + nf.format(CatacombsTracker.masterCoinsSpentSession) + "\n" + EnumChatFormatting.AQUA + " Time Spent:" + nf.format(CatacombsTracker.masterTimeSpentSession) + "\n" + @@ -848,7 +862,20 @@ public class LootCommand extends CommandBase { } player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_RED + "" + EnumChatFormatting.BOLD + "-------------------\n" + EnumChatFormatting.RED + EnumChatFormatting.BOLD + " Catacombs MM Summary:\n" + - EnumChatFormatting.GOLD + " S Runs:" + nf.format(CatacombsTracker.masterS) + "\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" + @@ -856,6 +883,7 @@ public class LootCommand extends CommandBase { 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 + " Dark Claymores: " + nf.format(CatacombsTracker.darkClaymores) + "\n" + EnumChatFormatting.WHITE + " Rerolls:" + nf.format(CatacombsTracker.masterRerolls) + "\n" + EnumChatFormatting.AQUA + " Coins Spent:" + nf.format(CatacombsTracker.masterCoinsSpent) + "\n" + EnumChatFormatting.AQUA + " Time Spent:" + nf.format(CatacombsTracker.masterTimeSpent) + "\n" + diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 94425c0..04770aa 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -14,12 +14,12 @@ import net.minecraft.util.ChatComponentText; import java.util.List; public class ToggleCommand extends CommandBase implements ICommand { - // i hate this file so much // 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; @@ -106,6 +106,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean endMusic; public static boolean parkMusic; + // NO LONGER UPDATED @Override public String getCommandName() { return "toggle"; @@ -150,7 +151,7 @@ public class ToggleCommand extends CommandBase implements ICommand { } return null; } - + @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { final EntityPlayer player = (EntityPlayer)arg0; diff --git a/src/main/java/me/Danker/features/AutoDisplay.java b/src/main/java/me/Danker/features/AutoDisplay.java index 8dbe359..5fc4489 100644 --- a/src/main/java/me/Danker/features/AutoDisplay.java +++ b/src/main/java/me/Danker/features/AutoDisplay.java @@ -4,6 +4,7 @@ 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; @@ -44,23 +45,38 @@ public class AutoDisplay { } 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 (sCleaned.contains("(M")) { - LootDisplay.display = "catacombs_master"; + } 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; } diff --git a/src/main/java/me/Danker/features/DungeonScore.java b/src/main/java/me/Danker/features/DungeonScore.java index 706ce62..588db8a 100644 --- a/src/main/java/me/Danker/features/DungeonScore.java +++ b/src/main/java/me/Danker/features/DungeonScore.java @@ -5,7 +5,6 @@ import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; import me.Danker.commands.ToggleCommand; import me.Danker.events.RenderOverlayEvent; -import me.Danker.handlers.ScoreboardHandler; import me.Danker.handlers.TextRenderer; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; @@ -19,7 +18,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; import java.util.Collection; -import java.util.List; public class DungeonScore { @@ -55,29 +53,6 @@ public class DungeonScore { if (!ToggleCommand.dungeonScore || !Utils.inDungeons) return; if (DankersSkyblockMod.tickAmount % 20 == 0) { - String floor = ""; - List scoreboard = ScoreboardHandler.getSidebarLines(); - for (String s : scoreboard) { - String sCleaned = ScoreboardHandler.cleanSB(s); - if (sCleaned.contains("The Catacombs (")) { - if (sCleaned.contains("F1")) { - floor = "F1"; - } else if (sCleaned.contains("F2")) { - floor = "F2"; - } else if (sCleaned.contains("F3")) { - floor = "F3"; - } else if (sCleaned.contains("F4")) { - floor = "F4"; - } else if (sCleaned.contains("F5")) { - floor = "F5"; - } else if (sCleaned.contains("F6")) { - floor = "F6"; - } else if (sCleaned.contains("F7")) { - floor = "F7"; - } - } - } - int missingPuzzles = 0; double openedRooms = 0; double completedRooms = 0; @@ -99,23 +74,23 @@ public class DungeonScore { double secretCount = Double.parseDouble(display.replaceAll("[^\\d.]", "")); - switch (floor) { - case "F1": + switch (Utils.currentFloor) { + case F1: secretScore = secretCount / 30D; break; - case "F2": + case F2: secretScore = secretCount / 40D; break; - case "F3": + case F3: secretScore = secretCount / 50D; break; - case "F4": + case F4: secretScore = secretCount / 60D; break; - case "F5": + case F5: secretScore = secretCount / 70D; break; - case "F6": + case F6: secretScore = secretCount / 85D; break; default: @@ -127,19 +102,19 @@ public class DungeonScore { int seconds = Integer.parseInt(timeText.substring(timeText.indexOf("m") + 1, timeText.indexOf("s"))); int time = minutes * 60 + seconds; - if (floor.equals("F2")) time -= 120; + if (Utils.currentFloor == Utils.DungeonFloor.F2) time -= 120; int base; - switch (floor) { - case "F1": - case "F2": - case "F3": - case "F5": + switch (Utils.currentFloor) { + case F1: + case F2: + case F3: + case F5: base = 600; break; - case "F4": - case "F6": - case "F7": + case F4: + case F6: + case F7: base = 720; break; default: diff --git a/src/main/java/me/Danker/features/loot/CatacombsTracker.java b/src/main/java/me/Danker/features/loot/CatacombsTracker.java index c4b9634..8d50ab3 100644 --- a/src/main/java/me/Danker/features/loot/CatacombsTracker.java +++ b/src/main/java/me/Danker/features/loot/CatacombsTracker.java @@ -89,12 +89,26 @@ public class CatacombsTracker { public static double f7CoinsSpent; public static double f7TimeSpent; // MM - public static int masterS; + 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 darkClaymores; public static int masterRerolls; public static double masterCoinsSpent; public static double masterTimeSpent; @@ -174,12 +188,26 @@ public class CatacombsTracker { public static double f7CoinsSpentSession = 0; public static double f7TimeSpentSession = 0; // MM - public static int masterSSession = 0; + 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 darkClaymoresSession = 0; public static int masterRerollsSession = 0; public static double masterCoinsSpentSession = 0; public static double masterTimeSpentSession = 0; @@ -191,51 +219,138 @@ public class CatacombsTracker { if (!Utils.inDungeons) return; if (event.type == 2) return; - if (message.contains(" Team Score: ") && message.contains("(S+)")) { - List scoreboard = ScoreboardHandler.getSidebarLines(); + if (message.contains(" Team Score: ")) { if (message.contains("(S+)")) { - for (String s : scoreboard) { - String sCleaned = ScoreboardHandler.cleanSB(s); - if (sCleaned.contains("The Catacombs (")) { - if (sCleaned.contains("F1")) { - f1SPlus++; - f1SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorOneSPlus", f1SPlus); - } else if (sCleaned.contains("F2")) { - f2SPlus++; - f2SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorTwoSPlus", f2SPlus); - } else if (sCleaned.contains("F3")) { - f3SPlus++; - f3SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorThreeSPlus", f3SPlus); - } else if (sCleaned.contains("F4")) { - f4SPlus++; - f4SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorFourSPlus", f4SPlus); - } else if (sCleaned.contains("F5")) { - f5SPlus++; - f5SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorFiveSPlus", f5SPlus); - } else if (sCleaned.contains("F6")) { - f6SPlus++; - f6SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorSixSPlus", f6SPlus); - } else if (sCleaned.contains("F7")) { - f7SPlus++; - f7SPlusSession++; - ConfigHandler.writeIntConfig("catacombs", "floorSevenSPlus", f7SPlus); - } - } + 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)")) { - for (String s : scoreboard) { - String sCleaned = ScoreboardHandler.cleanSB(s); - if (sCleaned.contains("The Catacombs (M")) { - masterS++; - masterSSession++; - ConfigHandler.writeIntConfig("catacombs", "masterS", masterS); - } + switch (Utils.currentFloor) { + case M1: + m1S++; + m1SPlus++; + ConfigHandler.writeIntConfig("catacombs", "masterOneS", m1S); + break; + case M2: + m2S++; + m2SPlus++; + ConfigHandler.writeIntConfig("catacombs", "masterTwoS", m2S); + break; + case M3: + m3S++; + m3SPlus++; + ConfigHandler.writeIntConfig("catacombs", "masterThreeS", m3S); + break; + case M4: + m4S++; + m4SPlus++; + ConfigHandler.writeIntConfig("catacombs", "masterFourS", m4S); + break; + case M5: + m5S++; + m5SPlus++; + ConfigHandler.writeIntConfig("catacombs", "masterFiveS", m5S); + break; + case M6: + m6S++; + m6SPlus++; + ConfigHandler.writeIntConfig("catacombs", "masterSixS", m6S); + break; + case M7: + m7S++; + m7SPlus++; + ConfigHandler.writeIntConfig("catacombs", "masterSevenS", m7S); + break; } } } @@ -435,56 +550,74 @@ public class CatacombsTracker { fifthStars++; fifthStarsSession++; ConfigHandler.writeIntConfig("catacombs", "fifthStar", fifthStars); + } else if (message.contains("Dark Claymore")) { + darkClaymores++; + darkClaymoresSession++; + ConfigHandler.writeIntConfig("catacombs", "darkClaymore", darkClaymores); } } if (message.contains("EXTRA STATS ")) { List 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("(M")) { - masterTimeSpent = Math.floor(masterTimeSpent + timeToAdd); - masterTimeSpentSession = Math.floor(masterTimeSpentSession + timeToAdd); - ConfigHandler.writeDoubleConfig("catacombs", "masterTime", masterTimeSpent); - } - } else if (sCleaned.contains("Time Elapsed:")) { + 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; + 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; + } } } } @@ -504,69 +637,80 @@ public class CatacombsTracker { if (line.contains(" Coins") && !line.contains("NOTE:")) { int coinsSpent = Integer.parseInt(line.replaceAll("[^\\d]", "")); - List 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); - } else if (sCleaned.contains("(M")) { - masterCoinsSpent += coinsSpent; - masterCoinsSpentSession += coinsSpent; - ConfigHandler.writeDoubleConfig("catacombs", "masterCoins", masterCoinsSpent); - } + 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")) { - List scoreboard = ScoreboardHandler.getSidebarLines(); - for (String s : scoreboard) { - String sCleaned = ScoreboardHandler.cleanSB(s); - if (sCleaned.contains("The Catacombs (")) { - if (sCleaned.contains("F6")) { - f6Rerolls++; - f6RerollsSession++; - ConfigHandler.writeDoubleConfig("catacombs", "floorSixRerolls", f6Rerolls); - } else if (sCleaned.contains("F7")) { - f7Rerolls++; - f7RerollsSession++; - ConfigHandler.writeDoubleConfig("catacombs", "floorSevenRerolls", f7Rerolls); - } else if (sCleaned.contains("(M")) { - masterRerolls++; - masterRerollsSession++; - ConfigHandler.writeDoubleConfig("catacombs", "masterRerolls", masterRerolls); - } + 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/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java index 812108b..16e64f6 100644 --- a/src/main/java/me/Danker/features/loot/LootDisplay.java +++ b/src/main/java/me/Danker/features/loot/LootDisplay.java @@ -30,6 +30,8 @@ public class LootDisplay { String timeBetween; String bossesBetween; String drop20; + String runs; + String runsCount; double timeNow = System.currentTimeMillis() / 1000; NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US); @@ -1109,7 +1111,39 @@ public class LootDisplay { EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.f7TimeSpentSession); break; case "catacombs_master": - dropsText = EnumChatFormatting.GOLD + "S Runs:\n" + + 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" + @@ -1117,10 +1151,11 @@ public class LootDisplay { EnumChatFormatting.DARK_PURPLE + "3rd Master Stars:\n" + EnumChatFormatting.DARK_PURPLE + "4th Master Stars:\n" + EnumChatFormatting.DARK_PURPLE + "5th Master Stars:\n" + + EnumChatFormatting.GOLD + "Dark Claymores:\n" + EnumChatFormatting.WHITE + "Rerolls:\n" + EnumChatFormatting.AQUA + "Coins Spent:\n" + EnumChatFormatting.AQUA + "Time Spent:"; - countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.masterS) + "\n" + + 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" + @@ -1128,12 +1163,45 @@ public class LootDisplay { 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.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": - dropsText = EnumChatFormatting.GOLD + "S Runs:\n" + + 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" + @@ -1141,10 +1209,11 @@ public class LootDisplay { EnumChatFormatting.DARK_PURPLE + "3rd Master Stars:\n" + EnumChatFormatting.DARK_PURPLE + "4th Master Stars:\n" + EnumChatFormatting.DARK_PURPLE + "5th Master Stars:\n" + + EnumChatFormatting.GOLD + "Dark Claymores:\n" + EnumChatFormatting.WHITE + "Rerolls:\n" + EnumChatFormatting.AQUA + "Coins Spent:\n" + EnumChatFormatting.AQUA + "Time Spent:"; - countText = EnumChatFormatting.GOLD + nf.format(CatacombsTracker.masterSSession) + "\n" + + 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" + @@ -1152,6 +1221,7 @@ public class LootDisplay { 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.darkClaymoresSession) + "\n" + EnumChatFormatting.WHITE + nf.format(CatacombsTracker.masterRerollsSession) + "\n" + EnumChatFormatting.AQUA + Utils.getMoneySpent(CatacombsTracker.masterCoinsSpentSession) + "\n" + EnumChatFormatting.AQUA + Utils.getTimeBetween(0, CatacombsTracker.masterTimeSpentSession); diff --git a/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java index 4e9f498..b947cdb 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/LividSolver.java @@ -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 loadedLivids = new ArrayList<>(); List entities = world.getLoadedEntityList(); for (Entity entity : entities) { diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index d5e9ee8..a6f76b1 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -50,6 +50,7 @@ public class DankerGui extends GuiScreen { private GuiButton coords; private GuiButton goldenEnch; private GuiButton slayerCount; + private GuiButton masterSPlusDisplay; private GuiButton rngesusAlert; private GuiButton splitFishing; private GuiButton chatMaddox; @@ -135,6 +136,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."); @@ -190,6 +192,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); @@ -503,6 +506,10 @@ public class DankerGui extends GuiScreen { 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); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 3839766..9365b63 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -201,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); @@ -514,12 +515,26 @@ public class ConfigHandler { CatacombsTracker.f7CoinsSpent = initDouble("catacombs", "floorSevenCoins", 0); CatacombsTracker.f7TimeSpent = initDouble("catacombs", "floorSevenTime", 0); // MM - CatacombsTracker.masterS = initInt("catacombs", "masterS", 0); + 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.darkClaymores = initInt("catacombs", "darkClaymore", 0); CatacombsTracker.masterRerolls = initInt("catacombs", "masterRerolls", 0); CatacombsTracker.masterCoinsSpent = initDouble("catacombs", "masterCoins", 0); CatacombsTracker.masterTimeSpent = initDouble("catacombs", "masterTime", 0); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 8c48c54..30e8249 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -28,6 +28,7 @@ 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, @@ -135,6 +136,31 @@ public class Utils { inDungeons = false; } + public static void checkForDungeonFloor() { + if (inDungeons) { + List 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 players = Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap(); @@ -465,4 +491,23 @@ public class Utils { 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 + } + } -- cgit From 5c1ab9451fc3ef7054f2718719fcf0fbe60ada8b Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Tue, 15 Mar 2022 16:23:12 -0400 Subject: Fix alerts not saving when editing --- src/main/java/me/Danker/gui/alerts/AlertActionGui.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java index 034ad79..02ef186 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java @@ -79,6 +79,7 @@ public class AlertActionGui extends GuiScreen { return; } Alerts.alerts.set(id, alert); + Alerts.saveToFile(); } } -- cgit From 71f48e9cf2f250a2ddf5444ccce5d0ebd6487e4a Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sun, 20 Mar 2022 22:42:22 -0400 Subject: Add hiding player armour --- README.md | 2 + src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 1 + .../java/me/Danker/features/HidePlayerArmour.java | 51 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 8 ++++ .../java/me/Danker/handlers/ConfigHandler.java | 1 + 6 files changed, 64 insertions(+) create mode 100644 src/main/java/me/Danker/features/HidePlayerArmour.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 4ae2a40..a04bd50 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ Discord Server: https://discord.gg/QsEkNQS - Ability cooldowns display - Custom alerts based on chat - Predicted dungeon score display +- Hide player armour ## Commands - /dhelp - Returns this message in-game. @@ -148,3 +149,4 @@ Software | License [HyChat](https://github.com/Moulberry/Hychat) | [Creative Commons Public License](https://github.com/Moulberry/Hychat/blob/master/LICENSE) [SkyblockCatia](https://github.com/SteveKunG/SkyBlockcatia) | [MIT License](https://github.com/SteveKunG/SkyBlockcatia/blob/1.8.9/LICENSE.md) [MatterOverdrive (Legacy Edition)](https://bitbucket.org/hrznstudio/mo-legacy-edition/) | [GNU General Public License](https://bitbucket.org/hrznstudio/mo-legacy-edition/src/1.12.2/LICENSE.md) +[Hide Armour](https://github.com/Furgl/Hide-Armor/tree/1.15.2) | No License diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 02eeff4..353247d 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -131,6 +131,7 @@ public class DankersSkyblockMod { 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()); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 04770aa..2281a0a 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -48,6 +48,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean abilityCooldowns; public static boolean alerts; public static boolean dungeonScore; + public static boolean hideArmour; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; 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 armour = new ArrayList<>(); + + @SubscribeEvent + public void onRenderLivingPre(RenderLivingEvent.Pre 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 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/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index a6f76b1..fb84b0a 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -1,5 +1,6 @@ package me.Danker.gui; +import jdk.nashorn.internal.runtime.regexp.joni.Config; import me.Danker.commands.ToggleCommand; import me.Danker.gui.alerts.AlertsGui; import me.Danker.gui.buttons.FeatureButton; @@ -85,6 +86,7 @@ public class DankerGui extends GuiScreen { private GuiButton necronNotifications; private GuiButton bonzoTimer; private GuiButton dungeonScore; + private GuiButton hideArmour; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -175,6 +177,7 @@ public class DankerGui extends GuiScreen { 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."); allButtons.clear(); allButtons.add(changeDisplay); @@ -231,6 +234,7 @@ public class DankerGui extends GuiScreen { allButtons.add(autoAcceptReparty); allButtons.add(abilityCooldown); allButtons.add(dungeonScore); + allButtons.add(hideArmour); search.setText(initSearchText); search.setVisible(true); @@ -510,6 +514,10 @@ public class DankerGui extends GuiScreen { 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); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index dc57e91..ed28704 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -241,6 +241,7 @@ public class ConfigHandler { ToggleCommand.autoSkillTrackerToggled = initBoolean("toggles", "AutoSkillTracker", false); ToggleCommand.alerts = initBoolean("toggles", "Alerts", false); ToggleCommand.dungeonScore = initBoolean("toggles", "DungeonScore", false); + ToggleCommand.hideArmour = initBoolean("toggles", "HideArmour", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); -- cgit From dce1af627f2f9f10bb21f83b976c2b6008975fdf Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Tue, 22 Mar 2022 19:59:22 -0400 Subject: Add new f7 terminals Also remove maze terminal --- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 1 + .../me/Danker/features/AutoSwapToPickBlock.java | 25 ++-- .../puzzlesolvers/BlockWrongTerminalClicks.java | 57 +++----- .../features/puzzlesolvers/SameColourSolver.java | 152 +++++++++++++++++++++ src/main/java/me/Danker/gui/PuzzleSolversGui.java | 13 +- .../java/me/Danker/handlers/ConfigHandler.java | 1 + src/main/java/me/Danker/utils/RenderUtils.java | 16 +++ 8 files changed, 213 insertions(+), 53 deletions(-) create mode 100644 src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 353247d..39653ca 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -142,6 +142,7 @@ public class DankersSkyblockMod { 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()); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 2281a0a..8bce0b3 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -82,6 +82,7 @@ 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 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/puzzlesolvers/BlockWrongTerminalClicks.java b/src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java index 5176e8b..7f76059 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/BlockWrongTerminalClicks.java @@ -30,44 +30,6 @@ public class BlockWrongTerminalClicks { switch (inventoryName) { case "Correct all the panes!": shouldCancel = !StringUtils.stripControlCodes(item.getDisplayName()).startsWith("Off"); - break; - case "Navigate the maze!": - if (item.getItem() != Item.getItemFromBlock(Blocks.stained_glass_pane)) { - shouldCancel = true; - break; - } - - if (item.getItemDamage() != 0) { - shouldCancel = true; - break; - } - - boolean isValid = false; - - int slotIndex = slot.getSlotIndex(); - - if (slotIndex % 9 != 8 && slotIndex != 53) { - ItemStack itemStack = inventory.getStackInSlot(slotIndex + 1); - if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true; - } - - if (!isValid && slotIndex % 9 != 0 && slotIndex != 0) { - ItemStack itemStack = inventory.getStackInSlot(slotIndex - 1); - if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true; - } - - if (!isValid && slotIndex <= 44) { - ItemStack itemStack = inventory.getStackInSlot(slotIndex + 9); - if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true; - } - - if (!isValid && slotIndex >= 9) { - ItemStack itemStack = inventory.getStackInSlot(slotIndex - 9); - if (itemStack != null && itemStack.getItemDamage() == 5) isValid = true; - } - - shouldCancel = !isValid; - break; case "Click in order!": @@ -87,6 +49,25 @@ public class BlockWrongTerminalClicks { 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) { 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..9b0066b --- /dev/null +++ b/src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java @@ -0,0 +1,152 @@ +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.init.Items; +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 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 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 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) { + 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/gui/PuzzleSolversGui.java b/src/main/java/me/Danker/gui/PuzzleSolversGui.java index 0cfa72b..2f87630 100644 --- a/src/main/java/me/Danker/gui/PuzzleSolversGui.java +++ b/src/main/java/me/Danker/gui/PuzzleSolversGui.java @@ -28,6 +28,7 @@ public class PuzzleSolversGui extends GuiScreen { private GuiButton startsWith; private GuiButton selectAll; private GuiButton clickOrder; + private GuiButton sameColour; private GuiButton blockClicks; private GuiButton itemFrameOnSeaLanterns; @@ -67,9 +68,10 @@ public class PuzzleSolversGui extends GuiScreen { 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)); - blockClicks = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Block Wrong Clicks on Terminals: " + Utils.getColouredBoolean(ToggleCommand.blockWrongTerminalClicksToggled)); + sameColour = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Same Colour Terminal Solver: " + Utils.getColouredBoolean(ToggleCommand.sameColourToggled)); // Page 3 - itemFrameOnSeaLanterns = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Ignore Arrows On Sea Lanterns: " + Utils.getColouredBoolean(ToggleCommand.itemFrameOnSeaLanternsToggled)); + 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: @@ -89,11 +91,12 @@ public class PuzzleSolversGui extends GuiScreen { this.buttonList.add(startsWith); this.buttonList.add(selectAll); this.buttonList.add(clickOrder); - this.buttonList.add(blockClicks); + 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); } @@ -174,6 +177,10 @@ public class PuzzleSolversGui extends GuiScreen { 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/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index ed28704..14386e4 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -264,6 +264,7 @@ 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 diff --git a/src/main/java/me/Danker/utils/RenderUtils.java b/src/main/java/me/Danker/utils/RenderUtils.java index 50b9786..b5ede19 100644 --- a/src/main/java/me/Danker/utils/RenderUtils.java +++ b/src/main/java/me/Danker/utils/RenderUtils.java @@ -59,6 +59,22 @@ public class RenderUtils { 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(); -- cgit From 1e2036e6ca3b10595ba27691ab4ee0a87d31f052 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 16 Apr 2022 19:05:53 -0400 Subject: Add automatically joining skyblock --- README.md | 1 + src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 1 + .../java/me/Danker/features/AutoJoinSkyblock.java | 41 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 ++++ .../java/me/Danker/handlers/ConfigHandler.java | 1 + 6 files changed, 52 insertions(+) create mode 100644 src/main/java/me/Danker/features/AutoJoinSkyblock.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index a04bd50..12d2700 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,7 @@ Discord Server: https://discord.gg/QsEkNQS - Custom alerts based on chat - Predicted dungeon score display - Hide player armour +- Automatically join skyblock ## Commands - /dhelp - Returns this message in-game. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 39653ca..07ba904 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -106,6 +106,7 @@ public class DankersSkyblockMod { 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()); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 8bce0b3..9c56958 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -49,6 +49,7 @@ public class ToggleCommand extends CommandBase implements ICommand { 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; 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/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index fb84b0a..2900489 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -87,6 +87,7 @@ public class DankerGui extends GuiScreen { private GuiButton bonzoTimer; private GuiButton dungeonScore; private GuiButton hideArmour; + private GuiButton autoJoinSkyblock; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -178,6 +179,7 @@ public class DankerGui extends GuiScreen { 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); @@ -235,6 +237,7 @@ public class DankerGui extends GuiScreen { allButtons.add(abilityCooldown); allButtons.add(dungeonScore); allButtons.add(hideArmour); + allButtons.add(autoJoinSkyblock); search.setText(initSearchText); search.setVisible(true); @@ -518,6 +521,10 @@ public class DankerGui extends GuiScreen { 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/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 14386e4..21fa57f 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -242,6 +242,7 @@ public class ConfigHandler { 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); -- cgit From 7af45a9bee936d6da43e8b9ee6473a8ecbcb3d7f Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 16 Apr 2022 20:22:32 -0400 Subject: Add location and desktop notification for alerts Options of everywhere, in skyblock and in dungeons --- src/main/java/me/Danker/features/Alerts.java | 42 +++++++++++++++++++- .../java/me/Danker/gui/alerts/AlertActionGui.java | 8 +++- .../java/me/Danker/gui/alerts/AlertAddGui.java | 45 +++++++++++++++++----- 3 files changed, 83 insertions(+), 12 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/features/Alerts.java b/src/main/java/me/Danker/features/Alerts.java index 2a00fef..aab99b3 100644 --- a/src/main/java/me/Danker/features/Alerts.java +++ b/src/main/java/me/Danker/features/Alerts.java @@ -8,6 +8,7 @@ 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; @@ -20,13 +21,26 @@ public class Alerts { @SubscribeEvent public void onChat(ClientChatReceivedEvent event) { - if (!ToggleCommand.alerts || !Utils.inSkyblock || event.type == 2) return; + 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": @@ -44,6 +58,22 @@ public class Alerts { 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; } } @@ -61,14 +91,18 @@ public class Alerts { 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 message, String alert, 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; } @@ -76,6 +110,10 @@ public class Alerts { toggled = !toggled; } + public void toggleDesktop() { + desktop = !desktop; + } + } } diff --git a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java index 02ef186..7a73f5a 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java @@ -16,6 +16,7 @@ public class AlertActionGui extends GuiScreen { private GuiButton goBack; private GuiButton toggle; + private GuiButton toggleDesktop; private GuiButton edit; private GuiButton delete; @@ -40,10 +41,12 @@ public class AlertActionGui extends GuiScreen { 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)); - edit = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Edit >"); + 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); @@ -70,6 +73,9 @@ public class AlertActionGui extends GuiScreen { } 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) { diff --git a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java index efc099c..5f01d6d 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java @@ -2,6 +2,7 @@ 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; @@ -20,11 +21,16 @@ public class AlertAddGui extends GuiScreen { 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; @@ -54,15 +60,21 @@ public class AlertAddGui extends GuiScreen { 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"); - message = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.3), 200, 20); - alert = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.4), 200, 20); - toggled = new GuiCheckBox(0, width / 2 - 26, (int) (height * 0.5), "Toggled", true); - add = new GuiButton(0, width / 2 - 25, (int) (height * 0.7), 50, 20, "Add"); + 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); } @@ -75,6 +87,10 @@ public class AlertAddGui extends GuiScreen { 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); } @@ -87,9 +103,10 @@ public class AlertAddGui extends GuiScreen { message.drawTextBox(); alert.drawTextBox(); - new TextRenderer(mc, "Mode: " + mode, width / 2 - 35, (int) (height * 0.15), 1D); - new TextRenderer(mc, "Trigger:", width / 2 - 145, (int) (height * 0.32), 1D); - new TextRenderer(mc, "Alert Text:", width / 2 - 158, (int) (height * 0.42), 1D); + 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 @@ -102,9 +119,19 @@ public class AlertAddGui extends GuiScreen { 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.alerts.add(new Alerts.Alert(mode, message.getText(), alert.getText(), toggled.isChecked())); - if (editing) Alerts.alerts.remove(id); + 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)); } -- cgit From 637d39e2dad83b29503a1b12fc8e2f7f9e1489fa Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 16 Apr 2022 20:52:59 -0400 Subject: Add auto add player waypoints --- .../commands/CrystalHollowWaypointCommand.java | 20 +++++++++++++++++--- src/main/java/me/Danker/commands/ToggleCommand.java | 1 + .../me/Danker/features/CrystalHollowWaypoints.java | 12 ++++++++++-- .../CrystalHollowWaypointsGui.java | 8 ++++++++ src/main/java/me/Danker/handlers/ConfigHandler.java | 3 ++- 5 files changed, 38 insertions(+), 6 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java b/src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java index 1aacf50..f5dea9b 100644 --- a/src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java +++ b/src/main/java/me/Danker/commands/CrystalHollowWaypointCommand.java @@ -2,6 +2,7 @@ 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; @@ -28,11 +29,13 @@ public class CrystalHollowWaypointCommand extends CommandBase { @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { - EntityPlayer player = (EntityPlayer) arg0; - if (arg1.length == 0) return; + addWaypoints(String.join(" ", arg1), false); + } - String[] waypoints = String.join(" ", arg1).split("\\\\n"); + 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("@-"); @@ -42,6 +45,17 @@ public class CrystalHollowWaypointCommand extends CommandBase { 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/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 9c56958..c8f37d6 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -44,6 +44,7 @@ public class ToggleCommand extends CommandBase implements ICommand { 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; diff --git a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java index 1ce4150..f367877 100644 --- a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java +++ b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java @@ -1,6 +1,7 @@ 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; @@ -88,7 +89,7 @@ public class CrystalHollowWaypoints { if (!king && entity.getCustomNameTag().endsWith("King Yolkar")) { king = found = true; waypoints.add(new Waypoint("King Yolkar", entity.getPosition())); - } else if (!corleone && entity.getCustomNameTag().endsWith("Boss Corleone")) { + } 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")) { @@ -123,8 +124,15 @@ public class CrystalHollowWaypoints { */ 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 " + message.substring(message.lastIndexOf(":") + 1)))); + add.setChatStyle(add.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dsmaddcrystalhollowwaypoints " + waypoints))); new Thread(() -> { try { diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java index fc0f108..7c54c98 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java @@ -1,5 +1,6 @@ package me.Danker.gui.crystalhollowwaypoints; +import javafx.scene.control.Toggle; import me.Danker.commands.ToggleCommand; import me.Danker.features.CrystalHollowWaypoints; import me.Danker.gui.DankerGui; @@ -29,6 +30,7 @@ public class CrystalHollowWaypointsGui extends GuiScreen { private GuiButton add; private FeatureButton crystalHollowWaypoints; private FeatureButton crystalAutoWaypoints; + private FeatureButton crystalAutoPlayerWaypoints; public CrystalHollowWaypointsGui(int page) { this.page = page; @@ -55,11 +57,13 @@ public class CrystalHollowWaypointsGui extends GuiScreen { 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 + " >"); @@ -135,6 +139,10 @@ public class CrystalHollowWaypointsGui extends GuiScreen { 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/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 21fa57f..b042177 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -221,11 +221,12 @@ public class ConfigHandler { ToggleCommand.teammatesInRadius = initBoolean("toggles", "TeammatesInRadius", false); ToggleCommand.giantHP = initBoolean("toggles", "GiantHP", false); ToggleCommand.hidePetCandy = initBoolean("toggles", "HidePetCandy", false); - ToggleCommand.customColouredNames = initBoolean("toggles", "CustomColouredNames", true); + 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); -- cgit From 9b65362e8e85a8fc783fdb2a1c94f6df51f9450f Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Mon, 18 Apr 2022 19:13:55 -0400 Subject: Add farming weight to /weight Also add /we alias --- README.md | 3 +- .../java/me/Danker/commands/WeightCommand.java | 131 ++++++++++++++++++++- .../features/puzzlesolvers/SameColourSolver.java | 1 - src/main/java/me/Danker/gui/DankerGui.java | 1 - .../CrystalHollowWaypointsGui.java | 1 - 5 files changed, 130 insertions(+), 7 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 12d2700..4a77ae4 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ Discord Server: https://discord.gg/QsEkNQS - /bank [player] - Uses API to get bank and purse coins of a person. If no name is provided, it checks yours. - /armor [player] - Uses API to get armour of a person. If no name is provided, it checks yours. - /dungeons [player] - Uses API to get dungeon levels of a person. If no name is provided, it checks yours. -- /weight [player] [lily] - 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. +- /weight [player] [lily/farming] - Uses API to get weight of a person. If no name is provided, it checks yours. Adding lily uses lily's weight. Adding farming uses Kaeso's farming weight. - /importfishing - Imports your fishing stats from your latest profile to your fishing tracker using the API. - /sbplayers - Uses API to find how many players are on each Skyblock island. - /onlyslayer <1/2/3/4/5> @@ -151,3 +151,4 @@ Software | License [SkyblockCatia](https://github.com/SteveKunG/SkyBlockcatia) | [MIT License](https://github.com/SteveKunG/SkyBlockcatia/blob/1.8.9/LICENSE.md) [MatterOverdrive (Legacy Edition)](https://bitbucket.org/hrznstudio/mo-legacy-edition/) | [GNU General Public License](https://bitbucket.org/hrznstudio/mo-legacy-edition/src/1.12.2/LICENSE.md) [Hide Armour](https://github.com/Furgl/Hide-Armor/tree/1.15.2) | No License +[Elite Discord Bot](https://github.com/ptlthg/EliteDiscordBot) | [MIT License](https://github.com/ptlthg/EliteDiscordBot/blob/master/LICENSE) diff --git a/src/main/java/me/Danker/commands/WeightCommand.java b/src/main/java/me/Danker/commands/WeightCommand.java index 7593f65..b00d881 100644 --- a/src/main/java/me/Danker/commands/WeightCommand.java +++ b/src/main/java/me/Danker/commands/WeightCommand.java @@ -1,5 +1,7 @@ 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; @@ -12,21 +14,40 @@ 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.List; -import java.util.Locale; +import java.util.*; +import java.util.stream.Collectors; public class WeightCommand extends CommandBase { + ArrayList 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 getCommandAliases() { + return Collections.singletonList("we"); + } + @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [name] [lily]"; + return "/" + getCommandName() + " [name] [lily/farming]"; } public static String usage(ICommandSender arg0) { @@ -129,6 +150,110 @@ public class WeightCommand extends CommandBase { 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 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))); } diff --git a/src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java index 986e138..a3c1bc1 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/SameColourSolver.java @@ -8,7 +8,6 @@ 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.init.Items; import net.minecraft.inventory.ContainerChest; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 2900489..4285d16 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -1,6 +1,5 @@ package me.Danker.gui; -import jdk.nashorn.internal.runtime.regexp.joni.Config; import me.Danker.commands.ToggleCommand; import me.Danker.gui.alerts.AlertsGui; import me.Danker.gui.buttons.FeatureButton; diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java index 7c54c98..6780542 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java @@ -1,6 +1,5 @@ package me.Danker.gui.crystalhollowwaypoints; -import javafx.scene.control.Toggle; import me.Danker.commands.ToggleCommand; import me.Danker.features.CrystalHollowWaypoints; import me.Danker.gui.DankerGui; -- cgit From f214832fb6f315d59d876267f71e9e9f0a6082fd Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Wed, 20 Apr 2022 22:52:26 -0400 Subject: Add blaze slayer support + tracker --- README.md | 8 +- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../me/Danker/commands/BlockSlayerCommand.java | 10 +- .../java/me/Danker/commands/DisplayCommand.java | 13 +- src/main/java/me/Danker/commands/LootCommand.java | 89 +++++++++- .../java/me/Danker/commands/ResetLootCommand.java | 39 ++++- .../me/Danker/commands/SkyblockPlayersCommand.java | 19 +-- .../java/me/Danker/commands/SlayerCommand.java | 10 +- .../java/me/Danker/commands/WeightCommand.java | 2 + src/main/java/me/Danker/features/AutoDisplay.java | 3 + .../java/me/Danker/features/loot/BlazeTracker.java | 184 +++++++++++++++++++++ .../java/me/Danker/features/loot/LootDisplay.java | 122 ++++++++++++++ .../java/me/Danker/features/loot/LootTracker.java | 6 +- src/main/java/me/Danker/gui/DisplayGui.java | 13 +- src/main/java/me/Danker/gui/OnlySlayerGui.java | 14 +- .../java/me/Danker/handlers/ConfigHandler.java | 27 ++- 16 files changed, 519 insertions(+), 41 deletions(-) create mode 100644 src/main/java/me/Danker/features/loot/BlazeTracker.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 4a77ae4..2a740c7 100644 --- a/README.md +++ b/README.md @@ -72,9 +72,9 @@ Discord Server: https://discord.gg/QsEkNQS - /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. -- /loot [winter/festival/spooky/ch/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. -- /display [winter/festival/spooky/ch/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. -- /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. +- /loot [winter/festival/spooky/ch/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. +- /display [winter/festival/spooky/ch/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. +- /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. - /move - Moves text display to specified X and Y coordinates. - /scale - Scales text display to a specified multipler between 0.1x and 10x. - /slayer [player] - Uses API to get slayer xp of a person. If no name is provided, it checks yours. @@ -88,7 +88,7 @@ Discord Server: https://discord.gg/QsEkNQS - /weight [player] [lily/farming] - Uses API to get weight of a person. If no name is provided, it checks yours. Adding lily uses lily's weight. Adding farming uses Kaeso's farming weight. - /importfishing - Imports your fishing stats from your latest profile to your fishing tracker using the API. - /sbplayers - Uses API to find how many players are on each Skyblock island. -- /onlyslayer <1/2/3/4/5> +- /onlyslayer <1/2/3/4/5> - /skilltracker - Text display for skill xp/hour. - /reparty - Disbands and reparties all members in the party - /fairysouls - Check the fairysouls of a player diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 07ba904..fb98068 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -166,6 +166,7 @@ public class DankersSkyblockMod { 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()); diff --git a/src/main/java/me/Danker/commands/BlockSlayerCommand.java b/src/main/java/me/Danker/commands/BlockSlayerCommand.java index 9f51be6..37047c9 100644 --- a/src/main/java/me/Danker/commands/BlockSlayerCommand.java +++ b/src/main/java/me/Danker/commands/BlockSlayerCommand.java @@ -21,7 +21,7 @@ public class BlockSlayerCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " <1/2/3/4/5>"; + return "/" + getCommandName() + " <1/2/3/4/5>"; } public static String usage(ICommandSender arg0) { @@ -36,7 +36,7 @@ public class BlockSlayerCommand extends CommandBase { @Override public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { if (args.length == 1) { - return getListOfStringsMatchingLastWord(args, "zombie", "spider", "wolf", "enderman"); + return getListOfStringsMatchingLastWord(args, "zombie", "spider", "wolf", "enderman", "blaze"); } else if (args.length == 2) { return getListOfStringsMatchingLastWord(args, "1", "2", "3", "4", "5"); } @@ -62,6 +62,12 @@ public class BlockSlayerCommand extends CommandBase { 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 = ""; diff --git a/src/main/java/me/Danker/commands/DisplayCommand.java b/src/main/java/me/Danker/commands/DisplayCommand.java index 3db6853..174258d 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() + " [winter/festival/spooky/ch/session/f(1-7)/mm]"; + return "/" + getCommandName() + " [winter/festival/spooky/ch/session/f(1-7)/mm]"; } public static String usage(ICommandSender arg0) { @@ -36,7 +36,7 @@ public class DisplayCommand extends CommandBase { @Override public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { if (args.length == 1) { - return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "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", "ch", "session"); } else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) { @@ -89,6 +89,13 @@ public class DisplayCommand extends CommandBase { 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()) { @@ -213,7 +220,7 @@ public class DisplayCommand extends CommandBase { LootDisplay.display = "catacombs_master"; } default: - player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /display catacombs ")); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /display catacombs ")); return; } break; diff --git a/src/main/java/me/Danker/commands/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java index 5edc5f4..5d91573 100644 --- a/src/main/java/me/Danker/commands/LootCommand.java +++ b/src/main/java/me/Danker/commands/LootCommand.java @@ -24,7 +24,7 @@ public class LootCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [winter/festival/spooky/ch/f(1-7)/mm/session]"; + return "/" + getCommandName() + " [winter/festival/spooky/ch/f(1-7)/mm/session]"; } public static String usage(ICommandSender arg0) { @@ -39,7 +39,7 @@ public class LootCommand extends CommandBase { @Override public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { if (args.length == 1) { - return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "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", "ch", "session"); } else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) { @@ -64,9 +64,8 @@ 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": @@ -363,6 +362,88 @@ public class LootCommand extends CommandBase { 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")) { diff --git a/src/main/java/me/Danker/commands/ResetLootCommand.java b/src/main/java/me/Danker/commands/ResetLootCommand.java index f1d2828..d3294b2 100644 --- a/src/main/java/me/Danker/commands/ResetLootCommand.java +++ b/src/main/java/me/Danker/commands/ResetLootCommand.java @@ -25,7 +25,7 @@ public class ResetLootCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + ""; + return "/" + getCommandName() + ""; } 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", "enderman", "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 ")); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: /resetloot ")); return; } @@ -75,6 +75,9 @@ public class ResetLootCommand extends CommandBase { case "enderman": resetEnderman(); break; + case "blaze": + resetBlaze(); + break; case "fishing": resetFishing(); break; @@ -102,6 +105,7 @@ public class ResetLootCommand extends CommandBase { case "spider": case "wolf": case "enderman": + case "blaze": case "fishing": case "mythological": case "catacombs": @@ -201,6 +205,35 @@ public class ResetLootCommand extends CommandBase { 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() { FishingTracker.seaCreaturesSession = 0; diff --git a/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java b/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java index 0923b57..37e89c5 100644 --- a/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java +++ b/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java @@ -70,15 +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 @@ -94,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(); @@ -117,8 +113,8 @@ public class SkyblockPlayersCommand extends CommandBase { 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(); @@ -143,15 +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 5444754..8ad87ae 100644 --- a/src/main/java/me/Danker/commands/SlayerCommand.java +++ b/src/main/java/me/Danker/commands/SlayerCommand.java @@ -113,15 +113,21 @@ public class SlayerCommand extends CommandBase { 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 + endermanXP) + "\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.TYPE_COLOUR + " Enderman XP: " + DankersSkyblockMod.VALUE_COLOUR + EnumChatFormatting.BOLD + nf.format(endermanXP) + "\n" + - DankersSkyblockMod.DELIMITER_COLOUR + " " + EnumChatFormatting.BOLD + "-------------------")); + 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/WeightCommand.java b/src/main/java/me/Danker/commands/WeightCommand.java index b00d881..ade909d 100644 --- a/src/main/java/me/Danker/commands/WeightCommand.java +++ b/src/main/java/me/Danker/commands/WeightCommand.java @@ -63,6 +63,8 @@ public class WeightCommand extends CommandBase { public List 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; } diff --git a/src/main/java/me/Danker/features/AutoDisplay.java b/src/main/java/me/Danker/features/AutoDisplay.java index 5fc4489..63b66d5 100644 --- a/src/main/java/me/Danker/features/AutoDisplay.java +++ b/src/main/java/me/Danker/features/AutoDisplay.java @@ -42,6 +42,9 @@ public class AutoDisplay { } 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; 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/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java index aabdbd9..9d3f466 100644 --- a/src/main/java/me/Danker/features/loot/LootDisplay.java +++ b/src/main/java/me/Danker/features/loot/LootDisplay.java @@ -416,6 +416,128 @@ public class LootDisplay { 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 Cream Distillates:\n" + + EnumChatFormatting.BLUE + "Nether Wart Distillates:\n" + + EnumChatFormatting.BLUE + "Gabagool Distillates:\n" + + EnumChatFormatting.RED + "Scorched 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 Archfiend 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 Cream Distillates:\n" + + EnumChatFormatting.BLUE + "Nether Wart Distillates:\n" + + EnumChatFormatting.BLUE + "Gabagool Distillates:\n" + + EnumChatFormatting.RED + "Scorched 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 Archfiend 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 (FishingTracker.empTime == -1) { timeBetween = "Never"; diff --git a/src/main/java/me/Danker/features/loot/LootTracker.java b/src/main/java/me/Danker/features/loot/LootTracker.java index 4e5974c..27f0779 100644 --- a/src/main/java/me/Danker/features/loot/LootTracker.java +++ b/src/main/java/me/Danker/features/loot/LootTracker.java @@ -31,23 +31,27 @@ public class LootTracker { int itemWebs = Utils.getItems("Tarantula Web"); int itemRev = Utils.getItems("Revenant 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 + itemWebs + itemRev + itemNullSphere > 0) { + if (itemTeeth + itemWebs + itemRev + itemNullSphere + itemDerelictAshe > 0) { itemsChecked = System.currentTimeMillis() / 1000; 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); } } } diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index 17726f8..073b161 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -20,6 +20,7 @@ public class DisplayGui extends GuiScreen { private GuiButton spider; private GuiButton wolf; private GuiButton enderman; + private GuiButton blaze; private GuiButton auto; private GuiButton fishing; private GuiButton fishingWinter; @@ -54,10 +55,11 @@ 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 - 230, (int) (height * 0.35), 100, 20, "Zombie"); - spider = new GuiButton(0, width / 2 - 110, (int) (height * 0.35), 100, 20, "Spider"); - wolf = new GuiButton(0, width / 2 + 10, (int) (height * 0.35), 100, 20, "Wolf"); - enderman = new GuiButton(0, width / 2 + 130, (int) (height * 0.35), 100, 20, "Enderman"); + 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 - 270, (int) (height * 0.5), 100, 20, "Fishing"); fishingWinter = new GuiButton(0, width / 2 - 160, (int) (height * 0.5), 100, 20, "Fishing Winter"); fishingFestival = new GuiButton(0, width / 2 - 50, (int) (height * 0.5), 100, 20, "Fishing Festival"); @@ -81,6 +83,7 @@ public class DisplayGui extends GuiScreen { 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); @@ -130,6 +133,8 @@ public class DisplayGui extends GuiScreen { 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); diff --git a/src/main/java/me/Danker/gui/OnlySlayerGui.java b/src/main/java/me/Danker/gui/OnlySlayerGui.java index 2a6d844..c637ff9 100644 --- a/src/main/java/me/Danker/gui/OnlySlayerGui.java +++ b/src/main/java/me/Danker/gui/OnlySlayerGui.java @@ -19,6 +19,7 @@ public class OnlySlayerGui extends GuiScreen { private GuiButton spider; private GuiButton wolf; private GuiButton enderman; + private GuiButton blaze; private GuiButton one; private GuiButton two; private GuiButton three; @@ -60,10 +61,11 @@ public class OnlySlayerGui extends GuiScreen { 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 - 230, (int) (height * 0.4), 100, 20, "Zombie"); - spider = new GuiButton(0, width / 2 - 110, (int) (height * 0.4), 100, 20, "Spider"); - wolf = new GuiButton(0, width / 2 + 10, (int) (height * 0.4), 100, 20, "Wolf"); - enderman = new GuiButton(0, width / 2 + 130, (int) (height * 0.4), 100, 20, "Enderman"); + 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"); @@ -75,6 +77,7 @@ public class OnlySlayerGui extends GuiScreen { 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); @@ -86,7 +89,6 @@ public class OnlySlayerGui extends GuiScreen { @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawDefaultBackground(); - Minecraft mc = Minecraft.getMinecraft(); String displayText; if (BlockWrongSlayer.onlySlayerName.equals("")) { @@ -117,6 +119,8 @@ public class OnlySlayerGui extends GuiScreen { 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) { diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index b042177..4298c2a 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -384,7 +384,32 @@ public class ConfigHandler { 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.bossesSession = initInt("blaze", "bossRNG", -1); + // Fishing FishingTracker.seaCreatures = initInt("fishing", "seaCreature", 0); FishingTracker.goodCatches = initInt("fishing", "goodCatch", 0); -- cgit From a731568267903caf47a857bc3780de85daa63739 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Wed, 20 Apr 2022 23:42:22 -0400 Subject: Fix crimson isle custom music --- README.md | 4 ++-- src/main/java/me/Danker/commands/CustomMusicCommand.java | 12 ++++++------ src/main/java/me/Danker/commands/ToggleCommand.java | 12 ++++++------ src/main/java/me/Danker/features/CustomMusic.java | 12 ++++++------ src/main/java/me/Danker/gui/CustomMusicGui.java | 16 ++++++++-------- src/main/java/me/Danker/handlers/ConfigHandler.java | 4 ++-- 6 files changed, 30 insertions(+), 30 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 2a740c7..e3b7ee8 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ Discord Server: https://discord.gg/QsEkNQS - /reparty - Disbands and reparties all members in the party - /fairysouls - Check the fairysouls of a player - /lobbybank - 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). -- /dsmmusic [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/goldmine/deepcaverns/dwarvenmines/crystalhollows/spidersden/blazingfortress/end/park] [1-100] - Stops, reloads or changes the volume of custom music. +- /dsmmusic [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/goldmine/deepcaverns/dwarvenmines/crystalhollows/spidersden/crimsonisle/end/park] [1-100] - Stops, reloads or changes the volume of custom music. - /player [player] - Uses API to find skills, slayers, coins and weight of a player. - /reloadconfig - Reloads Danker's Skyblock Mod config. - /reloaddsmrepo - Reloads Danker's Skyblock Mod repository. @@ -119,7 +119,7 @@ Discord Server: https://discord.gg/QsEkNQS - Dwarven Mines: `dwarvenmines.wav` - Crystal Hollows: `crystalhollows.wav` - Spider's Den: `spidersden.wav` - - Blazing Fortress: `blazingfortress.wav` + - Crimson Isle: `crimsonisle.wav` - The End: `end.wav` - The Park: `park.wav` 2. Either run `/dsmmusic reload` or restart your game. diff --git a/src/main/java/me/Danker/commands/CustomMusicCommand.java b/src/main/java/me/Danker/commands/CustomMusicCommand.java index 283b748..f0634fc 100644 --- a/src/main/java/me/Danker/commands/CustomMusicCommand.java +++ b/src/main/java/me/Danker/commands/CustomMusicCommand.java @@ -22,7 +22,7 @@ public class CustomMusicCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { return "/" + getCommandName() + " [dungeonboss/bloodroom/dungeon/hub/island/dungeonhub/farmingislands/" + - "goldmine/deepcaverns/dwarvenmines/crystalhollows/spidersden/blazingfortress/end/park] [1-100]"; + "goldmine/deepcaverns/dwarvenmines/crystalhollows/spidersden/crimsonisle/end/park] [1-100]"; } public static String usage(ICommandSender arg0) { @@ -40,7 +40,7 @@ public class CustomMusicCommand extends CommandBase { return getListOfStringsMatchingLastWord(args, "stop", "reload", "volume"); } else if (args.length == 2) { return getListOfStringsMatchingLastWord(args, "dungeonboss", "bloodroom", "dungeon", "hub", "island", "dungeonhub", "farmingislands", "goldmine", - "deepcaverns", "dwarvenmines", "crystalhollows", "spidersden", "blazingfortress", "end", "park"); + "deepcaverns", "dwarvenmines", "crystalhollows", "spidersden", "crimsonisle", "end", "park"); } return null; } @@ -144,11 +144,11 @@ public class CustomMusicCommand extends CommandBase { CustomMusic.spidersDenVolume = volume; ConfigHandler.writeIntConfig("music", "SpidersDenVolume", volume); break; - case "blazingfortress": - if (!CustomMusic.blazingFortress.setVolume(volume)) return; + case "crimsonisle": + if (!CustomMusic.crimsonIsle.setVolume(volume)) return; - CustomMusic.blazingFortressVolume = volume; - ConfigHandler.writeIntConfig("music", "BlazingFortressVolume", volume); + CustomMusic.crimsonIsleVolume = volume; + ConfigHandler.writeIntConfig("music", "CrimsonIsleVolume", volume); break; case "end": if (!CustomMusic.end.setVolume(volume)) return; diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index c8f37d6..3536bd7 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -106,7 +106,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean dwarvenMinesMusic; public static boolean crystalHollowsMusic; public static boolean spidersDenMusic; - public static boolean blazingFortressMusic; + public static boolean crimsonIsleMusic; public static boolean endMusic; public static boolean parkMusic; @@ -576,10 +576,10 @@ public class ToggleCommand extends CommandBase implements ICommand { 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": - blazingFortressMusic = !blazingFortressMusic; - CustomMusic.blazingFortress.stop(); - ConfigHandler.writeBooleanConfig("toggles", "BlazingFortressMusic", blazingFortressMusic); - player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Custom blazing fortress music has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + blazingFortressMusic + DankersSkyblockMod.MAIN_COLOUR + ".")); + 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; @@ -674,7 +674,7 @@ public class ToggleCommand extends CommandBase implements ICommand { 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 + blazingFortressMusic + "\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" + diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java index 5153f91..a31e40a 100644 --- a/src/main/java/me/Danker/features/CustomMusic.java +++ b/src/main/java/me/Danker/features/CustomMusic.java @@ -51,8 +51,8 @@ public class CustomMusic { public static int crystalHollowsVolume; public static Song spidersDen; public static int spidersDenVolume; - public static Song blazingFortress; - public static int blazingFortressVolume; + public static Song crimsonIsle; + public static int crimsonIsleVolume; public static Song end; public static int endVolume; public static Song park; @@ -119,8 +119,8 @@ public class CustomMusic { case "Spider's Den": if (ToggleCommand.spidersDenMusic) spidersDen.start(); break; - case "Blazing Fortress": - if (ToggleCommand.blazingFortressMusic) blazingFortress.start(); + case "Crimson Isle": + if (ToggleCommand.crimsonIsleMusic) crimsonIsle.start(); break; case "The End": if (ToggleCommand.endMusic) end.start(); @@ -184,7 +184,7 @@ public class CustomMusic { dwarvenMines = new Song(directory, "dwarvenmines", dwarvenMinesVolume); crystalHollows = new Song(directory, "crystalhollows", crystalHollowsVolume); spidersDen = new Song(directory, "spidersden", spidersDenVolume); - blazingFortress = new Song(directory, "blazingfortress", blazingFortressVolume); + crimsonIsle = new Song(directory, "crimsonisle", crimsonIsleVolume); end = new Song(directory, "end", endVolume); park = new Song(directory, "park", parkVolume); } @@ -202,7 +202,7 @@ public class CustomMusic { if (dwarvenMines != null) dwarvenMines.stop(); if (crystalHollows != null) crystalHollows.stop(); if (spidersDen != null) spidersDen.stop(); - if (blazingFortress != null) blazingFortress.stop(); + if (crimsonIsle != null) crimsonIsle.stop(); if (end != null) end.stop(); if (park != null) park.stop(); } diff --git a/src/main/java/me/Danker/gui/CustomMusicGui.java b/src/main/java/me/Danker/gui/CustomMusicGui.java index 4d5dcc9..98210f5 100644 --- a/src/main/java/me/Danker/gui/CustomMusicGui.java +++ b/src/main/java/me/Danker/gui/CustomMusicGui.java @@ -29,7 +29,7 @@ public class CustomMusicGui extends GuiScreen { private GuiButton dwarvenMinesMusic; private GuiButton crystalHollowsMusic; private GuiButton spidersDenMusic; - private GuiButton blazingFortressMusic; + private GuiButton crimsonIsleMusic; private GuiButton endMusic; private GuiButton parkMusic; @@ -66,7 +66,7 @@ public class CustomMusicGui extends GuiScreen { 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)); - blazingFortressMusic = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Custom Blazing Fortress Music: " + Utils.getColouredBoolean(ToggleCommand.blazingFortressMusic)); + 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)); @@ -87,7 +87,7 @@ public class CustomMusicGui extends GuiScreen { this.buttonList.add(dwarvenMinesMusic); this.buttonList.add(crystalHollowsMusic); this.buttonList.add(spidersDenMusic); - this.buttonList.add(blazingFortressMusic); + this.buttonList.add(crimsonIsleMusic); this.buttonList.add(endMusic); this.buttonList.add(nextPage); this.buttonList.add(backPage); @@ -175,11 +175,11 @@ public class CustomMusicGui extends GuiScreen { CustomMusic.spidersDen.stop(); ConfigHandler.writeBooleanConfig("toggles", "SpidersDenMusic", ToggleCommand.spidersDenMusic); spidersDenMusic.displayString = "Custom Spider's Den Music: " + Utils.getColouredBoolean(ToggleCommand.spidersDenMusic); - } else if (button == blazingFortressMusic) { - ToggleCommand.blazingFortressMusic = !ToggleCommand.blazingFortressMusic; - CustomMusic.blazingFortress.stop(); - ConfigHandler.writeBooleanConfig("toggles", "BlazingFortressMusic", ToggleCommand.blazingFortressMusic); - blazingFortressMusic.displayString = "Custom Blazing Fortress Music: " + Utils.getColouredBoolean(ToggleCommand.blazingFortressMusic); + } 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(); diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 4298c2a..3ecb2cc 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -287,7 +287,7 @@ public class ConfigHandler { ToggleCommand.dwarvenMinesMusic = initBoolean("toggles", "DwarvenMinesMusic", false); ToggleCommand.crystalHollowsMusic = initBoolean("toggles", "CrystalHollowsMusic", false); ToggleCommand.spidersDenMusic = initBoolean("toggles", "SpidersDenMusic", false); - ToggleCommand.blazingFortressMusic = initBoolean("toggles", "BlazingFortressMusic", false); + ToggleCommand.crimsonIsleMusic = initBoolean("toggles", "CrimsonIsleMusic", false); ToggleCommand.endMusic = initBoolean("toggles", "Music", false); ToggleCommand.parkMusic = initBoolean("toggles", "Music", false); // Music Volume @@ -303,7 +303,7 @@ public class ConfigHandler { CustomMusic.dwarvenMinesVolume = initInt("music", "DwarvenMinesVolume", 50); CustomMusic.crystalHollowsVolume = initInt("music", "CrystalHollowsVolume", 50); CustomMusic.spidersDenVolume = initInt("music", "SpidersDenVolume", 50); - CustomMusic.blazingFortressVolume = initInt("music", "BlazingFortressVolume", 50); + CustomMusic.crimsonIsleVolume = initInt("music", "CrimsonIsleVolume", 50); CustomMusic.endVolume = initInt("music", "EndVolume", 50); CustomMusic.parkVolume = initInt("music", "ParkVolume", 50); -- cgit From 0aef9021be5143adb5be5e624675d79868aa9738 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 22 Apr 2022 00:32:25 -0400 Subject: Add lava fishing tracker --- README.md | 6 +- .../java/me/Danker/commands/DisplayCommand.java | 21 +- .../me/Danker/commands/ImportFishingCommand.java | 273 +++++---------------- src/main/java/me/Danker/commands/LootCommand.java | 65 ++++- .../java/me/Danker/commands/ResetLootCommand.java | 11 + src/main/java/me/Danker/features/AutoDisplay.java | 6 +- .../me/Danker/features/loot/FishingTracker.java | 96 +++++++- .../java/me/Danker/features/loot/LootDisplay.java | 86 +++++++ src/main/java/me/Danker/gui/DisplayGui.java | 15 +- .../java/me/Danker/handlers/ConfigHandler.java | 12 + 10 files changed, 350 insertions(+), 241 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index e3b7ee8..ea32b5d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Discord Server: https://discord.gg/QsEkNQS - Maddox menu keybind - Block starting other slayer quests - Slayer slain alert -- Fishing, jerry fishing, fishing festival, spooky fishing, crystal hollows fishing trackers +- Fishing, jerry fishing, fishing festival, spooky fishing, crystal hollows fishing, lava fishing trackers - Expertise kills in fishing rod lore - Gemstones applied in item lore - Catacombs trackers @@ -72,8 +72,8 @@ Discord Server: https://discord.gg/QsEkNQS - /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. -- /loot [winter/festival/spooky/ch/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. -- /display [winter/festival/spooky/ch/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. +- /loot [winter/festival/spooky/ch/lava/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. +- /display [winter/festival/spooky/ch/lava/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. - /move - Moves text display to specified X and Y coordinates. - /scale - Scales text display to a specified multipler between 0.1x and 10x. diff --git a/src/main/java/me/Danker/commands/DisplayCommand.java b/src/main/java/me/Danker/commands/DisplayCommand.java index 174258d..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() + " [winter/festival/spooky/ch/session/f(1-7)/mm]"; + return "/" + getCommandName() + " [winter/festival/spooky/ch/lava/session/f(1-7)/mm]"; } public static String usage(ICommandSender arg0) { @@ -38,7 +38,7 @@ public class DisplayCommand extends CommandBase { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "blaze", "fishing", "catacombs", "mythological", "ghost", "auto", "off"); } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { - return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "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", "mm", "master"); } else if (args.length > 1) { @@ -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) { @@ -122,9 +120,16 @@ public class DisplayCommand extends CommandBase { 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_ch_session"; + LootDisplay.display = "fishing_lava"; } break; default: @@ -230,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/ImportFishingCommand.java b/src/main/java/me/Danker/commands/ImportFishingCommand.java index bdd3281..f51e01f 100644 --- a/src/main/java/me/Danker/commands/ImportFishingCommand.java +++ b/src/main/java/me/Danker/commands/ImportFishingCommand.java @@ -77,221 +77,50 @@ public class ImportFishingCommand extends CommandBase { } FishingTracker.seaCreatures = 0; - FishingTracker.squids = 0; - if (statsObject.has("kills_pond_squid")) { - FishingTracker.squids = statsObject.get("kills_pond_squid").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.squids; - - FishingTracker.seaWalkers = 0; - if (statsObject.has("kills_sea_walker")) { - FishingTracker.seaWalkers = statsObject.get("kills_sea_walker").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.seaWalkers; - - FishingTracker.nightSquids = 0; - if (statsObject.has("kills_night_squid")) { - FishingTracker.nightSquids = statsObject.get("kills_night_squid").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.nightSquids; - - FishingTracker.seaGuardians = 0; - if (statsObject.has("kills_sea_guardian")) { - FishingTracker.seaGuardians = statsObject.get("kills_sea_guardian").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.seaGuardians; - - FishingTracker.seaWitches = 0; - if (statsObject.has("kills_sea_witch")) { - FishingTracker.seaWitches = statsObject.get("kills_sea_witch").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.seaWitches; - - FishingTracker.seaArchers = 0; - if (statsObject.has("kills_sea_archer")) { - FishingTracker.seaArchers = statsObject.get("kills_sea_archer").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.seaArchers; - - FishingTracker.monsterOfTheDeeps = 0; - if (statsObject.has("kills_zombie_deep")) { - if (statsObject.has("kills_chicken_deep")) { - FishingTracker.monsterOfTheDeeps = statsObject.get("kills_zombie_deep").getAsInt() + statsObject.get("kills_chicken_deep").getAsInt(); - } else { - FishingTracker.monsterOfTheDeeps = statsObject.get("kills_zombie_deep").getAsInt(); - } - } else if (statsObject.has("kills_chicken_deep")) { - FishingTracker.monsterOfTheDeeps = statsObject.get("kills_chicken_deep").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.monsterOfTheDeeps; - - FishingTracker.catfishes = 0; - if (statsObject.has("kills_catfish")) { - FishingTracker.catfishes = statsObject.get("kills_catfish").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.catfishes; - - FishingTracker.carrotKings = 0; - if (statsObject.has("kills_carrot_king")) { - FishingTracker.carrotKings = statsObject.get("kills_carrot_king").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.carrotKings; - - FishingTracker.seaLeeches = 0; - if (statsObject.has("kills_sea_leech")) { - FishingTracker.seaLeeches = statsObject.get("kills_sea_leech").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.seaLeeches; - - FishingTracker.guardianDefenders = 0; - if (statsObject.has("kills_guardian_defender")) { - FishingTracker.guardianDefenders = statsObject.get("kills_guardian_defender").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.guardianDefenders; - - FishingTracker.deepSeaProtectors = 0; - if (statsObject.has("kills_deep_sea_protector")) { - FishingTracker.deepSeaProtectors = statsObject.get("kills_deep_sea_protector").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.deepSeaProtectors; - - FishingTracker.hydras = 0; - if (statsObject.has("kills_water_hydra")) { - // Hydra splits - FishingTracker.hydras = statsObject.get("kills_water_hydra").getAsInt() / 2; - } - FishingTracker.seaCreatures += FishingTracker.hydras; - - FishingTracker.seaEmperors = 0; - if (statsObject.has("kills_skeleton_emperor")) { - if (statsObject.has("kills_guardian_emperor")) { - FishingTracker.seaEmperors = statsObject.get("kills_skeleton_emperor").getAsInt() + statsObject.get("kills_guardian_emperor").getAsInt(); - } else { - FishingTracker.seaEmperors = statsObject.get("kills_skeleton_emperor").getAsInt(); - } - } else if (statsObject.has("kills_guardian_emperor")) { - FishingTracker.seaEmperors = statsObject.get("kills_guardian_emperor").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.seaEmperors; - - FishingTracker.fishingMilestone = 0; - if (statsObject.has("pet_milestone_sea_creatures_killed")) { - FishingTracker.fishingMilestone = statsObject.get("pet_milestone_sea_creatures_killed").getAsInt(); - } - - FishingTracker.frozenSteves = 0; - if (statsObject.has("kills_frozen_steve")) { - FishingTracker.frozenSteves = statsObject.get("kills_frozen_steve").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.frozenSteves; - - FishingTracker.frostyTheSnowmans = 0; - if (statsObject.has("kills_frosty_the_snowman")) { - FishingTracker.frostyTheSnowmans = statsObject.get("kills_frosty_the_snowman").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.frostyTheSnowmans; - - FishingTracker.grinches = 0; - if (statsObject.has("kills_grinch")) { - FishingTracker.grinches = statsObject.get("kills_grinch").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.grinches; - - FishingTracker.yetis = 0; - if (statsObject.has("kills_yeti")) { - FishingTracker.yetis = statsObject.get("kills_yeti").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.yetis; - - FishingTracker.nurseSharks = 0; - if (statsObject.has("kills_nurse_shark")) { - FishingTracker.nurseSharks = statsObject.get("kills_nurse_shark").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.nurseSharks; - - FishingTracker.blueSharks = 0; - if (statsObject.has("kills_nurse_shark")) { - FishingTracker.blueSharks = statsObject.get("kills_blue_shark").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.blueSharks; - - FishingTracker.tigerSharks = 0; - if (statsObject.has("kills_nurse_shark")) { - FishingTracker.tigerSharks = statsObject.get("kills_tiger_shark").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.tigerSharks; - - FishingTracker.greatWhiteSharks = 0; - if (statsObject.has("kills_nurse_shark")) { - FishingTracker.greatWhiteSharks = statsObject.get("kills_great_white_shark").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.greatWhiteSharks; - - FishingTracker.scarecrows = 0; - if (statsObject.has("kills_scarecrow")) { - FishingTracker.scarecrows = statsObject.get("kills_scarecrow").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.scarecrows; - - FishingTracker.nightmares = 0; - if (statsObject.has("kills_nightmare")) { - FishingTracker.nightmares = statsObject.get("kills_nightmare").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.nightmares; - - FishingTracker.werewolfs = 0; - if (statsObject.has("kills_werewolf")) { - FishingTracker.werewolfs = statsObject.get("kills_werewolf").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.werewolfs; - - FishingTracker.phantomFishers = 0; - if (statsObject.has("kills_phantom_fisherman")) { - FishingTracker.phantomFishers = statsObject.get("kills_phantom_fisherman").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.phantomFishers; - - FishingTracker.grimReapers = 0; - if (statsObject.has("kills_grim_reaper")) { - FishingTracker.grimReapers = statsObject.get("kills_grim_reaper").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.grimReapers; - - FishingTracker.waterWorms = 0; - if (statsObject.has("kills_water_worm")) { - FishingTracker.waterWorms = statsObject.get("kills_water_worm").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.waterWorms; - - FishingTracker.poisonedWaterWorms = 0; - if (statsObject.has("kills_poisoned_water_worm")) { - FishingTracker.poisonedWaterWorms = statsObject.get("kills_poisoned_water_worm").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.poisonedWaterWorms; - FishingTracker.flamingWorms = 0; - if (statsObject.has("kills_flaming_worm")) { - FishingTracker.flamingWorms = statsObject.get("kills_flaming_worm").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.flamingWorms; - - FishingTracker.lavaBlazes = 0; - if (statsObject.has("kills_lava_blaze")) { - FishingTracker.lavaBlazes = statsObject.get("kills_lava_blaze").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.lavaBlazes; - - FishingTracker.lavaPigmen = 0; - if (statsObject.has("kills_lava_pigman")) { - FishingTracker.lavaPigmen = statsObject.get("kills_lava_pigman").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.lavaPigmen; - - FishingTracker.zombieMiners = 0; - if (statsObject.has("kills_zombie_miner")) { - FishingTracker.zombieMiners = statsObject.get("kills_zombie_miner").getAsInt(); - } - FishingTracker.seaCreatures += FishingTracker.zombieMiners; + 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", FishingTracker.goodCatches); @@ -331,9 +160,25 @@ public class ImportFishingCommand extends CommandBase { 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/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java index 5d91573..3be46a4 100644 --- a/src/main/java/me/Danker/commands/LootCommand.java +++ b/src/main/java/me/Danker/commands/LootCommand.java @@ -24,7 +24,7 @@ public class LootCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [winter/festival/spooky/ch/f(1-7)/mm/session]"; + return "/" + getCommandName() + " [winter/festival/spooky/ch/lava/f(1-7)/mm/session]"; } public static String usage(ICommandSender arg0) { @@ -41,7 +41,7 @@ public class LootCommand extends CommandBase { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "blaze", "fishing", "catacombs", "mythological"); } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { - return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "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", "mm", "master"); } else if (args.length > 1) { @@ -511,6 +511,7 @@ public class LootCommand extends CommandBase { 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" + @@ -532,6 +533,7 @@ public class LootCommand extends CommandBase { 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" + @@ -556,9 +558,64 @@ public class LootCommand extends CommandBase { 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); + } - return; + 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) { diff --git a/src/main/java/me/Danker/commands/ResetLootCommand.java b/src/main/java/me/Danker/commands/ResetLootCommand.java index d3294b2..c17c2ae 100644 --- a/src/main/java/me/Danker/commands/ResetLootCommand.java +++ b/src/main/java/me/Danker/commands/ResetLootCommand.java @@ -277,6 +277,17 @@ public class ResetLootCommand extends CommandBase { 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(); } diff --git a/src/main/java/me/Danker/features/AutoDisplay.java b/src/main/java/me/Danker/features/AutoDisplay.java index 63b66d5..7f86035 100644 --- a/src/main/java/me/Danker/features/AutoDisplay.java +++ b/src/main/java/me/Danker/features/AutoDisplay.java @@ -95,7 +95,11 @@ public class AutoDisplay { List lore = hotbarItem.getTooltip(player, mc.gameSettings.advancedItemTooltips); for (int j = lore.size() - 1; j >= 0; j--) { // reverse if (lore.get(j).contains("FISHING ROD")) { - LootDisplay.display = "fishing"; + if (Utils.tabLocation.equals("Crimson Isle")) { + LootDisplay.display = "fishing_lava"; + } else { + LootDisplay.display = "fishing"; + } found = true; break; } diff --git a/src/main/java/me/Danker/features/loot/FishingTracker.java b/src/main/java/me/Danker/features/loot/FishingTracker.java index cf329aa..95a9040 100644 --- a/src/main/java/me/Danker/features/loot/FishingTracker.java +++ b/src/main/java/me/Danker/features/loot/FishingTracker.java @@ -54,6 +54,18 @@ public class FishingTracker { 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; @@ -101,6 +113,18 @@ public class FishingTracker { 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) { @@ -296,16 +320,61 @@ public class FishingTracker { 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() { - if (empSCs != -1) { - empSCs++; - } - if (empSCsSession != -1) { - empSCsSession++; - } // Only increment Yetis when in Jerry's Workshop if (Utils.isInScoreboard("Jerry's Workshop") || Utils.isInScoreboard("Jerry Pond")) { if (yetiSCs != -1) { @@ -314,6 +383,20 @@ public class FishingTracker { 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++; @@ -324,6 +407,7 @@ public class FishingTracker { 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/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java index 9436ec6..e1ddcb0 100644 --- a/src/main/java/me/Danker/features/loot/LootDisplay.java +++ b/src/main/java/me/Danker/features/loot/LootDisplay.java @@ -848,6 +848,92 @@ public class LootDisplay { 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" + EnumChatFormatting.WHITE + "Griffin Feathers:\n" + diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index 073b161..b8be3d6 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -27,6 +27,7 @@ public class DisplayGui extends GuiScreen { private GuiButton fishingFestival; private GuiButton fishingSpooky; private GuiButton fishingCH; + private GuiButton fishingLava; private GuiButton catacombsF1; private GuiButton catacombsF2; private GuiButton catacombsF3; @@ -60,11 +61,12 @@ public class DisplayGui extends GuiScreen { wolf = new GuiButton(0, width / 2 - 50, (int) (height * 0.35), 100, 20, "Wolf"); enderman = new GuiButton(0, width / 2 + 60, (int) (height * 0.35), 100, 20, "Enderman"); blaze = new GuiButton(0, width / 2 + 170, (int) (height * 0.35), 100, 20, "Blaze"); - fishing = new GuiButton(0, width / 2 - 270, (int) (height * 0.5), 100, 20, "Fishing"); - fishingWinter = new GuiButton(0, width / 2 - 160, (int) (height * 0.5), 100, 20, "Fishing Winter"); - fishingFestival = new GuiButton(0, width / 2 - 50, (int) (height * 0.5), 100, 20, "Fishing Festival"); - fishingSpooky = new GuiButton(0, width / 2 + 60, (int) (height * 0.5), 100, 20, "Fishing Spooky"); - fishingCH = new GuiButton(0, width / 2 + 170, (int) (height * 0.5), 100, 20, "CH Fishing"); + 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"); @@ -89,6 +91,7 @@ public class DisplayGui extends GuiScreen { this.buttonList.add(fishingFestival); this.buttonList.add(fishingSpooky); this.buttonList.add(fishingCH); + this.buttonList.add(fishingLava); this.buttonList.add(catacombsF1); this.buttonList.add(catacombsF2); this.buttonList.add(catacombsF3); @@ -148,6 +151,8 @@ public class DisplayGui extends GuiScreen { setDisplay("fishing_spooky"); } else if (button == fishingCH) { setDisplay("fishing_ch"); + } else if (button == fishingLava) { + setDisplay("fishing_lava"); } else if (button == mythological) { setDisplay("mythological"); } else if (button == catacombsF1) { diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index a4d7ca9..1267b9b 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -456,6 +456,18 @@ public class ConfigHandler { 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 MythologicalTracker.mythCoins = initDouble("mythological", "coins", 0); -- cgit From 9d676f89051d2845566b7253c0b91f3abe32673d Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 23 Apr 2022 22:46:40 -0400 Subject: Add fire pillar display --- README.md | 5 ++- src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/DankerGuiCommand.java | 1 + src/main/java/me/Danker/commands/MoveCommand.java | 12 ++++- src/main/java/me/Danker/commands/ScaleCommand.java | 10 ++++- .../java/me/Danker/commands/ToggleCommand.java | 21 ++++----- .../java/me/Danker/features/FirePillarDisplay.java | 51 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 +++ src/main/java/me/Danker/gui/EditLocationsGui.java | 35 ++++++++++----- .../java/me/Danker/gui/buttons/LocationButton.java | 4 ++ .../java/me/Danker/handlers/ConfigHandler.java | 4 ++ 11 files changed, 124 insertions(+), 27 deletions(-) create mode 100644 src/main/java/me/Danker/features/FirePillarDisplay.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index ea32b5d..30fec71 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ Discord Server: https://discord.gg/QsEkNQS - Predicted dungeon score display - Hide player armour - Automatically join skyblock +- Fire pillar display ## Commands - /dhelp - Returns this message in-game. @@ -75,8 +76,8 @@ Discord Server: https://discord.gg/QsEkNQS - /loot [winter/festival/spooky/ch/lava/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. - /display [winter/festival/spooky/ch/lava/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. -- /move - Moves text display to specified X and Y coordinates. -- /scale - Scales text display to a specified multipler between 0.1x and 10x. +- /move - Moves text display to specified X and Y coordinates. +- /scale - Scales text display to a specified multipler between 0.1x and 10x. - /slayer [player] - Uses API to get slayer xp of a person. If no name is provided, it checks yours. - /skill [player] - Uses API to get skill levels of a person. If no name is provided, it checks yours. - /lobbyskills - Uses API to find the average skills of the lobby, as well the three players with the highest skill average. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index fb98068..cc96448 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -126,6 +126,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new EndOfFarmAlert()); MinecraftForge.EVENT_BUS.register(new ExpertiseLore()); MinecraftForge.EVENT_BUS.register(new FasterMaddoxCalling()); + MinecraftForge.EVENT_BUS.register(new FirePillarDisplay()); MinecraftForge.EVENT_BUS.register(new GemstonesLore()); MinecraftForge.EVENT_BUS.register(new GiantHPDisplay()); MinecraftForge.EVENT_BUS.register(new GoldenEnchants()); diff --git a/src/main/java/me/Danker/commands/DankerGuiCommand.java b/src/main/java/me/Danker/commands/DankerGuiCommand.java index 14041d1..1c5ea53 100644 --- a/src/main/java/me/Danker/commands/DankerGuiCommand.java +++ b/src/main/java/me/Danker/commands/DankerGuiCommand.java @@ -63,6 +63,7 @@ public class DankerGuiCommand extends CommandBase { 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("[firepillar][").append(MoveCommand.firePillarXY[0]).append(", ").append(MoveCommand.firePillarXY[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"); diff --git a/src/main/java/me/Danker/commands/MoveCommand.java b/src/main/java/me/Danker/commands/MoveCommand.java index 5a6c6a2..106e603 100644 --- a/src/main/java/me/Danker/commands/MoveCommand.java +++ b/src/main/java/me/Danker/commands/MoveCommand.java @@ -27,6 +27,7 @@ public class MoveCommand extends CommandBase { public static int[] giantHPXY = {0, 0}; public static int[] abilityCooldownsXY = {0, 0}; public static int[] dungeonScoreXY = {0, 0}; + public static int[] firePillarXY = {0, 0}; @Override public String getCommandName() { @@ -37,7 +38,7 @@ public class MoveCommand extends CommandBase { public String getCommandUsage(ICommandSender arg0) { return "/" + getCommandName() + " "; + "abilitycooldowns/dungeonscore/firepillar> "; } public static String usage(ICommandSender arg0) { @@ -54,7 +55,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", "abilitycooldowns", "dungeonscore"); + "gianthp", "abilitycooldowns", "dungeonscore", "firepillar"); } return null; } @@ -167,6 +168,13 @@ public class MoveCommand extends CommandBase { 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; + case "firepillar": + firePillarXY[0] = Integer.parseInt(arg1[1]); + firePillarXY[1] = Integer.parseInt(arg1[2]); + ConfigHandler.writeIntConfig("locations", "firePillarX", firePillarXY[0]); + ConfigHandler.writeIntConfig("locations", "firePillarY", firePillarXY[1]); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Fire pillar 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/ScaleCommand.java b/src/main/java/me/Danker/commands/ScaleCommand.java index 9bb1f08..a19642b 100644 --- a/src/main/java/me/Danker/commands/ScaleCommand.java +++ b/src/main/java/me/Danker/commands/ScaleCommand.java @@ -27,6 +27,7 @@ public class ScaleCommand extends CommandBase { public static double giantHPScale; public static double abilityCooldownsScale; public static double dungeonScoreScale; + public static double firePillarScale; @Override public String getCommandName() { @@ -36,7 +37,7 @@ public class ScaleCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { return "/" + getCommandName() + " "; + "bonzotimer/golemtimer/teammatesinradius/gianthp/abilitycooldown/dungeonscore/firepillar> "; } public static String usage(ICommandSender arg0) { @@ -53,7 +54,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", "abilitycooldowns", "dungeonscore"); + "gianthp", "abilitycooldowns", "dungeonscore", "firepillar"); } return null; } @@ -144,6 +145,11 @@ public class ScaleCommand extends CommandBase { ConfigHandler.writeDoubleConfig("scales", "dungeonScoreScale", dungeonScoreScale); player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Dungeon score has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + dungeonScoreScale + "x")); break; + case "firepillar": + firePillarScale = scaleAmount; + ConfigHandler.writeDoubleConfig("scales", "firePillarScale", firePillarScale); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Fire pillar has been scaled to " + DankersSkyblockMod.SECONDARY_COLOUR + firePillarScale + "x")); + break; default: player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Usage: " + getCommandUsage(arg0))); } diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 3536bd7..7207565 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -32,6 +32,15 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean expertiseLoreToggled; public static boolean skill50DisplayToggled; public static boolean outlineTextToggled; + public static boolean lowHealthNotifyToggled; + public static boolean stopSalvageStarredToggled; + public static boolean watcherReadyToggled; + public static boolean swapToPickBlockToggled; + public static boolean flowerWeaponsToggled; + public static boolean notifySlayerSlainToggled; + public static boolean necronNotificationsToggled; + public static boolean bonzoTimerToggled; + public static boolean autoSkillTrackerToggled; public static boolean cakeTimerToggled; public static boolean highlightSlayers; public static boolean highlightArachne; @@ -51,6 +60,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean dungeonScore; public static boolean hideArmour; public static boolean autoJoinSkyblock; + public static boolean firePillar; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; @@ -59,16 +69,6 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean cooldownMessages; public static boolean manaMessages; public static boolean killComboMessages; - public static boolean lowHealthNotifyToggled; - public static boolean lividSolverToggled; - public static boolean stopSalvageStarredToggled; - public static boolean watcherReadyToggled; - public static boolean swapToPickBlockToggled; - public static boolean flowerWeaponsToggled; - public static boolean notifySlayerSlainToggled; - public static boolean necronNotificationsToggled; - public static boolean bonzoTimerToggled; - public static boolean autoSkillTrackerToggled; // Puzzle Solvers public static boolean threeManToggled; public static boolean oruoToggled; @@ -80,6 +80,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean boulderToggled; public static boolean silverfishToggled; public static boolean iceWalkToggled; + public static boolean lividSolverToggled; // Terminal Helpers public static boolean startsWithToggled; public static boolean selectAllToggled; diff --git a/src/main/java/me/Danker/features/FirePillarDisplay.java b/src/main/java/me/Danker/features/FirePillarDisplay.java new file mode 100644 index 0000000..34b2288 --- /dev/null +++ b/src/main/java/me/Danker/features/FirePillarDisplay.java @@ -0,0 +1,51 @@ +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.entity.Entity; +import net.minecraft.util.StringUtils; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +import java.util.List; + +public class FirePillarDisplay { + + static Entity pillar = null; + + @SubscribeEvent + public void onTick(TickEvent.ClientTickEvent event) { + if (event.phase != TickEvent.Phase.START) return; + + World world = Minecraft.getMinecraft().theWorld; + if (DankersSkyblockMod.tickAmount % 20 == 0) { + pillar = null; + if (ToggleCommand.firePillar && world != null && Utils.tabLocation.equals("Crimson Isle") && Utils.isInScoreboard("Slay the boss!")) { + List entities = world.getLoadedEntityList(); + + for (Entity entity : entities) { + String name = StringUtils.stripControlCodes(entity.getName()); + if (name.endsWith(" hits") && name.charAt(1) == 's') { + pillar = entity; + break; + } + } + } + } + } + + @SubscribeEvent + public void renderPlayerInfo(RenderOverlayEvent event) { + if (ToggleCommand.firePillar && pillar != null) { + new TextRenderer(Minecraft.getMinecraft(), Utils.removeBold(pillar.getName()), MoveCommand.firePillarXY[0], MoveCommand.firePillarXY[1], ScaleCommand.firePillarScale); + } + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 4285d16..156a3a9 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -87,6 +87,7 @@ public class DankerGui extends GuiScreen { private GuiButton dungeonScore; private GuiButton hideArmour; private GuiButton autoJoinSkyblock; + private GuiButton firePillar; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -179,6 +180,7 @@ public class DankerGui extends GuiScreen { 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."); + firePillar = new FeatureButton("Fire Pillar Display: " + Utils.getColouredBoolean(ToggleCommand.firePillar), "Displays blaze fire pillar text on screen"); allButtons.clear(); allButtons.add(changeDisplay); @@ -237,6 +239,7 @@ public class DankerGui extends GuiScreen { allButtons.add(dungeonScore); allButtons.add(hideArmour); allButtons.add(autoJoinSkyblock); + allButtons.add(firePillar); search.setText(initSearchText); search.setVisible(true); @@ -524,6 +527,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.autoJoinSkyblock = !ToggleCommand.autoJoinSkyblock; ConfigHandler.writeBooleanConfig("toggles", "AutoJoinSkyblock", ToggleCommand.autoJoinSkyblock); autoJoinSkyblock.displayString = "Automatically Join Skyblock: " + Utils.getColouredBoolean(ToggleCommand.autoJoinSkyblock); + } else if (button == firePillar) { + ToggleCommand.firePillar = !ToggleCommand.firePillar; + ConfigHandler.writeBooleanConfig("toggles", "FirePillar", ToggleCommand.firePillar); + firePillar.displayString = "Fire Pillar Display: " + Utils.getColouredBoolean(ToggleCommand.firePillar); } } diff --git a/src/main/java/me/Danker/gui/EditLocationsGui.java b/src/main/java/me/Danker/gui/EditLocationsGui.java index b7f4b02..24f0908 100644 --- a/src/main/java/me/Danker/gui/EditLocationsGui.java +++ b/src/main/java/me/Danker/gui/EditLocationsGui.java @@ -33,6 +33,7 @@ public class EditLocationsGui extends GuiScreen { private LocationButton giantHP; private LocationButton abilityCooldown; private LocationButton dungeonScore; + private LocationButton firePillar; @Override public boolean doesGuiPauseGame() { @@ -120,18 +121,19 @@ public class EditLocationsGui extends GuiScreen { 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); - coords = new LocationButton(MoveCommand.coordsXY[0], MoveCommand.coordsXY[1], ScaleCommand.coordsScale, NoF3Coords.COORDS_COLOUR + "74 / 14 / -26 (141.1 / 6.7)", null, null); - skill50 = new LocationButton(MoveCommand.skill50XY[0], MoveCommand.skill50XY[1], ScaleCommand.skill50Scale, Skill50Display.SKILL_50_COLOUR + "+3.5 Farming (28,882,117.7/55,172,425) 52.34%", null, null); - lividHP = new LocationButton(MoveCommand.lividHpXY[0], MoveCommand.lividHpXY[1], ScaleCommand.lividHpScale, EnumChatFormatting.WHITE + "﴾ Livid " + EnumChatFormatting.YELLOW + "6.9M" + EnumChatFormatting.RED + "❤ " + EnumChatFormatting.WHITE + "﴿", null, null); - cakeTimer = new LocationButton(MoveCommand.cakeTimerXY[0], MoveCommand.cakeTimerXY[1] + 5, ScaleCommand.cakeTimerScale, CakeTimer.CAKE_COLOUR + " 11h16m", null, null); - skillTracker = new LocationButton(MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[1], ScaleCommand.skillTrackerScale, skillTrackerText, null, null); - waterAnswer = new LocationButton(MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], ScaleCommand.waterAnswerScale, waterAnswerText, null, null); - bonzoTimer = new LocationButton(MoveCommand.bonzoTimerXY[0], MoveCommand.bonzoTimerXY[1] + 5, ScaleCommand.bonzoTimerScale, BonzoMaskTimer.BONZO_COLOR + " 3m30s", null, null); - 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); + coords = new LocationButton(MoveCommand.coordsXY[0], MoveCommand.coordsXY[1], ScaleCommand.coordsScale, NoF3Coords.COORDS_COLOUR + "74 / 14 / -26 (141.1 / 6.7)"); + skill50 = new LocationButton(MoveCommand.skill50XY[0], MoveCommand.skill50XY[1], ScaleCommand.skill50Scale, Skill50Display.SKILL_50_COLOUR + "+3.5 Farming (28,882,117.7/55,172,425) 52.34%"); + lividHP = new LocationButton(MoveCommand.lividHpXY[0], MoveCommand.lividHpXY[1], ScaleCommand.lividHpScale, EnumChatFormatting.WHITE + "﴾ Livid " + EnumChatFormatting.YELLOW + "6.9M" + EnumChatFormatting.RED + "❤ " + EnumChatFormatting.WHITE + "﴿"); + cakeTimer = new LocationButton(MoveCommand.cakeTimerXY[0], MoveCommand.cakeTimerXY[1] + 5, ScaleCommand.cakeTimerScale, CakeTimer.CAKE_COLOUR + " 11h16m"); + skillTracker = new LocationButton(MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[1], ScaleCommand.skillTrackerScale, skillTrackerText); + waterAnswer = new LocationButton(MoveCommand.waterAnswerXY[0], MoveCommand.waterAnswerXY[1], ScaleCommand.waterAnswerScale, waterAnswerText); + bonzoTimer = new LocationButton(MoveCommand.bonzoTimerXY[0], MoveCommand.bonzoTimerXY[1] + 5, ScaleCommand.bonzoTimerScale, BonzoMaskTimer.BONZO_COLOR + " 3m30s"); + golemTimer = new LocationButton(MoveCommand.golemTimerXY[0], MoveCommand.golemTimerXY[1] + 5, ScaleCommand.golemTimerScale, GolemSpawningAlert.GOLEM_COLOUR + " 20s"); + teammatesInRadius = new LocationButton(MoveCommand.teammatesInRadiusXY[0], MoveCommand.teammatesInRadiusXY[1], ScaleCommand.teammatesInRadiusScale, teammatesInRadiusText); + giantHP = new LocationButton(MoveCommand.giantHPXY[0], MoveCommand.giantHPXY[1], ScaleCommand.giantHPScale, giantHPText); + abilityCooldown = new LocationButton(MoveCommand.abilityCooldownsXY[0], MoveCommand.abilityCooldownsXY[1], ScaleCommand.abilityCooldownsScale, abilityCooldownText); dungeonScore = new LocationButton(MoveCommand.dungeonScoreXY[0], MoveCommand.dungeonScoreXY[1], ScaleCommand.dungeonScoreScale, dungeonScoreText, dungeonScoreNums, 80); + firePillar = new LocationButton(MoveCommand.firePillarXY[0], MoveCommand.firePillarXY[1], ScaleCommand.firePillarScale, EnumChatFormatting.GOLD + "3s " + EnumChatFormatting.RED + "8 hits"); this.buttonList.add(coords); this.buttonList.add(dungeonTimer); @@ -147,6 +149,7 @@ public class EditLocationsGui extends GuiScreen { this.buttonList.add(giantHP); this.buttonList.add(abilityCooldown); this.buttonList.add(dungeonScore); + this.buttonList.add(firePillar); } @Override @@ -267,6 +270,12 @@ public class EditLocationsGui extends GuiScreen { MoveCommand.dungeonScoreXY[1] += yMoved; dungeonScore.xPosition = MoveCommand.dungeonScoreXY[0]; dungeonScore.yPosition = MoveCommand.dungeonScoreXY[1]; + break; + case "firePillar": + MoveCommand.firePillarXY[0] += xMoved; + MoveCommand.firePillarXY[1] += yMoved; + firePillar.xPosition = MoveCommand.firePillarXY[0]; + firePillar.yPosition = MoveCommand.firePillarXY[1]; } this.buttonList.clear(); initGui(); @@ -307,6 +316,8 @@ public class EditLocationsGui extends GuiScreen { moving = "abilityCooldown"; } else if (button == dungeonScore) { moving = "dungeonScore"; + } else if (button == firePillar) { + moving = "firePillar"; } } } @@ -343,6 +354,8 @@ public class EditLocationsGui extends GuiScreen { ConfigHandler.writeIntConfig("locations", "abilityCooldownsY", MoveCommand.abilityCooldownsXY[1]); ConfigHandler.writeIntConfig("locations", "dungeonScoreX", MoveCommand.dungeonScoreXY[0]); ConfigHandler.writeIntConfig("locations", "dungeonScoreY", MoveCommand.dungeonScoreXY[1]); + ConfigHandler.writeIntConfig("locations", "firePillarX", MoveCommand.firePillarXY[0]); + ConfigHandler.writeIntConfig("locations", "firePillarY", MoveCommand.firePillarXY[1]); } } diff --git a/src/main/java/me/Danker/gui/buttons/LocationButton.java b/src/main/java/me/Danker/gui/buttons/LocationButton.java index 8da1ab9..533bf83 100644 --- a/src/main/java/me/Danker/gui/buttons/LocationButton.java +++ b/src/main/java/me/Danker/gui/buttons/LocationButton.java @@ -44,6 +44,10 @@ public class LocationButton extends GuiButton { this.height = (int) ((splitText.length * 9 + 3) * scale); this.width = (int) ((this.longestText + offset + 3) * scale); } + + public LocationButton(int x, int y, double scale, String text) { + this(x, y, scale, text, null, null); + } @Override public void drawButton(Minecraft mc, int mouseX, int mouseY) { diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 1267b9b..5db8a17 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -244,6 +244,7 @@ public class ConfigHandler { ToggleCommand.dungeonScore = initBoolean("toggles", "DungeonScore", false); ToggleCommand.hideArmour = initBoolean("toggles", "HideArmour", false); ToggleCommand.autoJoinSkyblock = initBoolean("toggles", "AutoJoinSkyblock", false); + ToggleCommand.firePillar = initBoolean("toggles", "FirePillar", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -629,6 +630,8 @@ public class ConfigHandler { MoveCommand.abilityCooldownsXY[1] = initInt("locations", "abilityCooldownsY", 150); MoveCommand.dungeonScoreXY[0] = initInt("locations", "dungeonScoreX", 150); MoveCommand.dungeonScoreXY[1] = initInt("locations", "dungeonScoreY", 150); + MoveCommand.firePillarXY[0] = initInt("locations", "firePillarX", 200); + MoveCommand.firePillarXY[1] = initInt("locations", "firePillarY", 200); // Scales ScaleCommand.coordsScale = initDouble("scales", "coordsScale", 1); @@ -645,6 +648,7 @@ public class ConfigHandler { ScaleCommand.giantHPScale = initDouble("scales", "giantHPScale", 1); ScaleCommand.abilityCooldownsScale = initDouble("scales", "abilityCooldownsScale", 1); ScaleCommand.dungeonScoreScale = initDouble("scales", "dungeonScoreScale", 1); + ScaleCommand.firePillarScale = initDouble("scales", "firePillarScale", 1); // Skills DankersSkyblockMod.farmingLevel = initInt("skills", "farming", -1); -- cgit From b7a2bc13f61a60c99ce460d08d7c89d06ee72a34 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 28 Apr 2022 02:22:49 -0400 Subject: Add regex for alerts Capture support using $$x$$ where x is a group number Make util function for desktop notifications --- README.md | 14 ++++ src/main/java/me/Danker/features/Alerts.java | 83 +++++++++++++--------- .../me/Danker/features/GpartyNotifications.java | 13 +--- .../java/me/Danker/gui/alerts/AlertActionGui.java | 4 +- .../java/me/Danker/gui/alerts/AlertAddGui.java | 15 ++-- src/main/java/me/Danker/utils/Utils.java | 17 +++++ 6 files changed, 96 insertions(+), 50 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 30fec71..55fb29f 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,20 @@ By adding numbers to the end of the file, you can have multiple music files for - dungeon2.wav - dungeon99.wav +## Alert Regex +To replace alert text with a captured group, add `$$x$$` to the alert text, with `x` being the number of the capture group. `$$0$$` will always be replaced with the entire trigger message. + +For example, with the following alert + +Regex: `From (.*) (.*): (.*)` +Alert Text: `$$2$$ says $$3$$` +Trigger Message: `From [ADMIN] Plancke: Nice autogg` + +the following alert text would appear + +`Plancke says Nice autogg`. + + ### Notes - Slayer tracker for token drops and 20% chance drops uses a 12x12x12 bounding box centered on the player to detect the drops. If you are out of the range of the item drop, it will not count on the tracker. - API commands may take a while depending on your internet connection. The API may also go down. diff --git a/src/main/java/me/Danker/features/Alerts.java b/src/main/java/me/Danker/features/Alerts.java index aab99b3..8f45423 100644 --- a/src/main/java/me/Danker/features/Alerts.java +++ b/src/main/java/me/Danker/features/Alerts.java @@ -1,6 +1,7 @@ package me.Danker.features; import com.google.gson.GsonBuilder; +import javafx.scene.control.Alert; import me.Danker.commands.ToggleCommand; import me.Danker.utils.Utils; import net.minecraft.util.EnumChatFormatting; @@ -12,11 +13,15 @@ import java.awt.*; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class Alerts { public static List alerts = new ArrayList<>(); + public static HashMap patterns = new HashMap<>(); public static String configFile; @SubscribeEvent @@ -41,45 +46,59 @@ public class Alerts { } 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(); + if (alert.mode.equals("Regex")) { + Matcher matcher = patterns.get(alert).matcher(message); + if (matcher.matches()) { + matcher.reset(); + String alertText = alert.alert; + + int i = 0; + while (matcher.find()) { + for (int j = 0; j <= matcher.groupCount(); j++) { + alertText = alertText.replace("$$" + i + "$$", matcher.group(j)); + i++; + } } + + Utils.createTitle(EnumChatFormatting.RED + alertText.replace("&", "§"), 2); + if (alert.desktop) Utils.desktopNotification("Alert", alertText, message, TrayIcon.MessageType.INFO); + + return; } + } else { + 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) Utils.desktopNotification("Alert", alert.alert, message, TrayIcon.MessageType.INFO); - return; + return; + } } } } - public static void saveToFile() { + public static void save() { + for (Alert alert : alerts) { + if (alert.mode.equals("Regex")) { + Pattern pattern = Pattern.compile(alert.message); + patterns.put(alert, pattern); + } + } + try (FileWriter writer = new FileWriter(configFile)) { new GsonBuilder().create().toJson(alerts, writer); writer.flush(); diff --git a/src/main/java/me/Danker/features/GpartyNotifications.java b/src/main/java/me/Danker/features/GpartyNotifications.java index f3aec69..76c0a66 100644 --- a/src/main/java/me/Danker/features/GpartyNotifications.java +++ b/src/main/java/me/Danker/features/GpartyNotifications.java @@ -19,18 +19,7 @@ public class GpartyNotifications { if (ToggleCommand.gpartyToggled) { if (message.contains(" has invited all members of ")) { - try { - final SystemTray tray = SystemTray.getSystemTray(); - final Image image = Toolkit.getDefaultToolkit().createImage("icon.png"); - final TrayIcon trayIcon = new TrayIcon(image, "Guild Party Notifier"); - trayIcon.setImageAutoSize(true); - trayIcon.setToolTip("Guild Party Notifier"); - tray.add(trayIcon); - trayIcon.displayMessage("Guild Party", message, TrayIcon.MessageType.INFO); - tray.remove(trayIcon); - } catch (Exception ex) { - ex.printStackTrace(); - } + Utils.desktopNotification("Guild Party Notifier", "Guild Party", message, TrayIcon.MessageType.INFO); } } } diff --git a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java index 7a73f5a..3d0eb90 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java @@ -80,12 +80,12 @@ public class AlertActionGui extends GuiScreen { mc.displayGuiScreen(new AlertAddGui(alert, id)); } else if (button == delete) { Alerts.alerts.remove(id); - Alerts.saveToFile(); + Alerts.save(); mc.displayGuiScreen(new AlertsGui(1)); return; } Alerts.alerts.set(id, alert); - Alerts.saveToFile(); + Alerts.save(); } } diff --git a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java index 5f01d6d..304c77a 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java @@ -25,6 +25,7 @@ public class AlertAddGui extends GuiScreen { private GuiButton startsWith; private GuiButton contains; private GuiButton endsWith; + private GuiButton regex; private GuiButton everywhere; private GuiButton skyblock; private GuiButton dungeons; @@ -57,9 +58,10 @@ public class AlertAddGui extends GuiScreen { 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"); + startsWith = new GuiButton(0, width / 2 - 260, (int) (height * 0.2), 120, 20, "Starts With"); + contains = new GuiButton(0, width / 2 - 130, (int) (height * 0.2), 120, 20, "Contains"); + endsWith = new GuiButton(0, width / 2 + 10, (int) (height * 0.2), 120, 20, "Ends With"); + regex = new GuiButton(0, width / 2 + 140, (int) (height * 0.2), 120, 20, "Regex"); 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"); @@ -80,13 +82,16 @@ public class AlertAddGui extends GuiScreen { message.setVisible(true); message.setEnabled(true); + message.setMaxStringLength(100); alert.setVisible(true); alert.setEnabled(true); + alert.setMaxStringLength(100); this.buttonList.add(cancel); this.buttonList.add(startsWith); this.buttonList.add(contains); this.buttonList.add(endsWith); + this.buttonList.add(regex); this.buttonList.add(everywhere); this.buttonList.add(skyblock); this.buttonList.add(dungeons); @@ -119,6 +124,8 @@ public class AlertAddGui extends GuiScreen { mode = "Contains"; } else if (button == endsWith) { mode = "Ends With"; + } else if (button == regex) { + mode = "Regex"; } else if (button == everywhere) { location = "Everywhere"; } else if (button == skyblock) { @@ -132,7 +139,7 @@ public class AlertAddGui extends GuiScreen { } else { Alerts.alerts.add(newAlert); } - Alerts.saveToFile(); + Alerts.save(); mc.displayGuiScreen(new AlertsGui(1)); } } diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 2229d65..3cef436 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -19,7 +19,9 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.util.*; +import java.awt.*; import java.util.*; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -492,6 +494,21 @@ public class Utils { return (Math.floor(level / 2D) + 25) / 100D; } + public static void desktopNotification(String name, String title, String text, TrayIcon.MessageType messageType) { + try { + final SystemTray tray = SystemTray.getSystemTray(); + final Image image = Toolkit.getDefaultToolkit().createImage("icon.png"); + final TrayIcon trayIcon = new TrayIcon(image, name); + trayIcon.setImageAutoSize(true); + trayIcon.setToolTip(name); + tray.add(trayIcon); + trayIcon.displayMessage(title, text, messageType); + tray.remove(trayIcon); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + public enum DungeonFloor { NONE, E0, -- cgit From 827fb6fc502e1e7159d15c1decfa35968668bb6f Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 28 Apr 2022 02:37:21 -0400 Subject: Add keybind for adding waypoint --- src/main/java/me/Danker/DankersSkyblockMod.java | 13 ++++--------- .../java/me/Danker/features/CrystalHollowWaypoints.java | 15 +++++++++++++++ .../CrystalHollowAddWaypointGui.java | 15 +++++++++++++++ 3 files changed, 34 insertions(+), 9 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 2139549..1816a3c 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -70,7 +70,7 @@ public class DankersSkyblockMod { public static String titleText = ""; public static int tickAmount = 1; public static int repoTickAmount = 1; - public static KeyBinding[] keyBindings = new KeyBinding[3]; + public static KeyBinding[] keyBindings = new KeyBinding[4]; public static boolean usingLabymod = false; public static boolean usingOAM = false; static boolean OAMWarning = false; @@ -188,6 +188,7 @@ public class DankersSkyblockMod { keyBindings[0] = new KeyBinding("Open Maddox Menu", Keyboard.KEY_M, "Danker's Skyblock Mod"); keyBindings[1] = new KeyBinding("Regular Ability", Keyboard.KEY_NUMPAD4, "Danker's Skyblock Mod"); keyBindings[2] = new KeyBinding("Start/Stop Skill Tracker", Keyboard.KEY_NUMPAD5, "Danker's Skyblock Mod"); + keyBindings[3] = new KeyBinding("Create Waypoint", Keyboard.KEY_NUMPAD6, "Danker's Skyblock Mod"); for (KeyBinding keyBinding : keyBindings) { ClientRegistry.registerKeyBinding(keyBinding); @@ -457,14 +458,8 @@ public class DankersSkyblockMod { @SubscribeEvent public void onKey(KeyInputEvent event) { - if (!Utils.inSkyblock) return; - - EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; - if (keyBindings[1].isPressed()) { - if (Utils.inDungeons) { - player.dropOneItem(true); - } - } + if (!Utils.inDungeons) return; + if (keyBindings[1].isPressed()) Minecraft.getMinecraft().thePlayer.dropOneItem(true); } @SubscribeEvent diff --git a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java index 795c49c..a8ee0f9 100644 --- a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java +++ b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java @@ -2,10 +2,12 @@ package me.Danker.features; import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; +import me.Danker.gui.crystalhollowwaypoints.CrystalHollowAddWaypointGui; import me.Danker.handlers.ScoreboardHandler; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; +import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.item.EntityArmorStand; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.event.ClickEvent; @@ -15,6 +17,7 @@ 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.InputEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; import java.util.ArrayList; @@ -177,6 +180,18 @@ public class CrystalHollowWaypoints { } } + @SubscribeEvent + public void onKey(InputEvent.KeyInputEvent event) { + if (!Utils.tabLocation.equals("Crystal Hollows")) return; + + if (DankersSkyblockMod.keyBindings[3].isPressed()) { + Minecraft mc = Minecraft.getMinecraft(); + EntityPlayer player = mc.thePlayer; + + mc.displayGuiScreen(new CrystalHollowAddWaypointGui((int) player.posX, (int) player.posY, (int) player.posZ)); + } + } + @SubscribeEvent public void onWorldRender(RenderWorldLastEvent event) { if (ToggleCommand.crystalHollowWaypoints && Utils.tabLocation.equals("Crystal Hollows")) { diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java index df91f04..52c0fba 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowAddWaypointGui.java @@ -23,6 +23,18 @@ public class CrystalHollowAddWaypointGui extends GuiScreen { private GuiTextField z; private GuiButton add; + private int xPos = -1; + private int yPos = -1; + private int zPos = -1; + + public CrystalHollowAddWaypointGui() {} + + public CrystalHollowAddWaypointGui(int x, int y, int z) { + xPos = x; + yPos = y; + zPos = z; + } + @Override public boolean doesGuiPauseGame() { return false; @@ -49,10 +61,13 @@ public class CrystalHollowAddWaypointGui extends GuiScreen { name.setEnabled(true); x.setVisible(true); x.setEnabled(true); + if (xPos != -1) x.setText(xPos + ""); y.setVisible(true); y.setEnabled(true); + if (yPos != -1) y.setText(yPos + ""); z.setVisible(true); z.setEnabled(true); + if (zPos != -1) z.setText(zPos + ""); this.buttonList.add(cancel); this.buttonList.add(curPos); -- cgit From 276734f87ce984e634e74a9a203402a93c7f7f12 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 28 Apr 2022 22:10:18 -0400 Subject: Add chat aliases --- README.md | 1 + src/main/java/me/Danker/DankersSkyblockMod.java | 2 + .../java/me/Danker/commands/ToggleCommand.java | 1 + src/main/java/me/Danker/features/ChatAliases.java | 64 ++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 6 ++ .../java/me/Danker/gui/alerts/AlertActionGui.java | 3 - .../me/Danker/gui/aliases/AliasesActionGui.java | 81 +++++++++++++++ .../java/me/Danker/gui/aliases/AliasesAddGui.java | 115 +++++++++++++++++++++ .../java/me/Danker/gui/aliases/AliasesGui.java | 108 +++++++++++++++++++ .../java/me/Danker/handlers/ConfigHandler.java | 11 ++ 10 files changed, 389 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/Danker/features/ChatAliases.java create mode 100644 src/main/java/me/Danker/gui/aliases/AliasesActionGui.java create mode 100644 src/main/java/me/Danker/gui/aliases/AliasesAddGui.java create mode 100644 src/main/java/me/Danker/gui/aliases/AliasesGui.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 723ab66..2af7339 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ Discord Server: https://discord.gg/QsEkNQS - Hide player armour - Automatically join skyblock - Fire pillar display +- Chat aliases ## Commands - /dhelp - Returns this message in-game. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 1816a3c..3eaac50 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -115,6 +115,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new BonzoMaskTimer()); MinecraftForge.EVENT_BUS.register(new BoulderSolver()); MinecraftForge.EVENT_BUS.register(new CakeTimer()); + MinecraftForge.EVENT_BUS.register(new ChatAliases()); MinecraftForge.EVENT_BUS.register(new ChronomatronSolver()); MinecraftForge.EVENT_BUS.register(new ClickInOrderSolver()); MinecraftForge.EVENT_BUS.register(new ColouredNames()); @@ -178,6 +179,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new ZombieTracker()); Alerts.configFile = configDirectory + "/dsmalerts.json"; + ChatAliases.configFile = configDirectory + "/dsmaliases.json"; ConfigHandler.reloadConfig(); GoldenEnchants.init(); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 7207565..6472d23 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -61,6 +61,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean hideArmour; public static boolean autoJoinSkyblock; public static boolean firePillar; + public static boolean aliases; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; diff --git a/src/main/java/me/Danker/features/ChatAliases.java b/src/main/java/me/Danker/features/ChatAliases.java new file mode 100644 index 0000000..ae9e0f7 --- /dev/null +++ b/src/main/java/me/Danker/features/ChatAliases.java @@ -0,0 +1,64 @@ +package me.Danker.features; + +import com.google.gson.GsonBuilder; +import me.Danker.events.PacketWriteEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.network.play.client.C01PacketChatMessage; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class ChatAliases { + + public static List aliases = new ArrayList<>(); + public static String configFile; + + @SubscribeEvent + public void onPacketWrite(PacketWriteEvent event) { + if (event.packet instanceof C01PacketChatMessage) { + C01PacketChatMessage packet = (C01PacketChatMessage) event.packet; + String message = packet.getMessage(); + + for (Alias alias : aliases) { + if (!alias.toggled) continue; + message = message.replace(alias.text, alias.alias); + } + + if (!packet.getMessage().equals(message)) { + event.setCanceled(true); + Minecraft.getMinecraft().thePlayer.sendQueue.addToSendQueue(new C01PacketChatMessage(message)); + } + } + } + + public static void save() { + try (FileWriter writer = new FileWriter(configFile)) { + new GsonBuilder().create().toJson(aliases, writer); + writer.flush(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + public static class Alias { + + public String text; + public String alias; + public boolean toggled; + + public Alias(String text, String alias, boolean toggled) { + this.text = text; + this.alias = alias; + this.toggled = toggled; + } + + public void toggle() { + toggled = !toggled; + } + + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 156a3a9..abf9ffa 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -2,6 +2,7 @@ package me.Danker.gui; import me.Danker.commands.ToggleCommand; import me.Danker.gui.alerts.AlertsGui; +import me.Danker.gui.aliases.AliasesGui; import me.Danker.gui.buttons.FeatureButton; import me.Danker.gui.crystalhollowwaypoints.CrystalHollowWaypointsGui; import me.Danker.handlers.ConfigHandler; @@ -45,6 +46,7 @@ public class DankerGui extends GuiScreen { private GuiButton customMusic; private GuiButton crystalHollowWaypoints; private GuiButton alerts; + private GuiButton aliases; // Toggles private GuiButton gparty; private GuiButton coords; @@ -132,6 +134,7 @@ public class DankerGui extends GuiScreen { customMusic = new GuiButton(0, 0, 0, "Custom Music"); crystalHollowWaypoints = new GuiButton(0, 0, 0, "Crystal Hollows Waypoints"); alerts = new GuiButton(0, 0, 0, "Alerts"); + aliases = new GuiButton(0, 0, 0, "Aliases"); 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."); @@ -191,6 +194,7 @@ public class DankerGui extends GuiScreen { allButtons.add(customMusic); allButtons.add(crystalHollowWaypoints); allButtons.add(alerts); + allButtons.add(aliases); allButtons.add(outlineText); allButtons.add(pickBlock); allButtons.add(coords); @@ -335,6 +339,8 @@ public class DankerGui extends GuiScreen { mc.displayGuiScreen(new CrystalHollowWaypointsGui(1)); } else if (button == alerts) { mc.displayGuiScreen(new AlertsGui(1)); + } else if (button == aliases) { + mc.displayGuiScreen(new AliasesGui(1)); } else if (button == outlineText) { ToggleCommand.outlineTextToggled = !ToggleCommand.outlineTextToggled; ConfigHandler.writeBooleanConfig("toggles", "OutlineText", ToggleCommand.outlineTextToggled); diff --git a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java index 3d0eb90..4853ac1 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java @@ -60,9 +60,6 @@ public class AlertActionGui extends GuiScreen { 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 diff --git a/src/main/java/me/Danker/gui/aliases/AliasesActionGui.java b/src/main/java/me/Danker/gui/aliases/AliasesActionGui.java new file mode 100644 index 0000000..d2c7a6a --- /dev/null +++ b/src/main/java/me/Danker/gui/aliases/AliasesActionGui.java @@ -0,0 +1,81 @@ +package me.Danker.gui.aliases; + +import me.Danker.features.ChatAliases; +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 AliasesActionGui extends GuiScreen { + + private final int id; + + private GuiButton goBack; + private GuiButton toggle; + private GuiButton edit; + private GuiButton delete; + + public AliasesActionGui(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(); + + ChatAliases.Alias alias = ChatAliases.aliases.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(alias.toggled)); + edit = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Edit >"); + delete = new GuiButton(0, width / 2 - 100, (int) (height * 0.8), EnumChatFormatting.RED + "Delete Alias"); + + this.buttonList.add(toggle); + 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); + + ChatAliases.Alias alias = ChatAliases.aliases.get(id); + + RenderUtils.drawCenteredText(alias.text, width, 10, 1D); + } + + @Override + public void actionPerformed(GuiButton button) { + ChatAliases.Alias alias = ChatAliases.aliases.get(id); + if (button == goBack) { + mc.displayGuiScreen(new AliasesGui(1)); + } else if (button == toggle) { + alias.toggle(); + toggle.displayString = "Enabled: " + Utils.getColouredBoolean(alias.toggled); + } else if (button == edit) { + mc.displayGuiScreen(new AliasesAddGui(alias, id)); + } else if (button == delete) { + ChatAliases.aliases.remove(id); + ChatAliases.save(); + mc.displayGuiScreen(new AliasesGui(1)); + return; + } + ChatAliases.aliases.set(id, alias); + ChatAliases.save(); + } + +} diff --git a/src/main/java/me/Danker/gui/aliases/AliasesAddGui.java b/src/main/java/me/Danker/gui/aliases/AliasesAddGui.java new file mode 100644 index 0000000..610354a --- /dev/null +++ b/src/main/java/me/Danker/gui/aliases/AliasesAddGui.java @@ -0,0 +1,115 @@ +package me.Danker.gui.aliases; + +import me.Danker.features.ChatAliases; +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.minecraftforge.fml.client.config.GuiCheckBox; + +import java.io.IOException; + +public class AliasesAddGui extends GuiScreen { + + private boolean editing; + private ChatAliases.Alias base = null; + private int id; + + private GuiButton cancel; + + private GuiTextField text; + private GuiTextField alias; + private GuiCheckBox toggled; + private GuiButton add; + + public AliasesAddGui() {} + + public AliasesAddGui(ChatAliases.Alias alias, int id) { + editing = true; + base = alias; + 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"); + + + text = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.2), 200, 20); + alias = new GuiTextField(0, this.fontRendererObj, width / 2 - 100, (int) (height * 0.3), 200, 20); + toggled = new GuiCheckBox(0, width / 2 - 26, (int) (height * 0.4), "Toggled", true); + add = new GuiButton(0, width / 2 - 25, (int) (height * 0.8), 50, 20, "Add"); + + if (editing) { + text.setText(base.text); + alias.setText(base.alias); + toggled.setIsChecked(base.toggled); + } + + text.setVisible(true); + text.setEnabled(true); + alias.setVisible(true); + alias.setEnabled(true); + alias.setMaxStringLength(100); + + this.buttonList.add(cancel); + 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); + + text.drawTextBox(); + alias.drawTextBox(); + + new TextRenderer(mc, "Text:", width / 2 - 135, (int) (height * 0.22), 1D); + new TextRenderer(mc, "Alias:", width / 2 - 137, (int) (height * 0.32), 1D); + } + + @Override + public void actionPerformed(GuiButton button) { + if (button == cancel) { + mc.displayGuiScreen(new AliasesGui(1)); + } else if (button == add) { + ChatAliases.Alias newAlias = new ChatAliases.Alias(text.getText(), alias.getText(), toggled.isChecked()); + if (editing) { + ChatAliases.aliases.set(id, newAlias); + } else { + ChatAliases.aliases.add(newAlias); + } + ChatAliases.save(); + mc.displayGuiScreen(new AliasesGui(1)); + } + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { + super.mouseClicked(mouseX, mouseY, mouseButton); + text.mouseClicked(mouseX, mouseY, mouseButton); + alias.mouseClicked(mouseX, mouseY, mouseButton); + } + + @Override + protected void keyTyped(char typedChar, int keyCode) throws IOException { + super.keyTyped(typedChar, keyCode); + text.textboxKeyTyped(typedChar, keyCode); + alias.textboxKeyTyped(typedChar, keyCode); + } + +} diff --git a/src/main/java/me/Danker/gui/aliases/AliasesGui.java b/src/main/java/me/Danker/gui/aliases/AliasesGui.java new file mode 100644 index 0000000..f5b863a --- /dev/null +++ b/src/main/java/me/Danker/gui/aliases/AliasesGui.java @@ -0,0 +1,108 @@ +package me.Danker.gui.aliases; + +import me.Danker.commands.ToggleCommand; +import me.Danker.features.ChatAliases; +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 AliasesGui extends GuiScreen { + + private final int page; + private final List allButtons = new ArrayList<>(); + + private GuiButton goBack; + private GuiButton backPage; + private GuiButton nextPage; + private GuiButton add; + private GuiButton aliases; + + public AliasesGui(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 >"); + aliases = new FeatureButton("Aliases: " + Utils.getColouredBoolean(ToggleCommand.aliases), "Replaces text in chat with an alias"); + add = new GuiButton(0, 0, 0, "Add Alias"); + + allButtons.clear(); + allButtons.add(aliases); + allButtons.add(add); + for (int i = 0; i < ChatAliases.aliases.size(); i++) { + ChatAliases.Alias alias = ChatAliases.aliases.get(i); + GuiButton button = new GuiButton(i, 0, 0, alias.text + " >"); + 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 AliasesGui(page + 1)); + } else if (button == backPage) { + mc.displayGuiScreen(new AliasesGui(page - 1)); + } else if (button == add) { + mc.displayGuiScreen(new AliasesAddGui()); + } else if (button == aliases) { + ToggleCommand.aliases = !ToggleCommand.aliases; + ConfigHandler.writeBooleanConfig("toggles", "Aliases", ToggleCommand.aliases); + aliases.displayString = "Aliases: " + Utils.getColouredBoolean(ToggleCommand.aliases); + } else { + mc.displayGuiScreen(new AliasesActionGui(button.id)); + } + } + +} diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 65e5c78..4415a8e 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -246,6 +246,7 @@ public class ConfigHandler { ToggleCommand.hideArmour = initBoolean("toggles", "HideArmour", false); ToggleCommand.autoJoinSkyblock = initBoolean("toggles", "AutoJoinSkyblock", false); ToggleCommand.firePillar = initBoolean("toggles", "FirePillar", false); + ToggleCommand.aliases = initBoolean("toggles", "Aliases", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -719,6 +720,7 @@ public class ConfigHandler { Gson gson = new Gson(); try { + // Alerts if (!(new File(Alerts.configFile).exists())) { FileWriter file = new FileWriter(Alerts.configFile); file.write(new JsonArray().toString()); @@ -726,6 +728,15 @@ public class ConfigHandler { } Alerts.Alert[] alerts = gson.fromJson(new FileReader(Alerts.configFile), Alerts.Alert[].class); if (alerts != null) Alerts.alerts = new ArrayList<>(Arrays.asList(alerts)); + + // Aliases + if (!(new File(ChatAliases.configFile).exists())) { + FileWriter file = new FileWriter(ChatAliases.configFile); + file.write(new JsonArray().toString()); + file.close(); + } + ChatAliases.Alias[] aliases = gson.fromJson(new FileReader(ChatAliases.configFile), ChatAliases.Alias[].class); + if (aliases != null) ChatAliases.aliases = new ArrayList<>(Arrays.asList(aliases)); } catch (IOException ex) { ex.printStackTrace(); } -- cgit From 5f2acec6bce0cfdd0c435982a01f7f6d7b79e8b9 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 30 Apr 2022 21:39:28 -0400 Subject: Add thunder/jawbus spawn alerts --- README.md | 1 + build.gradle | 2 +- src/main/java/me/Danker/DankersSkyblockMod.java | 3 +- .../java/me/Danker/commands/ToggleCommand.java | 1 + .../me/Danker/features/FishingSpawnAlerts.java | 60 ++++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 +++ .../java/me/Danker/handlers/ConfigHandler.java | 1 + 7 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/Danker/features/FishingSpawnAlerts.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 2a316a0..d22f75e 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ Discord Server: https://discord.gg/QsEkNQS - Automatically join skyblock - Fire pillar display - Chat aliases +- Thunder/Lord Jawbus spawn alerts
diff --git a/build.gradle b/build.gradle index fe6e801..2d8bebc 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ plugins { id "net.minecraftforge.gradle.forge" version "2.0.2" } */ -version = "1.8.7-beta6" +version = "1.8.7-beta7" group= "me.Danker.DankersSkyblockMod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "Danker's Skyblock Mod" diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 3eaac50..6e82137 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -64,7 +64,7 @@ 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-beta6"; + public static final String VERSION = "1.8.7-beta7"; public static int titleTimer = -1; public static boolean showTitle = false; public static String titleText = ""; @@ -128,6 +128,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new ExpertiseLore()); MinecraftForge.EVENT_BUS.register(new FasterMaddoxCalling()); MinecraftForge.EVENT_BUS.register(new FirePillarDisplay()); + MinecraftForge.EVENT_BUS.register(new FishingSpawnAlerts()); MinecraftForge.EVENT_BUS.register(new GemstonesLore()); MinecraftForge.EVENT_BUS.register(new GiantHPDisplay()); MinecraftForge.EVENT_BUS.register(new GoldenEnchants()); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 6472d23..09b59d9 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -62,6 +62,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean autoJoinSkyblock; public static boolean firePillar; public static boolean aliases; + public static boolean fishingAlert; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; diff --git a/src/main/java/me/Danker/features/FishingSpawnAlerts.java b/src/main/java/me/Danker/features/FishingSpawnAlerts.java new file mode 100644 index 0000000..3f11dfc --- /dev/null +++ b/src/main/java/me/Danker/features/FishingSpawnAlerts.java @@ -0,0 +1,60 @@ +package me.Danker.features; + +import me.Danker.DankersSkyblockMod; +import me.Danker.commands.ToggleCommand; +import me.Danker.utils.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityArmorStand; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StringUtils; +import net.minecraft.world.World; +import net.minecraftforge.event.world.WorldEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +import java.util.List; + +public class FishingSpawnAlerts { + + static boolean lastThunder = false; + static boolean lastJawbus = false; + + @SubscribeEvent + public void onTick(TickEvent.ClientTickEvent event) { + if (event.phase != TickEvent.Phase.START) return; + + World world = Minecraft.getMinecraft().theWorld; + if (DankersSkyblockMod.tickAmount % 10 == 0) { + if (ToggleCommand.fishingAlert && Utils.tabLocation.equals("Crimson Isle") && world != null) { + boolean thunder = false; + boolean jawbus = false; + List entities = world.getLoadedEntityList(); + + for (Entity entity : entities) { + if (entity instanceof EntityArmorStand) { + String name = StringUtils.stripControlCodes(entity.getName()); + if (name.contains("Thunder")) { + thunder = true; + } else if (name.contains("Lord Jawbus")) { + jawbus = true; + } + } + } + + if (thunder && !lastThunder) Utils.createTitle(EnumChatFormatting.AQUA + "THUNDER", 2); + if (jawbus && !lastJawbus) Utils.createTitle(EnumChatFormatting.AQUA + "JAWBUS", 2); + + lastThunder = thunder; + lastJawbus = jawbus; + } + } + } + + @SubscribeEvent + public void onWorldChange(WorldEvent.Load event) { + lastThunder = false; + lastJawbus = false; + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index abf9ffa..9e013b7 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -90,6 +90,7 @@ public class DankerGui extends GuiScreen { private GuiButton hideArmour; private GuiButton autoJoinSkyblock; private GuiButton firePillar; + private GuiButton fishingAlert; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -184,6 +185,7 @@ public class DankerGui extends GuiScreen { 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."); firePillar = new FeatureButton("Fire Pillar Display: " + Utils.getColouredBoolean(ToggleCommand.firePillar), "Displays blaze fire pillar text on screen"); + fishingAlert = new FeatureButton("Fishing Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.fishingAlert), "Alerts when a Thunder or Lord Jawbus spawns nearby"); allButtons.clear(); allButtons.add(changeDisplay); @@ -244,6 +246,7 @@ public class DankerGui extends GuiScreen { allButtons.add(hideArmour); allButtons.add(autoJoinSkyblock); allButtons.add(firePillar); + allButtons.add(fishingAlert); search.setText(initSearchText); search.setVisible(true); @@ -537,6 +540,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.firePillar = !ToggleCommand.firePillar; ConfigHandler.writeBooleanConfig("toggles", "FirePillar", ToggleCommand.firePillar); firePillar.displayString = "Fire Pillar Display: " + Utils.getColouredBoolean(ToggleCommand.firePillar); + } else if (button == fishingAlert) { + ToggleCommand.fishingAlert = !ToggleCommand.fishingAlert; + ConfigHandler.writeBooleanConfig("toggles", "FishingAlert", ToggleCommand.fishingAlert); + fishingAlert.displayString = "Fishing Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.fishingAlert); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 4415a8e..48693c8 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -247,6 +247,7 @@ public class ConfigHandler { ToggleCommand.autoJoinSkyblock = initBoolean("toggles", "AutoJoinSkyblock", false); ToggleCommand.firePillar = initBoolean("toggles", "FirePillar", false); ToggleCommand.aliases = initBoolean("toggles", "Aliases", false); + ToggleCommand.fishingAlert = initBoolean("toggles", "FishingAlert", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); -- cgit From b0954c47d499b922ca006a18a4331c8e1ae366b5 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Wed, 11 May 2022 19:18:07 -0400 Subject: Add option to disable custom colours on nametags --- src/main/java/me/Danker/commands/ToggleCommand.java | 1 + src/main/java/me/Danker/features/ColouredNames.java | 2 +- src/main/java/me/Danker/gui/DankerGui.java | 7 +++++++ src/main/java/me/Danker/handlers/ConfigHandler.java | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 09b59d9..91584f8 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -49,6 +49,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean giantHP; public static boolean hidePetCandy; public static boolean customColouredNames; + public static boolean customNametags; public static boolean endOfFarmAlert; public static boolean gemstoneLore; public static boolean crystalHollowWaypoints; diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index 90d722e..9f7890c 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -72,7 +72,7 @@ public class ColouredNames { @SubscribeEvent(priority = EventPriority.LOW) public void onRenderLiving(RenderLivingEvent.Specials.Pre event) { - if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return; + if (!ToggleCommand.customColouredNames || !ToggleCommand.customNametags || !Utils.inSkyblock) return; Entity entity = event.entity; if (entity instanceof EntityArmorStand && !entity.isDead && entity.hasCustomName()) { diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 9e013b7..663adf5 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -74,6 +74,7 @@ public class DankerGui extends GuiScreen { private GuiButton giantHP; private GuiButton hidePetCandy; private GuiButton customColouredNames; + private GuiButton customNametags; private GuiButton endOfFarmAlert; private GuiButton gemstoneLore; private GuiButton autoAcceptReparty; @@ -177,6 +178,7 @@ 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."); customColouredNames = new FeatureButton("Custom Name Colors: " + Utils.getColouredBoolean(ToggleCommand.customColouredNames), "Replaces some player's usernames with a custom color."); + customNametags = new FeatureButton("Custom Color on Nametags: " + Utils.getColouredBoolean(ToggleCommand.customNametags), "Displays custom name colors on nametags. Disabling will increase performance with custom colors."); 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."); @@ -238,6 +240,7 @@ public class DankerGui extends GuiScreen { allButtons.add(giantHP); allButtons.add(hidePetCandy); allButtons.add(customColouredNames); + allButtons.add(customNametags); allButtons.add(endOfFarmAlert); allButtons.add(gemstoneLore); allButtons.add(autoAcceptReparty); @@ -544,6 +547,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.fishingAlert = !ToggleCommand.fishingAlert; ConfigHandler.writeBooleanConfig("toggles", "FishingAlert", ToggleCommand.fishingAlert); fishingAlert.displayString = "Fishing Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.fishingAlert); + } else if (button == customNametags) { + ToggleCommand.customNametags = !ToggleCommand.customNametags; + ConfigHandler.writeBooleanConfig("toggles", "CustomNametags", ToggleCommand.customNametags); + customNametags.displayString = "Custom Color on Nametags: " + Utils.getColouredBoolean(ToggleCommand.customNametags); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 48693c8..1f00c9f 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -223,6 +223,7 @@ public class ConfigHandler { ToggleCommand.giantHP = initBoolean("toggles", "GiantHP", false); ToggleCommand.hidePetCandy = initBoolean("toggles", "HidePetCandy", false); ToggleCommand.customColouredNames = initBoolean("toggles", "CustomColouredNames", true); // enabled by default + ToggleCommand.customNametags = initBoolean("toggles", "CustomNametags", true); ToggleCommand.endOfFarmAlert = initBoolean("toggles", "EndOfFarmAlert", false); ToggleCommand.gemstoneLore = initBoolean("toggles", "GemstoneLore", false); ToggleCommand.crystalHollowWaypoints = initBoolean("toggles", "CrystalHollowWaypoints", false); -- cgit From a40f87f555e01b09e99ab61e83caf8939ad1a8fd Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Mon, 16 May 2022 22:17:17 -0400 Subject: Add minion last collected display --- README.md | 1 + src/main/java/me/Danker/DankersSkyblockMod.java | 2 + .../java/me/Danker/commands/ToggleCommand.java | 1 + .../me/Danker/features/MinionLastCollected.java | 128 +++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 ++ .../java/me/Danker/handlers/ConfigHandler.java | 11 ++ src/main/java/me/Danker/utils/RenderUtils.java | 24 ++++ 7 files changed, 174 insertions(+) create mode 100644 src/main/java/me/Danker/features/MinionLastCollected.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index d22f75e..98bf434 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ Discord Server: https://discord.gg/QsEkNQS - Fire pillar display - Chat aliases - Thunder/Lord Jawbus spawn alerts +- Show when minion was last collected
diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 6e82137..a63552c 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -141,6 +141,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new IceWalkSolver()); MinecraftForge.EVENT_BUS.register(new LividSolver()); MinecraftForge.EVENT_BUS.register(new LowHealthNotifications()); + MinecraftForge.EVENT_BUS.register(new MinionLastCollected()); MinecraftForge.EVENT_BUS.register(new NecronNotifications()); MinecraftForge.EVENT_BUS.register(new NoF3Coords()); MinecraftForge.EVENT_BUS.register(new NotifySlayerSlain()); @@ -181,6 +182,7 @@ public class DankersSkyblockMod { Alerts.configFile = configDirectory + "/dsmalerts.json"; ChatAliases.configFile = configDirectory + "/dsmaliases.json"; + MinionLastCollected.configFile = configDirectory + "/dsmminions.json"; ConfigHandler.reloadConfig(); GoldenEnchants.init(); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 91584f8..c08d50a 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -64,6 +64,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean firePillar; public static boolean aliases; public static boolean fishingAlert; + public static boolean minionLastCollected; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; diff --git a/src/main/java/me/Danker/features/MinionLastCollected.java b/src/main/java/me/Danker/features/MinionLastCollected.java new file mode 100644 index 0000000..884dccf --- /dev/null +++ b/src/main/java/me/Danker/features/MinionLastCollected.java @@ -0,0 +1,128 @@ +package me.Danker.features; + +import com.google.gson.GsonBuilder; +import me.Danker.commands.ToggleCommand; +import me.Danker.events.ChestSlotClickedEvent; +import me.Danker.events.PacketWriteEvent; +import me.Danker.utils.RenderUtils; +import me.Danker.utils.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityArmorStand; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.network.play.client.C02PacketUseEntity; +import net.minecraft.util.BlockPos; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class MinionLastCollected { + + public static List minions = new ArrayList<>(); + public static String configFile; + static BlockPos lastMinion = null; + public static int LAST_COLLECTED_COLOUR; + + @SubscribeEvent + public void onPacketWrite(PacketWriteEvent event) { + if (ToggleCommand.minionLastCollected && Utils.inSkyblock && Utils.isInScoreboard("Your Island")) { + if (event.packet instanceof C02PacketUseEntity) { + C02PacketUseEntity packet = (C02PacketUseEntity) event.packet; + Entity entity = packet.getEntityFromWorld(Minecraft.getMinecraft().theWorld); + if (isAMinion(entity)) { + lastMinion = entity.getPosition(); + if (getMinionFromPos(lastMinion) == null) { + minions.add(new Minion(lastMinion)); + save(); + } + } + } + } + } + + @SubscribeEvent + public void onSlotClick(ChestSlotClickedEvent event) { + if (ToggleCommand.minionLastCollected && Utils.tabLocation.equals("Private Island")) { + String inventoryName = event.inventoryName; + ItemStack item = event.item; + if (inventoryName.contains(" Minion ") && item != null && lastMinion != null) { + if (item.getDisplayName().contains("Collect All")) { + getMinionFromPos(lastMinion).collectNow(); + save(); + } else if (item.getDisplayName().contains("Pickup Minion")) { + minions.remove(getMinionFromPos(lastMinion)); + save(); + } + } + } + } + + @SubscribeEvent + public void onWorldRender(RenderWorldLastEvent event) { + if (ToggleCommand.minionLastCollected && Utils.inSkyblock && Utils.tabLocation.equals("Private Island")) { + for (Minion minion : minions) { + RenderUtils.draw3DString(minion.pos.getX() + 0.5, minion.pos.getY() + 2.2, minion.pos.getZ() + 0.5, minion.getTimeCollected(), LAST_COLLECTED_COLOUR, event.partialTicks); + } + } + } + + public boolean isAMinion(Entity entity) { + if (!(entity instanceof EntityArmorStand)) return false; + EntityArmorStand armourStand = (EntityArmorStand) entity; + + for (int i = 0; i <= 3; i++) { + if (armourStand.getCurrentArmor(i) == null) return false; + } + + return (Item.getIdFromItem(armourStand.getCurrentArmor(0).getItem()) == 301 && + Item.getIdFromItem(armourStand.getCurrentArmor(1).getItem()) == 300 && + Item.getIdFromItem(armourStand.getCurrentArmor(2).getItem()) == 299 && + Item.getIdFromItem(armourStand.getCurrentArmor(3).getItem()) == 397); + } + + public Minion getMinionFromPos(BlockPos pos) { + for (Minion minion : minions) { + if (minion.pos.equals(pos)) return minion; + } + return null; + } + + public static void save() { + try (FileWriter writer = new FileWriter(configFile)) { + new GsonBuilder().create().toJson(minions, writer); + writer.flush(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + public static class Minion { + + public BlockPos pos; + public double lastCollect; + + public Minion(BlockPos pos) { + this.pos = pos; + this.lastCollect = -1; + } + + public String getTimeCollected() { + String lastCollected = "Last Collected: "; + if (lastCollect == -1) { + return lastCollected + "Never"; + } + return lastCollected + Utils.getTimeBetween(lastCollect, System.currentTimeMillis() / 1000) + " ago"; + } + + public void collectNow() { + lastCollect = System.currentTimeMillis() / 1000; + } + + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 663adf5..c247eab 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -92,6 +92,7 @@ public class DankerGui extends GuiScreen { private GuiButton autoJoinSkyblock; private GuiButton firePillar; private GuiButton fishingAlert; + private GuiButton minionLastCollected; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -188,6 +189,7 @@ public class DankerGui extends GuiScreen { autoJoinSkyblock = new FeatureButton("Automatically Join Skyblock: " + Utils.getColouredBoolean(ToggleCommand.autoJoinSkyblock), "Automatically join Skyblock when you join Hypixel.\nYou have an addiction."); firePillar = new FeatureButton("Fire Pillar Display: " + Utils.getColouredBoolean(ToggleCommand.firePillar), "Displays blaze fire pillar text on screen"); fishingAlert = new FeatureButton("Fishing Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.fishingAlert), "Alerts when a Thunder or Lord Jawbus spawns nearby"); + minionLastCollected = new FeatureButton("Show When Minion Last Collected: " + Utils.getColouredBoolean(ToggleCommand.minionLastCollected), "Displays when a minion was last collected over the minion."); allButtons.clear(); allButtons.add(changeDisplay); @@ -250,6 +252,7 @@ public class DankerGui extends GuiScreen { allButtons.add(autoJoinSkyblock); allButtons.add(firePillar); allButtons.add(fishingAlert); + allButtons.add(minionLastCollected); search.setText(initSearchText); search.setVisible(true); @@ -551,6 +554,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.customNametags = !ToggleCommand.customNametags; ConfigHandler.writeBooleanConfig("toggles", "CustomNametags", ToggleCommand.customNametags); customNametags.displayString = "Custom Color on Nametags: " + Utils.getColouredBoolean(ToggleCommand.customNametags); + } else if (button == minionLastCollected) { + ToggleCommand.minionLastCollected = !ToggleCommand.minionLastCollected; + ConfigHandler.writeBooleanConfig("toggles", "MinionLastCollected", ToggleCommand.minionLastCollected); + minionLastCollected.displayString = "Show When Minion Last Collected: " + Utils.getColouredBoolean(ToggleCommand.minionLastCollected); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 1f00c9f..bd60639 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -249,6 +249,7 @@ public class ConfigHandler { ToggleCommand.firePillar = initBoolean("toggles", "FirePillar", false); ToggleCommand.aliases = initBoolean("toggles", "Aliases", false); ToggleCommand.fishingAlert = initBoolean("toggles", "FishingAlert", false); + ToggleCommand.minionLastCollected = initBoolean("toggles", "MinionLastCollected", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); @@ -714,6 +715,7 @@ public class ConfigHandler { BoulderSolver.BOULDER_ARROW_COLOUR = initInt("colors", "boulderArrow", 0x006000); SilverfishSolver.SILVERFISH_LINE_COLOUR = initInt("colors", "silverfishLine", 0x40FF40); IceWalkSolver.ICE_WALK_LINE_COLOUR = initInt("colors", "iceWalkLine", 0x40FF40); + MinionLastCollected.LAST_COLLECTED_COLOUR = initInt("colors", "lastCollected", 0x55FFFF); // Commands if (!hasKey("commands", "reparty")) writeBooleanConfig("commands", "reparty", false); @@ -739,6 +741,15 @@ public class ConfigHandler { } ChatAliases.Alias[] aliases = gson.fromJson(new FileReader(ChatAliases.configFile), ChatAliases.Alias[].class); if (aliases != null) ChatAliases.aliases = new ArrayList<>(Arrays.asList(aliases)); + + // Minions + if (!(new File(MinionLastCollected.configFile).exists())) { + FileWriter file = new FileWriter(MinionLastCollected.configFile); + file.write(new JsonArray().toString()); + file.close(); + } + MinionLastCollected.Minion[] minions = gson.fromJson(new FileReader(MinionLastCollected.configFile), MinionLastCollected.Minion[].class); + if (minions != null) MinionLastCollected.minions = new ArrayList<>(Arrays.asList(minions)); } catch (IOException ex) { ex.printStackTrace(); } diff --git a/src/main/java/me/Danker/utils/RenderUtils.java b/src/main/java/me/Danker/utils/RenderUtils.java index b5ede19..c3efc90 100644 --- a/src/main/java/me/Danker/utils/RenderUtils.java +++ b/src/main/java/me/Danker/utils/RenderUtils.java @@ -138,6 +138,30 @@ public class RenderUtils { GlStateManager.popMatrix(); } + public static void draw3DString(double x, double y, double z, String text, int colour, float partialTicks) { + Minecraft mc = Minecraft.getMinecraft(); + EntityPlayer player = mc.thePlayer; + double realX = (x - player.lastTickPosX) + ((x - player.posX) - (x - player.lastTickPosX)) * partialTicks; + double realY = (y - player.lastTickPosY) + ((y - player.posY) - (y - player.lastTickPosY)) * partialTicks; + double realZ = (z - player.lastTickPosZ) + ((z - player.posZ) - (z - 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(realX, realY, realZ); + 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) { -- cgit From abd656382da708b8cd77df1f4f0a74f2287618c5 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 5 Aug 2022 00:30:35 -0400 Subject: Add trophy fishing tracker Also update trivia answers and add mod init event --- README.md | 6 +- src/main/java/me/Danker/DankersSkyblockMod.java | 11 +- .../java/me/Danker/commands/DisplayCommand.java | 11 +- .../me/Danker/commands/ImportFishingCommand.java | 39 ++++++- src/main/java/me/Danker/commands/LootCommand.java | 52 ++++++++- .../java/me/Danker/commands/ResetLootCommand.java | 4 + src/main/java/me/Danker/events/ModInitEvent.java | 13 +++ src/main/java/me/Danker/features/Alerts.java | 6 ++ src/main/java/me/Danker/features/ChatAliases.java | 6 ++ src/main/java/me/Danker/features/CustomMusic.java | 7 ++ .../java/me/Danker/features/GemstonesLore.java | 4 +- .../java/me/Danker/features/GoldenEnchants.java | 4 +- .../me/Danker/features/MinionLastCollected.java | 6 ++ .../java/me/Danker/features/loot/LootDisplay.java | 76 +++++++++++++ .../me/Danker/features/loot/TrophyFishTracker.java | 120 +++++++++++++++++++++ .../features/puzzlesolvers/TriviaSolver.java | 11 +- src/main/java/me/Danker/gui/DisplayGui.java | 18 ++-- .../java/me/Danker/handlers/ConfigHandler.java | 11 +- src/main/java/me/Danker/utils/Utils.java | 12 +++ 19 files changed, 386 insertions(+), 31 deletions(-) create mode 100644 src/main/java/me/Danker/events/ModInitEvent.java create mode 100644 src/main/java/me/Danker/features/loot/TrophyFishTracker.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index 98bf434..624989f 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Discord Server: https://discord.gg/QsEkNQS - Maddox menu keybind - Block starting other slayer quests - Slayer slain alert -- Fishing, jerry fishing, fishing festival, spooky fishing, crystal hollows fishing, lava fishing trackers +- Fishing, jerry fishing, fishing festival, spooky fishing, crystal hollows fishing, lava fishing, trophy fishing trackers - Expertise kills in fishing rod lore - Gemstones applied in item lore - Catacombs trackers @@ -87,8 +87,8 @@ Discord Server: https://discord.gg/QsEkNQS - /toggle - Toggles features. /toggle list returns values of every toggle. - /setkey - Sets API key. - /getkey - Returns key set with /setkey and copies it to your clipboard. -- /loot [winter/festival/spooky/ch/lava/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. -- /display [winter/festival/spooky/ch/lava/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. +- /loot [winter/festival/spooky/ch/lava/trophy/f(1-7)/mm/session] - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead. +- /display [winter/festival/spooky/ch/lava/trophy/f(1-7)/mm/session] - Text display for trackers. /display fishing winter displays winter sea creatures instead. /display auto automatically displays the loot for the slayer quest you have active. - /resetloot - - Resets loot for trackers. /resetloot confirm confirms the reset. - /move - Moves text display to specified X and Y coordinates. - /scale - Scales text display to a specified multipler between 0.1x and 10x. diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index a63552c..6322c33 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -4,6 +4,7 @@ import com.google.gson.JsonObject; import me.Danker.commands.*; import me.Danker.events.ChestSlotClickedEvent; import me.Danker.events.GuiChestBackgroundDrawnEvent; +import me.Danker.events.ModInitEvent; import me.Danker.events.RenderOverlayEvent; import me.Danker.features.*; import me.Danker.features.loot.*; @@ -177,18 +178,12 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new GhostTracker()); MinecraftForge.EVENT_BUS.register(new MythologicalTracker()); MinecraftForge.EVENT_BUS.register(new SpiderTracker()); + MinecraftForge.EVENT_BUS.register(new TrophyFishTracker()); MinecraftForge.EVENT_BUS.register(new WolfTracker()); MinecraftForge.EVENT_BUS.register(new ZombieTracker()); - Alerts.configFile = configDirectory + "/dsmalerts.json"; - ChatAliases.configFile = configDirectory + "/dsmaliases.json"; - MinionLastCollected.configFile = configDirectory + "/dsmminions.json"; - + MinecraftForge.EVENT_BUS.post(new ModInitEvent(configDirectory)); ConfigHandler.reloadConfig(); - GoldenEnchants.init(); - TriviaSolver.init(); - CustomMusic.init(configDirectory); - GemstonesLore.init(); keyBindings[0] = new KeyBinding("Open Maddox Menu", Keyboard.KEY_M, "Danker's Skyblock Mod"); keyBindings[1] = new KeyBinding("Regular Ability", Keyboard.KEY_NUMPAD4, "Danker's Skyblock Mod"); diff --git a/src/main/java/me/Danker/commands/DisplayCommand.java b/src/main/java/me/Danker/commands/DisplayCommand.java index 21ada93..c340ed8 100644 --- a/src/main/java/me/Danker/commands/DisplayCommand.java +++ b/src/main/java/me/Danker/commands/DisplayCommand.java @@ -21,7 +21,7 @@ public class DisplayCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [winter/festival/spooky/ch/lava/session/f(1-7)/mm]"; + return "/" + getCommandName() + " [winter/festival/spooky/ch/lava/trophy/session/f(1-7)/mm]"; } public static String usage(ICommandSender arg0) { @@ -38,7 +38,7 @@ public class DisplayCommand extends CommandBase { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "blaze", "fishing", "catacombs", "mythological", "ghost", "auto", "off"); } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { - return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "session"); + return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "trophy", "session"); } else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) { return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7", "mm", "master"); } else if (args.length > 1) { @@ -132,6 +132,13 @@ public class DisplayCommand extends CommandBase { LootDisplay.display = "fishing_lava"; } break; + case "trophy": + if (showSession) { + LootDisplay.display = "fishing_trophy_session"; + } else { + LootDisplay.display = "fishing_trophy"; + } + break; default: if (showSession) { LootDisplay.display = "fishing_session"; diff --git a/src/main/java/me/Danker/commands/ImportFishingCommand.java b/src/main/java/me/Danker/commands/ImportFishingCommand.java index 46d9906..6658bcd 100644 --- a/src/main/java/me/Danker/commands/ImportFishingCommand.java +++ b/src/main/java/me/Danker/commands/ImportFishingCommand.java @@ -3,6 +3,7 @@ package me.Danker.commands; import com.google.gson.JsonObject; import me.Danker.DankersSkyblockMod; import me.Danker.features.loot.FishingTracker; +import me.Danker.features.loot.TrophyFishTracker; import me.Danker.handlers.APIHandler; import me.Danker.handlers.ConfigHandler; import net.minecraft.command.CommandBase; @@ -63,7 +64,9 @@ public class ImportFishingCommand extends CommandBase { } System.out.println("Fetching fishing stats..."); - JsonObject statsObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject().get("stats").getAsJsonObject(); + JsonObject memberObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject(); + JsonObject statsObject = memberObject.get("stats").getAsJsonObject(); + JsonObject trophyObject = memberObject.get("trophy_fish").getAsJsonObject(); FishingTracker.greatCatches = 0; FishingTracker.goodCatches = 0; @@ -123,7 +126,7 @@ public class ImportFishingCommand extends CommandBase { FishingTracker.thunders = getSCFromApi(statsObject, "kills_thunder"); FishingTracker.lordJawbuses = getSCFromApi(statsObject, "kills_lord_jawbus"); - System.out.println("Writing to config..."); + System.out.println("Writing SC to config..."); ConfigHandler.writeIntConfig("fishing", "goodCatch", FishingTracker.goodCatches); ConfigHandler.writeIntConfig("fishing", "greatCatch", FishingTracker.greatCatches); ConfigHandler.writeIntConfig("fishing", "seaCreature", FishingTracker.seaCreatures); @@ -172,6 +175,27 @@ public class ImportFishingCommand extends CommandBase { ConfigHandler.writeIntConfig("fishing", "thunder", FishingTracker.thunders); ConfigHandler.writeIntConfig("fishing", "lordJawbus", FishingTracker.lordJawbuses); + TrophyFishTracker.fish = TrophyFishTracker.createEmpty(); + TrophyFishTracker.fish.add("Sulpher Skitter", getTrophyFromAPI(trophyObject, "sulphur_skitter")); + TrophyFishTracker.fish.add("Obfuscated 1", getTrophyFromAPI(trophyObject, "obfuscated_fish_1")); + TrophyFishTracker.fish.add("Steaming-Hot Flounder", getTrophyFromAPI(trophyObject, "steaming_hot_flounder")); + TrophyFishTracker.fish.add("Obfuscated 2", getTrophyFromAPI(trophyObject, "obfuscated_fish_2")); + TrophyFishTracker.fish.add("Gusher", getTrophyFromAPI(trophyObject, "gusher")); + TrophyFishTracker.fish.add("Blobfish", getTrophyFromAPI(trophyObject, "blobfish")); + TrophyFishTracker.fish.add("Slugfish", getTrophyFromAPI(trophyObject, "slugfish")); + TrophyFishTracker.fish.add("Obfuscated 3", getTrophyFromAPI(trophyObject, "obfuscated_fish_3")); + TrophyFishTracker.fish.add("Flyfish", getTrophyFromAPI(trophyObject, "flyfish")); + TrophyFishTracker.fish.add("Lavahorse", getTrophyFromAPI(trophyObject, "lava_horse")); + TrophyFishTracker.fish.add("Mana Ray", getTrophyFromAPI(trophyObject, "mana_ray")); + TrophyFishTracker.fish.add("Volcanic Stonefish", getTrophyFromAPI(trophyObject, "volcanic_stonefish")); + TrophyFishTracker.fish.add("Vanille", getTrophyFromAPI(trophyObject, "vanille")); + TrophyFishTracker.fish.add("Skeleton Fish", getTrophyFromAPI(trophyObject, "skeleton_fish")); + TrophyFishTracker.fish.add("Moldfin", getTrophyFromAPI(trophyObject, "moldfin")); + TrophyFishTracker.fish.add("Soul Fish", getTrophyFromAPI(trophyObject, "soul_fish")); + TrophyFishTracker.fish.add("Karate Fish", getTrophyFromAPI(trophyObject, "karate_fish")); + TrophyFishTracker.fish.add("Golden Fish", getTrophyFromAPI(trophyObject, "golden_fish")); + TrophyFishTracker.save(); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Fishing stats imported.")); }).start(); } @@ -183,4 +207,15 @@ public class ImportFishingCommand extends CommandBase { return sc; } + static JsonObject getTrophyFromAPI(JsonObject obj, String name) { + JsonObject tiers = new JsonObject(); + + tiers.addProperty("BRONZE", obj.has(name + "_bronze") ? obj.get(name + "_bronze").getAsInt() : 0); + tiers.addProperty("SILVER", obj.has(name + "_silver") ? obj.get(name + "_silver").getAsInt() : 0); + tiers.addProperty("GOLD", obj.has(name + "_gold") ? obj.get(name + "_gold").getAsInt() : 0); + tiers.addProperty("DIAMOND", obj.has(name + "_diamond") ? obj.get(name + "_diamond").getAsInt() : 0); + + return tiers; + } + } diff --git a/src/main/java/me/Danker/commands/LootCommand.java b/src/main/java/me/Danker/commands/LootCommand.java index af5479e..3c224bb 100644 --- a/src/main/java/me/Danker/commands/LootCommand.java +++ b/src/main/java/me/Danker/commands/LootCommand.java @@ -24,7 +24,7 @@ public class LootCommand extends CommandBase { @Override public String getCommandUsage(ICommandSender arg0) { - return "/" + getCommandName() + " [winter/festival/spooky/ch/lava/f(1-7)/mm/session]"; + return "/" + getCommandName() + " [winter/festival/spooky/ch/lava/trophy/f(1-7)/mm/session]"; } public static String usage(ICommandSender arg0) { @@ -41,7 +41,7 @@ public class LootCommand extends CommandBase { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "enderman", "blaze", "fishing", "catacombs", "mythological"); } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { - return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "session"); + return getListOfStringsMatchingLastWord(args, "winter", "festival", "spooky", "ch", "lava", "trophy", "session"); } else if (args.length == 2 && args[0].equalsIgnoreCase("catacombs")) { return getListOfStringsMatchingLastWord(args, "f1", "floor1", "f2", "floor2", "f3", "floor3", "f4", "floor4", "f5", "floor5", "f6", "floor6", "f7", "floor7", "mm", "master"); } else if (args.length > 1) { @@ -621,6 +621,54 @@ public class LootCommand extends CommandBase { EnumChatFormatting.AQUA + " Creatures Since Lord Jawbus: " + bossesBetween + "\n" + EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + " -------------------")); return; + } else if (arg1[1].equalsIgnoreCase("trophy")) { + if (showSession) { + player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" + + EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + " Trophy Fishing Summary (Current Session):\n" + + EnumChatFormatting.WHITE + " Sulpher Skitter " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Sulpher Skitter") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Sulpher Skitter") + "\n" + + EnumChatFormatting.WHITE + " Obfuscated 1 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Obfuscated 1") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 1") + "\n" + + EnumChatFormatting.WHITE + " Steaminghot Flounder " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Steaming-Hot Flounder") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Steaming-Hot Flounder") + "\n" + + EnumChatFormatting.WHITE + " Gusher " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Gusher") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Gusher") + "\n" + + EnumChatFormatting.WHITE + " Blobfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Blobfish") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Blobfish") + "\n" + + EnumChatFormatting.GREEN + " Obfuscated 2 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Obfuscated 2") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 2") + "\n" + + EnumChatFormatting.GREEN + " Slugfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Slugfish") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Slugfish") + "\n" + + EnumChatFormatting.GREEN + " Flyfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Flyfish") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Flyfish") + "\n" + + EnumChatFormatting.BLUE + " Obfuscated 3 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Obfuscated 3") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 3") + "\n" + + EnumChatFormatting.BLUE + " Lavahorse " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Lavahorse") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Lavahorse") + "\n" + + EnumChatFormatting.BLUE + " Mana Ray " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Mana Ray") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Mana Ray") + "\n" + + EnumChatFormatting.BLUE + " Volcanic Stonefish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Volcanic Stonefish") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Volcanic Stonefish") + "\n" + + EnumChatFormatting.BLUE + " Vanille " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Vanille") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Vanille") + "\n" + + EnumChatFormatting.DARK_PURPLE + " Skeleton Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Skeleton Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Skeleton Fish") + "\n" + + EnumChatFormatting.DARK_PURPLE + " Moldfin " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Moldfin") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Moldfin") + "\n" + + EnumChatFormatting.DARK_PURPLE + " Soul Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Soul Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Soul Fish") + "\n" + + EnumChatFormatting.DARK_PURPLE + " Karate Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Karate Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Karate Fish") + "\n" + + EnumChatFormatting.GOLD + " Golden Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fishSession, "Golden Fish") + ")" + EnumChatFormatting.GOLD + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Golden Fish") + "\n" + + EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + "-------------------")); + return; + } + + player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "" + EnumChatFormatting.BOLD + "-------------------\n" + + EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + " Trophy Fishing Summary:\n" + + EnumChatFormatting.WHITE + " Sulpher Skitter " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Sulpher Skitter") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Sulpher Skitter") + "\n" + + EnumChatFormatting.WHITE + " Obfuscated 1 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Obfuscated 1") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 1") + "\n" + + EnumChatFormatting.WHITE + " Steaminghot Flounder " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Steaming-Hot Flounder") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Steaming-Hot Flounder") + "\n" + + EnumChatFormatting.WHITE + " Gusher " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Gusher") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Gusher") + "\n" + + EnumChatFormatting.WHITE + " Blobfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Blobfish") + ")" + EnumChatFormatting.WHITE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Blobfish") + "\n" + + EnumChatFormatting.GREEN + " Obfuscated 2 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Obfuscated 2") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 2") + "\n" + + EnumChatFormatting.GREEN + " Slugfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Slugfish") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Slugfish") + "\n" + + EnumChatFormatting.GREEN + " Flyfish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Flyfish") + ")" + EnumChatFormatting.GREEN + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Flyfish") + "\n" + + EnumChatFormatting.BLUE + " Obfuscated 3 " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Obfuscated 3") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 3") + "\n" + + EnumChatFormatting.BLUE + " Lavahorse " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Lavahorse") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Lavahorse") + "\n" + + EnumChatFormatting.BLUE + " Mana Ray " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Mana Ray") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Mana Ray") + "\n" + + EnumChatFormatting.BLUE + " Volcanic Stonefish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Volcanic Stonefish") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Volcanic Stonefish") + "\n" + + EnumChatFormatting.BLUE + " Vanille " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Vanille") + ")" + EnumChatFormatting.BLUE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Vanille") + "\n" + + EnumChatFormatting.DARK_PURPLE + " Skeleton Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Skeleton Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Skeleton Fish") + "\n" + + EnumChatFormatting.DARK_PURPLE + " Moldfin " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Moldfin") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Moldfin") + "\n" + + EnumChatFormatting.DARK_PURPLE + " Soul Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Soul Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Soul Fish") + "\n" + + EnumChatFormatting.DARK_PURPLE + " Karate Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Karate Fish") + ")" + EnumChatFormatting.DARK_PURPLE + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Karate Fish") + "\n" + + EnumChatFormatting.GOLD + " Golden Fish " + EnumChatFormatting.DARK_GRAY + "(" + TrophyFishTracker.getSum(TrophyFishTracker.fish, "Golden Fish") + ")" + EnumChatFormatting.GOLD + ": " + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Golden Fish") + "\n" + + EnumChatFormatting.AQUA + EnumChatFormatting.BOLD + "-------------------")); + return; } } diff --git a/src/main/java/me/Danker/commands/ResetLootCommand.java b/src/main/java/me/Danker/commands/ResetLootCommand.java index 9ccef33..00cf8f6 100644 --- a/src/main/java/me/Danker/commands/ResetLootCommand.java +++ b/src/main/java/me/Danker/commands/ResetLootCommand.java @@ -293,6 +293,10 @@ public class ResetLootCommand extends CommandBase { FishingTracker.jawbusSCsSession = -1; ConfigHandler.deleteCategory("fishing"); ConfigHandler.reloadConfig(); + + TrophyFishTracker.fish = TrophyFishTracker.createEmpty(); + TrophyFishTracker.fishSession = TrophyFishTracker.createEmpty(); + TrophyFishTracker.save(); } static void resetMythological() { diff --git a/src/main/java/me/Danker/events/ModInitEvent.java b/src/main/java/me/Danker/events/ModInitEvent.java new file mode 100644 index 0000000..e1cc644 --- /dev/null +++ b/src/main/java/me/Danker/events/ModInitEvent.java @@ -0,0 +1,13 @@ +package me.Danker.events; + +import net.minecraftforge.fml.common.eventhandler.Event; + +public class ModInitEvent extends Event { + + public final String configDirectory; + + public ModInitEvent(String configDirectory) { + this.configDirectory = configDirectory; + } + +} diff --git a/src/main/java/me/Danker/features/Alerts.java b/src/main/java/me/Danker/features/Alerts.java index 8f45423..e54a212 100644 --- a/src/main/java/me/Danker/features/Alerts.java +++ b/src/main/java/me/Danker/features/Alerts.java @@ -3,6 +3,7 @@ package me.Danker.features; import com.google.gson.GsonBuilder; import javafx.scene.control.Alert; import me.Danker.commands.ToggleCommand; +import me.Danker.events.ModInitEvent; import me.Danker.utils.Utils; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StringUtils; @@ -24,6 +25,11 @@ public class Alerts { public static HashMap patterns = new HashMap<>(); public static String configFile; + @SubscribeEvent + public void init(ModInitEvent event) { + configFile = event.configDirectory + "/dsmalerts.json"; + } + @SubscribeEvent public void onChat(ClientChatReceivedEvent event) { if (!ToggleCommand.alerts || event.type == 2) return; diff --git a/src/main/java/me/Danker/features/ChatAliases.java b/src/main/java/me/Danker/features/ChatAliases.java index ae9e0f7..76ab5f6 100644 --- a/src/main/java/me/Danker/features/ChatAliases.java +++ b/src/main/java/me/Danker/features/ChatAliases.java @@ -1,6 +1,7 @@ package me.Danker.features; import com.google.gson.GsonBuilder; +import me.Danker.events.ModInitEvent; import me.Danker.events.PacketWriteEvent; import net.minecraft.client.Minecraft; import net.minecraft.network.play.client.C01PacketChatMessage; @@ -16,6 +17,11 @@ public class ChatAliases { public static List aliases = new ArrayList<>(); public static String configFile; + @SubscribeEvent + public void init(ModInitEvent event) { + configFile = event.configDirectory + "/dsmaliases.json"; + } + @SubscribeEvent public void onPacketWrite(PacketWriteEvent event) { if (event.packet instanceof C01PacketChatMessage) { diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java index 8ce8c05..e6f8131 100644 --- a/src/main/java/me/Danker/features/CustomMusic.java +++ b/src/main/java/me/Danker/features/CustomMusic.java @@ -2,6 +2,7 @@ package me.Danker.features; import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; +import me.Danker.events.ModInitEvent; import me.Danker.handlers.ScoreboardHandler; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; @@ -13,6 +14,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.client.event.sound.PlaySoundEvent; import net.minecraftforge.event.world.WorldEvent; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; @@ -196,6 +198,11 @@ public class CustomMusic { } } + @SubscribeEvent + public void init(ModInitEvent event) { + init(event.configDirectory); + } + public static void init(String configDirectory) { if (configDirectory == null) return; File directory = new File(configDirectory + "/dsmmusic"); diff --git a/src/main/java/me/Danker/features/GemstonesLore.java b/src/main/java/me/Danker/features/GemstonesLore.java index 7db2d33..b16edaf 100644 --- a/src/main/java/me/Danker/features/GemstonesLore.java +++ b/src/main/java/me/Danker/features/GemstonesLore.java @@ -1,6 +1,7 @@ package me.Danker.features; import me.Danker.commands.ToggleCommand; +import me.Danker.events.ModInitEvent; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -18,7 +19,8 @@ public class GemstonesLore { static Map gemstoneColours = new HashMap<>(); - public static void init() { + @SubscribeEvent + public void init(ModInitEvent event) { gemstoneColours.put("Amber", EnumChatFormatting.GOLD); gemstoneColours.put("Sapphire", EnumChatFormatting.AQUA); gemstoneColours.put("Jasper", EnumChatFormatting.LIGHT_PURPLE); diff --git a/src/main/java/me/Danker/features/GoldenEnchants.java b/src/main/java/me/Danker/features/GoldenEnchants.java index d633ec5..228d43e 100644 --- a/src/main/java/me/Danker/features/GoldenEnchants.java +++ b/src/main/java/me/Danker/features/GoldenEnchants.java @@ -1,6 +1,7 @@ package me.Danker.features; import me.Danker.commands.ToggleCommand; +import me.Danker.events.ModInitEvent; import me.Danker.utils.Utils; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; @@ -15,7 +16,8 @@ public class GoldenEnchants { public static Map t6Enchants = new HashMap<>(); public static Pattern t6EnchantPattern = Pattern.compile(""); - public static void init() { + @SubscribeEvent + public void init(ModInitEvent event) { t6Enchants.put("9Angler VI", "6Angler VI"); t6Enchants.put("9Bane of Arthropods VI", "6Bane of Arthropods VI"); t6Enchants.put("9Caster VI", "6Caster VI"); diff --git a/src/main/java/me/Danker/features/MinionLastCollected.java b/src/main/java/me/Danker/features/MinionLastCollected.java index 884dccf..7079f40 100644 --- a/src/main/java/me/Danker/features/MinionLastCollected.java +++ b/src/main/java/me/Danker/features/MinionLastCollected.java @@ -3,6 +3,7 @@ package me.Danker.features; import com.google.gson.GsonBuilder; import me.Danker.commands.ToggleCommand; import me.Danker.events.ChestSlotClickedEvent; +import me.Danker.events.ModInitEvent; import me.Danker.events.PacketWriteEvent; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; @@ -28,6 +29,11 @@ public class MinionLastCollected { static BlockPos lastMinion = null; public static int LAST_COLLECTED_COLOUR; + @SubscribeEvent + public void init(ModInitEvent event) { + configFile = event.configDirectory + "/dsmminions.json"; + } + @SubscribeEvent public void onPacketWrite(PacketWriteEvent event) { if (ToggleCommand.minionLastCollected && Utils.inSkyblock && Utils.isInScoreboard("Your Island")) { diff --git a/src/main/java/me/Danker/features/loot/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java index 7832362..556108c 100644 --- a/src/main/java/me/Danker/features/loot/LootDisplay.java +++ b/src/main/java/me/Danker/features/loot/LootDisplay.java @@ -946,6 +946,82 @@ public class LootDisplay { EnumChatFormatting.AQUA + timeBetween + "\n" + EnumChatFormatting.AQUA + bossesBetween; break; + case "fishing_trophy": + dropsText = EnumChatFormatting.WHITE + "Sulpher Skitter:\n" + + EnumChatFormatting.WHITE + "Obfuscated 1:\n" + + EnumChatFormatting.WHITE + "Steaminghot Flounder:\n" + + EnumChatFormatting.WHITE + "Gusher:\n" + + EnumChatFormatting.WHITE + "Blobfish:\n" + + EnumChatFormatting.GREEN + "Obfuscated 2:\n" + + EnumChatFormatting.GREEN + "Slugfish:\n" + + EnumChatFormatting.GREEN + "Flyfish:\n" + + EnumChatFormatting.BLUE + "Obfuscated 3:\n" + + EnumChatFormatting.BLUE + "Lavahorse:\n" + + EnumChatFormatting.BLUE + "Mana Ray:\n" + + EnumChatFormatting.BLUE + "Volcanic Stonefish:\n" + + EnumChatFormatting.BLUE + "Vanille:\n" + + EnumChatFormatting.DARK_PURPLE + "Skeleton Fish:\n" + + EnumChatFormatting.DARK_PURPLE + "Moldfin:\n" + + EnumChatFormatting.DARK_PURPLE + "Soul Fish:\n" + + EnumChatFormatting.DARK_PURPLE + "Karate Fish:\n" + + EnumChatFormatting.GOLD + "Golden Fish:"; + countText = EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Sulpher Skitter") + "\n" + + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 1") + "\n" + + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Steaming-Hot Flounder") + "\n" + + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Gusher") + "\n" + + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Blobfish") + "\n" + + EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 2") + "\n" + + EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Slugfish") + "\n" + + EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Flyfish") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 3") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Lavahorse") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Mana Ray") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Volcanic Stonefish") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Vanille") + "\n" + + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Skeleton Fish") + "\n" + + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Moldfin") + "\n" + + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Soul Fish") + "\n" + + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Karate Fish") + "\n" + + EnumChatFormatting.GOLD + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Golden Fish"); + break; + case "fishing_trophy_session": + dropsText = EnumChatFormatting.WHITE + "Sulpher Skitter:\n" + + EnumChatFormatting.WHITE + "Obfuscated 1:\n" + + EnumChatFormatting.WHITE + "Steaminghot Flounder:\n" + + EnumChatFormatting.WHITE + "Gusher:\n" + + EnumChatFormatting.WHITE + "Blobfish:\n" + + EnumChatFormatting.GREEN + "Obfuscated 2:\n" + + EnumChatFormatting.GREEN + "Slugfish:\n" + + EnumChatFormatting.GREEN + "Flyfish:\n" + + EnumChatFormatting.BLUE + "Obfuscated 3:\n" + + EnumChatFormatting.BLUE + "Lavahorse:\n" + + EnumChatFormatting.BLUE + "Mana Ray:\n" + + EnumChatFormatting.BLUE + "Volcanic Stonefish:\n" + + EnumChatFormatting.BLUE + "Vanille:\n" + + EnumChatFormatting.DARK_PURPLE + "Skeleton Fish:\n" + + EnumChatFormatting.DARK_PURPLE + "Moldfin:\n" + + EnumChatFormatting.DARK_PURPLE + "Soul Fish:\n" + + EnumChatFormatting.DARK_PURPLE + "Karate Fish:\n" + + EnumChatFormatting.GOLD + "Golden Fish:"; + countText = EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Sulpher Skitter") + "\n" + + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 1") + "\n" + + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Steaming-Hot Flounder") + "\n" + + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Gusher") + "\n" + + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Blobfish") + "\n" + + EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 2") + "\n" + + EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Slugfish") + "\n" + + EnumChatFormatting.GREEN + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Flyfish") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 3") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Lavahorse") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Mana Ray") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Volcanic Stonefish") + "\n" + + EnumChatFormatting.BLUE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Vanille") + "\n" + + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Skeleton Fish") + "\n" + + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Moldfin") + "\n" + + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Soul Fish") + "\n" + + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Karate Fish") + "\n" + + EnumChatFormatting.GOLD + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Golden Fish"); + break; case "mythological": dropsText = EnumChatFormatting.GOLD + "Coins:\n" + EnumChatFormatting.WHITE + "Griffin Feathers:\n" + diff --git a/src/main/java/me/Danker/features/loot/TrophyFishTracker.java b/src/main/java/me/Danker/features/loot/TrophyFishTracker.java new file mode 100644 index 0000000..d11fcfe --- /dev/null +++ b/src/main/java/me/Danker/features/loot/TrophyFishTracker.java @@ -0,0 +1,120 @@ +package me.Danker.features.loot; + +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import me.Danker.events.ModInitEvent; +import me.Danker.utils.Utils; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StringUtils; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class TrophyFishTracker { + + public static JsonObject fish = new JsonObject(); + public static JsonObject fishSession = new JsonObject(); + public static Pattern fishPattern = Pattern.compile("TROPHY FISH! You caught a (?.*) (?.*)."); + public static String configFile; + + public static JsonObject createEmpty() { + JsonObject fish = new JsonObject(); + + JsonObject tiers = new JsonObject(); + tiers.addProperty("BRONZE", 0); + tiers.addProperty("SILVER", 0); + tiers.addProperty("GOLD", 0); + tiers.addProperty("DIAMOND", 0); + + fish.add("Sulpher Skitter", Utils.deepCopy(tiers)); + fish.add("Obfuscated 1", Utils.deepCopy(tiers)); + fish.add("Steaming-Hot Flounder", Utils.deepCopy(tiers)); + fish.add("Obfuscated 2", Utils.deepCopy(tiers)); + fish.add("Gusher", Utils.deepCopy(tiers)); + fish.add("Blobfish", Utils.deepCopy(tiers)); + fish.add("Slugfish", Utils.deepCopy(tiers)); + fish.add("Obfuscated 3", Utils.deepCopy(tiers)); + fish.add("Flyfish", Utils.deepCopy(tiers)); + fish.add("Lavahorse", Utils.deepCopy(tiers)); + fish.add("Mana Ray", Utils.deepCopy(tiers)); + fish.add("Volcanic Stonefish", Utils.deepCopy(tiers)); + fish.add("Vanille", Utils.deepCopy(tiers)); + fish.add("Skeleton Fish", Utils.deepCopy(tiers)); + fish.add("Moldfin", Utils.deepCopy(tiers)); + fish.add("Soul Fish", Utils.deepCopy(tiers)); + fish.add("Karate Fish", Utils.deepCopy(tiers)); + fish.add("Golden Fish", Utils.deepCopy(tiers)); + + return fish; + } + + @SubscribeEvent + public void init(ModInitEvent event) { + configFile = event.configDirectory + "/dsmtrophyfish.json"; + if (fish.entrySet().isEmpty()) fish = createEmpty(); + fishSession = createEmpty(); + } + + @SubscribeEvent(receiveCanceled = true) + public void onChat(ClientChatReceivedEvent event) { + String message = StringUtils.stripControlCodes(event.message.getUnformattedText()); + + if (!Utils.inSkyblock) return; + if (!Utils.tabLocation.equals("Crimson Isle")) return; + if (event.type == 2) return; + if (message.contains(":")) return; + + Matcher matcher = fishPattern.matcher(message); + + if (matcher.matches()) { + String fishName = matcher.group("fish"); + String tier = matcher.group("tier"); + + JsonObject fishObj = fish.get(fishName).getAsJsonObject(); + int amount = fishObj.get(tier).getAsInt(); + fishObj.addProperty(tier, amount + 1); + + JsonObject fishSessionObj = fishSession.get(fishName).getAsJsonObject(); + int amountSession = fishSessionObj.get(tier).getAsInt(); + fishSessionObj.addProperty(tier, amountSession + 1); + + save(); + } + } + + public static void save() { + try (FileWriter writer = new FileWriter(configFile)) { + new GsonBuilder().create().toJson(fish, writer); + writer.flush(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + public static String getTierCount(JsonObject obj, String name) { + JsonObject type = obj.get(name).getAsJsonObject(); + + int bronze = type.get("BRONZE").getAsInt(); + int silver = type.get("SILVER").getAsInt(); + int gold = type.get("GOLD").getAsInt(); + int diamond = type.get("DIAMOND").getAsInt(); + + return EnumChatFormatting.DARK_GRAY + "" + bronze + EnumChatFormatting.WHITE + "-" + + EnumChatFormatting.GRAY + silver + EnumChatFormatting.WHITE + "-" + + EnumChatFormatting.GOLD + gold + EnumChatFormatting.WHITE + "-" + + EnumChatFormatting.AQUA + diamond; + } + + public static int getSum(JsonObject obj, String name) { + JsonObject type = obj.get(name).getAsJsonObject(); + return type.get("BRONZE").getAsInt() + + type.get("SILVER").getAsInt() + + type.get("GOLD").getAsInt() + + type.get("DIAMOND").getAsInt(); + } + +} diff --git a/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java b/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java index dd2c23e..23d0228 100644 --- a/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java +++ b/src/main/java/me/Danker/features/puzzlesolvers/TriviaSolver.java @@ -5,6 +5,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; +import me.Danker.events.ModInitEvent; import me.Danker.utils.Utils; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -26,7 +27,8 @@ public class TriviaSolver { static JsonArray triviaAnswersJson = null; public static String TRIVIA_WRONG_ANSWER_COLOUR; - public static void init() { + @SubscribeEvent + public void init(ModInitEvent event) { // Hard coded solutions if api call fails triviaSolutions.put("What is the status of The Watcher?", new String[]{"Stalker"}); triviaSolutions.put("What is the status of Bonzo?", new String[]{"New Necromancer"}); @@ -39,11 +41,12 @@ public class TriviaSolver { triviaSolutions.put("What is the status of Goldor?", new String[]{"Wither Soldier"}); triviaSolutions.put("What is the status of Storm?", new String[]{"Elementalist"}); triviaSolutions.put("What is the status of Necron?", new String[]{"Wither Lord"}); - triviaSolutions.put("How many total Fairy Souls are there?", new String[]{"227 Fairy Souls"}); + triviaSolutions.put("What is the status of Maxor, Storm, Goldor and Necron?", new String[]{"Wither Lord"}); + triviaSolutions.put("How many total Fairy Souls are there?", new String[]{"238 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in Spider's Den?", new String[]{"19 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in The End?", new String[]{"12 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in The Farming Islands?", new String[]{"20 Fairy Souls"}); - triviaSolutions.put("How many Fairy Souls are there in Blazing Fortress?", new String[]{"19 Fairy Souls"}); + triviaSolutions.put("How many Fairy Souls are there in Crimson Isle?", new String[]{"29 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in The Park?", new String[]{"11 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in Jerry's Workshop?", new String[]{"5 Fairy Souls"}); triviaSolutions.put("How many Fairy Souls are there in Hub?", new String[]{"79 Fairy Souls"}); @@ -57,7 +60,7 @@ public class TriviaSolver { triviaSolutions.put("What is the name of the person that upgrades pets?", new String[]{"Kat"}); triviaSolutions.put("What is the name of the lady of the Nether?", new String[]{"Elle"}); triviaSolutions.put("Which villager in the Village gives you a Rogue Sword?", new String[]{"Jamie"}); - triviaSolutions.put("How many unique minions are there?", new String[]{"53 Minions"}); + triviaSolutions.put("How many unique minions are there?", new String[]{"55 Minions"}); triviaSolutions.put("Which of these enemies does not spawn in the Spider's Den?", new String[]{"Zombie Spider", "Cave Spider", "Wither Skeleton", "Dashing Spooder", "Broodfather", "Night Spider"}); triviaSolutions.put("Which of these monsters only spawns at night?", new String[]{"Zombie Villager", "Ghast"}); diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index b8be3d6..2afa187 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -5,6 +5,7 @@ import me.Danker.handlers.ConfigHandler; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.ScaledResolution; @@ -28,6 +29,7 @@ public class DisplayGui extends GuiScreen { private GuiButton fishingSpooky; private GuiButton fishingCH; private GuiButton fishingLava; + private GuiButton fishingTrophy; private GuiButton catacombsF1; private GuiButton catacombsF2; private GuiButton catacombsF3; @@ -61,12 +63,13 @@ public class DisplayGui extends GuiScreen { wolf = new GuiButton(0, width / 2 - 50, (int) (height * 0.35), 100, 20, "Wolf"); enderman = new GuiButton(0, width / 2 + 60, (int) (height * 0.35), 100, 20, "Enderman"); blaze = new GuiButton(0, width / 2 + 170, (int) (height * 0.35), 100, 20, "Blaze"); - fishing = new GuiButton(0, width / 2 - 295, (int) (height * 0.5), 90, 20, "Fishing"); - fishingWinter = new GuiButton(0, width / 2 - 195, (int) (height * 0.5), 90, 20, "Fishing Winter"); - fishingFestival = new GuiButton(0, width / 2 - 95, (int) (height * 0.5), 90, 20, "Fishing Festival"); - fishingSpooky = new GuiButton(0, width / 2 + 5, (int) (height * 0.5), 90, 20, "Fishing Spooky"); - fishingCH = new GuiButton(0, width / 2 + 105, (int) (height * 0.5), 90, 20, "CH Fishing"); - fishingLava = new GuiButton(0, width / 2 + 205, (int) (height * 0.5), 90, 20, "Lava Fishing"); + fishing = new GuiButton(0, width / 2 - 310, (int) (height * 0.5), 80, 20, "Fishing"); + fishingWinter = new GuiButton(0, width / 2 - 220, (int) (height * 0.5), 80, 20, "Fishing Winter"); + fishingFestival = new GuiButton(0, width / 2 - 130, (int) (height * 0.5), 80, 20, "Fishing Festival"); + fishingSpooky = new GuiButton(0, width / 2 - 40, (int) (height * 0.5), 80, 20, "Fishing Spooky"); + fishingCH = new GuiButton(0, width / 2 + 50, (int) (height * 0.5), 80, 20, "CH Fishing"); + fishingLava = new GuiButton(0, width / 2 + 140, (int) (height * 0.5), 80, 20, "Lava Fishing"); + fishingTrophy = new GuiButton(0, width / 2 + 230, (int) (height * 0.5), 80, 20, "Fishing Trophy"); catacombsF1 = new GuiButton(0, width / 2 - 235, (int) (height * 0.65), 50, 20, "F1"); catacombsF2 = new GuiButton(0, width / 2 - 175, (int) (height * 0.65), 50, 20, "F2"); catacombsF3 = new GuiButton(0, width / 2 - 115, (int) (height * 0.65), 50, 20, "F3"); @@ -92,6 +95,7 @@ public class DisplayGui extends GuiScreen { this.buttonList.add(fishingSpooky); this.buttonList.add(fishingCH); this.buttonList.add(fishingLava); + this.buttonList.add(fishingTrophy); this.buttonList.add(catacombsF1); this.buttonList.add(catacombsF2); this.buttonList.add(catacombsF3); @@ -153,6 +157,8 @@ public class DisplayGui extends GuiScreen { setDisplay("fishing_ch"); } else if (button == fishingLava) { setDisplay("fishing_lava"); + } else if (button == fishingTrophy) { + setDisplay("fishing_trophy"); } else if (button == mythological) { setDisplay("mythological"); } else if (button == catacombsF1) { diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index bd60639..b2c51a4 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -1,7 +1,6 @@ package me.Danker.handlers; -import com.google.gson.Gson; -import com.google.gson.JsonArray; +import com.google.gson.*; import me.Danker.DankersSkyblockMod; import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; @@ -750,6 +749,14 @@ public class ConfigHandler { } MinionLastCollected.Minion[] minions = gson.fromJson(new FileReader(MinionLastCollected.configFile), MinionLastCollected.Minion[].class); if (minions != null) MinionLastCollected.minions = new ArrayList<>(Arrays.asList(minions)); + + // Trophy Fish + if (!(new File(TrophyFishTracker.configFile).exists())) { + FileWriter file = new FileWriter(TrophyFishTracker.configFile); + file.write(new JsonObject().toString()); + file.close(); + } + TrophyFishTracker.fish = new JsonParser().parse(new FileReader(TrophyFishTracker.configFile)).getAsJsonObject(); } catch (IOException ex) { ex.printStackTrace(); } diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 3cef436..094690e 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -1,5 +1,7 @@ package me.Danker.utils; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import me.Danker.DankersSkyblockMod; import me.Danker.features.ColouredNames; import me.Danker.features.GoldenEnchants; @@ -509,6 +511,16 @@ public class Utils { } } + public static JsonObject deepCopy(JsonObject obj) { + JsonObject newObj = new JsonObject(); + + for (Map.Entry entry : obj.entrySet()) { + newObj.add(entry.getKey(), entry.getValue()); + } + + return newObj; + } + public enum DungeonFloor { NONE, E0, -- cgit From 66fa83a1942b4ec79c5fa94168c04b84c60c628a Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 6 Aug 2022 22:08:32 -0400 Subject: Add trophy fish completion to display --- .../java/me/Danker/commands/ToggleCommand.java | 1 + src/main/java/me/Danker/features/Alerts.java | 1 - .../me/Danker/features/CrystalHollowWaypoints.java | 1 - src/main/java/me/Danker/features/CustomMusic.java | 1 - .../java/me/Danker/features/loot/LootDisplay.java | 46 +++++++++++++++++++++- .../me/Danker/features/loot/TrophyFishTracker.java | 23 +++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 ++++ src/main/java/me/Danker/gui/DisplayGui.java | 1 - .../java/me/Danker/gui/alerts/AlertActionGui.java | 1 - .../java/me/Danker/handlers/ConfigHandler.java | 6 ++- src/main/java/me/Danker/utils/RenderUtils.java | 9 +++-- src/main/java/me/Danker/utils/Utils.java | 2 +- 12 files changed, 86 insertions(+), 13 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index c08d50a..3c353c8 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -65,6 +65,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean aliases; public static boolean fishingAlert; public static boolean minionLastCollected; + public static boolean showTrophyCompletion; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; diff --git a/src/main/java/me/Danker/features/Alerts.java b/src/main/java/me/Danker/features/Alerts.java index e54a212..aa6197f 100644 --- a/src/main/java/me/Danker/features/Alerts.java +++ b/src/main/java/me/Danker/features/Alerts.java @@ -1,7 +1,6 @@ package me.Danker.features; import com.google.gson.GsonBuilder; -import javafx.scene.control.Alert; import me.Danker.commands.ToggleCommand; import me.Danker.events.ModInitEvent; import me.Danker.utils.Utils; diff --git a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java index 39a71b4..12aa94e 100644 --- a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java +++ b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java @@ -7,7 +7,6 @@ import me.Danker.handlers.ScoreboardHandler; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; -import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.item.EntityArmorStand; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.event.ClickEvent; diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java index e6f8131..32af6c9 100644 --- a/src/main/java/me/Danker/features/CustomMusic.java +++ b/src/main/java/me/Danker/features/CustomMusic.java @@ -14,7 +14,6 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.client.event.sound.PlaySoundEvent; import net.minecraftforge.event.world.WorldEvent; -import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; diff --git a/src/main/java/me/Danker/features/loot/LootDisplay.java b/src/main/java/me/Danker/features/loot/LootDisplay.java index 556108c..fe68c3e 100644 --- a/src/main/java/me/Danker/features/loot/LootDisplay.java +++ b/src/main/java/me/Danker/features/loot/LootDisplay.java @@ -965,7 +965,7 @@ public class LootDisplay { EnumChatFormatting.DARK_PURPLE + "Soul Fish:\n" + EnumChatFormatting.DARK_PURPLE + "Karate Fish:\n" + EnumChatFormatting.GOLD + "Golden Fish:"; - countText = EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Sulpher Skitter") + "\n" + + if (!ToggleCommand.showTrophyCompletion) countText = EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Sulpher Skitter") + "\n" + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Obfuscated 1") + "\n" + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Steaming-Hot Flounder") + "\n" + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Gusher") + "\n" + @@ -983,6 +983,27 @@ public class LootDisplay { EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Soul Fish") + "\n" + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Karate Fish") + "\n" + EnumChatFormatting.GOLD + TrophyFishTracker.getTierCount(TrophyFishTracker.fish, "Golden Fish"); + + if (ToggleCommand.showTrophyCompletion) { + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Sulpher Skitter", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Obfuscated 1", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Steaming-Hot Flounder", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (2 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Gusher", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (3 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Blobfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (4 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Obfuscated 2", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (5 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Slugfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (6 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Flyfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (7 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Obfuscated 3", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (8 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Lavahorse", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (9 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Mana Ray", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (10 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Volcanic Stonefish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (11 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Vanille", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (12 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Skeleton Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (13 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Moldfin", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (14 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Soul Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (15 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Karate Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (16 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fish, "Golden Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (17 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + } break; case "fishing_trophy_session": dropsText = EnumChatFormatting.WHITE + "Sulpher Skitter:\n" + @@ -1003,7 +1024,7 @@ public class LootDisplay { EnumChatFormatting.DARK_PURPLE + "Soul Fish:\n" + EnumChatFormatting.DARK_PURPLE + "Karate Fish:\n" + EnumChatFormatting.GOLD + "Golden Fish:"; - countText = EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Sulpher Skitter") + "\n" + + if (!ToggleCommand.showTrophyCompletion) countText = EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Sulpher Skitter") + "\n" + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Obfuscated 1") + "\n" + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Steaming-Hot Flounder") + "\n" + EnumChatFormatting.WHITE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Gusher") + "\n" + @@ -1021,6 +1042,27 @@ public class LootDisplay { EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Soul Fish") + "\n" + EnumChatFormatting.DARK_PURPLE + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Karate Fish") + "\n" + EnumChatFormatting.GOLD + TrophyFishTracker.getTierCount(TrophyFishTracker.fishSession, "Golden Fish"); + + if (ToggleCommand.showTrophyCompletion) { + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Sulpher Skitter", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), MoveCommand.displayXY[1], ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Obfuscated 1", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Steaming-Hot Flounder", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (2 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Gusher", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (3 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Blobfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (4 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Obfuscated 2", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (5 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Slugfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (6 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Flyfish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (7 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Obfuscated 3", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (8 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Lavahorse", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (9 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Mana Ray", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (10 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Volcanic Stonefish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (11 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Vanille", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (12 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Skeleton Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (13 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Moldfin", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (14 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Soul Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (15 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Karate Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (16 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + TrophyFishTracker.drawCompletion(TrophyFishTracker.fishSession, "Golden Fish", (int) (MoveCommand.displayXY[0] + (110 * ScaleCommand.displayScale)), (int) (MoveCommand.displayXY[1] + (17 * mc.fontRendererObj.FONT_HEIGHT * ScaleCommand.displayScale)), ScaleCommand.displayScale); + } break; case "mythological": dropsText = EnumChatFormatting.GOLD + "Coins:\n" + diff --git a/src/main/java/me/Danker/features/loot/TrophyFishTracker.java b/src/main/java/me/Danker/features/loot/TrophyFishTracker.java index d11fcfe..6202871 100644 --- a/src/main/java/me/Danker/features/loot/TrophyFishTracker.java +++ b/src/main/java/me/Danker/features/loot/TrophyFishTracker.java @@ -3,7 +3,10 @@ package me.Danker.features.loot; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import me.Danker.events.ModInitEvent; +import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StringUtils; import net.minecraftforge.client.event.ClientChatReceivedEvent; @@ -117,4 +120,24 @@ public class TrophyFishTracker { type.get("DIAMOND").getAsInt(); } + public static void drawCompletion(JsonObject obj, String name, int x, int y, double scale) { + JsonObject type = obj.get(name).getAsJsonObject(); + + boolean bronze = type.get("BRONZE").getAsInt() > 0; + boolean silver = type.get("SILVER").getAsInt() > 0; + boolean gold = type.get("GOLD").getAsInt() > 0; + boolean diamond = type.get("DIAMOND").getAsInt() > 0; + + ItemStack incomplete = new ItemStack(Items.dye, 1, 8); + ItemStack bronzeComplete = new ItemStack(Items.brick); + ItemStack silverComplete = new ItemStack(Items.iron_ingot); + ItemStack goldComplete = new ItemStack(Items.gold_ingot); + ItemStack diamondComplete = new ItemStack(Items.diamond); + + RenderUtils.renderItem(bronze ? bronzeComplete : incomplete, x, y - 2, scale / 1.3D); + RenderUtils.renderItem(silver ? silverComplete : incomplete, x + 15, y - 2, scale / 1.3D); + RenderUtils.renderItem(gold ? goldComplete : incomplete, x + 30, y - 2, scale / 1.3D); + RenderUtils.renderItem(diamond ? diamondComplete : incomplete, x + 45, y - 2, scale / 1.3D); + } + } diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index c247eab..cab2b5c 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -93,6 +93,7 @@ public class DankerGui extends GuiScreen { private GuiButton firePillar; private GuiButton fishingAlert; private GuiButton minionLastCollected; + private GuiButton showTrophyCompletion; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -190,6 +191,7 @@ public class DankerGui extends GuiScreen { firePillar = new FeatureButton("Fire Pillar Display: " + Utils.getColouredBoolean(ToggleCommand.firePillar), "Displays blaze fire pillar text on screen"); fishingAlert = new FeatureButton("Fishing Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.fishingAlert), "Alerts when a Thunder or Lord Jawbus spawns nearby"); minionLastCollected = new FeatureButton("Show When Minion Last Collected: " + Utils.getColouredBoolean(ToggleCommand.minionLastCollected), "Displays when a minion was last collected over the minion."); + showTrophyCompletion = new FeatureButton("Show Trophy Fish Completion: " + Utils.getColouredBoolean(ToggleCommand.showTrophyCompletion), "Show completion instead of count in trophy fish tracker display."); allButtons.clear(); allButtons.add(changeDisplay); @@ -253,6 +255,7 @@ public class DankerGui extends GuiScreen { allButtons.add(firePillar); allButtons.add(fishingAlert); allButtons.add(minionLastCollected); + allButtons.add(showTrophyCompletion); search.setText(initSearchText); search.setVisible(true); @@ -558,6 +561,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.minionLastCollected = !ToggleCommand.minionLastCollected; ConfigHandler.writeBooleanConfig("toggles", "MinionLastCollected", ToggleCommand.minionLastCollected); minionLastCollected.displayString = "Show When Minion Last Collected: " + Utils.getColouredBoolean(ToggleCommand.minionLastCollected); + } else if (button == showTrophyCompletion) { + ToggleCommand.showTrophyCompletion = !ToggleCommand.showTrophyCompletion; + ConfigHandler.writeBooleanConfig("toggles", "ShowTrophyCompletion", ToggleCommand.showTrophyCompletion); + showTrophyCompletion.displayString = "Show Trophy Fish Completion: " + Utils.getColouredBoolean(ToggleCommand.showTrophyCompletion); } } diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index 2afa187..f7fd2f3 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -5,7 +5,6 @@ import me.Danker.handlers.ConfigHandler; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.ScaledResolution; diff --git a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java index 4853ac1..02c3d3b 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertActionGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertActionGui.java @@ -1,7 +1,6 @@ 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; diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index b2c51a4..484a7d5 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -1,6 +1,9 @@ package me.Danker.handlers; -import com.google.gson.*; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import me.Danker.DankersSkyblockMod; import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; @@ -249,6 +252,7 @@ public class ConfigHandler { ToggleCommand.aliases = initBoolean("toggles", "Aliases", false); ToggleCommand.fishingAlert = initBoolean("toggles", "FishingAlert", false); ToggleCommand.minionLastCollected = initBoolean("toggles", "MinionLastCollected", false); + ToggleCommand.showTrophyCompletion = initBoolean("toggles", "ShowTrophyCompletion", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); diff --git a/src/main/java/me/Danker/utils/RenderUtils.java b/src/main/java/me/Danker/utils/RenderUtils.java index c3efc90..f334b7a 100644 --- a/src/main/java/me/Danker/utils/RenderUtils.java +++ b/src/main/java/me/Danker/utils/RenderUtils.java @@ -387,15 +387,16 @@ public class RenderUtils { GlStateManager.popMatrix(); } - public static void renderItem(ItemStack item, float x, float y, float z) { - + public static void renderItem(ItemStack stack, int x, int y, double scale) { GlStateManager.enableRescaleNormal(); RenderHelper.enableGUIStandardItemLighting(); GlStateManager.enableDepth(); GlStateManager.pushMatrix(); - GlStateManager.translate(x, y, z); - Minecraft.getMinecraft().getRenderItem().renderItemIntoGUI(item, 0, 0); + GlStateManager.translate(x, y, 0); + GlStateManager.scale(scale, scale, scale); + //Minecraft.getMinecraft().getRenderItem().renderItemIntoGUI(stack, 0, 0); + Minecraft.getMinecraft().getRenderItem().renderItemAndEffectIntoGUI(stack, 0, 0); GlStateManager.popMatrix(); GlStateManager.disableDepth(); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 094690e..4aa094d 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -22,8 +22,8 @@ import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.util.*; import java.awt.*; -import java.util.*; import java.util.List; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -- cgit From e26599e44252d0e16d8399d0b190ccae6e054352 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Tue, 9 Aug 2022 20:41:57 -0400 Subject: PR Fixes --- README.md | 58 +++++++++++----------- src/main/java/me/Danker/DankersSkyblockMod.java | 3 +- src/main/java/me/Danker/features/CustomMusic.java | 1 - .../me/Danker/features/HighlightCommissions.java | 7 ++- src/main/java/me/Danker/gui/DankerGui.java | 1 - src/main/java/me/Danker/utils/Utils.java | 16 ------ 6 files changed, 34 insertions(+), 52 deletions(-) (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index b28600a..c3478b0 100644 --- a/README.md +++ b/README.md @@ -120,41 +120,41 @@ Discord Server: https://discord.gg/QsEkNQS
Keybinds -
- Warps -### Warps - -Shortcut commands that save you the time of typing the whole warp command. - - /deep - Warps you to the Deep Caverns. - - /nether - Warps you to the Crimson Isle. - - /isle - Warps you to the Crimson Isle. - - /crimson - Warps you to the Crimson Isle. - - /mines - Warps you to the Dwarven Mines. - - /forge - Warps you to the Dwarven Forge. - - /crystals - Warps you to the Crystal Hollows. - - /gold - Warps you to the Gold Mine. - - /desert - Warps you to the Desert. - - /spider - Warps you to the Spiders Den. - - /barn - Warps you to the Barn. - - /end - Warps you to the End. - - /park - Warps you to the Park. - - /castle - Warps you to the Hub Castle. - - /da - Warps you to the Dark Auction. - - /crypt - Warps you to the Crypt in the Hub. - - /nest - Warps you to the top of the Spider's Den. - - /void - Warps you to the Void Sepulture in the End. - - /drag - Warps you to the Dragons Nest in the End. - - /jungle - Warps you to the Jungle. - - /howl - Warps you to the Howling Cave in the Park. - - /dun - Warps you to the Dungeon Hub. -
- ## Keybinds - Open Maddox menu - M by default. - Regular Ability - Numpad 4 by default. - Start/Stop Skill Tracker - Numpad 5 by default.
+
+Warps + +## Warps +Shortcut commands that save you the time of typing the whole warp command. +- /deep - Warps you to the Deep Caverns. +- /nether - Warps you to the Crimson Isle. +- /isle - Warps you to the Crimson Isle. +- /crimson - Warps you to the Crimson Isle. +- /mines - Warps you to the Dwarven Mines. +- /forge - Warps you to the Dwarven Forge. +- /crystals - Warps you to the Crystal Hollows. +- /gold - Warps you to the Gold Mine. +- /desert - Warps you to the Desert. +- /spider - Warps you to the Spiders Den. +- /barn - Warps you to the Barn. +- /end - Warps you to the End. +- /park - Warps you to the Park. +- /castle - Warps you to the Hub Castle. +- /da - Warps you to the Dark Auction. +- /crypt - Warps you to the Crypt in the Hub. +- /nest - Warps you to the top of the Spider's Den. +- /void - Warps you to the Void Sepulture in the End. +- /drag - Warps you to the Dragons Nest in the End. +- /jungle - Warps you to the Jungle. +- /howl - Warps you to the Howling Cave in the Park. +- /dun - Warps you to the Dungeon Hub. +
+
Custom Music diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 73c996b..1bbaf89 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -137,6 +137,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new HidePetCandy()); MinecraftForge.EVENT_BUS.register(new HidePlayerArmour()); MinecraftForge.EVENT_BUS.register(new HideTooltipsInExperiments()); + MinecraftForge.EVENT_BUS.register(new HighlightCommissions()); MinecraftForge.EVENT_BUS.register(new HighlightSkeletonMasters()); MinecraftForge.EVENT_BUS.register(new IceWalkSolver()); MinecraftForge.EVENT_BUS.register(new LividSolver()); @@ -167,7 +168,7 @@ 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()); diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java index 38e4ba0..01279fd 100644 --- a/src/main/java/me/Danker/features/CustomMusic.java +++ b/src/main/java/me/Danker/features/CustomMusic.java @@ -2,7 +2,6 @@ package me.Danker.features; import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; -import me.Danker.events.ModInitEvent; import me.Danker.events.PostConfigInitEvent; import me.Danker.handlers.ScoreboardHandler; import me.Danker.utils.Utils; diff --git a/src/main/java/me/Danker/features/HighlightCommissions.java b/src/main/java/me/Danker/features/HighlightCommissions.java index f59951a..3bf1cb2 100644 --- a/src/main/java/me/Danker/features/HighlightCommissions.java +++ b/src/main/java/me/Danker/features/HighlightCommissions.java @@ -2,13 +2,12 @@ package me.Danker.features; import me.Danker.commands.ToggleCommand; import me.Danker.events.GuiChestBackgroundDrawnEvent; -import me.Danker.handlers.ConfigHandler; +import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.inventory.Slot; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraft.item.ItemWritableBook; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import org.lwjgl.util.Color; import java.util.List; public class HighlightCommissions { @@ -27,7 +26,7 @@ public class HighlightCommissions { if (slot.getStack().getItem() instanceof ItemWritableBook) { for (String line : Utils.getItemLore(slot.getStack())) { if (line.contains("COMPLETED")) { - Utils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, HIGHLIGHT_COLOUR + 0xD7000000); + RenderUtils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, HIGHLIGHT_COLOUR + 0xD7000000); break; } } diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 06c50d0..9a8d283 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -14,7 +14,6 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.client.gui.*; import net.minecraft.util.StringUtils; import java.awt.*; diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index deb5018..8791a43 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -10,8 +10,6 @@ import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.ScoreboardHandler; 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.entity.item.EntityItem; import net.minecraft.entity.item.EntityItemFrame; @@ -22,7 +20,6 @@ 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.List; @@ -509,19 +506,6 @@ public class Utils { return (Math.floor(level / 2D) + 25) / 100D; } - 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 desktopNotification(String name, String title, String text, TrayIcon.MessageType messageType) { try { final SystemTray tray = SystemTray.getSystemTray(); -- cgit From 4ad452877d9d88a54669c5e6f04f6ab933a01a02 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 12 Aug 2022 21:27:32 -0400 Subject: Add amount of Magmafish if filleted display Shows amount of Magmafish you would get if you filleted all the trophy fish in your inventory --- README.md | 1 + src/main/java/me/Danker/DankersSkyblockMod.java | 1 + .../java/me/Danker/commands/ToggleCommand.java | 1 + .../java/me/Danker/features/FilletMagmafish.java | 139 +++++++++++++++++++++ src/main/java/me/Danker/gui/DankerGui.java | 7 ++ .../java/me/Danker/handlers/ConfigHandler.java | 1 + src/main/java/me/Danker/utils/Utils.java | 16 +++ 7 files changed, 166 insertions(+) create mode 100644 src/main/java/me/Danker/features/FilletMagmafish.java (limited to 'src/main/java/me/Danker/gui') diff --git a/README.md b/README.md index c3478b0..53f2472 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ Discord Server: https://discord.gg/QsEkNQS - Chat aliases - Thunder/Lord Jawbus spawn alerts - Show when minion was last collected +- Show amount of Magmafish if trophy fish are filleted
diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 1b428b6..5d71b31 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -127,6 +127,7 @@ public class DankersSkyblockMod { MinecraftForge.EVENT_BUS.register(new EndOfFarmAlert()); MinecraftForge.EVENT_BUS.register(new ExpertiseLore()); MinecraftForge.EVENT_BUS.register(new FasterMaddoxCalling()); + MinecraftForge.EVENT_BUS.register(new FilletMagmafish()); MinecraftForge.EVENT_BUS.register(new FirePillarDisplay()); MinecraftForge.EVENT_BUS.register(new FishingSpawnAlerts()); MinecraftForge.EVENT_BUS.register(new GemstonesLore()); diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 00b41f3..aefb979 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -67,6 +67,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean fishingAlert; public static boolean minionLastCollected; public static boolean showTrophyCompletion; + public static boolean showTotalMagmafish; // Chat Messages public static boolean sceptreMessages; public static boolean midasStaffMessages; diff --git a/src/main/java/me/Danker/features/FilletMagmafish.java b/src/main/java/me/Danker/features/FilletMagmafish.java new file mode 100644 index 0000000..06a35dc --- /dev/null +++ b/src/main/java/me/Danker/features/FilletMagmafish.java @@ -0,0 +1,139 @@ +package me.Danker.features; + +import me.Danker.commands.ToggleCommand; +import me.Danker.events.ModInitEvent; +import me.Danker.utils.RenderUtils; +import me.Danker.utils.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.event.GuiOpenEvent; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.text.NumberFormat; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; + +public class FilletMagmafish { + + static Map fillet = new HashMap<>(); + static int total = 0; + + @SubscribeEvent + public void init(ModInitEvent event) { + fillet.put("SULPHER_SKITTER_BRONZE", 40); + fillet.put("SULPHER_SKITTER_SILVER", 60); + fillet.put("SULPHER_SKITTER_GOLD", 80); + fillet.put("SULPHER_SKITTER_DIAMOND", 120); + fillet.put("OBFUSCATED_FISH_1_BRONZE", 16); + fillet.put("OBFUSCATED_FISH_1_SILVER", 24); + fillet.put("OBFUSCATED_FISH_1_GOLD", 32); + fillet.put("OBFUSCATED_FISH_1_DIAMOND", 48); + fillet.put("STEAMING_HOT_FLOUNDER_BRONZE", 20); + fillet.put("STEAMING_HOT_FLOUNDER_SILVER", 28); + fillet.put("STEAMING_HOT_FLOUNDER_GOLD", 40); + fillet.put("STEAMING_HOT_FLOUNDER_DIAMOND", 60); + fillet.put("GUSHER_BRONZE", 32); + fillet.put("GUSHER_SILVER", 48); + fillet.put("GUSHER_GOLD", 64); + fillet.put("GUSHER_DIAMOND", 96); + fillet.put("BLOBFISH_BRONZE", 4); + fillet.put("BLOBFISH_SILVER", 8); + fillet.put("BLOBFISH_GOLD", 12); + fillet.put("BLOBFISH_DIAMOND", 16); + fillet.put("OBFUSCATED_FISH_2_BRONZE", 40); + fillet.put("OBFUSCATED_FISH_2_SILVER", 60); + fillet.put("OBFUSCATED_FISH_2_GOLD", 80); + fillet.put("OBFUSCATED_FISH_2_DIAMOND", 120); + fillet.put("SLUGFISH_BRONZE", 40); + fillet.put("SLUGFISH_SILVER", 60); + fillet.put("SLUGFISH_GOLD", 80); + fillet.put("SLUGFISH_DIAMOND", 120); + fillet.put("FLYFISH_BRONZE", 32); + fillet.put("FLYFISH_SILVER", 48); + fillet.put("FLYFISH_GOLD", 64); + fillet.put("FLYFISH_DIAMOND", 96); + fillet.put("OBFUSCATED_FISH_3_BRONZE", 400); + fillet.put("OBFUSCATED_FISH_3_SILVER", 700); + fillet.put("OBFUSCATED_FISH_3_GOLD", 1000); + fillet.put("OBFUSCATED_FISH_3_DIAMOND", 1300); + fillet.put("LAVA_HORSE_BRONZE", 12); + fillet.put("LAVA_HORSE_SILVER", 16); + fillet.put("LAVA_HORSE_GOLD", 20); + fillet.put("LAVA_HORSE_DIAMOND", 24); + fillet.put("MANA_RAY_BRONZE", 40); + fillet.put("MANA_RAY_SILVER", 60); + fillet.put("MANA_RAY_GOLD", 80); + fillet.put("MANA_RAY_DIAMOND", 120); + fillet.put("VOLCANIC_STONEFISH_BRONZE", 20); + fillet.put("VOLCANIC_STONEFISH_SILVER", 28); + fillet.put("VOLCANIC_STONEFISH_GOLD", 40); + fillet.put("VOLCANIC_STONEFISH_DIAMOND", 60); + fillet.put("VANILLE_BRONZE", 80); + fillet.put("VANILLE_SILVER", 120); + fillet.put("VANILLE_GOLD", 160); + fillet.put("VANILLE_DIAMOND", 240); + fillet.put("SKELETON_FISH_BRONZE", 32); + fillet.put("SKELETON_FISH_SILVER", 48); + fillet.put("SKELETON_FISH_GOLD", 64); + fillet.put("SKELETON_FISH_DIAMOND", 96); + fillet.put("MOLDFIN_BRONZE", 32); + fillet.put("MOLDFIN_SILVER", 48); + fillet.put("MOLDFIN_GOLD", 64); + fillet.put("MOLDFIN_DIAMOND", 96); + fillet.put("SOUL_FISH_BRONZE", 32); + fillet.put("SOUL_FISH_SILVER", 48); + fillet.put("SOUL_FISH_GOLD", 64); + fillet.put("SOUL_FISH_DIAMOND", 96); + fillet.put("KARATE_FISH_BRONZE", 40); + fillet.put("KARATE_FISH_SILVER", 60); + fillet.put("KARATE_FISH_GOLD", 80); + fillet.put("KARATE_FISH_DIAMOND", 120); + fillet.put("GOLDEN_FISH_BRONZE", 400); + fillet.put("GOLDEN_FISH_SILVER", 700); + fillet.put("GOLDEN_FISH_GOLD", 1000); + fillet.put("GOLDEN_FISH_DIAMOND", 1300); + } + + @SubscribeEvent + public void onGuiOpen(GuiOpenEvent event) { + if (!ToggleCommand.showTotalMagmafish || !Utils.inSkyblock) return; + + if (event.gui instanceof GuiInventory) { + ItemStack[] inv = Minecraft.getMinecraft().thePlayer.inventory.mainInventory; + + for (ItemStack stack : inv) { + String id = Utils.getSkyblockItemID(stack); + if (id == null) continue; + + total += Optional.ofNullable(fillet.get(id)).orElse(0); + } + } else { + total = 0; + } + } + + @SubscribeEvent + public void onGuiScreenRender(GuiScreenEvent.BackgroundDrawnEvent event) { + if (!ToggleCommand.showTotalMagmafish || !Utils.inSkyblock) return; + + if (event.gui instanceof GuiInventory) { + if (total == 0) return; + + NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US); + String display = EnumChatFormatting.BLUE + "Magmafish: " + nf.format(total); + + ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); + int width = sr.getScaledWidth(); + int height = (sr.getScaledHeight() - 222) / 2 + 10; + + RenderUtils.drawCenteredText(display, width, height, 1D); + } + } + +} diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 9a8d283..f009d34 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -95,6 +95,7 @@ public class DankerGui extends GuiScreen { private GuiButton fishingAlert; private GuiButton minionLastCollected; private GuiButton showTrophyCompletion; + private GuiButton showTotalMagmafish; // Chat Messages private GuiButton sceptreMessages; private GuiButton midasStaffMessages; @@ -194,6 +195,7 @@ public class DankerGui extends GuiScreen { fishingAlert = new FeatureButton("Fishing Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.fishingAlert), "Alerts when a Thunder or Lord Jawbus spawns nearby"); minionLastCollected = new FeatureButton("Show When Minion Last Collected: " + Utils.getColouredBoolean(ToggleCommand.minionLastCollected), "Displays when a minion was last collected over the minion."); showTrophyCompletion = new FeatureButton("Show Trophy Fish Completion: " + Utils.getColouredBoolean(ToggleCommand.showTrophyCompletion), "Show completion instead of count in trophy fish tracker display."); + showTotalMagmafish = new FeatureButton("Show Total Fillet Magmafish: " + Utils.getColouredBoolean(ToggleCommand.showTotalMagmafish), "Show total Magmafish you would get if you filleted all the trophy fish in your inventory."); allButtons.clear(); allButtons.add(changeDisplay); @@ -259,6 +261,7 @@ public class DankerGui extends GuiScreen { allButtons.add(fishingAlert); allButtons.add(minionLastCollected); allButtons.add(showTrophyCompletion); + allButtons.add(showTotalMagmafish); search.setText(initSearchText); search.setVisible(true); @@ -572,6 +575,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.showTrophyCompletion = !ToggleCommand.showTrophyCompletion; ConfigHandler.writeBooleanConfig("toggles", "ShowTrophyCompletion", ToggleCommand.showTrophyCompletion); showTrophyCompletion.displayString = "Show Trophy Fish Completion: " + Utils.getColouredBoolean(ToggleCommand.showTrophyCompletion); + } else if (button == showTotalMagmafish) { + ToggleCommand.showTotalMagmafish = !ToggleCommand.showTotalMagmafish; + ConfigHandler.writeBooleanConfig("toggles", "ShowTotalMagmafish", ToggleCommand.showTotalMagmafish); + showTotalMagmafish.displayString = "Show Total Fillet Magmafish: " + Utils.getColouredBoolean(ToggleCommand.showTotalMagmafish); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index c12b511..ccc3143 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -254,6 +254,7 @@ public class ConfigHandler { ToggleCommand.fishingAlert = initBoolean("toggles", "FishingAlert", false); ToggleCommand.minionLastCollected = initBoolean("toggles", "MinionLastCollected", false); ToggleCommand.showTrophyCompletion = initBoolean("toggles", "ShowTrophyCompletion", false); + ToggleCommand.showTotalMagmafish = initBoolean("toggles", "ShowTotalMagmafish", false); // Chat Messages ToggleCommand.sceptreMessages = initBoolean("toggles", "SceptreMessages", true); ToggleCommand.midasStaffMessages = initBoolean("toggles", "MidasStaffMessages", true); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 8791a43..7c92620 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -531,6 +531,22 @@ public class Utils { return newObj; } + // https://github.com/BiscuitDevelopment/SkyblockAddons/blob/main/src/main/java/codes/biscuit/skyblockaddons/utils/ItemUtils.java#L139-L148 + public static NBTTagCompound getExtraAttributes(ItemStack item) { + if (item == null || !item.hasTagCompound()) return null; + return item.getSubCompound("ExtraAttributes", false); + } + + // https://github.com/BiscuitDevelopment/SkyblockAddons/blob/main/src/main/java/codes/biscuit/skyblockaddons/utils/ItemUtils.java#L116-L131 + public static String getSkyblockItemID(ItemStack item) { + if (item == null) return null; + + NBTTagCompound extraAttributes = getExtraAttributes(item); + if (extraAttributes == null || !extraAttributes.hasKey("id", 8)) return null; + + return extraAttributes.getString("id"); + } + public enum DungeonFloor { NONE, E0, -- cgit