aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/objects/MaterialStack.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/objects/MaterialStack.java')
-rw-r--r--src/main/java/gregtech/api/objects/MaterialStack.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/objects/MaterialStack.java b/src/main/java/gregtech/api/objects/MaterialStack.java
new file mode 100644
index 0000000000..0a433e0d99
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/MaterialStack.java
@@ -0,0 +1,70 @@
+package gregtech.api.objects;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.util.GT_Utility;
+
+public class MaterialStack implements Cloneable {
+
+ public long mAmount;
+ public Materials mMaterial;
+
+ public MaterialStack(Materials aMaterial, long aAmount) {
+ mMaterial = aMaterial == null ? Materials._NULL : aMaterial;
+ mAmount = aAmount;
+ }
+
+ public MaterialStack copy(long aAmount) {
+ return new MaterialStack(mMaterial, aAmount);
+ }
+
+ @Override
+ public MaterialStack clone() {
+ try {
+ return (MaterialStack) super.clone();
+ } catch (Exception e) {
+ return new MaterialStack(mMaterial, mAmount);
+ }
+ }
+
+ @Override
+ public boolean equals(Object aObject) {
+ if (aObject == this) return true;
+ if (aObject == null) return false;
+ if (aObject instanceof Materials) return aObject == mMaterial;
+ if (aObject instanceof MaterialStack) return ((MaterialStack) aObject).mMaterial == mMaterial
+ && (mAmount < 0 || ((MaterialStack) aObject).mAmount < 0 || ((MaterialStack) aObject).mAmount == mAmount);
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toString(false);
+ }
+
+ public String toString(boolean single) {
+ String temp1 = "", temp2 = mMaterial.getToolTip(true), temp3 = "", temp4 = "";
+ if (mAmount > 1) {
+ temp4 = GT_Utility.toSubscript(mAmount);
+ }
+ if ((!single || mAmount > 1) && isMaterialListComplex(this)) {
+ temp1 = "(";
+ temp3 = ")";
+ }
+ return temp1 + temp2 + temp3 + temp4;
+ }
+
+ private boolean isMaterialListComplex(MaterialStack materialStack) {
+ if (materialStack.mMaterial.mMaterialList.size() > 1) {
+ return true;
+ }
+ if (materialStack.mMaterial.mMaterialList.size() == 0) {
+ return false;
+ }
+ return isMaterialListComplex(materialStack.mMaterial.mMaterialList.get(0));
+ }
+
+ @Override
+ public int hashCode() {
+ return mMaterial.hashCode();
+ }
+}