From c66f76a618b5a25f92767ed36fda254d81c302ff Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Mon, 5 Jun 2023 23:58:01 +0200 Subject: Added support for maxed out crop milestones --- .../skyhanni/data/GardenCropMilestones.kt | 2 + .../features/garden/farming/GardenBestCropTime.kt | 10 +++-- .../garden/farming/GardenCropMilestoneDisplay.kt | 52 +++++++++++++++------- .../hannibal2/skyhanni/test/SkyHanniTestCommand.kt | 2 +- 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/data/GardenCropMilestones.kt b/src/main/java/at/hannibal2/skyhanni/data/GardenCropMilestones.kt index e78c68872..7d5b6cd5c 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/GardenCropMilestones.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/GardenCropMilestones.kt @@ -55,6 +55,8 @@ class GardenCropMilestones { cropCounter?.set(this, counter) } + fun CropType.isMaxed() = getCounter() >= 1_000_000_000 + fun getTierForCrops(crops: Long): Int { var tier = 0 var totalCrops = 0L diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenBestCropTime.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenBestCropTime.kt index 0c8c83c3e..d722658b1 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenBestCropTime.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenBestCropTime.kt @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.features.garden.farming import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.data.GardenCropMilestones import at.hannibal2.skyhanni.data.GardenCropMilestones.Companion.getCounter +import at.hannibal2.skyhanni.data.GardenCropMilestones.Companion.isMaxed import at.hannibal2.skyhanni.features.garden.CropType import at.hannibal2.skyhanni.features.garden.GardenAPI.addCropIcon import at.hannibal2.skyhanni.features.garden.GardenNextJacobContest @@ -27,6 +28,7 @@ class GardenBestCropTime { fun updateTimeTillNextCrop() { for (crop in CropType.values()) { val speed = crop.getSpeed() ?: continue + if (crop.isMaxed()) continue val counter = crop.getCounter() val currentTier = GardenCropMilestones.getTierForCrops(counter) @@ -55,11 +57,12 @@ class GardenBestCropTime { val gardenExp = config.cropMilestoneBestType == 0 val sorted = if (gardenExp) { val helpMap = mutableMapOf() - for ((cropName, time) in timeTillNextCrop) { - val currentTier = GardenCropMilestones.getTierForCrops(cropName.getCounter()) + for ((crop, time) in timeTillNextCrop) { + if (crop.isMaxed()) continue + val currentTier = GardenCropMilestones.getTierForCrops(crop.getCounter()) val gardenExpForTier = getGardenExpForTier(currentTier + 1) val fakeTime = time / gardenExpForTier - helpMap[cropName] = fakeTime + helpMap[crop] = fakeTime } helpMap.sorted() } else { @@ -88,6 +91,7 @@ class GardenBestCropTime { var number = 0 for (crop in sorted.keys) { + if (crop.isMaxed()) continue val millis = timeTillNextCrop[crop]!! val biggestUnit = TimeUnit.values()[config.cropMilestoneHighestTimeFormat.get()] val duration = TimeUtils.formatDuration(millis, biggestUnit, maxUnits = 2) diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropMilestoneDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropMilestoneDisplay.kt index 8778ca04e..b4e7846d9 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropMilestoneDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropMilestoneDisplay.kt @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.features.garden.farming import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.data.GardenCropMilestones import at.hannibal2.skyhanni.data.GardenCropMilestones.Companion.getCounter +import at.hannibal2.skyhanni.data.GardenCropMilestones.Companion.isMaxed import at.hannibal2.skyhanni.data.GardenCropMilestones.Companion.setCounter import at.hannibal2.skyhanni.data.TitleUtils import at.hannibal2.skyhanni.events.* @@ -144,7 +145,11 @@ object GardenCropMilestoneDisplay { val list = mutableListOf() list.addCropIcon(crop) - list.add("§7" + crop.cropName + " $currentTier➜$nextTier") + if (crop.isMaxed()) { + list.add("§7" + crop.cropName + " §eMAXED") + } else { + list.add("§7" + crop.cropName + " $currentTier➜$nextTier") + } lineMap[1] = list val cropsForNextTier = GardenCropMilestones.getCropsForTier(nextTier) @@ -157,9 +162,14 @@ object GardenCropMilestoneDisplay { Pair(have, need) } - val haveFormat = LorenzUtils.formatInteger(have) - val needFormat = LorenzUtils.formatInteger(need) - lineMap[2] = Collections.singletonList("§e$haveFormat§8/§e$needFormat") + lineMap[2] = if (crop.isMaxed()) { + val haveFormat = LorenzUtils.formatInteger(counter) + Collections.singletonList("§7Counter: §e$haveFormat") + } else { + val haveFormat = LorenzUtils.formatInteger(have) + val needFormat = LorenzUtils.formatInteger(need) + Collections.singletonList("§e$haveFormat§8/§e$needFormat") + } val farmingFortune = FarmingFortuneDisplay.getCurrentFarmingFortune(true) val speed = GardenCropSpeed.averageBlocksPerSecond @@ -167,18 +177,22 @@ object GardenCropMilestoneDisplay { if (farmingFortuneSpeed > 0) { crop.setSpeed(farmingFortuneSpeed) - val missing = need - have - val missingTimeSeconds = missing / farmingFortuneSpeed - val millis = missingTimeSeconds * 1000 - GardenBestCropTime.timeTillNextCrop[crop] = millis - val biggestUnit = TimeUnit.values()[config.cropMilestoneHighestTimeFormat.get()] - val duration = TimeUtils.formatDuration(millis, biggestUnit) - tryWarn(millis, "§b${crop.cropName} $nextTier in $duration") - val speedText = "§7In §b$duration" - lineMap[3] = Collections.singletonList(speedText) - GardenAPI.itemInHand?.let { - if (GardenAPI.readCounter(it) == -1L) { - lineMap[3] = listOf(speedText, " §7Inaccurate!") + if (crop.isMaxed()) { + lineMap[3] = listOf("§7In §bMaxed") + } else { + val missing = need - have + val missingTimeSeconds = missing / farmingFortuneSpeed + val millis = missingTimeSeconds * 1000 + GardenBestCropTime.timeTillNextCrop[crop] = millis + val biggestUnit = TimeUnit.values()[config.cropMilestoneHighestTimeFormat.get()] + val duration = TimeUtils.formatDuration(millis, biggestUnit) + tryWarn(millis, "§b${crop.cropName} $nextTier in $duration") + val speedText = "§7In §b$duration" + lineMap[3] = Collections.singletonList(speedText) + GardenAPI.itemInHand?.let { + if (GardenAPI.readCounter(it) == -1L) { + lineMap[3] = listOf(speedText, " §7Inaccurate!") + } } } @@ -189,7 +203,11 @@ object GardenCropMilestoneDisplay { } val percentageFormat = LorenzUtils.formatPercentage(have.toDouble() / need.toDouble()) - lineMap[6] = Collections.singletonList("§7Percentage: §e$percentageFormat") + lineMap[6] = if (crop.isMaxed()) { + Collections.singletonList("§7Percentage: §e100%") + } else { + Collections.singletonList("§7Percentage: §e$percentageFormat") + } if (GardenAPI.mushroomCowPet && crop != CropType.MUSHROOM) { addMushroomCowData() diff --git a/src/main/java/at/hannibal2/skyhanni/test/SkyHanniTestCommand.kt b/src/main/java/at/hannibal2/skyhanni/test/SkyHanniTestCommand.kt index a320123a1..bb03898d6 100644 --- a/src/main/java/at/hannibal2/skyhanni/test/SkyHanniTestCommand.kt +++ b/src/main/java/at/hannibal2/skyhanni/test/SkyHanniTestCommand.kt @@ -43,7 +43,7 @@ class SkyHanniTestCommand { fun testCommand(args: Array) { SoundUtils.playBeepSound() -// for ((i, s) in ScoreboardData.sidebarLinesFormatted().withIndex()) { +// for ((i, s) in ScoreboardData.siedebarLinesFormatted().withIndex()) { // println("$i: '$s'") // } -- cgit