aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-04-14 19:09:40 +0200
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-04-14 19:09:40 +0200
commitd9191de0d4670d8e710c556210fea64b351090e2 (patch)
tree697a7559c9844506881d3af4cf7b57e0fd21e8ff /src
parent182e27f2dbf13574e43e30ef1937237d4b9be21f (diff)
downloadskyhanni-d9191de0d4670d8e710c556210fea64b351090e2.tar.gz
skyhanni-d9191de0d4670d8e710c556210fea64b351090e2.tar.bz2
skyhanni-d9191de0d4670d8e710c556210fea64b351090e2.zip
Removed enchanted bread from Crop Money Per Hour List
Added enchanted seeds to Crop Per Hour Added option to merge seeds to wheat prices (default enabled)
Diffstat (limited to 'src')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/Garden.java8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/farming/CropMoneyDisplay.kt63
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt11
4 files changed, 69 insertions, 19 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java b/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java
index c0dc1360b..40f55bd83 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java
@@ -635,6 +635,14 @@ public class Garden {
public List<Integer> moneyPerHourCustomFormat = new ArrayList<>(Arrays.asList(0, 1, 2));
@Expose
+ @ConfigOption(
+ name = "Merge Seeds",
+ desc = "Merge the seeds price with the wheat price.")
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 13)
+ public boolean moneyPerHourMergeSeeds = true;
+
+ @Expose
public Position moneyPerHourPos = new Position(16, -232, false, true);
@Expose
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt
index e5fe7a056..ea1337e5b 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt
@@ -31,9 +31,9 @@ enum class CropType(val cropName: String, val toolName: String, val baseDrops: D
fun getByItemName(itemName: String): CropType? {
- if (itemName == "Red Mushroom" || itemName == "Brown Mushroom") {
- return MUSHROOM
- }
+ if (itemName == "Red Mushroom" || itemName == "Brown Mushroom") return MUSHROOM
+ if (itemName == "Seeds") return WHEAT
+
return getByName(itemName)
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/CropMoneyDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/CropMoneyDisplay.kt
index b8f123d43..63296bace 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/CropMoneyDisplay.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/CropMoneyDisplay.kt
@@ -12,6 +12,7 @@ import at.hannibal2.skyhanni.features.garden.GardenNextJacobContest
import at.hannibal2.skyhanni.utils.ItemUtils.name
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList
+import at.hannibal2.skyhanni.utils.LorenzUtils.moveEntryToTop
import at.hannibal2.skyhanni.utils.LorenzUtils.sortedDesc
import at.hannibal2.skyhanni.utils.NEUItems
import at.hannibal2.skyhanni.utils.NumberUtil
@@ -28,7 +29,7 @@ class CropMoneyDisplay {
private var tick = 0
private var loaded = false
private var ready = false
- private val multipliers = mutableMapOf<String, Int>()
+ private var multipliers = mapOf<String, Int>()
private val cropNames = mutableMapOf<String, CropType>() // internalName -> cropName
private var hasCropInHand = false
@@ -113,7 +114,15 @@ class CropMoneyDisplay {
}
try {
- list.add(NEUItems.getItemStack(internalName))
+ if (internalName == "ENCHANTED_SEEDS") {
+ list.add(NEUItems.getItemStack("BOX_OF_SEEDS"))
+ } else {
+ list.add(NEUItems.getItemStack(internalName))
+ }
+
+ if (cropNames[internalName] == CropType.WHEAT && config.moneyPerHourMergeSeeds) {
+ list.add(NEUItems.getItemStack("BOX_OF_SEEDS"))
+ }
} catch (e: NullPointerException) {
e.printStackTrace()
}
@@ -176,26 +185,46 @@ class CropMoneyDisplay {
private fun calculateMoneyPerHour(): Map<String, Array<Double>> {
val moneyPerHours = mutableMapOf<String, Array<Double>>()
- for ((internalName, amount) in multipliers) {
+
+ var seedsPrice: BazaarData? = null
+ var seedsPerHour = 0.0
+
+ for ((internalName, amount) in multipliers.moveEntryToTop { it.key == "ENCHANTED_SEEDS" }) {
val crop = cropNames[internalName]!!
- val speed = crop.getSpeed()
- // No speed data for item in hand
- if (speed == -1) continue
+ var speed = crop.getSpeed().toDouble()
+ if (speed == -1.0) continue
+ val isSeeds = internalName == "ENCHANTED_SEEDS"
+ if (isSeeds) speed *= 1.36
- val speedPerHr = speed.toDouble() * 60 * 60
- val blocksPerHour = speedPerHr / amount.toDouble()
+ val speedPerHour = speed * 60 * 60
+ val cropsPerHour = speedPerHour / amount.toDouble()
val bazaarData = BazaarApi.getBazaarDataForInternalName(internalName) ?: continue
- moneyPerHours[internalName] = formatNumbers(bazaarData, blocksPerHour)
+
+ var npcPrice = bazaarData.npcPrice * cropsPerHour
+ var sellOffer = bazaarData.buyPrice * cropsPerHour
+ var instantSell = bazaarData.sellPrice * cropsPerHour
+
+ if (crop == CropType.WHEAT && config.moneyPerHourMergeSeeds) {
+ if (isSeeds) {
+ seedsPrice = bazaarData
+ seedsPerHour = cropsPerHour
+ continue
+ } else {
+ seedsPrice?.let {
+ npcPrice += it.npcPrice * seedsPerHour
+ sellOffer += it.buyPrice * seedsPerHour
+ instantSell += it.sellPrice * seedsPerHour
+ }
+ }
+ }
+
+ moneyPerHours[internalName] = formatNumbers(sellOffer, instantSell, npcPrice)
}
return moneyPerHours
}
- private fun formatNumbers(bazaarData: BazaarData, blocksPerHour: Double): Array<Double> {
- val npcPrice = bazaarData.npcPrice * blocksPerHour
- val sellOffer = bazaarData.buyPrice * blocksPerHour
- val instantSell = bazaarData.sellPrice * blocksPerHour
-
+ private fun formatNumbers(sellOffer: Double, instantSell: Double, npcPrice: Double): Array<Double> {
return if (config.moneyPerHourUseCustomFormat) {
val map = mapOf(
0 to sellOffer,
@@ -229,21 +258,23 @@ class CropMoneyDisplay {
loaded = true
SkyHanniMod.coroutineScope.launch {
-
+ val map = mutableMapOf<String, Int>()
for ((internalName, _) in NotEnoughUpdates.INSTANCE.manager.itemInformation) {
if (!BazaarApi.isBazaarItem(internalName)) continue
if (internalName == "ENCHANTED_PAPER") continue
+ if (internalName == "ENCHANTED_BREAD") continue
val (newId, amount) = NEUItems.getMultiplier(internalName)
if (amount < 10) continue
val itemName = NEUItems.getItemStack(newId).name?.removeColor() ?: continue
val crop = CropType.getByItemName(itemName)
crop?.let {
- multipliers[internalName] = amount
+ map[internalName] = amount
cropNames[internalName] = it
}
}
+ multipliers = map
ready = true
update()
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
index 552782025..c84710fe0 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
@@ -213,4 +213,15 @@ object LorenzUtils {
HoverEvent(HoverEvent.Action.SHOW_TEXT, ChatComponentText("§eExecute /$command"))
Minecraft.getMinecraft().thePlayer.addChatMessage(text)
}
+
+ fun <K, V> Map<K, V>.moveEntryToTop(matcher: (Map.Entry<K, V>) -> Boolean): Map<K, V> {
+ val entry = entries.find(matcher)
+ if (entry != null) {
+ val newMap = linkedMapOf(entry.key to entry.value)
+ newMap.putAll(this)
+ return newMap
+ }
+ return this
+ }
+
} \ No newline at end of file