feat: Allow reexporting all items

This commit is contained in:
Linnea Gräf
2025-06-23 00:38:40 +02:00
parent cd81fc6b18
commit 5094885767

View File

@@ -1,6 +1,7 @@
package moe.nea.firmament.features.debug.itemeditor package moe.nea.firmament.features.debug.itemeditor
import com.mojang.brigadier.arguments.StringArgumentType import com.mojang.brigadier.arguments.StringArgumentType
import kotlinx.coroutines.launch
import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.JsonPrimitive
@@ -110,19 +111,34 @@ object ItemExporter {
) )
) )
} }
modifyJson(itemid) { fixLoreNbtFor(itemid)
val mutJson = it.toMutableMap() MC.sendChat(
val legacyTag = LegacyTagParser.parse(mutJson["nbttag"]!!.jsonPrimitive.content) tr(
val display = legacyTag.getCompoundOrEmpty("display") "firmament.repo.export.relore",
legacyTag.put("display", display) "Updated lore / display name for $itemid"
display.putString("Name", mutJson["displayname"]!!.jsonPrimitive.content)
display.put(
"Lore",
(mutJson["lore"] as JsonArray).map { NbtString.of(it.jsonPrimitive.content) }
.toNbtList()
) )
mutJson["nbttag"] = JsonPrimitive(legacyTag.toLegacyString()) )
JsonObject(mutJson) }
}
thenLiteral("all") {
thenExecute {
var i = 0
val chunkSize = 100
val items = RepoManager.neuRepo.items.items.keys
Firmament.coroutineScope.launch {
items.chunked(chunkSize).forEach { key ->
MC.sendChat(
tr(
"firmament.repo.export.relore.progress",
"Updated lore / display for ${i * chunkSize} / ${items.size}."
)
)
i++
key.forEach {
fixLoreNbtFor(SkyblockId(it))
}
}
MC.sendChat(tr("firmament.repo.export.relore.alldone", "All lores updated."))
} }
} }
} }
@@ -130,6 +146,23 @@ object ItemExporter {
} }
} }
fun fixLoreNbtFor(itemid: SkyblockId) {
modifyJson(itemid) {
val mutJson = it.toMutableMap()
val legacyTag = LegacyTagParser.parse(mutJson["nbttag"]!!.jsonPrimitive.content)
val display = legacyTag.getCompoundOrEmpty("display")
legacyTag.put("display", display)
display.putString("Name", mutJson["displayname"]!!.jsonPrimitive.content)
display.put(
"Lore",
(mutJson["lore"] as JsonArray).map { NbtString.of(it.jsonPrimitive.content) }
.toNbtList()
)
mutJson["nbttag"] = JsonPrimitive(legacyTag.toLegacyString())
JsonObject(mutJson)
}
}
@Subscribe @Subscribe
fun onKeyBind(event: HandledScreenKeyPressedEvent) { fun onKeyBind(event: HandledScreenKeyPressedEvent) {
if (event.matches(PowerUserTools.TConfig.exportItemStackToRepo)) { if (event.matches(PowerUserTools.TConfig.exportItemStackToRepo)) {