aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/Storage.java4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/GardenJson.java5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt189
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt4
4 files changed, 113 insertions, 89 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/Storage.java b/src/main/java/at/hannibal2/skyhanni/config/Storage.java
index 7f4d6c183..d18fe3546 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/Storage.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/Storage.java
@@ -206,10 +206,10 @@ public class Storage {
public Map<CropType, Boolean> toolWithBountiful = new HashMap<>();
@Expose
- public String composterCurrentOrganicMatterItem = "";
+ public NEUInternalName composterCurrentOrganicMatterItem = NEUInternalName.Companion.getNONE();
@Expose
- public String composterCurrentFuelItem = "";
+ public NEUInternalName composterCurrentFuelItem = NEUInternalName.Companion.getNONE();
@Expose
public int uniqueVisitors = 0;
diff --git a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/GardenJson.java b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/GardenJson.java
index acb8e08ba..be015722a 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/GardenJson.java
+++ b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/GardenJson.java
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.data.jsonobjects.repo;
import at.hannibal2.skyhanni.features.garden.CropType;
+import at.hannibal2.skyhanni.utils.NEUInternalName;
import at.hannibal2.skyhanni.utils.LorenzRarity;
import at.hannibal2.skyhanni.utils.LorenzVec;
import com.google.gson.annotations.Expose;
@@ -23,10 +24,10 @@ public class GardenJson {
public Map<String, GardenVisitor> visitors;
@Expose
- public Map<String, Double> organic_matter;
+ public Map<NEUInternalName, Double> organic_matter;
@Expose
- public Map<String, Double> fuel;
+ public Map<NEUInternalName, Double> fuel;
public static class GardenVisitor {
@Expose
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt
index 84b7d35e4..04630838e 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt
@@ -21,7 +21,7 @@ import at.hannibal2.skyhanni.features.garden.composter.ComposterAPI.getLevel
import at.hannibal2.skyhanni.features.misc.items.EstimatedItemValue
import at.hannibal2.skyhanni.utils.ConfigUtils
import at.hannibal2.skyhanni.utils.InventoryUtils
-import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName_old
+import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
import at.hannibal2.skyhanni.utils.ItemUtils.name
import at.hannibal2.skyhanni.utils.KeyboardManager
import at.hannibal2.skyhanni.utils.LorenzUtils
@@ -29,8 +29,12 @@ import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList
import at.hannibal2.skyhanni.utils.LorenzUtils.addSelector
import at.hannibal2.skyhanni.utils.LorenzUtils.round
import at.hannibal2.skyhanni.utils.LorenzUtils.sortedDesc
+import at.hannibal2.skyhanni.utils.NEUInternalName
+import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.NONE
import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName
import at.hannibal2.skyhanni.utils.NEUItems
+import at.hannibal2.skyhanni.utils.NEUItems.getItemStack
+import at.hannibal2.skyhanni.utils.NEUItems.getPrice
import at.hannibal2.skyhanni.utils.NumberUtil
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.NumberUtil.romanToDecimalIfNecessary
@@ -52,9 +56,9 @@ import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.DurationUnit
object ComposterOverlay {
- private var organicMatterFactors: Map<String, Double> = emptyMap()
- private var fuelFactors: Map<String, Double> = emptyMap()
- private var organicMatter: Map<String, Double> = emptyMap()
+ private var organicMatterFactors: Map<NEUInternalName, Double> = emptyMap()
+ private var fuelFactors: Map<NEUInternalName, Double> = emptyMap()
+ private var organicMatter: Map<NEUInternalName, Double> = emptyMap()
private val config get() = GardenAPI.config.composters
private var organicMatterDisplay = emptyList<List<Any>>()
@@ -77,13 +81,13 @@ object ComposterOverlay {
private var testOffset = 0
- var currentOrganicMatterItem: String?
+ var currentOrganicMatterItem: NEUInternalName?
get() = GardenAPI.storage?.composterCurrentOrganicMatterItem
private set(value) {
GardenAPI.storage?.composterCurrentOrganicMatterItem = value
}
- var currentFuelItem: String?
+ var currentFuelItem: NEUInternalName?
get() = GardenAPI.storage?.composterCurrentFuelItem
private set(value) {
GardenAPI.storage?.composterCurrentFuelItem = value
@@ -133,25 +137,24 @@ object ComposterOverlay {
@SubscribeEvent
fun onTooltip(event: LorenzToolTipEvent) {
- if (inComposterUpgrades) {
- update()
- for (upgrade in ComposterUpgrade.entries) {
+ if (!inComposterUpgrades) return
+ update()
+ for (upgrade in ComposterUpgrade.entries) {
event.itemStack.name?.let {
- if (it.contains(upgrade.displayName)) {
- maxLevel = ComposterUpgrade.regex.matchMatcher(it) {
+ if (it.contains(upgrade.displayName)) {
+ maxLevel = ComposterUpgrade.regex.matchMatcher(it) {
group("level")?.romanToDecimalIfNecessary() ?: 0
- } == 25
- extraComposterUpgrade = upgrade
- update()
- return
- }
+ } == 25
+ extraComposterUpgrade = upgrade
+ update()
+ return
}
}
- if (extraComposterUpgrade != null) {
- extraComposterUpgrade = null
- maxLevel = false
- update()
- }
+ }
+ if (extraComposterUpgrade != null) {
+ extraComposterUpgrade = null
+ maxLevel = false
+ update()
}
}
@@ -176,8 +179,9 @@ object ComposterOverlay {
)
return
}
- if (currentOrganicMatterItem.let { it !in organicMatterFactors.keys && it != "" }) currentOrganicMatterItem = ""
- if (currentFuelItem.let { it !in fuelFactors.keys && it != "" }) currentFuelItem = ""
+ if (currentOrganicMatterItem.let { it !in organicMatterFactors.keys && it != NONE }) currentOrganicMatterItem =
+ NONE
+ if (currentFuelItem.let { it !in fuelFactors.keys && it != NONE }) currentFuelItem = NONE
if (inComposter) {
organicMatterDisplay = drawOrganicMatterDisplay()
@@ -255,7 +259,7 @@ object ComposterOverlay {
currentOrganicMatterItem = it
update()
}
- if (currentOrganicMatterItem == "") {
+ if (currentOrganicMatterItem == NONE) {
currentOrganicMatterItem = fillList
update()
}
@@ -276,7 +280,7 @@ object ComposterOverlay {
currentFuelItem = it
update()
}
- if (currentFuelItem == "") {
+ if (currentFuelItem == NONE) {
currentFuelItem = fillList
update()
}
@@ -287,7 +291,7 @@ object ComposterOverlay {
private fun addExtraData(newList: MutableList<List<Any>>) {
val organicMatterItem = currentOrganicMatterItem ?: return
val fuelItem = currentFuelItem ?: return
- if (organicMatterItem == "" || fuelItem == "") return
+ if (organicMatterItem == NONE || fuelItem == NONE) return
newList.addSelector<TimeType>(
"§7Per ",
@@ -301,9 +305,9 @@ object ComposterOverlay {
val list = mutableListOf<Any>()
list.add("§7Using: ")
- list.add(NEUItems.getItemStack(organicMatterItem))
+ list.add(organicMatterItem.getItemStack())
list.add("§7and ")
- list.add(NEUItems.getItemStack(fuelItem))
+ list.add(fuelItem.getItemStack())
newList.add(list)
val timePerCompost = ComposterAPI.timePerCompost(null).toLong(DurationUnit.MILLISECONDS)
@@ -375,12 +379,12 @@ object ComposterOverlay {
private fun fillList(
bigList: MutableList<List<Any>>,
- factors: Map<String, Double>,
+ factors: Map<NEUInternalName, Double>,
missing: Double,
testOffset_: Int = 0,
- onClick: (String) -> Unit,
- ): String {
- val map = mutableMapOf<String, Double>()
+ onClick: (NEUInternalName) -> Unit,
+ ): NEUInternalName {
+ val map = mutableMapOf<NEUInternalName, Double>()
for ((internalName, factor) in factors) {
map[internalName] = factor / getPrice(internalName)
}
@@ -391,15 +395,34 @@ object ComposterOverlay {
0
} else testOffset_
+ val first: NEUInternalName? = calculateFirst(map, testOffset, factors, missing, onClick, bigList)
+ if (testOffset != 0) {
+ bigList.addAsSingletonList(Renderable.link("testOffset = $testOffset") {
+ ComposterOverlay.testOffset = 0
+ update()
+ })
+ }
+
+ return first ?: error("First is empty!")
+ }
+
+ private fun calculateFirst(
+ map: MutableMap<NEUInternalName, Double>,
+ testOffset: Int,
+ factors: Map<NEUInternalName, Double>,
+ missing: Double,
+ onClick: (NEUInternalName) -> Unit,
+ bigList: MutableList<List<Any>>
+ ): NEUInternalName? {
var i = 0
- var first: String? = null
+ var first: NEUInternalName? = null
for (internalName in map.sortedDesc().keys) {
i++
if (i < testOffset) continue
if (first == null) first = internalName
val factor = factors[internalName]!!
- val item = NEUItems.getItemStack(internalName)
+ val item = internalName.getItemStack()
val itemName = item.name!!
val price = getPrice(internalName)
val itemsNeeded = if (config.roundDown) {
@@ -419,52 +442,54 @@ object ComposterOverlay {
list.add("#$i ")
}
list.add(item)
- val format = NumberUtil.format(totalPrice)
- val selected = if (internalName == currentOrganicMatterItem || internalName == currentFuelItem) "§n" else ""
- val rawItemName = itemName.removeColor()
- val name = itemName.substring(0, 2) + selected + rawItemName
- list.add(Renderable.link("$name §8x${itemsNeeded.addSeparators()} §7(§6$format§7)") {
- onClick(internalName)
- if (KeyboardManager.isModifierKeyDown() && lastAttemptTime.passedSince() > 500.milliseconds) {
- lastAttemptTime = SimpleTimeMark.now()
- retrieveMaterials(internalName, itemName, itemsNeeded.toInt())
- }
- })
+ formatPrice(totalPrice, internalName, itemName, list, itemsNeeded, onClick)
bigList.add(list)
-
-
if (i == 10 + testOffset) break
}
- if (testOffset != 0) {
- bigList.addAsSingletonList(Renderable.link("testOffset = $testOffset") {
- ComposterOverlay.testOffset = 0
- update()
- })
- }
+ return first
+ }
- return first ?: error("First is empty!")
+ private fun formatPrice(
+ totalPrice: Double,
+ internalName: NEUInternalName,
+ itemName: String,
+ list: MutableList<Any>,
+ itemsNeeded: Double,
+ onClick: (NEUInternalName) -> Unit
+ ) {
+ val format = NumberUtil.format(totalPrice)
+ val selected = if (internalName == currentOrganicMatterItem || internalName == currentFuelItem) "§n" else ""
+ val rawItemName = itemName.removeColor()
+ val name = itemName.substring(0, 2) + selected + rawItemName
+ list.add(Renderable.link("$name §8x${itemsNeeded.addSeparators()} §7(§6$format§7)") {
+ onClick(internalName)
+ if (KeyboardManager.isModifierKeyDown() && lastAttemptTime.passedSince() > 500.milliseconds) {
+ lastAttemptTime = SimpleTimeMark.now()
+ retrieveMaterials(internalName, itemName, itemsNeeded.toInt())
+ }
+ })
}
- private fun retrieveMaterials(internalName: String, itemName: String, itemsNeeded: Int) {
- if (itemsNeeded == 0 || internalName == "BIOFUEL") return
+ private fun retrieveMaterials(internalName: NEUInternalName, itemName: String, itemsNeeded: Int) {
+ if (itemsNeeded == 0 || internalName.equals("BIOFUEL")) return
if (config.retrieveFrom == ComposterConfig.RetrieveFromEntry.BAZAAR && !LorenzUtils.noTradeMode) {
BazaarApi.searchForBazaarItem(itemName, itemsNeeded)
return
}
- val having = InventoryUtils.countItemsInLowerInventory { it.getInternalName_old() == internalName }
+ val having = InventoryUtils.countItemsInLowerInventory { it.getInternalName() == internalName }
if (having >= itemsNeeded) {
LorenzUtils.chat("$itemName §8x${itemsNeeded} §ealready found in inventory!")
return
}
- val sackItem = SackAPI.fetchSackItem(internalName.asInternalName())
+ val sackItem = SackAPI.fetchSackItem(internalName)
val amountInSacks = sackItem.amount
val sackStatus = sackItem.getStatus()
if (sackStatus == SackStatus.MISSING || sackStatus == SackStatus.OUTDATED) {
if (sackStatus == SackStatus.OUTDATED) LorenzUtils.sendCommandToServer("gfs $internalName ${itemsNeeded - having}")
// TODO Add sack type repo data
- val sackType = if (internalName == "VOLTA" || internalName == "OIL_BARREL") "Mining"
+ val sackType = if (internalName.equals("VOLTA") || internalName.equals("OIL_BARREL")) "Mining"
else "Enchanted Agronomy"
LorenzUtils.clickableChat(
"Sacks could not be loaded. Click here and open your §9$sackType Sack §eto update the data!",
@@ -495,10 +520,10 @@ object ComposterOverlay {
}
}
- private fun getPrice(internalName: String): Double {
+ private fun getPrice(internalName: NEUInternalName): Double {
val useSellPrice = config.overlayPriceType == ComposterConfig.OverlayPriceTypeEntry.BUY_ORDER
- val price = NEUItems.getPrice(internalName, useSellPrice)
- if (internalName == "BIOFUEL" && price > 20_000) return 20_000.0
+ val price = internalName.getPrice(useSellPrice)
+ if (internalName.equals("BIOFUEL") && price > 20_000) return 20_000.0
return price
}
@@ -525,28 +550,27 @@ object ComposterOverlay {
}
}
- private fun updateOrganicMatterFactors(baseValues: Map<String, Double>): Map<String, Double> {
- val map = mutableMapOf<String, Double>()
+ private fun updateOrganicMatterFactors(baseValues: Map<NEUInternalName, Double>): Map<NEUInternalName, Double> {
+ val map = mutableMapOf<NEUInternalName, Double>()
for ((internalName, _) in NotEnoughUpdates.INSTANCE.manager.itemInformation) {
- if (internalName == "POTION_AFFINITY_TALISMAN") continue
- if (internalName == "CROPIE_TALISMAN") continue
- if (internalName.endsWith("_BOOTS")) continue
- if (internalName.endsWith("_HELMET")) continue
- if (internalName.endsWith("_CHESTPLATE")) continue
- if (internalName.endsWith("_LEGGINGS")) continue
- if (internalName == "SPEED_TALISMAN") continue
- if (internalName == "SIMPLE_CARROT_CANDY") continue
- val (newId, amount) = NEUItems.getMultiplier(internalName)
+ if (internalName == "POTION_AFFINITY_TALISMAN"
+ || internalName == "CROPIE_TALISMAN"
+ || internalName.endsWith("_BOOTS")
+ || internalName.endsWith("_HELMET")
+ || internalName.endsWith("_CHESTPLATE")
+ || internalName.endsWith("_LEGGINGS")
+ || internalName == "SPEED_TALISMAN"
+ || internalName == "SIMPLE_CARROT_CANDY"
+ ) continue
+
+ var (newId, amount) = NEUItems.getMultiplier(internalName)
if (amount <= 9) continue
- val finalAmount =
- if (internalName == "ENCHANTED_HUGE_MUSHROOM_1" || internalName == "ENCHANTED_HUGE_MUSHROOM_2") {
- // 160 * 8 * 4 is 5120 and not 5184, but hypixel made an error, so we have to copy the error
- 5184
- } else amount
-
- baseValues[newId]?.let {
- val d = it * finalAmount
- map[internalName] = d
+ if (internalName == "ENCHANTED_HUGE_MUSHROOM_1" || internalName == "ENCHANTED_HUGE_MUSHROOM_2") {
+ // 160 * 8 * 4 is 5120 and not 5184, but hypixel made an error, so we have to copy the error
+ amount = 5184
+ }
+ baseValues[newId.asInternalName()]?.let {
+ map[internalName.asInternalName()] = it * amount
}
}
return map
@@ -582,7 +606,6 @@ object ComposterOverlay {
event.move(3, "garden.composterOverlayOrganicMatterPos", "garden.composters.overlayOrganicMatterPos")
event.move(3, "garden.composterOverlayFuelExtrasPos", "garden.composters.overlayFuelExtrasPos")
event.move(3, "garden.composterRoundDown", "garden.composters.roundDown")
-
event.transform(15, "garden.composters.overlayPriceType") { element ->
ConfigUtils.migrateIntToEnum(element, OverlayPriceTypeEntry::class.java)
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt
index 6cc7fa03f..5a563c254 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt
@@ -18,7 +18,7 @@ import at.hannibal2.skyhanni.utils.InventoryUtils
import at.hannibal2.skyhanni.utils.InventoryUtils.getInventoryName
import at.hannibal2.skyhanni.utils.ItemUtils
import at.hannibal2.skyhanni.utils.ItemUtils.cleanName
-import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName_old
+import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
import at.hannibal2.skyhanni.utils.ItemUtils.getLore
import at.hannibal2.skyhanni.utils.ItemUtils.isEnchanted
import at.hannibal2.skyhanni.utils.ItemUtils.isVanilla
@@ -232,7 +232,7 @@ class HideNotClickableItems {
reverseColor = true
- val internalName = stack.getInternalName_old()
+ val internalName = stack.getInternalName()
if (internalName == ComposterOverlay.currentOrganicMatterItem) {
return false
}