aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-08-05 19:55:03 +0200
committerLinnea Gräf <nea@nea.moe>2025-08-05 19:55:03 +0200
commitcfcec82d374905e9210577bd38b7bac6ffabaa56 (patch)
tree8d584ed3ea400e1a006fb2285acbcf0c4b7a8d09
parente362b95b3ee70fa5745463fc78507e230b607c3f (diff)
downloadFirmament-cfcec82d374905e9210577bd38b7bac6ffabaa56.tar.gz
Firmament-cfcec82d374905e9210577bd38b7bac6ffabaa56.tar.bz2
Firmament-cfcec82d374905e9210577bd38b7bac6ffabaa56.zip
feat: dont export custom ids anymore in snbts
-rw-r--r--src/main/kotlin/features/debug/itemeditor/LegacyItemExporter.kt10
-rw-r--r--src/main/kotlin/util/HoveredItemStack.kt6
2 files changed, 12 insertions, 4 deletions
diff --git a/src/main/kotlin/features/debug/itemeditor/LegacyItemExporter.kt b/src/main/kotlin/features/debug/itemeditor/LegacyItemExporter.kt
index f4f23b0..20ab2c3 100644
--- a/src/main/kotlin/features/debug/itemeditor/LegacyItemExporter.kt
+++ b/src/main/kotlin/features/debug/itemeditor/LegacyItemExporter.kt
@@ -33,6 +33,7 @@ import moe.nea.firmament.util.json.toJsonArray
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.modifyExtraAttributes
import moe.nea.firmament.util.skyBlockId
import moe.nea.firmament.util.skyblock.Rarity
import moe.nea.firmament.util.transformEachRecursively
@@ -45,6 +46,7 @@ class LegacyItemExporter private constructor(var itemStack: ItemStack) {
}
var lore = itemStack.loreAccordingToNbt
+ val originalId = itemStack.extraAttributes.getString("id")
var name = itemStack.displayNameAccordingToNbt
val extraAttribs = itemStack.extraAttributes.copy()
val legacyNbt = NbtCompound()
@@ -195,8 +197,12 @@ class LegacyItemExporter private constructor(var itemStack: ItemStack) {
}
fun exportModernSnbt(): NbtElement {
- val overlay = ItemStack.CODEC.encodeStart(NbtOps.INSTANCE, itemStack)
- .orThrow
+ val overlay = ItemStack.CODEC.encodeStart(NbtOps.INSTANCE, itemStack.copy().also {
+ it.modifyExtraAttributes { attribs ->
+ originalId.ifPresent { attribs.putString("id", it) }
+ attribs
+ }
+ }).orThrow
val overlayWithVersion =
ExportedTestConstantMeta.SOURCE_CODEC.encode(ExportedTestConstantMeta.current, NbtOps.INSTANCE, overlay)
.orThrow
diff --git a/src/main/kotlin/util/HoveredItemStack.kt b/src/main/kotlin/util/HoveredItemStack.kt
index ad07aa0..1b54562 100644
--- a/src/main/kotlin/util/HoveredItemStack.kt
+++ b/src/main/kotlin/util/HoveredItemStack.kt
@@ -14,7 +14,9 @@ interface HoveredItemStackProvider : Comparable<HoveredItemStackProvider> {
val prio: Int get() = 0
- companion object : CompatLoader<HoveredItemStackProvider>(HoveredItemStackProvider::class)
+ companion object : CompatLoader<HoveredItemStackProvider>(HoveredItemStackProvider::class) {
+ val sorted = HoveredItemStackProvider.allValidInstances.sorted()
+ }
}
@AutoService(HoveredItemStackProvider::class)
@@ -32,5 +34,5 @@ class VanillaScreenProvider : HoveredItemStackProvider {
val HandledScreen<*>.focusedItemStack: ItemStack?
get() =
- HoveredItemStackProvider.allValidInstances
+ HoveredItemStackProvider.sorted
.firstNotNullOfOrNull { it.provideHoveredItemStack(this)?.takeIf { !it.isEmpty } }