aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/objects
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/objects')
-rw-r--r--src/main/java/gregtech/api/objects/GT_ArrayList.java11
-rw-r--r--src/main/java/gregtech/api/objects/GT_ItemStack2.java38
2 files changed, 43 insertions, 6 deletions
diff --git a/src/main/java/gregtech/api/objects/GT_ArrayList.java b/src/main/java/gregtech/api/objects/GT_ArrayList.java
index 8c491e86c4..a9efd8d0a0 100644
--- a/src/main/java/gregtech/api/objects/GT_ArrayList.java
+++ b/src/main/java/gregtech/api/objects/GT_ArrayList.java
@@ -1,8 +1,11 @@
package gregtech.api.objects;
+import com.google.common.collect.Collections2;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Objects;
public class GT_ArrayList<E> extends ArrayList<E> {
private static final long serialVersionUID = 1L;
@@ -46,15 +49,11 @@ public class GT_ArrayList<E> extends ArrayList<E> {
@Override
public boolean addAll(Collection<? extends E> aList) {
- boolean rReturn = super.addAll(aList);
- if (!mAllowNulls) {size_sS=size(); for (int i = 0; i < size_sS; i++) if (get(i) == null) {remove(i--);size_sS=size();}}
- return rReturn;
+ return super.addAll(Collections2.filter(aList, Objects::nonNull));
}
@Override
public boolean addAll(int aIndex, Collection<? extends E> aList) {
- boolean rReturn = super.addAll(aIndex, aList);
- if (!mAllowNulls) {size_sS=size(); for (int i = 0; i < size_sS; i++) if (get(i) == null) {remove(i--);size_sS=size();}}
- return rReturn;
+ return super.addAll(aIndex, Collections2.filter(aList, Objects::nonNull));
}
}
diff --git a/src/main/java/gregtech/api/objects/GT_ItemStack2.java b/src/main/java/gregtech/api/objects/GT_ItemStack2.java
new file mode 100644
index 0000000000..93f2da6d6b
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/GT_ItemStack2.java
@@ -0,0 +1,38 @@
+package gregtech.api.objects;
+
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+/**
+ * GT_ItemStack, but with a better hashCode(). Due to this change, it should not be placed in the same hash based
+ * data structure with GT_ItemStack. It also shouldn't be used to construct search query into a hash based data structure
+ * that contains GT_ItemStack.
+ */
+public class GT_ItemStack2 extends GT_ItemStack {
+
+ public GT_ItemStack2(Item aItem, long aStackSize, long aMetaData) {
+ super(aItem, aStackSize, aMetaData);
+ }
+
+ public GT_ItemStack2(ItemStack aStack) {
+ super(aStack);
+ }
+
+ public GT_ItemStack2(ItemStack aStack, boolean wildcard) {
+ super(aStack, wildcard);
+ }
+
+ @Override
+ public boolean equals(Object aStack) {
+ if (aStack == this) return true;
+ if (aStack instanceof GT_ItemStack) {
+ return ((GT_ItemStack) aStack).mItem == mItem && ((GT_ItemStack) aStack).mMetaData == mMetaData;
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return mItem.hashCode() * 38197 + mMetaData;
+ }
+}