aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/objects/GT_ItemStack.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/objects/GT_ItemStack.java')
-rw-r--r--src/main/java/gregtech/api/objects/GT_ItemStack.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/objects/GT_ItemStack.java b/src/main/java/gregtech/api/objects/GT_ItemStack.java
new file mode 100644
index 0000000000..f865b348a0
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/GT_ItemStack.java
@@ -0,0 +1,53 @@
+package gregtech.api.objects;
+
+import gregtech.api.util.GT_Utility;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+public class GT_ItemStack {
+ public final Item mItem;
+ public final byte mStackSize;
+ public final short mMetaData;
+
+ public GT_ItemStack(Item aItem, long aStackSize, long aMetaData) {
+ mItem = aItem;
+ mStackSize = (byte) aStackSize;
+ mMetaData = (short) aMetaData;
+ }
+
+ public GT_ItemStack(ItemStack aStack) {
+ this(aStack == null ? null : aStack.getItem(), aStack == null ? 0 : aStack.stackSize, aStack == null ? 0 : Items.feather.getDamage(aStack));
+ }
+
+ public GT_ItemStack(int aHashCode) {
+ this(GT_Utility.intToStack(aHashCode));
+ }
+
+ public ItemStack toStack() {
+ if (mItem == null) return null;
+ return new ItemStack(mItem, 1, mMetaData);
+ }
+
+ public boolean isStackEqual(ItemStack aStack) {
+ return GT_Utility.areStacksEqual(toStack(), aStack);
+ }
+
+ public boolean isStackEqual(GT_ItemStack aStack) {
+ return GT_Utility.areStacksEqual(toStack(), aStack.toStack());
+ }
+
+ @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 GT_Utility.stackToInt(toStack());
+ }
+} \ No newline at end of file