From 06295ad17fd561545ee5e3c5f265ca0dd963f8ae Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Thu, 14 Aug 2014 19:59:09 -0500 Subject: [PATCH] Add a simple output cache for the client to prevent constant recipe lookups when showing outputs for recipes. --- items/misc/ItemEncodedPattern.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/items/misc/ItemEncodedPattern.java b/items/misc/ItemEncodedPattern.java index f1a29a632..e560fe9a2 100644 --- a/items/misc/ItemEncodedPattern.java +++ b/items/misc/ItemEncodedPattern.java @@ -2,6 +2,7 @@ package appeng.items.misc; import java.util.EnumSet; import java.util.List; +import java.util.WeakHashMap; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -108,17 +109,25 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt } } + // rather simple client side cacheing. + static WeakHashMap simpleCache = new WeakHashMap(); + public ItemStack getOutput(ItemStack item) { + ICraftingPatternDetails details = simpleCache.get( item ); + if ( details != null ) + return details.getCondencedOutputs()[0].getItemStack(); + World w = CommonHelper.proxy.getWorld(); if ( w == null ) return null; - ICraftingPatternDetails details = getPatternForItem( item, w ); + details = getPatternForItem( item, w ); if ( details == null ) return null; + simpleCache.put( item, details ); return details.getCondencedOutputs()[0].getItemStack(); }