aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
authorCalMWolfs <94038482+CalMWolfs@users.noreply.github.com>2024-02-06 09:01:12 +1100
committerGitHub <noreply@github.com>2024-02-05 23:01:12 +0100
commit6ed818521cd2c9e97743881966632488e598c20e (patch)
tree1a1f92cc4feeff03bbc82240c4b86ae610a17842 /src/main/java/at/hannibal2/skyhanni/data
parentab43b1989ebb75d5ca3ddd59a71e6a8879f040b0 (diff)
downloadskyhanni-6ed818521cd2c9e97743881966632488e598c20e.tar.gz
skyhanni-6ed818521cd2c9e97743881966632488e598c20e.tar.bz2
skyhanni-6ed818521cd2c9e97743881966632488e598c20e.zip
Send Mining Island Events (#969)
Added sending mining events to Soopy's API to test for new Mining Event feature. #969
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/BossbarData.kt33
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt47
2 files changed, 76 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/BossbarData.kt b/src/main/java/at/hannibal2/skyhanni/data/BossbarData.kt
new file mode 100644
index 000000000..75ad8df9b
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/data/BossbarData.kt
@@ -0,0 +1,33 @@
+package at.hannibal2.skyhanni.data
+
+import at.hannibal2.skyhanni.events.BossbarUpdateEvent
+import at.hannibal2.skyhanni.events.LorenzTickEvent
+import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
+import net.minecraft.entity.boss.BossStatus
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+
+object BossbarData {
+ private var bossbar: String? = null
+ private var previousServerBossbar = ""
+
+ fun getBossbar() = bossbar ?: ""
+
+ @SubscribeEvent
+ fun onWorldChange(event: LorenzWorldChangeEvent) {
+ val oldBossbar = bossbar ?: return
+ previousServerBossbar = oldBossbar
+ bossbar = null
+ }
+
+ @SubscribeEvent
+ fun onTick(event: LorenzTickEvent) {
+ val bossbarLine = BossStatus.bossName ?: return
+ if (bossbarLine.isBlank() || bossbarLine.isEmpty()) return
+ if (bossbarLine == bossbar) return
+ if (bossbarLine == previousServerBossbar) return
+ if (previousServerBossbar.isNotEmpty()) previousServerBossbar = ""
+
+ bossbar = bossbarLine
+ BossbarUpdateEvent(bossbarLine).postAndCatch()
+ }
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt
index 78017b7bc..3f6ec7051 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt
@@ -26,20 +26,40 @@ import net.minecraftforge.fml.common.network.FMLNetworkEvent
import kotlin.concurrent.thread
class HypixelData {
- private val group = RepoPattern.group("data.hypixeldata")
- private val tabListProfilePattern by group.pattern("tablistprofile", "§e§lProfile: §r§a(?<profile>.*)")
- private val lobbyTypePattern by group.pattern("lobbytype", "(?<lobbyType>.*lobby)\\d+")
- private val islandNamePattern by group.pattern("islandname", "(?:§.)*(Area|Dungeon): (?:§.)*(?<island>.*)")
+ private val patternGroup = RepoPattern.group("data.hypixeldata")
+ private val tabListProfilePattern by patternGroup.pattern(
+ "tablistprofile",
+ "§e§lProfile: §r§a(?<profile>.*)"
+ )
+ private val lobbyTypePattern by patternGroup.pattern(
+ "lobbytype",
+ "(?<lobbyType>.*lobby)\\d+"
+ )
+ private val islandNamePattern by patternGroup.pattern(
+ "islandname",
+ "(?:§.)*(Area|Dungeon): (?:§.)*(?<island>.*)"
+ )
private var lastLocRaw = 0L
companion object {
+ private val patternGroup = RepoPattern.group("data.hypixeldata")
+ private val serverIdScoreboardPattern by patternGroup.pattern(
+ "serverid.scoreboard",
+ "§7\\d+/\\d+/\\d+ §8(?<servertype>[mM])(?<serverid>\\S+)"
+ )
+ private val serverIdTablistPattern by patternGroup.pattern(
+ "serverid.tablist",
+ " Server: §r§8(?<serverid>\\S+)"
+ )
+
var hypixelLive = false
var hypixelAlpha = false
var inLobby = false
var inLimbo = false
var skyBlock = false
var skyBlockIsland = IslandType.UNKNOWN
+ var serverId: String? = null
//Ironman, Stranded and Bingo
var noTrade = false
@@ -70,6 +90,24 @@ class HypixelData {
val lobbyType get() = locraw["lobbytype"] ?: ""
val mode get() = locraw["mode"] ?: ""
val map get() = locraw["map"] ?: ""
+
+ fun getCurrentServerId(): String? {
+ if (!LorenzUtils.inSkyBlock) return null
+ if (serverId != null) return serverId
+
+ ScoreboardData.sidebarLinesFormatted.forEach { serverIdScoreboardPattern.matchMatcher(it) {
+ val serverType = if (group("servertype") == "M") "mega" else "mini"
+ serverId = "$serverType${group("serverid")}"
+ return serverId
+ } }
+
+ TabListData.getTabList().forEach { serverIdTablistPattern.matchMatcher(it) {
+ serverId = group("serverid")
+ return serverId
+ } }
+
+ return serverId
+ }
}
private var loggerIslandChange = LorenzLogger("debug/island_change")
@@ -82,6 +120,7 @@ class HypixelData {
inLobby = false
locraw.forEach { locraw[it.key] = "" }
joinedWorld = System.currentTimeMillis()
+ serverId = null
}
@SubscribeEvent