aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util
diff options
context:
space:
mode:
authorDream-Master <dream-master@gmx.net>2016-06-21 21:36:03 +0200
committerDream-Master <dream-master@gmx.net>2016-06-21 21:36:03 +0200
commite29201f753ba631b235d1351e4f2bd5264d5264c (patch)
tree1928b00e4faf305027bf807e8e9ab7ccc583614f /src/main/java/gregtech/api/util
parenta88d9c4e72adc5b5063398af39c5c80817623cb5 (diff)
downloadGT5-Unofficial-e29201f753ba631b235d1351e4f2bd5264d5264c.tar.gz
GT5-Unofficial-e29201f753ba631b235d1351e4f2bd5264d5264c.tar.bz2
GT5-Unofficial-e29201f753ba631b235d1351e4f2bd5264d5264c.zip
new files from gt pull requests
Diffstat (limited to 'src/main/java/gregtech/api/util')
-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
+}