From 0cfc19d890cac15b49433d170a16ae6d56dcfb16 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Thu, 5 Oct 2023 00:13:38 +0200 Subject: Added support for burning desert, using the slayer api more, only show slayer features while inside the correct SkyBlock area, add slayer info to debug command --- .../java/at/hannibal2/skyhanni/data/SlayerAPI.kt | 58 ++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/data') diff --git a/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt index 1989c5442..e02bc693d 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt @@ -14,10 +14,12 @@ import at.hannibal2.skyhanni.utils.NEUItems.getItemStack import at.hannibal2.skyhanni.utils.NEUItems.getNpcPriceOrNull import at.hannibal2.skyhanni.utils.NEUItems.getPrice import at.hannibal2.skyhanni.utils.NumberUtil +import at.hannibal2.skyhanni.utils.RecalculatingValue import at.hannibal2.skyhanni.utils.StringUtils.removeColor import com.google.common.cache.CacheBuilder import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import java.util.concurrent.TimeUnit +import kotlin.time.Duration.Companion.seconds object SlayerAPI { @@ -26,7 +28,7 @@ object SlayerAPI { .build, Pair>() var questStartTime = 0L - var isInSlayerArea = false + var isInCorrectArea = false var latestSlayerCategory = "" private var latestProgressChangeTime = 0L var latestWrongAreaWarning = 0L @@ -96,6 +98,24 @@ object SlayerAPI { } } + fun getActiveSlayer() = activeSlayer.getValue() + + private val activeSlayer = RecalculatingValue(1.seconds) { + grabActiveSlayer() + } + + private fun grabActiveSlayer(): SlayerType? { + for (line in ScoreboardData.sidebarLinesFormatted) { + for (type in SlayerType.entries) { + if (line.contains(type.displayName)) { + return type + } + } + } + + return null + } + @SubscribeEvent fun onTick(event: LorenzTickEvent) { if (!LorenzUtils.inSkyBlock) return @@ -118,11 +138,43 @@ object SlayerAPI { } if (event.isMod(5)) { - isInSlayerArea = if (LorenzUtils.isStrandedProfile) { + isInCorrectArea = if (LorenzUtils.isStrandedProfile) { true } else { - SlayerType.getByArea(LorenzUtils.skyBlockArea) != null + getSlayerTypeForCurrentArea() == getActiveSlayer() } } } + + fun getSlayerTypeForCurrentArea() = when (LorenzUtils.skyBlockArea) { + "Graveyard", + "Coal Mine", + -> SlayerType.REVENANT + + "Spider Mound", + "Arachne's Burrow", + "Arachne's Sanctuary", + "Burning Desert", + -> SlayerType.TARANTULA + + "Ruins", + "Howling Cave", + -> SlayerType.SVEN + + "The End", + "Void Sepulture", + "Zealot Bruiser Hideout", + -> SlayerType.VOID + + "Stronghold", + "The Wasteland", + "Smoldering Tomb", + -> SlayerType.INFERNO + + "Stillgore Château", + "Oubliette", + -> SlayerType.VAMPIRE + + else -> null + } } \ No newline at end of file -- cgit