diff options
Diffstat (limited to 'src/main/kotlin/features/inventory/buttons/InventoryButtonTemplates.kt')
-rw-r--r-- | src/main/kotlin/features/inventory/buttons/InventoryButtonTemplates.kt | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/src/main/kotlin/features/inventory/buttons/InventoryButtonTemplates.kt b/src/main/kotlin/features/inventory/buttons/InventoryButtonTemplates.kt index 99b544b..d282157 100644 --- a/src/main/kotlin/features/inventory/buttons/InventoryButtonTemplates.kt +++ b/src/main/kotlin/features/inventory/buttons/InventoryButtonTemplates.kt @@ -1,35 +1,33 @@ - - package moe.nea.firmament.features.inventory.buttons -import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import net.minecraft.text.Text import moe.nea.firmament.Firmament +import moe.nea.firmament.util.ErrorUtil import moe.nea.firmament.util.MC import moe.nea.firmament.util.TemplateUtil object InventoryButtonTemplates { - val legacyPrefix = "NEUBUTTONS/" - val modernPrefix = "MAYBEONEDAYIWILLHAVEMYOWNFORMAT" + val legacyPrefix = "NEUBUTTONS/" + val modernPrefix = "MAYBEONEDAYIWILLHAVEMYOWNFORMAT" - fun loadTemplate(t: String): List<InventoryButton>? { - val buttons = TemplateUtil.maybeDecodeTemplate<List<String>>(legacyPrefix, t) ?: return null - return buttons.mapNotNull { - try { - Firmament.json.decodeFromString<InventoryButton>(it).also { - if (it.icon?.startsWith("extra:") == true || it.command?.any { it.isLowerCase() } == true) { - MC.sendChat(Text.translatable("firmament.inventory-buttons.import-failed")) - } - } - } catch (e: Exception) { - null - } - } - } + fun loadTemplate(t: String): List<InventoryButton>? { + val buttons = TemplateUtil.maybeDecodeTemplate<List<String>>(legacyPrefix, t) ?: return null + return buttons.mapNotNull { + ErrorUtil.catch<InventoryButton?>("Could not import button") { + Firmament.json.decodeFromString<InventoryButton>(it).also { + if (it.icon?.startsWith("extra:") == true) { + MC.sendChat(Text.translatable("firmament.inventory-buttons.import-failed")) + } + } + }.or { + null + } + } + } - fun saveTemplate(buttons: List<InventoryButton>): String { - return TemplateUtil.encodeTemplate(legacyPrefix, buttons.map { Firmament.json.encodeToString(it) }) - } + fun saveTemplate(buttons: List<InventoryButton>): String { + return TemplateUtil.encodeTemplate(legacyPrefix, buttons.map { Firmament.json.encodeToString(it) }) + } } |