diff options
author | CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> | 2024-06-14 05:49:38 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-13 21:49:38 +0200 |
commit | 5bd6a4cd3807d128ba55c336946531a8838c51c7 (patch) | |
tree | 3b3b4589cb4e47541f8d12602682a37f44b18a80 /src/main/java/at/hannibal2/skyhanni/data | |
parent | e9c12d363a45d7cc1581fd882f3701b5388f4a8e (diff) | |
download | skyhanni-5bd6a4cd3807d128ba55c336946531a8838c51c7.tar.gz skyhanni-5bd6a4cd3807d128ba55c336946531a8838c51c7.tar.bz2 skyhanni-5bd6a4cd3807d128ba55c336946531a8838c51c7.zip |
Backend: Apply annotations to everything (#1983)
* add plugin
Co-authored-by: ThatGravyBoat <thatgravyboat@gmail.com>
* data and apis done
* other stuff done
* fix merge
* Backend: Classes -> Objects with annotation
* Backend: Apply annotations to everything
* fix test
* fix merge
* fix merge
* use annotation
* use annotation
* fix version number
* fix space
* bring back fix
* work on companion again now that they are all done
* oop
* fixed merge conflicts
---------
Co-authored-by: ThatGravyBoat <thatgravyboat@gmail.com>
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
6 files changed, 247 insertions, 248 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt b/src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt index 9f249ee7a..a7e09b3f0 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt @@ -144,4 +144,5 @@ object GuiEditManager { } } +// TODO remove class Vector2i(val x: Int, val y: Int) diff --git a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt index d4a14679a..8ade8f55e 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt @@ -16,6 +16,7 @@ import at.hannibal2.skyhanni.events.minecraft.ClientDisconnectEvent import at.hannibal2.skyhanni.features.bingo.BingoAPI import at.hannibal2.skyhanni.features.dungeon.DungeonAPI import at.hannibal2.skyhanni.features.rift.RiftAPI +import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.test.command.ErrorManager import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.LorenzLogger @@ -35,7 +36,8 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.concurrent.thread import kotlin.time.Duration.Companion.seconds -class HypixelData { +@SkyHanniModule +object HypixelData { private val patternGroup = RepoPattern.group("data.hypixeldata") // TODO add regex tests @@ -51,124 +53,121 @@ class HypixelData { "islandname", "(?:§.)*(Area|Dungeon): (?:§.)*(?<island>.*)", ) + 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+)", + ) + private val lobbyTypePattern by patternGroup.pattern( + "lobbytype", + "(?<lobbyType>.*lobby)\\d+", + ) + private val playerAmountPattern by patternGroup.pattern( + "playeramount", + "^\\s*(?:§.)+Players (?:§.)+\\((?<amount>\\d+)\\)\\s*$", + ) + private val playerAmountCoopPattern by patternGroup.pattern( + "playeramount.coop", + "^\\s*(?:§.)*Coop (?:§.)*\\((?<amount>\\d+)\\)\\s*$", + ) + private val playerAmountGuestingPattern by patternGroup.pattern( + "playeramount.guesting", + "^\\s*(?:§.)*Guests (?:§.)*\\((?<amount>\\d+)\\)\\s*$", + ) - private var lastLocRaw = SimpleTimeMark.farPast() - - 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+)", - ) - private val lobbyTypePattern by patternGroup.pattern( - "lobbytype", - "(?<lobbyType>.*lobby)\\d+", - ) - private val playerAmountPattern by patternGroup.pattern( - "playeramount", - "^\\s*(?:§.)+Players (?:§.)+\\((?<amount>\\d+)\\)\\s*$", - ) - private val playerAmountCoopPattern by patternGroup.pattern( - "playeramount.coop", - "^\\s*(?:§.)*Coop (?:§.)*\\((?<amount>\\d+)\\)\\s*$", - ) - private val playerAmountGuestingPattern by patternGroup.pattern( - "playeramount.guesting", - "^\\s*(?:§.)*Guests (?:§.)*\\((?<amount>\\d+)\\)\\s*$", - ) + /** + * REGEX-TEST: §r§b§lParty §r§f(4) + */ + private val dungeonPartyAmountPattern by patternGroup.pattern( + "playeramount.dungeonparty", + "^\\s*(?:§.)+Party (?:§.)+\\((?<amount>\\d+)\\)\\s*$", + ) + private val soloProfileAmountPattern by patternGroup.pattern( + "solo.profile.amount", + "^\\s*(?:§.)*Island\\s*$", + ) + private val scoreboardVisitingAmoutPattern by patternGroup.pattern( + "scoreboard.visiting.amount", + "\\s+§.✌ §.\\(§.(?<currentamount>\\d+)§./(?<maxamount>\\d+)\\)", + ) + private val guestPattern by patternGroup.pattern( + "guesting.scoreboard", + "SKYBLOCK GUEST", + ) + private val scoreboardTitlePattern by patternGroup.pattern( + "scoreboard.title", + "SK[YI]BLOCK(?: CO-OP| GUEST)?", + ) - /** - * REGEX-TEST: §r§b§lParty §r§f(4) - */ - private val dungeonPartyAmountPattern by patternGroup.pattern( - "playeramount.dungeonparty", - "^\\s*(?:§.)+Party (?:§.)+\\((?<amount>\\d+)\\)\\s*$", - ) - private val soloProfileAmountPattern by patternGroup.pattern( - "solo.profile.amount", - "^\\s*(?:§.)*Island\\s*$", - ) - private val scoreboardVisitingAmoutPattern by patternGroup.pattern( - "scoreboard.visiting.amount", - "\\s+§.✌ §.\\(§.(?<currentamount>\\d+)§./(?<maxamount>\\d+)\\)", - ) - private val guestPattern by patternGroup.pattern( - "guesting.scoreboard", - "SKYBLOCK GUEST", - ) - private val scoreboardTitlePattern by patternGroup.pattern( - "scoreboard.title", - "SK[YI]BLOCK(?: CO-OP| GUEST)?", - ) + /** + * REGEX-TEST: §7⏣ §bVillage + * REGEX-TEST: §5ф §dWizard Tower + */ + private val skyblockAreaPattern by patternGroup.pattern( + "skyblock.area", + "\\s*§(?<symbol>7⏣|5ф) §(?<color>.)(?<area>.*)", + ) - /** - * REGEX-TEST: §7⏣ §bVillage - * REGEX-TEST: §5ф §dWizard Tower - */ - private val skyblockAreaPattern by patternGroup.pattern( - "skyblock.area", - "\\s*§(?<symbol>7⏣|5ф) §(?<color>.)(?<area>.*)", - ) + private var lastLocRaw = SimpleTimeMark.farPast() - var hypixelLive = false - var hypixelAlpha = false - var inLobby = false - var inLimbo = false - var skyBlock = false - var skyBlockIsland = IslandType.UNKNOWN - var serverId: String? = null + 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 + // Ironman, Stranded and Bingo + var noTrade = false - var ironman = false - var stranded = false - var bingo = false + var ironman = false + var stranded = false + var bingo = false - var profileName = "" - var joinedWorld = SimpleTimeMark.farPast() + var profileName = "" + var joinedWorld = SimpleTimeMark.farPast() - var skyBlockArea: String? = null - var skyBlockAreaWithSymbol: String? = null + var skyBlockArea: String? = null + var skyBlockAreaWithSymbol: String? = null // Data from locraw var locrawData: JsonObject? = null - private var locraw: MutableMap<String, String> = listOf( - "server", + private var locraw: MutableMap<String, String> = listOf( + "server", "gametype", "lobbyname", "lobbytype", "mode", "map", - ).associateWith { "" }.toMutableMap() - - val server get() = locraw["server"] ?: "" - val gameType get() = locraw["gametype"] ?: "" - val lobbyName get() = locraw["lobbyname"] ?: "" - val lobbyType get() = locraw["lobbytype"] ?: "" - val mode get() = locraw["mode"] ?: "" - val map get() = locraw["map"] ?: "" - - fun checkCurrentServerId() { - if (!LorenzUtils.inSkyBlock) return - if (serverId != null) return - if (LorenzUtils.lastWorldSwitch.passedSince() < 1.seconds) return - if (!TabListData.fullyLoaded) return - - ScoreboardData.sidebarLinesFormatted.matchFirst(serverIdScoreboardPattern) { - val serverType = if (group("servertype") == "M") "mega" else "mini" - serverId = "$serverType${group("serverid")}" - return - } + ).associateWith { "" }.toMutableMap() + + val server get() = locraw["server"] ?: "" + val gameType get() = locraw["gametype"] ?: "" + val lobbyName get() = locraw["lobbyname"] ?: "" + val lobbyType get() = locraw["lobbytype"] ?: "" + val mode get() = locraw["mode"] ?: "" + val map get() = locraw["map"] ?: "" + + fun checkCurrentServerId() { + if (!LorenzUtils.inSkyBlock) return + if (serverId != null) return + if (LorenzUtils.lastWorldSwitch.passedSince() < 1.seconds) return + if (!TabListData.fullyLoaded) return + + ScoreboardData.sidebarLinesFormatted.matchFirst(serverIdScoreboardPattern) { + val serverType = if (group("servertype") == "M") "mega" else "mini" + serverId = "$serverType${group("serverid")}" + return + } - TabListData.getTabList().matchFirst(serverIdTablistPattern) { - serverId = group("serverid") - return - } + TabListData.getTabList().matchFirst(serverIdTablistPattern) { + serverId = group("serverid") + return + } ErrorManager.logErrorWithData( Exception("NoServerId"), @@ -179,71 +178,70 @@ class HypixelData { ) } - fun getPlayersOnCurrentServer(): Int { - var amount = 0 - val playerPatternList = mutableListOf( - playerAmountPattern, - playerAmountCoopPattern, - playerAmountGuestingPattern, - ) - if (DungeonAPI.inDungeon()) { - playerPatternList.add(dungeonPartyAmountPattern) - } + fun getPlayersOnCurrentServer(): Int { + var amount = 0 + val playerPatternList = mutableListOf( + playerAmountPattern, + playerAmountCoopPattern, + playerAmountGuestingPattern, + ) + if (DungeonAPI.inDungeon()) { + playerPatternList.add(dungeonPartyAmountPattern) + } - out@ for (pattern in playerPatternList) { - for (line in TabListData.getTabList()) { - pattern.matchMatcher(line) { - amount += group("amount").toInt() - continue@out - } + 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 } + amount += TabListData.getTabList().count { soloProfileAmountPattern.matches(it) } - fun getMaxPlayersForCurrentServer(): Int { - ScoreboardData.sidebarLinesFormatted.matchFirst(scoreboardVisitingAmoutPattern) { - return group("maxamount").toInt() - } + return amount + } - return when (skyBlockIsland) { - IslandType.MINESHAFT -> 4 - IslandType.CATACOMBS -> 5 - IslandType.CRYSTAL_HOLLOWS -> 24 - IslandType.CRIMSON_ISLE -> 24 - else -> if (serverId?.startsWith("mega") == true) 80 else 26 - } + fun getMaxPlayersForCurrentServer(): Int { + ScoreboardData.sidebarLinesFormatted.matchFirst(scoreboardVisitingAmoutPattern) { + return group("maxamount").toInt() } - // This code is modified from NEU, and depends on NEU (or another mod) sending /locraw. - private val jsonBracketPattern = "^\\{.+}".toPattern() - - //todo convert to proper json object - fun checkForLocraw(message: String) { - jsonBracketPattern.matchMatcher(message.removeColor()) { - try { - val obj: JsonObject = gson.fromJson(group(), JsonObject::class.java) - if (obj.has("server")) { - locrawData = obj - locraw.keys.forEach { key -> - locraw[key] = obj[key]?.asString ?: "" - } - inLimbo = locraw["server"] == "limbo" - inLobby = locraw["lobbyname"] != "" - - if (inLobby) { - locraw["lobbyname"]?.let { - lobbyTypePattern.matchMatcher(it) { - locraw["lobbytype"] = group("lobbyType") - } + return when (skyBlockIsland) { + IslandType.MINESHAFT -> 4 + IslandType.CATACOMBS -> 5 + IslandType.CRYSTAL_HOLLOWS -> 24 + IslandType.CRIMSON_ISLE -> 24 + else -> 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() + + //todo convert to proper json object + fun checkForLocraw(message: String) { + jsonBracketPattern.matchMatcher(message.removeColor()) { + try { + val obj: JsonObject = gson.fromJson(group(), JsonObject::class.java) + if (obj.has("server")) { + locrawData = obj + locraw.keys.forEach { key -> + locraw[key] = obj[key]?.asString ?: "" + } + inLimbo = locraw["server"] == "limbo" + inLobby = locraw["lobbyname"] != "" + + if (inLobby) { + locraw["lobbyname"]?.let { + lobbyTypePattern.matchMatcher(it) { + locraw["lobbytype"] = group("lobbyType") } } } - } catch (e: Exception) { - ErrorManager.logErrorWithData(e, "Failed to parse locraw data") } + } catch (e: Exception) { + ErrorManager.logErrorWithData(e, "Failed to parse locraw data") } } } diff --git a/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt b/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt index 72abf6bab..31499adb1 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt @@ -28,6 +28,8 @@ object ScoreboardData { private val minecraftColorCodesPattern = "(?i)[0-9a-fkmolnr]".toPattern() + + fun formatLines(rawList: List<String>): List<String> { val list = mutableListOf<String>() for (line in rawList) { diff --git a/src/main/java/at/hannibal2/skyhanni/data/SkillExperience.kt b/src/main/java/at/hannibal2/skyhanni/data/SkillExperience.kt index 25d48a525..367c3794e 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/SkillExperience.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/SkillExperience.kt @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.data import at.hannibal2.skyhanni.events.ActionBarUpdateEvent import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent import at.hannibal2.skyhanni.events.ProfileJoinEvent +import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.ItemUtils.name import at.hannibal2.skyhanni.utils.LorenzUtils @@ -13,7 +14,8 @@ import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -class SkillExperience { +@SkyHanniModule +object SkillExperience { private val patternGroup = RepoPattern.group("data.skill") private val actionBarPattern by patternGroup.pattern( "actionbar", @@ -77,102 +79,100 @@ class SkillExperience { if (skillExp.isNotEmpty()) return } - companion object { - private val skillExp = mutableMapOf<String, Long>() + private val skillExp = mutableMapOf<String, Long>() - private fun getLevelForExpExactly(experience: Long): Int { - var level = 1 - for (levelXp in levelingExp) { - if (levelXp.toLong() == experience) { - return level - } - level++ + private fun getLevelForExpExactly(experience: Long): Int { + var level = 1 + for (levelXp in levelingExp) { + if (levelXp.toLong() == experience) { + return level } - - return 0 + level++ } - fun getExpForNextLevel(requestedLevel: Int) = levelingExp[requestedLevel] + return 0 + } - fun getExpForLevel(requestedLevel: Int): Long { - var total = 0L - var level = 0 - for (levelXp in levelingExp) { - total += levelXp - level++ - if (level == requestedLevel) { - return total - } - } + fun getExpForNextLevel(requestedLevel: Int) = levelingExp[requestedLevel] - return 0 + fun getExpForLevel(requestedLevel: Int): Long { + var total = 0L + var level = 0 + for (levelXp in levelingExp) { + total += levelXp + level++ + if (level == requestedLevel) { + return total + } } - // TODO create additional event - fun getExpForSkill(skillName: String) = skillExp[skillName.lowercase()] ?: 0 - - private val levelingExp = listOf( - 50, - 125, - 200, - 300, - 500, - 750, - 1000, - 1500, - 2000, - 3500, - 5000, - 7500, - 10000, - 15000, - 20000, - 30000, - 50000, - 75000, - 100000, - 200000, - 300000, - 400000, - 500000, - 600000, - 700000, - 800000, - 900000, - 1000000, - 1100000, - 1200000, - 1300000, - 1400000, - 1500000, - 1600000, - 1700000, - 1800000, - 1900000, - 2000000, - 2100000, - 2200000, - 2300000, - 2400000, - 2500000, - 2600000, - 2750000, - 2900000, - 3100000, - 3400000, - 3700000, - 4000000, - 4300000, - 4600000, - 4900000, - 5200000, - 5500000, - 5800000, - 6100000, - 6400000, - 6700000, - 7000000 - ) + return 0 } + + // TODO create additional event + fun getExpForSkill(skillName: String) = skillExp[skillName.lowercase()] ?: 0 + + private val levelingExp = listOf( + 50, + 125, + 200, + 300, + 500, + 750, + 1000, + 1500, + 2000, + 3500, + 5000, + 7500, + 10000, + 15000, + 20000, + 30000, + 50000, + 75000, + 100000, + 200000, + 300000, + 400000, + 500000, + 600000, + 700000, + 800000, + 900000, + 1000000, + 1100000, + 1200000, + 1300000, + 1400000, + 1500000, + 1600000, + 1700000, + 1800000, + 1900000, + 2000000, + 2100000, + 2200000, + 2300000, + 2400000, + 2500000, + 2600000, + 2750000, + 2900000, + 3100000, + 3400000, + 3700000, + 4000000, + 4300000, + 4600000, + 4900000, + 5200000, + 5500000, + 5800000, + 6100000, + 6400000, + 6700000, + 7000000 + ) } diff --git a/src/main/java/at/hannibal2/skyhanni/data/mob/MobData.kt b/src/main/java/at/hannibal2/skyhanni/data/mob/MobData.kt index 59cacde87..4eb79d6de 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/mob/MobData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/mob/MobData.kt @@ -19,7 +19,6 @@ object MobData { val entityList get() = this.flatMap { listOf(it.baseEntity) + (it.extraEntities) } } - val players = MobSet() val displayNPCs = MobSet() val skyblockMobs = MobSet() diff --git a/src/main/java/at/hannibal2/skyhanni/data/mob/MobDetection.kt b/src/main/java/at/hannibal2/skyhanni/data/mob/MobDetection.kt index 0c59a72ac..c1e17f06b 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/mob/MobDetection.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/mob/MobDetection.kt @@ -3,7 +3,6 @@ package at.hannibal2.skyhanni.data.mob import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.api.event.HandleEvent import at.hannibal2.skyhanni.data.IslandType -import at.hannibal2.skyhanni.data.mob.MobData.logger import at.hannibal2.skyhanni.data.mob.MobFilter.isDisplayNPC import at.hannibal2.skyhanni.data.mob.MobFilter.isRealPlayer import at.hannibal2.skyhanni.data.mob.MobFilter.isSkyBlockMob @@ -133,7 +132,7 @@ object MobDetection { private fun getRetry(entity: EntityLivingBase) = MobData.retries[entity.entityId] /** @return always true */ - private fun mobDetectionError(string: String) = logger.log(string).let { true } + private fun mobDetectionError(string: String) = MobData.logger.log(string).let { true } /**@return a false means that it should try again (later)*/ private fun entitySpawn(entity: EntityLivingBase, roughType: Mob.Type): Boolean { @@ -267,7 +266,7 @@ object MobDetection { val entity = retry.entity if (retry.times == MAX_RETRIES) { - logger.log( + MobData.logger.log( "`${retry.entity.name}`${retry.entity.entityId} missed {\n " + "is already Found: ${MobData.entityToMob[retry.entity] != null})." + "\n Position: ${retry.entity.getLorenzVec()}\n " |