package moe.nea.firmament.util.mc import kotlin.jvm.optionals.getOrNull import net.minecraft.world.item.ItemStack import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.NbtOps import net.minecraft.resources.RegistryOps import net.minecraft.core.HolderLookup import net.minecraft.network.chat.Component import moe.nea.firmament.util.MC fun ItemStack.appendLore(args: List) { if (args.isEmpty()) return modifyLore { val loreList = loreAccordingToNbt.toMutableList() for (arg in args) { loreList.add(arg) } loreList } } fun ItemStack.modifyLore(update: (List) -> List) { val loreList = loreAccordingToNbt loreAccordingToNbt = update(loreList) } fun loadItemFromNbt(nbt: CompoundTag, registries: HolderLookup.Provider = MC.defaultRegistries): ItemStack? { return ItemStack.CODEC.decode(RegistryOps.create(NbtOps.INSTANCE, registries), nbt).result().getOrNull()?.first }