From be02120be30d80c817b763902d8d71441c71381a Mon Sep 17 00:00:00 2001 From: Richard Hendricks Date: Mon, 10 Sep 2018 20:18:20 -0500 Subject: Trying Alkalus fix, compile problem with hashCode. --- src/main/java/gregtech/api/enums/OrePrefixes.java | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java index 72f04dd7c9..434acc0f59 100644 --- a/src/main/java/gregtech/api/enums/OrePrefixes.java +++ b/src/main/java/gregtech/api/enums/OrePrefixes.java @@ -867,33 +867,32 @@ public enum OrePrefixes { } private static final LinkedHashMap>mCachedResults = new LinkedHashMap>(); - + public boolean contains(ItemStack aStack) { if (aStack == null){ return false; } - ObjMap aCurrentSet; - if (mCachedResults.get(this.toString()) != null){ - aCurrentSet = mCachedResults.get(this.toString()); - } - else { + ObjMap aCurrentSet = mCachedResults.get(this.toString().toUpperCase()); + if (aCurrentSet == null){ aCurrentSet = new ObjMap((mPrefixedItems != null && mPrefixedItems.size() > 0 ? mPrefixedItems.size() : 1000), 0.5f); - mCachedResults.put(this.toString(), aCurrentSet); + mCachedResults.put(this.toString().toUpperCase(), aCurrentSet); } - if (aCurrentSet.get(aStack.hashCode()) != null){ - return aCurrentSet.get(aStack.hashCode()); + int mainHash = Objects.hashCode(aStack.getItem(), aStack.getItemDamage()); + Boolean result = aCurrentSet.get(mainHash); + if (result != null){ + return result; } else { for (ItemStack tStack : mPrefixedItems){ if (GT_Utility.areStacksEqual(aStack, tStack, !tStack.hasTagCompound())){ - aCurrentSet.put(aStack.hashCode(), true); + aCurrentSet.put(Objects.hashCode(tStack.getItem(), tStack.getItemDamage()), true); return true; } } } - aCurrentSet.put(aStack.hashCode(), false); + aCurrentSet.put(mainHash, false); return false; } -- cgit From f63eb6f7b8f2ba691c6a1647c1ba2e142a10196f Mon Sep 17 00:00:00 2001 From: Richard Hendricks Date: Mon, 10 Sep 2018 22:29:14 -0500 Subject: Proper import for Objects. --- src/main/java/gregtech/api/enums/OrePrefixes.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java index 434acc0f59..31d3046bdb 100644 --- a/src/main/java/gregtech/api/enums/OrePrefixes.java +++ b/src/main/java/gregtech/api/enums/OrePrefixes.java @@ -18,6 +18,8 @@ import java.util.*; import static gregtech.api.enums.GT_Values.*; +import com.google.common.base.Objects; + public enum OrePrefixes { @Deprecated pulp("Pulps", "", "", false, false, false, false, false, false, false, false, false, false, B[0] | B[1] | B[2] | B[3], -1, 64, -1), @Deprecated leaves("Leaves", "", "", false, false, false, false, false, false, false, false, false, false, 0, -1, 64, -1), -- cgit From 2428704239a1ab7ed29490d0d30ce7231d428b94 Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Mon, 10 Sep 2018 23:34:34 -0700 Subject: Fix caching --- src/main/java/gregtech/api/enums/OrePrefixes.java | 45 ++++++++++++++--------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java index 31d3046bdb..ff76ed74ad 100644 --- a/src/main/java/gregtech/api/enums/OrePrefixes.java +++ b/src/main/java/gregtech/api/enums/OrePrefixes.java @@ -863,38 +863,49 @@ public enum OrePrefixes { public boolean add(ItemStack aStack) { if (aStack == null) return false; - if (!contains(aStack)) mPrefixedItems.add(aStack); + if (!contains(aStack)) { + mPrefixedItems.add(aStack); + // It's now in there... so update the cache + getSet(this.toString().toUpperCase()).put(Objects.hashCode(aStack.getItem(), aStack.getItemDamage()), true); + } while (mPrefixedItems.contains(null)) mPrefixedItems.remove(null); return true; } private static final LinkedHashMap>mCachedResults = new LinkedHashMap>(); + private ObjMap getSet(final String prefix) { + ObjMap foundSet = mCachedResults.get(prefix); + if (foundSet == null){ + foundSet = new ObjMap(512, 0.5f); + mCachedResults.put(prefix, foundSet); + } + + return foundSet; + } + public boolean contains(ItemStack aStack) { - if (aStack == null){ + if (aStack == null) { return false; } - ObjMap aCurrentSet = mCachedResults.get(this.toString().toUpperCase()); - if (aCurrentSet == null){ - aCurrentSet = new ObjMap((mPrefixedItems != null && mPrefixedItems.size() > 0 ? mPrefixedItems.size() : 1000), 0.5f); - mCachedResults.put(this.toString().toUpperCase(), aCurrentSet); - } + final ObjMap aCurrentSet = getSet(this.toString().toUpperCase()); + final Boolean result = aCurrentSet.get(Objects.hashCode(aStack.getItem(), aStack.getItemDamage())); - int mainHash = Objects.hashCode(aStack.getItem(), aStack.getItemDamage()); - Boolean result = aCurrentSet.get(mainHash); - if (result != null){ + if (result != null) { return result; } - else { - for (ItemStack tStack : mPrefixedItems){ - if (GT_Utility.areStacksEqual(aStack, tStack, !tStack.hasTagCompound())){ - aCurrentSet.put(Objects.hashCode(tStack.getItem(), tStack.getItemDamage()), true); - return true; - } + + return false; + } + + public boolean containsUnCached(ItemStack aStack) { + // In case someone needs this + for (ItemStack tStack : mPrefixedItems){ + if (GT_Utility.areStacksEqual(aStack, tStack, !tStack.hasTagCompound())){ + return true; } } - aCurrentSet.put(mainHash, false); return false; } -- cgit