aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDream-Master <dream-master@gmx.net>2018-09-14 09:03:48 +0200
committerDream-Master <dream-master@gmx.net>2018-09-14 09:03:48 +0200
commit04388effe7698fe9dcead3e00ec960cf781d77c0 (patch)
treecf5be8c7d0b6de80b2ded4a97f418d3bb23232d9
parenta1005e38d3dccf4ff5379974f43e44c5fa14c098 (diff)
parent08ccb2df5222870e3a12fc8df7e8fc594ca71902 (diff)
downloadGT5-Unofficial-04388effe7698fe9dcead3e00ec960cf781d77c0.tar.gz
GT5-Unofficial-04388effe7698fe9dcead3e00ec960cf781d77c0.tar.bz2
GT5-Unofficial-04388effe7698fe9dcead3e00ec960cf781d77c0.zip
Merge branch 'experimental' into GT_Bees_dev
-rw-r--r--src/main/java/gregtech/api/enums/OrePrefixes.java52
1 files changed, 32 insertions, 20 deletions
diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java
index 72f04dd7c9..ff76ed74ad 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),
@@ -861,39 +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<String, ObjMap<Integer, Boolean>>mCachedResults = new LinkedHashMap<String, ObjMap<Integer, Boolean>>();
-
+
+ private ObjMap<Integer, Boolean> getSet(final String prefix) {
+ ObjMap<Integer, Boolean> foundSet = mCachedResults.get(prefix);
+ if (foundSet == null){
+ foundSet = new ObjMap<Integer, Boolean>(512, 0.5f);
+ mCachedResults.put(prefix, foundSet);
+ }
+
+ return foundSet;
+ }
+
public boolean contains(ItemStack aStack) {
- if (aStack == null){
+ if (aStack == null) {
return false;
}
- ObjMap<Integer, Boolean> aCurrentSet;
- if (mCachedResults.get(this.toString()) != null){
- aCurrentSet = mCachedResults.get(this.toString());
- }
- else {
- aCurrentSet = new ObjMap<Integer, Boolean>((mPrefixedItems != null && mPrefixedItems.size() > 0 ? mPrefixedItems.size() : 1000), 0.5f);
- mCachedResults.put(this.toString(), aCurrentSet);
- }
+ final ObjMap<Integer, Boolean> aCurrentSet = getSet(this.toString().toUpperCase());
+ final Boolean result = aCurrentSet.get(Objects.hashCode(aStack.getItem(), aStack.getItemDamage()));
- if (aCurrentSet.get(aStack.hashCode()) != null){
- return aCurrentSet.get(aStack.hashCode());
+ if (result != null) {
+ return result;
}
- else {
- for (ItemStack tStack : mPrefixedItems){
- if (GT_Utility.areStacksEqual(aStack, tStack, !tStack.hasTagCompound())){
- aCurrentSet.put(aStack.hashCode(), 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(aStack.hashCode(), false);
return false;
}