aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gregtech/api/util/GasSpargingRecipe.java
blob: 1b21a3fab265ea06de6343de793fc0c1f447b771 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package gregtech.api.util;

import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;

public class GasSpargingRecipe implements Comparable<GasSpargingRecipe> {

	public final FluidStack mInputGas;
	public final int[] mMaxOutputQuantity;
	public final FluidStack[] mFluidInputs;
	public final FluidStack[] mFluidOutputs;
	public final ItemStack[] mInputs;
	public final ItemStack[] mOutputs;

	public GasSpargingRecipe(FluidStack aSpargeGas, FluidStack[] aOutputs, int[] aMaxOutputQuantity) {
		mInputGas = aSpargeGas;
		mFluidInputs = new FluidStack[] {mInputGas};
		mFluidOutputs = aOutputs;
		mMaxOutputQuantity = aMaxOutputQuantity;
		mInputs = new ItemStack[] {GT_Utility.getFluidDisplayStack(mFluidInputs[0], true)};
		mOutputs = new ItemStack[mFluidOutputs.length];
		for (int i=0; i<mFluidOutputs.length;i++) {
			mOutputs[i] = GT_Utility.getFluidDisplayStack(mFluidOutputs[i], true);
		}
	}

	@Override
	public boolean equals(Object o) {
		if (o instanceof GasSpargingRecipe) {
			GasSpargingRecipe i = (GasSpargingRecipe) o;
			this.mInputGas.equals(i.mInputGas);
		}
		return false;
	}

	public int getMaxOutput(final int aIndex) {
		if ((aIndex < 0) || (aIndex >= this.mMaxOutputQuantity.length)) {
			return 10000;
		}
		return this.mMaxOutputQuantity[aIndex];
	}

	public boolean isValid() {
		if (mInputGas == null || mInputGas.amount <= 0 ||
				mFluidOutputs == null || mFluidOutputs.length < 1 ||
				mMaxOutputQuantity == null || mMaxOutputQuantity.length < 1 ||
				mFluidOutputs.length != mMaxOutputQuantity.length) {
			return false;
		}
		return true;
	}

	@Override
	public int compareTo(GasSpargingRecipe o) {
		if (o.mFluidOutputs.length > this.mFluidOutputs.length) {
			return 1;
		} else if (o.mFluidOutputs.length == this.mFluidOutputs.length) {
			return 0;
		} else {
			return -1;
		}
	}

}