aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLogan Perkins <perkins@github.alestan.publicvm.com>2016-06-12 10:41:52 -0700
committerGitHub <noreply@github.com>2016-06-12 10:41:52 -0700
commit54ae577be0c9705fddd29836a5fdca58c89e6c50 (patch)
tree8537cd8f63ac35095473cc86e5ae839694494ad2 /src
parentc596231af4020af855cbe44dd0aaf906931b62c3 (diff)
downloadGT5-Unofficial-54ae577be0c9705fddd29836a5fdca58c89e6c50.tar.gz
GT5-Unofficial-54ae577be0c9705fddd29836a5fdca58c89e6c50.tar.bz2
GT5-Unofficial-54ae577be0c9705fddd29836a5fdca58c89e6c50.zip
Make recipe input work for split stacks
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java85
1 files changed, 65 insertions, 20 deletions
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index 71b0019980..0b03d19999 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -317,57 +317,102 @@ public class GT_Recipe {
public boolean isRecipeInputEqual(boolean aDecreaseStacksizeBySuccess, boolean aDontCheckStackSizes, FluidStack[] aFluidInputs, ItemStack... aInputs) {
if (mFluidInputs.length > 0 && aFluidInputs == null) return false;
+ int amt;
for (FluidStack tFluid : mFluidInputs)
if (tFluid != null) {
boolean temp = true;
+ amt = tFluid.amount;
for (FluidStack aFluid : aFluidInputs)
- if (aFluid != null && aFluid.isFluidEqual(tFluid) && (aDontCheckStackSizes || aFluid.amount >= tFluid.amount)) {
- temp = false;
- break;
+ if (aFluid != null && aFluid.isFluidEqual(tFluid)){
+ if (aDontCheckStackSizes ){
+ temp = false;
+ break;
+ }
+ amt -= aFluid.amount;
+ if (amt<1){
+ temp = false;
+ break;
+ }
}
if (temp) return false;
}
if (mInputs.length > 0 && aInputs == null) return false;
- for (ItemStack tStack : mInputs)
+ for (ItemStack tStack : mInputs) {
if (tStack != null) {
+ amt = tStack.stackSize;
boolean temp = true;
- for (ItemStack aStack : aInputs)
- if ((GT_Utility.areUnificationsEqual(aStack, tStack, true) || GT_Utility.areUnificationsEqual(GT_OreDictUnificator.get(false, aStack), tStack, true)) && (aDontCheckStackSizes || aStack.stackSize >= tStack.stackSize)) {
- temp = false;
- break;
+ for (ItemStack aStack : aInputs) {
+ if ((GT_Utility.areUnificationsEqual(aStack, tStack, true) || GT_Utility.areUnificationsEqual(GT_OreDictUnificator.get(false, aStack), tStack, true))) {
+ if (aDontCheckStackSizes) {
+ temp = false;
+ break;
+ }
+ amt -= aStack.stackSize;
+ if (amt < 1) {
+ temp = false;
+ break;
+ }
}
+ }
if (temp) return false;
}
-
+ }
if (aDecreaseStacksizeBySuccess) {
if (aFluidInputs != null) {
- for (FluidStack tFluid : mFluidInputs)
+ for (FluidStack tFluid : mFluidInputs) {
if (tFluid != null) {
- for (FluidStack aFluid : aFluidInputs)
- if (aFluid != null && aFluid.isFluidEqual(tFluid) && (aDontCheckStackSizes || aFluid.amount >= tFluid.amount)) {
- aFluid.amount -= tFluid.amount;
- break;
+ amt = tFluid.amount;
+ for (FluidStack aFluid : aFluidInputs) {
+ if (aFluid != null && aFluid.isFluidEqual(tFluid)) {
+ if (aDontCheckStackSizes) {
+ aFluid.amount -= amt;
+ break;
+ }
+ if (aFluid.amount < amt) {
+ amt -= aFluid.amount;
+ aFluid.amount = 0;
+ } else {
+ aFluid.amount -= amt;
+ amt = 0;
+ break;
+ }
}
+ }
}
+ }
}
if (aInputs != null) {
- for (ItemStack tStack : mInputs)
+ for (ItemStack tStack : mInputs) {
if (tStack != null) {
- for (ItemStack aStack : aInputs)
- if ((GT_Utility.areUnificationsEqual(aStack, tStack, true) || GT_Utility.areUnificationsEqual(GT_OreDictUnificator.get(false, aStack), tStack, true)) && (aDontCheckStackSizes || aStack.stackSize >= tStack.stackSize)) {
- aStack.stackSize -= tStack.stackSize;
- break;
+ amt = tStack.stackSize;
+ for (ItemStack aStack : aInputs) {
+ if ((GT_Utility.areUnificationsEqual(aStack, tStack, true) || GT_Utility.areUnificationsEqual(GT_OreDictUnificator.get(false, aStack), tStack, true))) {
+ if (aDontCheckStackSizes){
+ aStack.stackSize -= amt;
+ break;
+ }
+ if (aStack.stackSize < amt){
+ amt -= aStack.stackSize;
+ aStack.stackSize = 0;
+ }else{
+ aStack.stackSize -= amt;
+ amt = 0;
+ break;
+ }
}
+ }
}
+ }
}
}
return true;
}
+
public static class GT_Recipe_Map {
/**
* Contains all Recipe Maps
@@ -1272,4 +1317,4 @@ public class GT_Recipe {
return super.containsInput(aFluid) || Dyes.isAnyFluidDye(aFluid);
}
}
-} \ No newline at end of file
+}