diff options
Diffstat (limited to 'src/main/java/gregtech/api/objects/GT_ItemStack.java')
-rw-r--r-- | src/main/java/gregtech/api/objects/GT_ItemStack.java | 52 |
1 files changed, 52 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..8881d276c8 --- /dev/null +++ b/src/main/java/gregtech/api/objects/GT_ItemStack.java @@ -0,0 +1,52 @@ +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 |