fix: Missing cache for custom item models causing lags
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user