feat(power): highlight non overlay items
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user