aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util/GT_Recipe.java
diff options
context:
space:
mode:
authorRaven Szewczyk <git@eigenraven.me>2024-08-23 19:56:23 +0100
committerGitHub <noreply@github.com>2024-08-23 18:56:23 +0000
commit13e40e3154b4d9de38dcac14638dac54f82b2098 (patch)
tree5fca641544f51a0b0662a5f3ed85e3658d7e4573 /src/main/java/gregtech/api/util/GT_Recipe.java
parent59f7b8c34641851010999dc31f59f996a5e7a3ff (diff)
downloadGT5-Unofficial-13e40e3154b4d9de38dcac14638dac54f82b2098.tar.gz
GT5-Unofficial-13e40e3154b4d9de38dcac14638dac54f82b2098.tar.bz2
GT5-Unofficial-13e40e3154b4d9de38dcac14638dac54f82b2098.zip
Fix recipes broken in the optimization pr (#2948)
Diffstat (limited to 'src/main/java/gregtech/api/util/GT_Recipe.java')
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index 71eab4163a..53d237096c 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -32,6 +32,7 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_MultiInput;
import gregtech.api.objects.GT_ItemStack;
+import gregtech.api.objects.ItemData;
import gregtech.api.recipe.RecipeCategory;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
@@ -173,6 +174,17 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
public boolean matchesType(final ItemStack other) {
return GT_Utility.areStacksEqual(this.unifiedStack, other, !usesNbtMatching);
}
+
+ /**
+ * @return True if the given input+oredict data for that input can be used as a valid recipe ingredient.
+ */
+ public boolean matchesRecipe(final ItemData oredictOther, final ItemStack other) {
+ if (usesNbtMatching) {
+ return GT_Utility.areStacksEqual(this.unifiedStack, other, false);
+ } else {
+ return GT_OreDictUnificator.isInputStackEqual(other, oredictOther, unifiedStack);
+ }
+ }
}
private GT_Recipe(GT_Recipe aRecipe, boolean shallow) {
@@ -552,9 +564,9 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
return;
}
- final ItemStack[] unifiedProvidedInputs = new ItemStack[aInputs.length];
+ final ItemData[] unifiedProvidedInputs = new ItemData[aInputs.length];
for (int i = 0; i < aInputs.length; i++) {
- unifiedProvidedInputs[i] = GT_OreDictUnificator.get_nocopy(true, aInputs[i]);
+ unifiedProvidedInputs[i] = GT_OreDictUnificator.getAssociation(aInputs[i]);
}
final @NotNull RecipeItemInput @NotNull [] combinedInputs = getCachedCombinedItemInputs();
@@ -567,8 +579,8 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
continue;
}
- final ItemStack providedUnifiedItem = unifiedProvidedInputs[iProvided];
- if (!recipeItemCost.matchesType(providedUnifiedItem)) {
+ final ItemData providedUnifiedItem = unifiedProvidedInputs[iProvided];
+ if (!recipeItemCost.matchesRecipe(providedUnifiedItem, providedItem)) {
continue;
}
@@ -628,9 +640,9 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
// Fewer item types provided than required by the recipe, making it impossible to satisfy.
return 0;
}
- final ItemStack[] unifiedProvidedInputs = new ItemStack[aInputs.length];
+ final ItemData[] unifiedProvidedInputs = new ItemData[aInputs.length];
for (int i = 0; i < aInputs.length; i++) {
- unifiedProvidedInputs[i] = GT_OreDictUnificator.get_nocopy(true, aInputs[i]);
+ unifiedProvidedInputs[i] = GT_OreDictUnificator.getAssociation(aInputs[i]);
}
recipeItemLoop: for (final RecipeItemInput combinedInput : combinedInputs) {
@@ -638,9 +650,9 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
long providedAmount = 0;
for (int i = 0; i < unifiedProvidedInputs.length; i++) {
- final ItemStack providedUnifiedItem = unifiedProvidedInputs[i];
+ final ItemData providedUnifiedItem = unifiedProvidedInputs[i];
final ItemStack providedItem = aInputs[i];
- if (!combinedInput.matchesType(providedUnifiedItem)) {
+ if (!combinedInput.matchesRecipe(providedUnifiedItem, providedItem)) {
continue;
}