From 3d8da1877afce737c7c924c0da80470247b927a7 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Thu, 29 Dec 2022 03:32:18 +0100 Subject: optimize CheckRenderEntityEvent and RenderItemTipEvent --- .../java/at/hannibal2/skyhanni/data/ItemTipHelper.kt | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/data') diff --git a/src/main/java/at/hannibal2/skyhanni/data/ItemTipHelper.kt b/src/main/java/at/hannibal2/skyhanni/data/ItemTipHelper.kt index 384b0546d..67a4e1cab 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/ItemTipHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/ItemTipHelper.kt @@ -5,6 +5,7 @@ import at.hannibal2.skyhanni.events.GuiRenderItemEvent import at.hannibal2.skyhanni.events.RenderInventoryItemTipEvent import at.hannibal2.skyhanni.events.RenderItemTipEvent import at.hannibal2.skyhanni.mixins.transformers.gui.AccessorGuiContainer +import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.LorenzUtils import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiChest @@ -14,14 +15,26 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class ItemTipHelper { + private val lastColorCacheTime = HashMap() + private val cache = HashMap() + @SubscribeEvent fun onRenderItemOverlayPost(event: GuiRenderItemEvent.RenderOverlayEvent.Post) { val stack = event.stack ?: return if (!LorenzUtils.inSkyblock || stack.stackSize != 1) return - val itemTipEvent = RenderItemTipEvent(stack) - itemTipEvent.postAndCatch() - val stackTip = itemTipEvent.stackTip + val uuid = stack.getLore().joinToString { ", " } + val stackTip: String + if (lastColorCacheTime.getOrDefault(uuid, 0L) + 1000 > System.currentTimeMillis()) { + stackTip = cache[uuid]!! + } else { + val itemTipEvent = RenderItemTipEvent(stack) + itemTipEvent.postAndCatch() + stackTip = itemTipEvent.stackTip + cache[uuid] = stackTip + lastColorCacheTime[uuid] = System.currentTimeMillis() + } + if (stackTip.isEmpty()) return GlStateManager.disableLighting() -- cgit