From 7d8d2dffb98d78cade5f2b8fb5223d92cf66c6c8 Mon Sep 17 00:00:00 2001 From: J10a1n15 <45315647+j10a1n15@users.noreply.github.com> Date: Sat, 16 Mar 2024 16:14:08 +0100 Subject: Improvement + Fix: Custom Scoreboard Part 3 (#1183) Co-authored-by: hannibal2 <24389977+hannibal002@users.noreply.github.com> Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- .../java/at/hannibal2/skyhanni/data/HypixelData.kt | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'src/main/java/at/hannibal2/skyhanni/data') diff --git a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt index 88c45566a..eb38187ca 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt @@ -54,6 +54,26 @@ class HypixelData { "lobbytype", "(?.*lobby)\\d+" ) + private val playerAmountPattern by patternGroup.pattern( + "playeramount", + "^\\s*(?:§.)+Players (?:§.)+\\((?\\d+)\\)\\s*$" + ) + private val playerAmountCoopPattern by patternGroup.pattern( + "playeramount.coop", + "^\\s*(?:§.)*Coop (?:§.)*\\((?\\d+)\\)\\s*$" + ) + private val playerAmountGuestingPattern by patternGroup.pattern( + "playeramount.guesting", + "^\\s*(?:§.)*Guests (?:§.)*\\((?\\d+)\\)\\s*$" + ) + private val soloProfileAmountPattern by patternGroup.pattern( + "solo.profile.amount", + "^\\s*(?:§.)*Island\\s*$" + ) + private val scoreboardVisitingAmoutPattern by patternGroup.pattern( + "scoreboard.visiting.amount", + "\\s+§.✌ §.\\(§.(?\\d+)§.\\/(?\\d+)\\)" + ) private val guestPattern by patternGroup.pattern( "guesting.scoreboard", "SKYBLOCK GUEST" @@ -119,6 +139,36 @@ class HypixelData { return serverId } + fun getPlayersOnCurrentServer(): Int { + var amount = 0 + val playerPatternList = listOf( + playerAmountPattern, + playerAmountCoopPattern, + playerAmountGuestingPattern + ) + + out@for (pattern in playerPatternList) { + for (line in TabListData.getTabList()) { + pattern.matchMatcher(line) { + amount += group("amount").toInt() + continue@out + } + } + } + amount += TabListData.getTabList().count { soloProfileAmountPattern.matches(it) } + + return amount + } + + fun getMaxPlayersForCurrentServer(): Int { + for (line in ScoreboardData.sidebarLinesFormatted) { + scoreboardVisitingAmoutPattern.matchMatcher(line) { + return group("maxamount").toInt() + } + } + return if (serverId?.startsWith("mega") == true) 80 else 26 + } + // This code is modified from NEU, and depends on NEU (or another mod) sending /locraw. private val jsonBracketPattern = "^\\{.+}".toPattern() -- cgit