fix: Missing cache for custom item models causing lags

This commit is contained in:
Linnea Gräf
2025-01-12 14:53:29 +01:00
parent 4562d294bb
commit f828a6c9ec
3 changed files with 12 additions and 6 deletions

View File

@@ -1,7 +1,10 @@
package moe.nea.firmament.events
import java.util.Optional
import kotlin.jvm.optionals.getOrNull
import net.minecraft.item.ItemStack
import net.minecraft.util.Identifier
import moe.nea.firmament.util.collections.WeakCache
// TODO: assert an order on these events
data class CustomItemModelEvent(
@@ -9,11 +12,17 @@ data class CustomItemModelEvent(
var overrideModel: Identifier? = null,
) : FirmamentEvent() {
companion object : FirmamentEventBus<CustomItemModelEvent>() {
val cache = WeakCache.memoize("ItemModelIdentifier", ::getModelIdentifier0)
@JvmStatic
fun getModelIdentifier(itemStack: ItemStack?): Identifier? {
// TODO: Re-add memoization and add an error / warning if the model does not exist
if (itemStack == null) return null
return publish(CustomItemModelEvent(itemStack)).overrideModel
return cache.invoke(itemStack).getOrNull()
}
fun getModelIdentifier0(itemStack: ItemStack): Optional<Identifier> {
// TODO: add an error / warning if the model does not exist
return Optional.ofNullable(publish(CustomItemModelEvent(itemStack)).overrideModel)
}
}