feat: Prettier price formatting

Co-authored-by: jani270 <69345714+jani270@users.noreply.github.com>
This commit is contained in:
Linnea Gräf
2025-06-04 00:19:51 +02:00
parent d75153847d
commit 9ad691bc1b
2 changed files with 58 additions and 39 deletions

View File

@@ -1,5 +1,3 @@
package moe.nea.firmament.features.inventory package moe.nea.firmament.features.inventory
import net.minecraft.text.Text import net.minecraft.text.Text
@@ -8,44 +6,68 @@ import moe.nea.firmament.events.ItemTooltipEvent
import moe.nea.firmament.features.FirmamentFeature import moe.nea.firmament.features.FirmamentFeature
import moe.nea.firmament.gui.config.ManagedConfig import moe.nea.firmament.gui.config.ManagedConfig
import moe.nea.firmament.repo.HypixelStaticData import moe.nea.firmament.repo.HypixelStaticData
import moe.nea.firmament.util.FirmFormatters import moe.nea.firmament.util.FirmFormatters.formatCommas
import moe.nea.firmament.util.bold
import moe.nea.firmament.util.gold
import moe.nea.firmament.util.skyBlockId import moe.nea.firmament.util.skyBlockId
import moe.nea.firmament.util.tr
import moe.nea.firmament.util.yellow
object PriceData : FirmamentFeature { object PriceData : FirmamentFeature {
override val identifier: String override val identifier: String
get() = "price-data" get() = "price-data"
object TConfig : ManagedConfig(identifier, Category.INVENTORY) { object TConfig : ManagedConfig(identifier, Category.INVENTORY) {
val tooltipEnabled by toggle("enable-always") { true } val tooltipEnabled by toggle("enable-always") { true }
val enableKeybinding by keyBindingWithDefaultUnbound("enable-keybind") val enableKeybinding by keyBindingWithDefaultUnbound("enable-keybind")
} }
override val config get() = TConfig override val config get() = TConfig
@Subscribe fun formatPrice(label: Text, price: Double): Text {
fun onItemTooltip(it: ItemTooltipEvent) { return Text.literal("")
if (!TConfig.tooltipEnabled && !TConfig.enableKeybinding.isPressed()) { .yellow()
return .bold()
} .append(label)
val sbId = it.stack.skyBlockId .append(": ")
val bazaarData = HypixelStaticData.bazaarData[sbId] .append(
val lowestBin = HypixelStaticData.lowestBin[sbId] Text.literal(formatCommas(price, fractionalDigits = 1))
if (bazaarData != null) { .append(if(price != 1.0) " coins" else " coin")
it.lines.add(Text.literal("")) .gold()
it.lines.add( .bold()
Text.stringifiedTranslatable("firmament.tooltip.bazaar.sell-order", )
FirmFormatters.formatCommas(bazaarData.quickStatus.sellPrice, 1)) }
)
it.lines.add( @Subscribe
Text.stringifiedTranslatable("firmament.tooltip.bazaar.buy-order", fun onItemTooltip(it: ItemTooltipEvent) {
FirmFormatters.formatCommas(bazaarData.quickStatus.buyPrice, 1)) if (!TConfig.tooltipEnabled && !TConfig.enableKeybinding.isPressed()) {
) return
} else if (lowestBin != null) { }
it.lines.add(Text.literal("")) val sbId = it.stack.skyBlockId
it.lines.add( val bazaarData = HypixelStaticData.bazaarData[sbId]
Text.stringifiedTranslatable("firmament.tooltip.ah.lowestbin", val lowestBin = HypixelStaticData.lowestBin[sbId]
FirmFormatters.formatCommas(lowestBin, 1)) if (bazaarData != null) {
) it.lines.add(Text.literal(""))
} it.lines.add(
} formatPrice(
tr("firmament.tooltip.bazaar.sell-order", "Bazaar Sell Order"),
bazaarData.quickStatus.sellPrice
)
)
it.lines.add(
formatPrice(
tr("firmament.tooltip.bazaar.buy-order", "Bazaar Buy Order"),
bazaarData.quickStatus.buyPrice
)
)
} else if (lowestBin != null) {
it.lines.add(Text.literal(""))
it.lines.add(
formatPrice(
tr("firmament.tooltip.ah.lowestbin", "Lowest BIN"),
lowestBin
)
)
}
}
} }

View File

@@ -375,9 +375,6 @@
"firmament.sbinfo.server": "Locraw Server: %s", "firmament.sbinfo.server": "Locraw Server: %s",
"firmament.toggle.false": "Off", "firmament.toggle.false": "Off",
"firmament.toggle.true": "On", "firmament.toggle.true": "On",
"firmament.tooltip.ah.lowestbin": "Lowest BIN: %d",
"firmament.tooltip.bazaar.buy-order": "Bazaar Buy Order: %s",
"firmament.tooltip.bazaar.sell-order": "Bazaar Sell Order: %s",
"firmament.tooltip.copied.lore": "Copied Name and Lore", "firmament.tooltip.copied.lore": "Copied Name and Lore",
"firmament.tooltip.copied.modelid": "Copied Texture Id: %s", "firmament.tooltip.copied.modelid": "Copied Texture Id: %s",
"firmament.tooltip.copied.modelid.fail": "Failed to copy Texture Id", "firmament.tooltip.copied.modelid.fail": "Failed to copy Texture Id",