diff options
author | CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> | 2024-02-06 09:01:12 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-05 23:01:12 +0100 |
commit | 6ed818521cd2c9e97743881966632488e598c20e (patch) | |
tree | 1a1f92cc4feeff03bbc82240c4b86ae610a17842 /src/main/java/at/hannibal2/skyhanni/data | |
parent | ab43b1989ebb75d5ca3ddd59a71e6a8879f040b0 (diff) | |
download | skyhanni-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.kt | 33 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt | 47 |
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 |