diff options
author | Dream-Master <dream-master@gmx.net> | 2018-09-14 09:03:48 +0200 |
---|---|---|
committer | Dream-Master <dream-master@gmx.net> | 2018-09-14 09:03:48 +0200 |
commit | 04388effe7698fe9dcead3e00ec960cf781d77c0 (patch) | |
tree | cf5be8c7d0b6de80b2ded4a97f418d3bb23232d9 | |
parent | a1005e38d3dccf4ff5379974f43e44c5fa14c098 (diff) | |
parent | 08ccb2df5222870e3a12fc8df7e8fc594ca71902 (diff) | |
download | GT5-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.java | 52 |
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;
}
|