feat(power): highlight non overlay items

This commit is contained in:
Linnea Gräf
2025-07-05 20:08:17 +02:00
parent ef53649368
commit 2cf4ff06ff
2 changed files with 25 additions and 0 deletions

View File

@@ -59,6 +59,7 @@ object PowerUserTools : FirmamentFeature {
val exportItemStackToRepo by keyBindingWithDefaultUnbound("export-item-stack")
val exportUIRecipes by keyBindingWithDefaultUnbound("export-recipe")
val exportNpcLocation by keyBindingWithDefaultUnbound("export-npc-location")
val highlightNonOverlayItems by toggle("highlight-non-overlay") { false }
}
override val config

View File

@@ -25,6 +25,7 @@ import moe.nea.firmament.commands.thenExecute
import moe.nea.firmament.commands.thenLiteral
import moe.nea.firmament.events.CommandEvent
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
import moe.nea.firmament.events.SlotRenderEvents
import moe.nea.firmament.features.debug.DeveloperFeatures
import moe.nea.firmament.features.debug.ExportedTestConstantMeta
import moe.nea.firmament.features.debug.PowerUserTools
@@ -39,6 +40,7 @@ import moe.nea.firmament.util.mc.SNbtFormatter.Companion.toPrettyString
import moe.nea.firmament.util.mc.displayNameAccordingToNbt
import moe.nea.firmament.util.mc.loreAccordingToNbt
import moe.nea.firmament.util.mc.toNbtList
import moe.nea.firmament.util.render.drawGuiTexture
import moe.nea.firmament.util.setSkyBlockId
import moe.nea.firmament.util.skyBlockId
import moe.nea.firmament.util.tr
@@ -46,6 +48,7 @@ import moe.nea.firmament.util.tr
object ItemExporter {
fun exportItem(itemStack: ItemStack): Text {
nonOverlayCache.clear()
val exporter = LegacyItemExporter.createExporter(itemStack)
var json = exporter.exportJson()
val fileName = json.jsonObject["internalname"]!!.jsonPrimitive.content
@@ -204,6 +207,27 @@ object ItemExporter {
}
}
val nonOverlayCache = mutableMapOf<SkyblockId, Boolean>()
@Subscribe
fun onRender(event: SlotRenderEvents.Before) {
if (!PowerUserTools.TConfig.highlightNonOverlayItems) {
return
}
val stack = event.slot.stack ?: return
val isExported = nonOverlayCache.getOrPut(stack.skyBlockId ?: return) {
RepoDownloadManager.repoSavedLocation.resolve("itemsOverlay")
.resolve(ExportedTestConstantMeta.current.dataVersion.toString())
.resolve("${stack.skyBlockId}.snbt")
.exists()
}
if (!isExported)
event.context.drawGuiTexture(
Firmament.identifier("selected_pet_background"),
event.slot.x, event.slot.y, 16, 16,
)
}
fun exportStub(skyblockId: SkyblockId, title: String, extra: (ItemStack) -> Unit = {}) {
exportItem(ItemStack(Items.PLAYER_HEAD).also {
it.displayNameAccordingToNbt = Text.literal(title)