diff options
| author | CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> | 2024-02-16 21:21:43 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-16 11:21:43 +0100 |
| commit | f91973d60948d449cc45a4add901e6fe43aebd62 (patch) | |
| tree | 4c8c77ec4a9585a821651a034ebe5bed3308a6af /src/main/java/at/hannibal2/skyhanni/features/garden | |
| parent | 26fe548fa9a5cfe29b130a0a5585278df3429ee9 (diff) | |
| download | skyhanni-f91973d60948d449cc45a4add901e6fe43aebd62.tar.gz skyhanni-f91973d60948d449cc45a4add901e6fe43aebd62.tar.bz2 skyhanni-f91973d60948d449cc45a4add901e6fe43aebd62.zip | |
Moved many regex patterns in the repo and code cleanup. #871
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/garden')
25 files changed, 464 insertions, 265 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingFortuneDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingFortuneDisplay.kt index 5b066b142..46cd544a1 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingFortuneDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingFortuneDisplay.kt @@ -29,23 +29,69 @@ import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getFarmingForDummie import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getHoeCounter import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.StringUtils.removeColor +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraft.item.ItemStack import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.math.floor import kotlin.math.log10 import kotlin.time.Duration.Companion.seconds -class FarmingFortuneDisplay { - - private val tabFortuneUniversalPattern = " Farming Fortune: §r§6☘(?<fortune>\\d+)".toPattern() - private val tabFortuneCropPattern = - " (?<crop>Wheat|Carrot|Potato|Pumpkin|Sugar Cane|Melon|Cactus|Cocoa Beans|Mushroom|Nether Wart) Fortune: §r§6☘(?<fortune>\\d+)".toPattern() +object FarmingFortuneDisplay { + private val config get() = GardenAPI.config.farmingFortunes + + private val patternGroup = RepoPattern.group("garden.fortunedisplay") + private val universalTabFortunePattern by patternGroup.pattern( + "tablist.universal", + " Farming Fortune: §r§6☘(?<fortune>\\d+)" + ) + private val cropSpecificTabFortunePattern by patternGroup.pattern( + "tablist.cropspecific", + " (?<crop>Wheat|Carrot|Potato|Pumpkin|Sugar Cane|Melon|Cactus|Cocoa Beans|Mushroom|Nether Wart) Fortune: §r§6☘(?<fortune>\\d+)" + ) + private val collectionPattern by patternGroup.pattern( + "collection", + "§7You have §6\\+(?<ff>\\d{1,3})☘ .*" + ) + private val tooltipFortunePattern by patternGroup.pattern( + "tooltip", + "^§7Farming Fortune: §a\\+([\\d.]+)(?: §2\\(\\+\\d\\))?(?: §9\\(\\+(\\d+)\\))?\$" + ) + private val armorAbilityPattern by patternGroup.pattern( + "armorability", + "Tiered Bonus: .* [(](?<pieces>.*)/4[)]" + ) + private val lotusAbilityPattern by patternGroup.pattern( + "lotusability", + "§7Piece Bonus: §6+(?<bonus>.*)☘" + ) + // todo make pattern work on Melon and Cropie armor + private val armorAbilityFortunePattern by patternGroup.pattern( + "armorabilityfortune", + "§7.*§7Grants §6(?<bonus>.*)☘.*" + ) private var display = emptyList<List<Any>>() private var accessoryProgressDisplay = "" private var lastToolSwitch = SimpleTimeMark.farPast() + private val latestFF: MutableMap<CropType, Double>? get() = GardenAPI.storage?.latestTrueFarmingFortune + + private var currentCrop: CropType? = null + + private var tabFortuneUniversal: Double = 0.0 + private var tabFortuneCrop: Double = 0.0 + private val upgradeFortune: Double? get() = currentCrop?.getUpgradeLevel()?.let { it * 5.0 } + private val accessoryFortune: Double? + get() = currentCrop?.let { + CropAccessoryData.cropAccessory?.getFortune(it) + } + + var displayedFortune = 0.0 + var reforgeFortune = 0.0 + var itemBaseFortune = 0.0 + var greenThumbFortune = 0.0 + @SubscribeEvent fun onPreProfileSwitch(event: PreProfileSwitchEvent) { display = emptyList() @@ -56,10 +102,10 @@ class FarmingFortuneDisplay { fun onTabListUpdate(event: TabListUpdateEvent) { if (!GardenAPI.inGarden()) return event.tabList.firstNotNullOfOrNull { - tabFortuneUniversalPattern.matchMatcher(it) { + universalTabFortunePattern.matchMatcher(it) { tabFortuneUniversal = group("fortune").toDouble() } - tabFortuneCropPattern.matchMatcher(it) { + cropSpecificTabFortunePattern.matchMatcher(it) { currentCrop = CropType.getByName(group("crop")) tabFortuneCrop = group("fortune").toDouble() } @@ -170,131 +216,102 @@ class FarmingFortuneDisplay { else -> 75 } - companion object { - - private val config get() = GardenAPI.config.farmingFortunes - private val latestFF: MutableMap<CropType, Double>? get() = GardenAPI.storage?.latestTrueFarmingFortune - - private var currentCrop: CropType? = null + fun getToolFortune(tool: ItemStack?): Double = getToolFortune(tool?.getInternalName()) + fun getToolFortune(internalName: NEUInternalName?): Double { + if (internalName == null) return 0.0 + if (internalName.equals("THEORETICAL_HOE")) { + return 0.0 + } + return if (internalName.startsWith("THEORETICAL_HOE")) { + listOf(10.0, 25.0, 50.0)[internalName.asString().last().digitToInt() - 1] + } else when (internalName.asString()) { + "FUNGI_CUTTER" -> 30.0 + "COCO_CHOPPER" -> 20.0 + else -> 0.0 + } + } - private var tabFortuneUniversal: Double = 0.0 - private var tabFortuneCrop: Double = 0.0 - private val upgradeFortune: Double? get() = currentCrop?.getUpgradeLevel()?.let { it * 5.0 } - private val accessoryFortune: Double? - get() = currentCrop?.let { - CropAccessoryData.cropAccessory?.getFortune(it) - } + fun getTurboCropFortune(tool: ItemStack?, cropType: CropType?): Double { + val crop = cropType ?: return 0.0 + return tool?.getEnchantments()?.get(crop.getTurboCrop())?.let { it * 5.0 } ?: 0.0 + } - private val collectionPattern = "§7You have §6\\+(?<ff>\\d{1,3})☘ .*".toPattern() - private val tooltipFortunePattern = - "^§7Farming Fortune: §a\\+([\\d.]+)(?: §2\\(\\+\\d\\))?(?: §9\\(\\+(\\d+)\\))?$".toRegex() - private val armorAbilityPattern = "Tiered Bonus: .* [(](?<pieces>.*)/4[)]".toPattern() - - var displayedFortune = 0.0 - var reforgeFortune = 0.0 - var itemBaseFortune = 0.0 - var greenThumbFortune = 0.0 - - fun getToolFortune(tool: ItemStack?): Double = getToolFortune(tool?.getInternalName()) - fun getToolFortune(internalName: NEUInternalName?): Double { - if (internalName == null) return 0.0 - if (internalName.equals("THEORETICAL_HOE")) { - return 0.0 - } - return if (internalName.startsWith("THEORETICAL_HOE")) { - listOf(10.0, 25.0, 50.0)[internalName.asString().last().digitToInt() - 1] - } else when (internalName.asString()) { - "FUNGI_CUTTER" -> 30.0 - "COCO_CHOPPER" -> 20.0 - else -> 0.0 - } - } + fun getCollectionFortune(tool: ItemStack?): Double { + val string = tool?.getLore()?.nextAfter("§6Collection Analysis", 3) ?: return 0.0 + return collectionPattern.matchMatcher(string) { group("ff").toDoubleOrNull() } ?: 0.0 + } - fun getTurboCropFortune(tool: ItemStack?, cropType: CropType?): Double { - val crop = cropType ?: return 0.0 - return tool?.getEnchantments()?.get(crop.getTurboCrop())?.let { it * 5.0 } ?: 0.0 - } + fun getCounterFortune(tool: ItemStack?): Double { + val counter = tool?.getHoeCounter() ?: return 0.0 + val digits = floor(log10(counter.toDouble())) + return (16 * digits - 48).coerceAtLeast(0.0) + } - fun getCollectionFortune(tool: ItemStack?): Double { - val string = tool?.getLore()?.nextAfter("§6Collection Analysis", 3) ?: return 0.0 - return collectionPattern.matchMatcher(string) { group("ff").toDoubleOrNull() } ?: 0.0 - } + fun getDedicationFortune(tool: ItemStack?, cropType: CropType?): Double { + if (cropType == null) return 0.0 + val dedicationLevel = tool?.getEnchantments()?.get("dedication") ?: 0 + val dedicationMultiplier = listOf(0.0, 0.5, 0.75, 1.0, 2.0)[dedicationLevel] + val cropMilestone = GardenCropMilestones.getTierForCropCount( + cropType.getCounter(), cropType + ) + return dedicationMultiplier * cropMilestone + } - fun getCounterFortune(tool: ItemStack?): Double { - val counter = tool?.getHoeCounter() ?: return 0.0 - val digits = floor(log10(counter.toDouble())) - return (16 * digits - 48).coerceAtLeast(0.0) - } + fun getSunderFortune(tool: ItemStack?) = (tool?.getEnchantments()?.get("sunder") ?: 0) * 12.5 + fun getHarvestingFortune(tool: ItemStack?) = (tool?.getEnchantments()?.get("harvesting") ?: 0) * 12.5 + fun getCultivatingFortune(tool: ItemStack?) = (tool?.getEnchantments()?.get("cultivating") ?: 0) * 2.0 - fun getDedicationFortune(tool: ItemStack?, cropType: CropType?): Double { - if (cropType == null) return 0.0 - val dedicationLevel = tool?.getEnchantments()?.get("dedication") ?: 0 - val dedicationMultiplier = listOf(0.0, 0.5, 0.75, 1.0, 2.0)[dedicationLevel] - val cropMilestone = GardenCropMilestones.getTierForCropCount( - cropType.getCounter(), cropType - ) - return dedicationMultiplier * cropMilestone - } + fun getAbilityFortune(item: ItemStack?) = item?.let { + getAbilityFortune(it.getInternalName(), it.getLore()) + } ?: 0.0 - fun getSunderFortune(tool: ItemStack?) = (tool?.getEnchantments()?.get("sunder") ?: 0) * 12.5 - fun getHarvestingFortune(tool: ItemStack?) = (tool?.getEnchantments()?.get("harvesting") ?: 0) * 12.5 - fun getCultivatingFortune(tool: ItemStack?) = (tool?.getEnchantments()?.get("cultivating") ?: 0) * 2.0 - - fun getAbilityFortune(item: ItemStack?) = item?.let { - getAbilityFortune(it.getInternalName(), it.getLore()) - } ?: 0.0 - - fun getAbilityFortune(internalName: NEUInternalName, lore: List<String>): Double { - val lotusAbilityPattern = "§7Piece Bonus: §6+(?<bonus>.*)☘".toPattern() - // todo make it work on Melon and Cropie armor - val armorAbilityFortune = "§7.*§7Grants §6(?<bonus>.*)☘.*".toPattern() - var pieces = 0 - - lore.forEach { line -> - if (internalName.contains("LOTUS")) { - lotusAbilityPattern.matchMatcher(line) { - return group("bonus").toDouble() - } - } - armorAbilityPattern.matchMatcher(line.removeColor()) { - pieces = group("pieces").toInt() - } + fun getAbilityFortune(internalName: NEUInternalName, lore: List<String>): Double { + var pieces = 0 - armorAbilityFortune.matchMatcher(line) { - return if (pieces < 2) 0.0 else group("bonus").toDouble() / pieces + lore.forEach { line -> + if (internalName.contains("LOTUS")) { + lotusAbilityPattern.matchMatcher(line) { + return group("bonus").toDouble() } } + armorAbilityPattern.matchMatcher(line.removeColor()) { + pieces = group("pieces").toInt() + } - return 0.0 + armorAbilityFortunePattern.matchMatcher(line) { + return if (pieces < 2) 0.0 else group("bonus").toDouble() / pieces + } } - fun loadFortuneLineData(tool: ItemStack?, enchantmentFortune: Double) { - displayedFortune = 0.0 - reforgeFortune = 0.0 - itemBaseFortune = 0.0 - greenThumbFortune = 0.0 - for (line in tool?.getLore()!!) { - val match = tooltipFortunePattern.matchEntire(line)?.groups ?: continue - - displayedFortune = match[1]!!.value.toDouble() - reforgeFortune = match[2]?.value?.toDouble() ?: 0.0 - - itemBaseFortune = if (tool.getInternalName().contains("LOTUS")) { - 5.0 - } else { - val dummiesFF = (tool.getFarmingForDummiesCount() ?: 0) * 1.0 - displayedFortune - reforgeFortune - enchantmentFortune - dummiesFF - } - greenThumbFortune = if (tool.getInternalName().contains("LOTUS")) { - displayedFortune - reforgeFortune - itemBaseFortune - } else 0.0 + return 0.0 + } + + fun loadFortuneLineData(tool: ItemStack?, enchantmentFortune: Double) { + displayedFortune = 0.0 + reforgeFortune = 0.0 + itemBaseFortune = 0.0 + greenThumbFortune = 0.0 + for (line in tool?.getLore()!!) { + tooltipFortunePattern.matchMatcher(line) { + displayedFortune = group(1)!!.toDouble() + reforgeFortune = group(2)?.toDouble() ?: 0.0 + } ?: continue + + itemBaseFortune = if (tool.getInternalName().contains("LOTUS")) { + 5.0 + } else { + val dummiesFF = (tool.getFarmingForDummiesCount() ?: 0) * 1.0 + displayedFortune - reforgeFortune - enchantmentFortune - dummiesFF } + greenThumbFortune = if (tool.getInternalName().contains("LOTUS")) { + displayedFortune - reforgeFortune - itemBaseFortune + } else 0.0 } + } - fun getCurrentFarmingFortune() = tabFortuneUniversal + tabFortuneCrop + fun getCurrentFarmingFortune() = tabFortuneUniversal + tabFortuneCrop - fun CropType.getLatestTrueFarmingFortune() = latestFF?.get(this) - } + fun CropType.getLatestTrueFarmingFortune() = latestFF?.get(this) @SubscribeEvent fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) { diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenCropMilestoneFix.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenCropMilestoneFix.kt index 838b3f6ce..bba86c595 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenCropMilestoneFix.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenCropMilestoneFix.kt @@ -11,12 +11,19 @@ import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.NumberUtil.romanToDecimalIfNecessary import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class GardenCropMilestoneFix { - - private val tabListPattern = " Milestone: §r§a(?<crop>.*) (?<tier>.*): §r§3(?<percentage>.*)%".toPattern() - private val levelUpPattern = " {2}§r§b§lGARDEN MILESTONE §3(?<crop>.*) §8.*➜§3(?<tier>.*)".toPattern() + private val patternGroup = RepoPattern.group("garden.cropmilestone.fix") + private val tabListPattern by patternGroup.pattern( + "tablist", + " Milestone: §r§a(?<crop>.*) (?<tier>.*): §r§3(?<percentage>.*)%" + ) + private val levelUpPattern by patternGroup.pattern( + "levelup", + " {2}§r§b§lGARDEN MILESTONE §3(?<crop>.*) §8.*➜§3(?<tier>.*)" + ) private val tabListCropProgress = mutableMapOf<CropType, Long>() diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenLevelDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenLevelDisplay.kt index 21fb1a78a..d69b92bb3 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenLevelDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenLevelDisplay.kt @@ -21,21 +21,27 @@ import kotlin.time.Duration.Companion.milliseconds class GardenLevelDisplay { private val config get() = GardenAPI.config.gardenLevels - private val expToNextLevelPattern by RepoPattern.pattern( - "garden.level.inventory.nextxp", + + private val patternGroup = RepoPattern.group("garden.level") + private val expToNextLevelPattern by patternGroup.pattern( + "inventory.nextxp", ".* §e(?<nextLevelExp>.*)§6/.*" ) - private val overflowPattern by RepoPattern.pattern("garden.level.inventory.overflow", ".*§r §6(?<overflow>.*)") - private val currentLevelPattern by RepoPattern.pattern( - "garden.level.inventory.currentlevel", + private val overflowPattern by patternGroup.pattern( + "inventory.overflow", + ".*§r §6(?<overflow>.*)" + ) + private val currentLevelPattern by patternGroup.pattern( + "inventory.currentlevel", "Garden Level (?<currentLevel>.*)" ) - private var display = "" - private val visitorRewardPattern by RepoPattern.pattern( - "garden.level.chat.increase", + private val visitorRewardPattern by patternGroup.pattern( + "chat.increase", " {4}§r§8\\+§r§2(?<exp>.*) §r§7Garden Experience" ) + private var display = "" + @SubscribeEvent fun onProfileJoin(event: ProfileJoinEvent) { update() diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenNextJacobContest.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenNextJacobContest.kt index 22c6cb7fc..2ad7d11fd 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenNextJacobContest.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenNextJacobContest.kt @@ -27,6 +27,7 @@ import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.TabListData import at.hannibal2.skyhanni.utils.TimeUtils.format +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import com.google.gson.Gson import io.github.moulberry.notenoughupdates.util.SkyBlockTime import kotlinx.coroutines.Dispatchers @@ -54,9 +55,19 @@ object GardenNextJacobContest { var contests = mutableMapOf<SimpleTimeMark, FarmingContest>() private var inCalendar = false - private val patternDay = "§aDay (?<day>.*)".toPattern() - private val patternMonth = "(?<month>.*), Year (?<year>.*)".toPattern() - private val patternCrop = "§(e○|6☘) §7(?<crop>.*)".toPattern() + private val patternGroup = RepoPattern.group("garden.nextcontest") + private val dayPattern by patternGroup.pattern( + "day", + "§aDay (?<day>.*)" + ) + private val monthPattern by patternGroup.pattern( + "month", + "(?<month>.*), Year (?<year>.*)" + ) + private val cropPattern by patternGroup.pattern( + "crop", + "§(e○|6☘) §7(?<crop>.*)" + ) private val closeToNewYear = "§7Close to new SB year!" private const val maxContestsPerYear = 124 @@ -140,7 +151,7 @@ object GardenNextJacobContest { inCalendar = true - patternMonth.matchMatcher(event.inventoryName) { + monthPattern.matchMatcher(event.inventoryName) { val month = LorenzUtils.getSBMonthByName(group("month")) val year = group("year").toInt() @@ -175,13 +186,13 @@ object GardenNextJacobContest { if (!lore.any { it.contains("§6§eJacob's Farming Contest") }) continue val name = item.name ?: continue - val day = patternDay.matchMatcher(name) { group("day").toInt() } ?: continue + val day = dayPattern.matchMatcher(name) { group("day").toInt() } ?: continue val startTime = SkyBlockTime(year, month, day).asTimeMark() val crops = mutableListOf<CropType>() for (line in lore) { - patternCrop.matchMatcher(line) { crops.add(CropType.getByName(group("crop"))) } + cropPattern.matchMatcher(line) { crops.add(CropType.getByName(group("crop"))) } } contests[startTime] = FarmingContest(startTime + contestDuration, crops) diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenOptimalSpeed.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenOptimalSpeed.kt index 56d3fe17d..3f1021bcb 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenOptimalSpeed.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenOptimalSpeed.kt @@ -15,6 +15,7 @@ import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.renderables.Renderable import io.github.moulberry.moulconfig.observer.Property +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiEditSign import net.minecraftforge.client.event.GuiOpenEvent @@ -26,6 +27,12 @@ import kotlin.time.Duration.Companion.seconds class GardenOptimalSpeed { private val config get() = GardenAPI.config.optimalSpeeds + + private val currentSpeedPattern by RepoPattern.pattern( + "garden.optimalspeed.currentspeed", + " Speed: §r§f✦(?<speed>.*)" + ) + private val configCustomSpeed get() = config.customSpeed private var sneakingTime = 0.seconds private val sneaking get() = Minecraft.getMinecraft().thePlayer.isSneaking @@ -37,7 +44,6 @@ class GardenOptimalSpeed { _currentSpeed = value } private var optimalSpeed = -1 - private val currentSpeedPattern = " Speed: §r§f✦(?<speed>.*)".toPattern() private var lastWarnTime = 0L private var cropInHand: CropType? = null private var rancherOverlayList: List<List<Any?>> = emptyList() diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenPlotAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenPlotAPI.kt index f1edf26e9..58a56c400 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenPlotAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenPlotAPI.kt @@ -23,10 +23,13 @@ import kotlin.time.Duration.Companion.minutes object GardenPlotAPI { - private val plotNamePattern by RepoPattern.pattern("garden.plot.name", "§.Plot §7- §b(?<name>.*)") - - private val plotSprayedPattern by RepoPattern.pattern( - "garden.plot.spray.target", + private val patternGroup = RepoPattern.group("garden.plot") + private val plotNamePattern by patternGroup.pattern( + "name", + "§.Plot §7- §b(?<name>.*)" + ) + private val plotSprayedPattern by patternGroup.pattern( + "spray.target", "§a§lSPRAYONATOR! §r§7You sprayed §r§aPlot §r§7- §r§b(?<plot>.*) §r§7with §r§a(?<spray>.*)§r§7!" ) diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenWarpCommands.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenWarpCommands.kt index 563258b95..fc30e3651 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenWarpCommands.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenWarpCommands.kt @@ -8,6 +8,7 @@ import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.NEUItems import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraft.client.Minecraft import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.time.Duration.Companion.seconds @@ -16,8 +17,11 @@ class GardenWarpCommands { private val config get() = GardenAPI.config.gardenCommands - // TODO repo - private val tpPlotPattern = "/tp (?<plot>.*)".toPattern() + private val tpPlotPattern by RepoPattern.pattern( + "garden.warpcommand.tpplot", + "/tp (?<plot>.*)" + ) + private var lastWarpTime = SimpleTimeMark.farPast() @SubscribeEvent diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/ToolTooltipTweaks.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/ToolTooltipTweaks.kt index 56568f017..70dbcb1e8 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/ToolTooltipTweaks.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/ToolTooltipTweaks.kt @@ -3,7 +3,7 @@ package at.hannibal2.skyhanni.features.garden import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator import at.hannibal2.skyhanni.config.features.garden.TooltipTweaksConfig.CropTooltipFortuneEntry import at.hannibal2.skyhanni.events.LorenzToolTipEvent -import at.hannibal2.skyhanni.features.garden.FarmingFortuneDisplay.Companion.getAbilityFortune +import at.hannibal2.skyhanni.features.garden.FarmingFortuneDisplay.getAbilityFortune import at.hannibal2.skyhanni.features.garden.GardenAPI.getCropType import at.hannibal2.skyhanni.features.garden.fortuneguide.FFGuideGUI import at.hannibal2.skyhanni.utils.ConfigUtils diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterInventoryNumbers.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterInventoryNumbers.kt index f883f5de1..acb62abe2 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterInventoryNumbers.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterInventoryNumbers.kt @@ -8,12 +8,20 @@ import at.hannibal2.skyhanni.utils.NumberUtil import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.StringUtils.removeColor +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class ComposterInventoryNumbers { - private val valuePattern = ".* §e(?<having>.*)§6/(?<total>.*)".toPattern() - private val compostsPattern = "§7§7Compost Available: §a(?<amount>.*)".toPattern() + private val patternGroup = RepoPattern.group("garden.composter.inventory.numbers") + private val valuePattern by patternGroup.pattern( + "value", + ".* §e(?<having>.*)§6/(?<total>.*)" + ) + private val amountPattern by patternGroup.pattern( + "amount", + "§7§7Compost Available: §a(?<amount>.*)" + ) @SubscribeEvent fun onRenderItemTip(event: RenderInventoryItemTipEvent) { @@ -29,7 +37,7 @@ class ComposterInventoryNumbers { // Composts Available if (slotNumber == 13) { for (line in stack.getLore()) { - compostsPattern.matchMatcher(line) { + amountPattern.matchMatcher(line) { val total = group("amount").replace(",", "").toInt() event.offsetY = -2 event.offsetX = -20 diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/contest/ContestBracket.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/contest/ContestBracket.kt index 9ee04d3fc..eb091668a 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/contest/ContestBracket.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/contest/ContestBracket.kt @@ -1,5 +1,7 @@ package at.hannibal2.skyhanni.features.garden.contest +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern + enum class ContestBracket(val color: String) { DIAMOND("b"), PLATINUM("3"), @@ -9,5 +11,8 @@ enum class ContestBracket(val color: String) { ; val displayName = "§$color§l$name" - val pattern = "$displayName §7\\(§bTop \\d{1,2}%§7\\): §6(?<amount>.*)".toPattern() + val bracketPattern by RepoPattern.pattern( + "garden.farmi |
