diff options
Diffstat (limited to 'src/main/java')
6 files changed, 42 insertions, 39 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/PetAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/PetAPI.kt new file mode 100644 index 000000000..c21b2f384 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/data/PetAPI.kt @@ -0,0 +1,10 @@ +package at.hannibal2.skyhanni.data + +object PetAPI { + + var currentPet: String? + get() = ProfileStorageData.profileSpecific?.currentPet + set(value) { + ProfileStorageData.profileSpecific?.currentPet = value + } +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt index 28cc33e1b..a9806ab2f 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt @@ -3,7 +3,7 @@ package at.hannibal2.skyhanni.features.event.diana import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.data.IslandType import at.hannibal2.skyhanni.data.MayorElection -import at.hannibal2.skyhanni.data.ProfileStorageData +import at.hannibal2.skyhanni.data.PetAPI import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName @@ -17,7 +17,7 @@ object DianaAPI { private fun isRitualActive() = MayorElection.isPerkActive("Diana", "Mythological Ritual") || MayorElection.isPerkActive("Jerry", "Perkpocalypse") || SkyHanniMod.feature.event.diana.alwaysDiana - fun hasGriffinPet() = ProfileStorageData.profileSpecific?.currentPet?.contains("Griffin") ?: false + fun hasGriffinPet() = PetAPI.currentPet?.contains("Griffin") ?: false fun featuresEnabled() = IslandType.HUB.isInIsland() && isRitualActive() -}
\ No newline at end of file +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt index 22f897a4c..5dd1804cc 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt @@ -2,6 +2,7 @@ package at.hannibal2.skyhanni.features.garden import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.data.IslandType +import at.hannibal2.skyhanni.data.PetAPI import at.hannibal2.skyhanni.data.ProfileStorageData import at.hannibal2.skyhanni.events.BlockClickEvent import at.hannibal2.skyhanni.events.ConfigLoadEvent @@ -12,7 +13,6 @@ import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent import at.hannibal2.skyhanni.events.PacketEvent import at.hannibal2.skyhanni.events.RepositoryReloadEvent -import at.hannibal2.skyhanni.events.TabListUpdateEvent import at.hannibal2.skyhanni.features.garden.CropType.Companion.getCropType import at.hannibal2.skyhanni.features.garden.composter.ComposterOverlay import at.hannibal2.skyhanni.features.garden.contest.FarmingContestAPI @@ -46,7 +46,7 @@ object GardenAPI { var toolInHand: String? = null var itemInHand: ItemStack? = null var cropInHand: CropType? = null - var mushroomCowPet = false + val mushroomCowPet get() = PetAPI.currentPet?.contains("Mushroom Cow") ?: false private var inBarn = false val onBarnPlot get() = inBarn && inGarden() val storage get() = ProfileStorageData.profileSpecific?.garden @@ -86,13 +86,6 @@ object GardenAPI { } @SubscribeEvent - fun onTabListUpdate(event: TabListUpdateEvent) { - if (inGarden()) { - mushroomCowPet = event.tabList.any { it.startsWith(" Strength: §r§c❁") } - } - } - - @SubscribeEvent fun onWorldChange(event: LorenzWorldChangeEvent) { SkyHanniMod.coroutineScope.launch { delay(2.seconds) diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt index fe9d55176..7855a94b9 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt @@ -2,53 +2,53 @@ package at.hannibal2.skyhanni.features.misc import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator -import at.hannibal2.skyhanni.data.ProfileStorageData +import at.hannibal2.skyhanni.data.PetAPI import at.hannibal2.skyhanni.events.GuiRenderEvent import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.features.rift.RiftAPI import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.LorenzUtils -import at.hannibal2.skyhanni.utils.LorenzUtils.between import at.hannibal2.skyhanni.utils.RenderUtils.renderString import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher -import at.hannibal2.skyhanni.utils.StringUtils.matchRegex +import at.hannibal2.skyhanni.utils.StringUtils.matches import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class CurrentPetDisplay { + private val config get() = SkyHanniMod.feature.misc.pets // TODO USE SH-REPO private val inventoryNamePattern = "(?:\\(\\d+/\\d+\\))? Pets".toPattern() + private val chatSpawnPattern = "§aYou summoned your §r(?<pet>.*)§r§a!".toPattern() + private val chatDespawnPattern = "§aYou despawned your §r.*§r§a!".toPattern() + private val chatPetRulePattern = "§cAutopet §eequipped your §7\\[Lvl .*] (?<pet>.*)! §a§lVIEW RULE".toPattern() @SubscribeEvent fun onChatMessage(event: LorenzChatEvent) { - val message = event.message - val config = ProfileStorageData.profileSpecific ?: return - var blocked = false - if (message.matchRegex("§cAutopet §eequipped your §7(.*)§e! §a§lVIEW RULE")) { - config.currentPet = message.between("] ", "§e!") - blocked = true + findPetInChat(event.message)?.let { + PetAPI.currentPet = it + if (config.display) { + event.blockedReason = "pets" + } } + } - if (!LorenzUtils.inSkyBlock) return - - if (message.matchRegex("§aYou summoned your §r(.*)§r§a!")) { - config.currentPet = message.between("your §r", "§r§a") - blocked = true + private fun findPetInChat(message: String): String? { + chatSpawnPattern.matchMatcher(message) { + return group("pet") } - if (message.matchRegex("§aYou despawned your §r(.*)§r§a!")) { - config.currentPet = "" - blocked = true + if (chatDespawnPattern.matches(message)) { + return "" } - - if (blocked && SkyHanniMod.feature.misc.pets.display) { - event.blockedReason = "pets" + chatPetRulePattern.matchMatcher(message) { + return group("pet") } + + return null } @SubscribeEvent fun onInventoryOpen(event: InventoryFullyOpenedEvent) { - val storage = ProfileStorageData.profileSpecific ?: return if (!inventoryNamePattern.matcher(event.inventoryName).matches()) return val lore = event.inventoryItems[4]?.getLore() ?: return @@ -56,7 +56,7 @@ class CurrentPetDisplay { for (line in lore) { selectedPetPattern.matchMatcher(line) { val newPet = group("pet") - storage.currentPet = if (newPet != "§cNone") newPet else "" + PetAPI.currentPet = if (newPet != "§cNone") newPet else "" } } } @@ -66,10 +66,9 @@ class CurrentPetDisplay { if (!LorenzUtils.inSkyBlock) return if (RiftAPI.inRift()) return - if (!SkyHanniMod.feature.misc.pets.display) return - val storage = ProfileStorageData.profileSpecific ?: return + if (!config.display) return - SkyHanniMod.feature.misc.pets.displayPos.renderString(storage.currentPet, posLabel = "Current Pet") + config.displayPos.renderString(PetAPI.currentPet, posLabel = "Current Pet") } @SubscribeEvent diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/discordrpc/DiscordStatus.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/discordrpc/DiscordStatus.kt index 9937ff288..e95132ff7 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/discordrpc/DiscordStatus.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/discordrpc/DiscordStatus.kt @@ -10,7 +10,7 @@ import at.hannibal2.skyhanni.data.GardenCropMilestones.isMaxed import at.hannibal2.skyhanni.data.GardenCropMilestones.progressToNextLevel import at.hannibal2.skyhanni.data.HypixelData import at.hannibal2.skyhanni.data.IslandType -import at.hannibal2.skyhanni.data.ProfileStorageData +import at.hannibal2.skyhanni.data.PetAPI import at.hannibal2.skyhanni.data.ScoreboardData import at.hannibal2.skyhanni.features.dungeon.DungeonAPI import at.hannibal2.skyhanni.features.garden.GardenAPI.getCropType @@ -289,7 +289,7 @@ enum class DiscordStatus(private val displayMessageSupplier: Supplier<String>?) }), PETS({ - ProfileStorageData.profileSpecific?.currentPet?.let { + PetAPI.currentPet?.let { val colorCode = it.substring(1..2).first() val petName = it.substring(2) val petLevel = getCurrentPet()?.petLevel?.currentLevel ?: "?" diff --git a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt index b60c08b6f..05694c0a9 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt @@ -71,6 +71,7 @@ object StringUtils { return toString().replace("-", "") } + @Deprecated("Do not create a regex pattern each time.", ReplaceWith("toPattern()")) fun String.matchRegex(@Language("RegExp") regex: String): Boolean = regex.toRegex().matches(this) private fun String.removeAtBeginning(text: String): String = |