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 exportItemStackToRepo by keyBindingWithDefaultUnbound("export-item-stack")
|
||||||
val exportUIRecipes by keyBindingWithDefaultUnbound("export-recipe")
|
val exportUIRecipes by keyBindingWithDefaultUnbound("export-recipe")
|
||||||
val exportNpcLocation by keyBindingWithDefaultUnbound("export-npc-location")
|
val exportNpcLocation by keyBindingWithDefaultUnbound("export-npc-location")
|
||||||
|
val highlightNonOverlayItems by toggle("highlight-non-overlay") { false }
|
||||||
}
|
}
|
||||||
|
|
||||||
override val config
|
override val config
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import moe.nea.firmament.commands.thenExecute
|
|||||||
import moe.nea.firmament.commands.thenLiteral
|
import moe.nea.firmament.commands.thenLiteral
|
||||||
import moe.nea.firmament.events.CommandEvent
|
import moe.nea.firmament.events.CommandEvent
|
||||||
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
|
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.DeveloperFeatures
|
||||||
import moe.nea.firmament.features.debug.ExportedTestConstantMeta
|
import moe.nea.firmament.features.debug.ExportedTestConstantMeta
|
||||||
import moe.nea.firmament.features.debug.PowerUserTools
|
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.displayNameAccordingToNbt
|
||||||
import moe.nea.firmament.util.mc.loreAccordingToNbt
|
import moe.nea.firmament.util.mc.loreAccordingToNbt
|
||||||
import moe.nea.firmament.util.mc.toNbtList
|
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.setSkyBlockId
|
||||||
import moe.nea.firmament.util.skyBlockId
|
import moe.nea.firmament.util.skyBlockId
|
||||||
import moe.nea.firmament.util.tr
|
import moe.nea.firmament.util.tr
|
||||||
@@ -46,6 +48,7 @@ import moe.nea.firmament.util.tr
|
|||||||
object ItemExporter {
|
object ItemExporter {
|
||||||
|
|
||||||
fun exportItem(itemStack: ItemStack): Text {
|
fun exportItem(itemStack: ItemStack): Text {
|
||||||
|
nonOverlayCache.clear()
|
||||||
val exporter = LegacyItemExporter.createExporter(itemStack)
|
val exporter = LegacyItemExporter.createExporter(itemStack)
|
||||||
var json = exporter.exportJson()
|
var json = exporter.exportJson()
|
||||||
val fileName = json.jsonObject["internalname"]!!.jsonPrimitive.content
|
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 = {}) {
|
fun exportStub(skyblockId: SkyblockId, title: String, extra: (ItemStack) -> Unit = {}) {
|
||||||
exportItem(ItemStack(Items.PLAYER_HEAD).also {
|
exportItem(ItemStack(Items.PLAYER_HEAD).also {
|
||||||
it.displayNameAccordingToNbt = Text.literal(title)
|
it.displayNameAccordingToNbt = Text.literal(title)
|
||||||
|
|||||||
Reference in New Issue
Block a user