diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/kotlin/repo/ItemCache.kt | 6 | ||||
-rw-r--r-- | src/main/kotlin/repo/SBItemStack.kt | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/main/kotlin/repo/ItemCache.kt b/src/main/kotlin/repo/ItemCache.kt index 014de7d..23c5ffb 100644 --- a/src/main/kotlin/repo/ItemCache.kt +++ b/src/main/kotlin/repo/ItemCache.kt @@ -70,6 +70,12 @@ object ItemCache : IReloadable { val ItemStack.isBroken get() = get(FirmamentDataComponentTypes.IS_BROKEN) ?: false + + fun ItemStack.withFallback(fallback: ItemStack?): ItemStack { + if (isBroken && fallback != null) return fallback + return this + } + fun brokenItemStack(neuItem: NEUItem?, idHint: SkyblockId? = null): ItemStack { return ItemStack(Items.PAINTING).apply { setCustomName(Text.literal(neuItem?.displayName ?: idHint?.neuItem ?: "null")) diff --git a/src/main/kotlin/repo/SBItemStack.kt b/src/main/kotlin/repo/SBItemStack.kt index 18126ee..75245d1 100644 --- a/src/main/kotlin/repo/SBItemStack.kt +++ b/src/main/kotlin/repo/SBItemStack.kt @@ -12,6 +12,7 @@ import net.minecraft.network.codec.PacketCodecs import net.minecraft.text.Text import net.minecraft.util.Formatting import moe.nea.firmament.repo.ItemCache.asItemStack +import moe.nea.firmament.repo.ItemCache.withFallback import moe.nea.firmament.util.FirmFormatters import moe.nea.firmament.util.LegacyFormattingCode import moe.nea.firmament.util.SkyblockId @@ -30,6 +31,7 @@ data class SBItemStack constructor( val extraLore: List<Text> = emptyList(), // TODO: grab this star data from nbt if possible val stars: Int = 0, + val fallback: ItemStack? = null, ) { fun getStackSize() = stackSize @@ -77,6 +79,10 @@ data class SBItemStack constructor( } return SBItemStack(neuIngredient.skyblockId, neuIngredient.amount.toInt()) } + + fun passthrough(itemStack: ItemStack): SBItemStack { + return SBItemStack(SkyblockId.NULL, null, itemStack.count, null, fallback = itemStack) + } } constructor(skyblockId: SkyblockId, petData: PetData) : this( @@ -139,6 +145,7 @@ data class SBItemStack constructor( val replacementData = mutableMapOf<String, String>() injectReplacementDataForPets(replacementData) return@run neuItem.asItemStack(idHint = skyblockId, replacementData) + .withFallback(fallback) .copyWithCount(stackSize) .also { it.appendLore(extraLore) } .also { enhanceStatsByStars(it, stars) } |