From fc19b7274edc318de60bc9628f1e87d36f285c63 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Thu, 18 Jan 2024 19:18:53 +0100 Subject: moving dungeons and slayer related debug data into DebugDataCollectEvent. allowing to hide or search for specific debug data with /shdebug --- .../java/at/hannibal2/skyhanni/data/SlayerAPI.kt | 22 +++++++++++++- .../skyhanni/events/DebugDataCollectEvent.kt | 24 ++++++++++++--- .../skyhanni/features/dungeon/DungeonAPI.kt | 24 +++++++++++++++ .../skyhanni/test/SkyHanniDebugsAndTests.kt | 34 ++++++++-------------- 4 files changed, 77 insertions(+), 27 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt index 2a6b99297..2829bcb8d 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt @@ -1,5 +1,6 @@ package at.hannibal2.skyhanni.data +import at.hannibal2.skyhanni.events.DebugDataCollectEvent import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.SlayerChangeEvent @@ -62,13 +63,32 @@ object SlayerAPI { return result } - fun getNameWithEnchantmentFor(internalName: NEUInternalName): String { + private fun getNameWithEnchantmentFor(internalName: NEUInternalName): String { if (internalName.asString() == "WISP_POTION") { return "§fWisp's Ice-Flavored Water" } return internalName.getItemStack().nameWithEnchantment ?: error("Could not find name for $internalName") } + @SubscribeEvent + fun onDebugDataCollect(event: DebugDataCollectEvent) { + event.title("Slayer") + + if (!hasActiveSlayerQuest()) { + event.exit("no active slayer quest") + return + } + + event.addData( + buildList { + add("activeSlayer: ${getActiveSlayer()}") + add("isInCorrectArea: $isInCorrectArea") + add("isInAnyArea: $isInAnyArea") + add("latestSlayerProgress: $latestSlayerProgress") + } + ) + } + @SubscribeEvent fun onChat(event: LorenzChatEvent) { if (!LorenzUtils.inSkyBlock) return diff --git a/src/main/java/at/hannibal2/skyhanni/events/DebugDataCollectEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/DebugDataCollectEvent.kt index 1cb72c4f8..a53a144cf 100644 --- a/src/main/java/at/hannibal2/skyhanni/events/DebugDataCollectEvent.kt +++ b/src/main/java/at/hannibal2/skyhanni/events/DebugDataCollectEvent.kt @@ -1,26 +1,42 @@ package at.hannibal2.skyhanni.events -class DebugDataCollectEvent(private val builder: StringBuilder) : LorenzEvent() { +import at.hannibal2.skyhanni.utils.StringUtils.equalsIgnoreColor + +class DebugDataCollectEvent(private val builder: StringBuilder, private val search: String?) : LorenzEvent() { private var currentTitle = "" + private var exit = false fun title(title: String) { - if (currentTitle != "") error("Title already set") + if (currentTitle != "") error("Title already set: '$currentTitle'") currentTitle = title } fun exit(text: String) { + exit = true addData(listOf(text)) } fun addData(text: List) { if (currentTitle == "") error("Title not set") + writeData(text) + currentTitle = "" + exit = false + } - builder.append("\n$currentTitle\n") + private fun writeData(text: List) { + if (exit && search == null) return + search?.let { + if (!search.equalsIgnoreColor("all")) { + if (!currentTitle.contains(search, ignoreCase = true)) { + return + } + } + } + builder.append("\n== $currentTitle ==\n") for (line in text) { builder.append(" $line\n") } - currentTitle = "" } } diff --git a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonAPI.kt index 2840565df..fb141ad30 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonAPI.kt @@ -2,6 +2,7 @@ package at.hannibal2.skyhanni.features.dungeon import at.hannibal2.skyhanni.data.ProfileStorageData import at.hannibal2.skyhanni.data.ScoreboardData +import at.hannibal2.skyhanni.events.DebugDataCollectEvent import at.hannibal2.skyhanni.events.DungeonBossRoomEnterEvent import at.hannibal2.skyhanni.events.DungeonEnterEvent import at.hannibal2.skyhanni.events.DungeonStartEvent @@ -220,6 +221,29 @@ class DungeonAPI { } } + @SubscribeEvent + fun onDebugDataCollect(event: DebugDataCollectEvent) { + event.title("Dungeon") + + if (!LorenzUtils.inDungeons) { + event.exit("not in dungeons") + return + } + + event.addData( + buildList { + add("dungeonFloor: $dungeonFloor") + add("started: $started") + add("getRoomID: ${getRoomID()}") + add("inBossRoom: $inBossRoom") + add("") + add("playerClass: $playerClass") + add("isUniqueClass: $isUniqueClass") + add("playerClassLevel: $playerClassLevel") + } + ) + } + enum class DungeonFloor(private val bossName: String) { ENTRANCE("The Watcher"), F1("Bonzo"), diff --git a/src/main/java/at/hannibal2/skyhanni/test/SkyHanniDebugsAndTests.kt b/src/main/java/at/hannibal2/skyhanni/test/SkyHanniDebugsAndTests.kt index e611757c3..2855662f6 100644 --- a/src/main/java/at/hannibal2/skyhanni/test/SkyHanniDebugsAndTests.kt +++ b/src/main/java/at/hannibal2/skyhanni/test/SkyHanniDebugsAndTests.kt @@ -7,7 +7,6 @@ import at.hannibal2.skyhanni.config.ConfigManager import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator import at.hannibal2.skyhanni.config.core.config.Position import at.hannibal2.skyhanni.data.HypixelData -import at.hannibal2.skyhanni.data.SlayerAPI import at.hannibal2.skyhanni.events.DebugDataCollectEvent import at.hannibal2.skyhanni.events.GuiRenderEvent import at.hannibal2.skyhanni.events.LorenzChatEvent @@ -15,7 +14,6 @@ import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent import at.hannibal2.skyhanni.events.LorenzToolTipEvent import at.hannibal2.skyhanni.events.PlaySoundEvent import at.hannibal2.skyhanni.events.ReceiveParticleEvent -import at.hannibal2.skyhanni.features.dungeon.DungeonAPI import at.hannibal2.skyhanni.features.garden.GardenNextJacobContest import at.hannibal2.skyhanni.features.garden.visitor.GardenVisitorColorNames import at.hannibal2.skyhanni.test.GriffinUtils.drawWaypointFilled @@ -42,6 +40,7 @@ import at.hannibal2.skyhanni.utils.RenderUtils.renderString import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.SoundUtils +import at.hannibal2.skyhanni.utils.StringUtils.equalsIgnoreColor import kotlinx.coroutines.launch import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiContainer @@ -381,29 +380,20 @@ class SkyHanniDebugsAndTests { builder.append("ironman: ${HypixelData.ironman}\n") builder.append("stranded: ${HypixelData.stranded}\n") builder.append("bingo: ${HypixelData.bingo}\n") + } - if (LorenzUtils.inDungeons) { - builder.append("\n") - builder.append("In dungeon!\n") - builder.append(" dungeonFloor: ${DungeonAPI.dungeonFloor}\n") - builder.append(" started: ${DungeonAPI.started}\n") - builder.append(" getRoomID: ${DungeonAPI.getRoomID()}\n") - builder.append(" inBossRoom: ${DungeonAPI.inBossRoom}\n") - builder.append(" ") - builder.append(" playerClass: ${DungeonAPI.playerClass}\n") - builder.append(" isUniqueClass: ${DungeonAPI.isUniqueClass}\n") - builder.append(" playerClassLevel: ${DungeonAPI.playerClassLevel}\n") - } - if (SlayerAPI.hasActiveSlayerQuest()) { - builder.append("\n") - builder.append("Doing slayer!\n") - builder.append(" activeSlayer: ${SlayerAPI.getActiveSlayer()}\n") - builder.append(" isInCorrectArea: ${SlayerAPI.isInCorrectArea}\n") - builder.append(" isInAnyArea: ${SlayerAPI.isInAnyArea}\n") + val search = args.getOrNull(0) + builder.append("\n") + if (search != null) { + if (search.equalsIgnoreColor("all")) { + builder.append("search for everything.\n") + } else { + builder.append("search: '$search'\n") } + } else { + builder.append("search not set.\n") } - - DebugDataCollectEvent(builder).postAndCatch() + DebugDataCollectEvent(builder, search).postAndCatch() builder.append("```") OSUtils.copyToClipboard(builder.toString()) -- cgit