summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-11-15 16:42:11 +0100
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-11-15 16:42:11 +0100
commitecdd0502e7aef26b1fba17f763d769b25c1a34d4 (patch)
tree70dc3c90acf29544e9c11d2f88ff1503f68cb595 /src/main/java/at/hannibal2/skyhanni/features
parent1f220684fc455edfc9f202d8c7ab61dfaf875e1d (diff)
downloadskyhanni-ecdd0502e7aef26b1fba17f763d769b25c1a34d4.tar.gz
skyhanni-ecdd0502e7aef26b1fba17f763d769b25c1a34d4.tar.bz2
skyhanni-ecdd0502e7aef26b1fba17f763d769b25c1a34d4.zip
Added option to calculate with fix Blocks per Second values for all crops in Time Needed for Medal GUI.
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/contest/JacobContestTimeNeeded.kt47
1 files changed, 34 insertions, 13 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/contest/JacobContestTimeNeeded.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/contest/JacobContestTimeNeeded.kt
index c02835270..6d1913112 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/contest/JacobContestTimeNeeded.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/contest/JacobContestTimeNeeded.kt
@@ -6,7 +6,6 @@ import at.hannibal2.skyhanni.events.InventoryUpdatedEvent
import at.hannibal2.skyhanni.features.garden.CropType
import at.hannibal2.skyhanni.features.garden.FarmingFortuneDisplay.Companion.getLatestTrueFarmingFortune
import at.hannibal2.skyhanni.features.garden.farming.GardenCropSpeed.getLatestBlocksPerSecond
-import at.hannibal2.skyhanni.features.garden.farming.GardenCropSpeed.getSpeed
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList
import at.hannibal2.skyhanni.utils.LorenzUtils.addSelector
@@ -63,8 +62,9 @@ class JacobContestTimeNeeded {
sorted: MutableMap<CropType, Double>,
map: MutableMap<CropType, Renderable>
) {
- val speed = crop.getSpeed()
- if (speed == null) {
+
+ val bps = crop.getBps()
+ if (bps == null) {
sorted[crop] = Double.MAX_VALUE
map[crop] = Renderable.hoverTips(
"§9${crop.cropName} §cNo speed data!",
@@ -72,6 +72,15 @@ class JacobContestTimeNeeded {
)
return
}
+ val ff = crop.getLatestTrueFarmingFortune()
+ if (ff == null) {
+ sorted[crop] = Double.MAX_VALUE
+ map[crop] = Renderable.hoverTips(
+ "§9${crop.cropName} §cNo Farming Fortune data!",
+ listOf("§cHold a ${crop.cropName} specific", "§cfarming tool in hand to show data!")
+ )
+ return
+ }
val averages = FarmingContestAPI.calculateAverages(crop).second
if (averages.isEmpty()) {
@@ -86,6 +95,8 @@ class JacobContestTimeNeeded {
return
}
+ val speed = (ff * crop.baseDrops * bps / 100).round(1).toInt()
+
renderCrop(speed, crop, averages, sorted, map)
}
@@ -98,7 +109,7 @@ class JacobContestTimeNeeded {
) {
var lowBPSWarning = listOf<String>()
val rawSpeed = speed.toDouble()
- val speedForFormular = crop.getLatestBlocksPerSecond()?.let {
+ val speedForFormular = crop.getBps()?.let {
if (it < 15) {
val v = rawSpeed / it
(v * 19.9).toInt()
@@ -106,13 +117,18 @@ class JacobContestTimeNeeded {
} ?: speed
var showLine = ""
val brackets = mutableListOf<String>()
- for ((bracket, amount) in averages) {
+ for (bracket in ContestBracket.entries) {
+ val amount = averages[bracket]
+ if (amount == null) {
+ brackets.add("${bracket.displayName} §cNo contest data found!")
+ continue
+ }
val timeInMinutes = amount.toDouble() / speedForFormular / 60
val formatDuration = TimeUtils.formatDuration((timeInMinutes * 60 * 1000).toLong())
val color = if (timeInMinutes < 20) "§b" else "§c"
var marking = ""
var bracketText = "${bracket.displayName} $color$formatDuration"
- var blocksPerSecond = crop.getLatestBlocksPerSecond()
+ var blocksPerSecond = crop.getBps()
if (blocksPerSecond == null) {
marking += "§0§l !" //hoping this never shows
blocksPerSecond = 19.9
@@ -125,18 +141,17 @@ class JacobContestTimeNeeded {
listOf("§cYour Blocks/second is too low,", "§cshowing 19.9 Blocks/second instead!")
} else {
marking += " "
- lowBPSWarning = listOf("§aYour Blocks/second is good :)")
}
}
val line = if (timeInMinutes < 20) {
- "§9${crop.cropName} §b$formatDuration" + marking
+ "§9${crop.cropName} §7in §b$formatDuration" + marking
} else {
val cropFF = crop.getLatestTrueFarmingFortune() ?: 0.0
val cropsPerSecond = amount.toDouble() / blocksPerSecond / 60
val ffNeeded = cropsPerSecond * 100 / 20 / crop.baseDrops
val missing = (ffNeeded - cropFF).toInt()
- bracketText += " §7(${missing.addSeparators()} more FF needed!)"
- "§9${crop.cropName} §cNo ${currentBracket.displayName} §cMedal possible!" + marking
+ bracketText += " §7(Need ${missing.addSeparators()} FF more)"
+ "§9${crop.cropName} §cNo ${currentBracket.displayName} §cmedal possible!" + marking
}
brackets.add(bracketText)
if (bracket == currentBracket) {
@@ -150,12 +165,18 @@ class JacobContestTimeNeeded {
add("")
val latestFF = crop.getLatestTrueFarmingFortune() ?: 0.0
add("§7Latest FF: §e${(latestFF).addSeparators()}")
- val bps = crop.getLatestBlocksPerSecond()?.round(1) ?: 0
- add("§7Blocks/Second: §e${bps.addSeparators()}")
+ val bps = crop.getBps()?.round(1) ?: 0
+ add("§7${addBpsTitle()}§e${bps.addSeparators()}")
addAll(lowBPSWarning)
})
}
+ private fun addBpsTitle() = if (config.jacobContestAssumeFixBps) "Fix Blocks/Second: " else "Your Blocks/Second: "
+
+ private fun CropType.getBps() = if (config.jacobContestAssumeFixBps) {
+ config.jacobContestAssumeFixBpsValue
+ } else getLatestBlocksPerSecond()
+
@SubscribeEvent
fun onRenderOverlay(event: GuiRenderEvent.ChestGuiOverlayRenderEvent) {
if (!isEnabled()) return
@@ -164,4 +185,4 @@ class JacobContestTimeNeeded {
}
fun isEnabled() = LorenzUtils.inSkyBlock && config.jacobContextTimes
-} \ No newline at end of file
+}