summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-10-05 00:13:38 +0200
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-10-05 00:13:38 +0200
commit0cfc19d890cac15b49433d170a16ae6d56dcfb16 (patch)
tree028f717bbe8a7a40e9784d7944e7a14624a1f61f /src/main/java/at/hannibal2/skyhanni/data
parentab992664490f6ffd3ad9b7f7aba529a6b6e928a9 (diff)
downloadskyhanni-0cfc19d890cac15b49433d170a16ae6d56dcfb16.tar.gz
skyhanni-0cfc19d890cac15b49433d170a16ae6d56dcfb16.tar.bz2
skyhanni-0cfc19d890cac15b49433d170a16ae6d56dcfb16.zip
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
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt58
1 files changed, 55 insertions, 3 deletions
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<NEUInternalName, Int>, Pair<String, Double>>()
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