diff options
author | Linnea Gräf <nea@nea.moe> | 2025-07-05 20:08:17 +0200 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2025-07-05 20:08:17 +0200 |
commit | 2cf4ff06ff8293e5fe4958a12738d851a2fcd74a (patch) | |
tree | ff41378c8c89efeb1b95760fd35c581fb56434a9 | |
parent | ef53649368b9dde5533d21427d9fa787ae1bbe33 (diff) | |
download | Firmament-2cf4ff06ff8293e5fe4958a12738d851a2fcd74a.tar.gz Firmament-2cf4ff06ff8293e5fe4958a12738d851a2fcd74a.tar.bz2 Firmament-2cf4ff06ff8293e5fe4958a12738d851a2fcd74a.zip |
feat(power): highlight non overlay items
-rw-r--r-- | src/main/kotlin/features/debug/PowerUserTools.kt | 1 | ||||
-rw-r--r-- | src/main/kotlin/features/debug/itemeditor/ItemExporter.kt | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/main/kotlin/features/debug/PowerUserTools.kt b/src/main/kotlin/features/debug/PowerUserTools.kt index 7c1df3f..1a7b2cf 100644 --- a/src/main/kotlin/features/debug/PowerUserTools.kt +++ b/src/main/kotlin/features/debug/PowerUserTools.kt @@ -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 diff --git a/src/main/kotlin/features/debug/itemeditor/ItemExporter.kt b/src/main/kotlin/features/debug/itemeditor/ItemExporter.kt index f7ab14c..c521b5a 100644 --- a/src/main/kotlin/features/debug/itemeditor/ItemExporter.kt +++ b/src/main/kotlin/features/debug/itemeditor/ItemExporter.kt @@ -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) |