diff options
Diffstat (limited to 'src/Java/miscutil/gregtech/api/objects')
-rw-r--r-- | src/Java/miscutil/gregtech/api/objects/GregtechItemData.java | 131 | ||||
-rw-r--r-- | src/Java/miscutil/gregtech/api/objects/GregtechMaterialStack.java | 42 |
2 files changed, 42 insertions, 131 deletions
diff --git a/src/Java/miscutil/gregtech/api/objects/GregtechItemData.java b/src/Java/miscutil/gregtech/api/objects/GregtechItemData.java deleted file mode 100644 index 1a0351a00f..0000000000 --- a/src/Java/miscutil/gregtech/api/objects/GregtechItemData.java +++ /dev/null @@ -1,131 +0,0 @@ -package miscutil.gregtech.api.objects; - -import gregtech.api.enums.Materials; -import gregtech.api.objects.GT_ArrayList; -import gregtech.api.objects.MaterialStack; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import miscutil.gregtech.api.enums.GregtechOrePrefixes; -import net.minecraft.item.ItemStack; - -public class GregtechItemData { - private static final MaterialStack[] EMPTY_MATERIALSTACK_ARRAY = new MaterialStack[0]; - - public final List<Object> mExtraData = new GT_ArrayList<Object>(false, 1); - public final GregtechOrePrefixes mPrefix; - public final MaterialStack mMaterial; - public final MaterialStack[] mByProducts; - public boolean mBlackListed = false; - public ItemStack mUnificationTarget = null; - - public GregtechItemData(GregtechOrePrefixes aPrefix, Materials aMaterial, boolean aBlackListed) { - mPrefix = aPrefix; - mMaterial = aMaterial == null ? null : new MaterialStack(aMaterial, aPrefix.mMaterialAmount); - mBlackListed = aBlackListed; - mByProducts = aPrefix.mSecondaryMaterial == null || aPrefix.mSecondaryMaterial.mMaterial == null ? EMPTY_MATERIALSTACK_ARRAY : new MaterialStack[]{aPrefix.mSecondaryMaterial.clone()}; - } - - public GregtechItemData(GregtechOrePrefixes aPrefix, Materials aMaterial) { - this(aPrefix, aMaterial, false); - } - - public GregtechItemData(MaterialStack aMaterial, MaterialStack... aByProducts) { - mPrefix = null; - mMaterial = aMaterial.mMaterial == null ? null : aMaterial.clone(); - mBlackListed = true; - if (aByProducts == null) { - mByProducts = EMPTY_MATERIALSTACK_ARRAY; - } else { - MaterialStack[] tByProducts = aByProducts.length < 1 ? EMPTY_MATERIALSTACK_ARRAY : new MaterialStack[aByProducts.length]; - int j = 0; - for (int i = 0; i < aByProducts.length; i++) - if (aByProducts[i] != null && aByProducts[i].mMaterial != null) - tByProducts[j++] = aByProducts[i].clone(); - mByProducts = j > 0 ? new MaterialStack[j] : EMPTY_MATERIALSTACK_ARRAY; - for (int i = 0; i < mByProducts.length; i++) mByProducts[i] = tByProducts[i]; - } - } - - public GregtechItemData(Materials aMaterial, long aAmount, MaterialStack... aByProducts) { - this(new MaterialStack(aMaterial, aAmount), aByProducts); - } - - public GregtechItemData(Materials aMaterial, long aAmount, Materials aByProduct, long aByProductAmount) { - this(new MaterialStack(aMaterial, aAmount), new MaterialStack(aByProduct, aByProductAmount)); - } - - public GregtechItemData(GregtechItemData... aData) { - mPrefix = null; - mBlackListed = true; - - ArrayList<MaterialStack> aList = new ArrayList<MaterialStack>(), rList = new ArrayList<MaterialStack>(); - - for (GregtechItemData tData : aData) - if (tData != null) { - if (tData.hasValidMaterialData() && tData.mMaterial.mAmount > 0) aList.add(tData.mMaterial.clone()); - for (MaterialStack tMaterial : tData.mByProducts) - if (tMaterial.mAmount > 0) aList.add(tMaterial.clone()); - } - - for (MaterialStack aMaterial : aList) { - boolean temp = true; - for (MaterialStack tMaterial : rList) - if (aMaterial.mMaterial == tMaterial.mMaterial) { - tMaterial.mAmount += aMaterial.mAmount; - temp = false; - break; - } - if (temp) rList.add(aMaterial.clone()); - } - - Collections.sort(rList, new Comparator<MaterialStack>() { - @Override - public int compare(MaterialStack a, MaterialStack b) { - return a.mAmount == b.mAmount ? 0 : a.mAmount > b.mAmount ? -1 : +1; - } - }); - - if (rList.isEmpty()) { - mMaterial = null; - } else { - mMaterial = rList.get(0); - rList.remove(0); - } - - mByProducts = rList.toArray(new MaterialStack[rList.size()]); - } - - public boolean hasValidPrefixMaterialData() { - return mPrefix != null && mMaterial != null && mMaterial.mMaterial != null; - } - - public boolean hasValidPrefixData() { - return mPrefix != null; - } - - public boolean hasValidMaterialData() { - return mMaterial != null && mMaterial.mMaterial != null; - } - - public ArrayList<MaterialStack> getAllMaterialStacks() { - ArrayList<MaterialStack> rList = new ArrayList(); - if (hasValidMaterialData()) rList.add(mMaterial); - rList.addAll(Arrays.asList(mByProducts)); - return rList; - } - - public MaterialStack getByProduct(int aIndex) { - return aIndex >= 0 && aIndex < mByProducts.length ? mByProducts[aIndex] : null; - } - - @Override - public String toString() { - if (mPrefix == null || mMaterial == null || mMaterial.mMaterial == null) return ""; - return mPrefix.name() + mMaterial.mMaterial.name(); - } -}
\ No newline at end of file diff --git a/src/Java/miscutil/gregtech/api/objects/GregtechMaterialStack.java b/src/Java/miscutil/gregtech/api/objects/GregtechMaterialStack.java new file mode 100644 index 0000000000..936689de97 --- /dev/null +++ b/src/Java/miscutil/gregtech/api/objects/GregtechMaterialStack.java @@ -0,0 +1,42 @@ +package miscutil.gregtech.api.objects; + +import miscutil.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; + +public class GregtechMaterialStack implements Cloneable { + public long mAmount; + public GT_Materials mMaterial; + + public GregtechMaterialStack(GT_Materials aMaterial, long aAmount) { + mMaterial = aMaterial == null ? GT_Materials._NULL : aMaterial; + mAmount = aAmount; + } + + public GregtechMaterialStack copy(long aAmount) { + return new GregtechMaterialStack(mMaterial, aAmount); + } + + @Override + public GregtechMaterialStack clone() { + return new GregtechMaterialStack(mMaterial, mAmount); + } + + @Override + public boolean equals(Object aObject) { + if (aObject == this) return true; + if (aObject == null) return false; + if (aObject instanceof GT_Materials) return aObject == mMaterial; + if (aObject instanceof GregtechMaterialStack) + return ((GregtechMaterialStack) aObject).mMaterial == mMaterial && (mAmount < 0 || ((GregtechMaterialStack) aObject).mAmount < 0 || ((GregtechMaterialStack) aObject).mAmount == mAmount); + return false; + } + + @Override + public String toString() { + return (mMaterial.mMaterialList.size() > 1 && mAmount > 1 ? "(" : "") + mMaterial.getToolTip(true) + (mMaterial.mMaterialList.size() > 1 && mAmount > 1 ? ")" : "") + (mAmount > 1 ? mAmount : ""); + } + + @Override + public int hashCode() { + return mMaterial.hashCode(); + } +}
\ No newline at end of file |