aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/repo/SBItemStack.kt
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-06-22 16:09:43 +0200
committerLinnea Gräf <nea@nea.moe>2025-06-22 16:09:43 +0200
commitcbc8eff63ac1fd6caebbd93348877124896f2d80 (patch)
tree258e36dfdedc16fe8b36fa6e04fc286360d6009e /src/main/kotlin/repo/SBItemStack.kt
parent7c45e48050e8ee792f391fc660232950a36c494b (diff)
downloadFirmament-cbc8eff63ac1fd6caebbd93348877124896f2d80.tar.gz
Firmament-cbc8eff63ac1fd6caebbd93348877124896f2d80.tar.bz2
Firmament-cbc8eff63ac1fd6caebbd93348877124896f2d80.zip
feat: Allow breaking itemstacks even further for faster repo reloads
Diffstat (limited to 'src/main/kotlin/repo/SBItemStack.kt')
-rw-r--r--src/main/kotlin/repo/SBItemStack.kt8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/main/kotlin/repo/SBItemStack.kt b/src/main/kotlin/repo/SBItemStack.kt
index 0026e03..537bd81 100644
--- a/src/main/kotlin/repo/SBItemStack.kt
+++ b/src/main/kotlin/repo/SBItemStack.kt
@@ -353,7 +353,9 @@ data class SBItemStack constructor(
}
// TODO: avoid instantiating the item stack here
+ @ExpensiveItemCacheApi
val itemType: ItemType? get() = ItemType.fromItemStack(asImmutableItemStack())
+ @ExpensiveItemCacheApi
val rarity: Rarity? get() = Rarity.fromItem(asImmutableItemStack())
private var itemStack_: ItemStack? = null
@@ -364,6 +366,7 @@ data class SBItemStack constructor(
group("power").toInt()
} ?: 0
+ @ExpensiveItemCacheApi
private val itemStack: ItemStack
get() {
val itemStack = itemStack_ ?: run {
@@ -437,15 +440,18 @@ data class SBItemStack constructor(
return false
}
+ @OptIn(ExpensiveItemCacheApi::class)
fun asLazyImmutableItemStack(): ItemStack? {
if (isWarm()) return asImmutableItemStack()
return null
}
- fun asImmutableItemStack(): ItemStack {
+ @ExpensiveItemCacheApi
+ fun asImmutableItemStack(): ItemStack { // TODO: add a "or fallback to painting" option to asLazyImmutableItemStack to be used in more places.
return itemStack
}
+ @ExpensiveItemCacheApi
fun asCopiedItemStack(): ItemStack {
return itemStack.copy()
}