From 82caebbae91969542827702a4da01c0d0fdc8cbe Mon Sep 17 00:00:00 2001 From: miozune Date: Tue, 2 Aug 2022 19:19:19 +0900 Subject: recipe owner adjustments (#162) * recipe owner adjustments * Fix some recipes not being added * Fix typo Co-authored-by: Martin Robertz Former-commit-id: 3dcea1bd3dbc3e2433d9fe59fce5853a7b34c953 --- .../common/loaders/StaticRecipeChangeLoaders.java | 21 ++++-- .../material/GT_Enhancement/LuVTierEnhancer.java | 85 ++++++++++++++-------- .../GT_Enhancement/PlatinumSludgeOverHaul.java | 27 ++++++- .../bartimaeusnek/bartworks/util/BWRecipes.java | 12 ++- 4 files changed, 105 insertions(+), 40 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/StaticRecipeChangeLoaders.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/StaticRecipeChangeLoaders.java index b34818e0bd..4300993943 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/StaticRecipeChangeLoaders.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/StaticRecipeChangeLoaders.java @@ -56,7 +56,6 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -70,8 +69,6 @@ import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.Oganesson; import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.fluids; import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.molten; -import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.*; -import static gregtech.api.enums.GT_Values.MOD_ID_FR; import static gregtech.api.enums.GT_Values.VN; public class StaticRecipeChangeLoaders { @@ -406,7 +403,13 @@ public class StaticRecipeChangeLoaders { if (newGas.contains(GasTag)) { int time = transformEBFGasRecipeTime(recipe, originalGas, newGas); int gasAmount = Math.max(1, (int) Math.round((double) recipe.mFluidInputs[0].amount * gtEbfGasRecipeConsumptionMultipliers.get(newGas))); - toAdd.add(new BWRecipes.DynamicGTRecipe(false, recipe.mInputs, recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, new FluidStack[]{newGas.getGas(gasAmount)}, recipe.mFluidOutputs, time, recipe.mEUt, recipe.mSpecialValue)); + if (recipe.mFluidInputs != null && recipe.mFluidInputs.length == 1 && recipe.mFluidInputs[0].isFluidEqual(newGas.getGas(0))) { + // preserve original recipe owner + toAdd.add(new BWRecipes.DynamicGTRecipe(false, recipe.mInputs, recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, new FluidStack[]{newGas.getGas(gasAmount)}, recipe.mFluidOutputs, time, recipe.mEUt, recipe.mSpecialValue, recipe)); + } else { + // new recipe + toAdd.add(new BWRecipes.DynamicGTRecipe(false, recipe.mInputs, recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, new FluidStack[]{newGas.getGas(gasAmount)}, recipe.mFluidOutputs, time, recipe.mEUt, recipe.mSpecialValue)); + } } } } @@ -416,7 +419,13 @@ public class StaticRecipeChangeLoaders { if (newGas.contains(GasTag)) { int time = transformEBFGasRecipeTime(recipe, originalGas, newGas); int gasAmount = Math.max(1, (int) Math.round((double) recipe.mFluidInputs[0].amount * newGas.getStats().getEbfGasRecipeConsumedAmountMultiplier())); - toAdd.add(new BWRecipes.DynamicGTRecipe(false, recipe.mInputs, recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, new FluidStack[]{new FluidStack(Objects.requireNonNull(fluids.get(newGas)), gasAmount)}, recipe.mFluidOutputs, time, recipe.mEUt, recipe.mSpecialValue)); + if (recipe.mFluidInputs != null && recipe.mFluidInputs.length == 1 && recipe.mFluidInputs[0].isFluidEqual(new FluidStack(Objects.requireNonNull(fluids.get(newGas)), 0))) { + // preserve original recipe owner + toAdd.add(new BWRecipes.DynamicGTRecipe(false, recipe.mInputs, recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, new FluidStack[]{new FluidStack(Objects.requireNonNull(fluids.get(newGas)), gasAmount)}, recipe.mFluidOutputs, time, recipe.mEUt, recipe.mSpecialValue, recipe)); + } else { + // new recipe + toAdd.add(new BWRecipes.DynamicGTRecipe(false, recipe.mInputs, recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, new FluidStack[]{new FluidStack(Objects.requireNonNull(fluids.get(newGas)), gasAmount)}, recipe.mFluidOutputs, time, recipe.mEUt, recipe.mSpecialValue)); + } } } } @@ -433,7 +442,7 @@ public class StaticRecipeChangeLoaders { inputs.add(stack); } inputs.add(GT_Utility.getIntegratedCircuit(circuitConfiguration)); - toAdd.add(new BWRecipes.DynamicGTRecipe(false, inputs.toArray(new ItemStack[0]), recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, null, recipe.mFluidOutputs, transformEBFNoGasRecipeTime(recipe, originalGas), recipe.mEUt, recipe.mSpecialValue)); + toAdd.add(new BWRecipes.DynamicGTRecipe(false, inputs.toArray(new ItemStack[0]), recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, null, recipe.mFluidOutputs, transformEBFNoGasRecipeTime(recipe, originalGas), recipe.mEUt, recipe.mSpecialValue, recipe)); break; } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/LuVTierEnhancer.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/LuVTierEnhancer.java index f5ee1e303a..e1a80035e1 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/LuVTierEnhancer.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/LuVTierEnhancer.java @@ -47,6 +47,7 @@ import java.util.*; import java.util.function.Consumer; import java.util.function.Predicate; +import static com.github.bartimaeusnek.bartworks.MainMod.MOD_ID; import static gregtech.api.enums.OrePrefixes.*; @SuppressWarnings("ALL") @@ -141,7 +142,7 @@ public class LuVTierEnhancer implements Runnable { private static void rewriteCraftingRecipes(List bufferedRecipeList, OrePrefixes[] LuVMaterialsGenerated, Predicate recipeFilter){ for (OrePrefixes prefixes : LuVMaterialsGenerated) { - Consumer recipeAction = obj -> LuVTierEnhancer.doStacksCointainAndReplace(((GT_Shaped_Recipe) obj).getInput(), + Consumer recipeAction = obj -> LuVTierEnhancer.doStacksContainAndReplace(null, ((GT_Shaped_Recipe) obj).getInput(), GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); @@ -151,39 +152,39 @@ public class LuVTierEnhancer implements Runnable { } private static void rewriteMachineRecipes(ItemStack stack, OrePrefixes[] LuVMaterialsGenerated, GT_Recipe recipe) { - if (LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, stack, false)) { + if (LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mInputs, stack, false)) { for (OrePrefixes prefixes : LuVMaterialsGenerated) { - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mOutputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mOutputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); } - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidOutputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mFluidOutputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); } - if (LuVTierEnhancer.doStacksCointainAndReplace(recipe.mOutputs, stack, false)) { + if (LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mOutputs, stack, false)) { for (OrePrefixes prefixes : LuVMaterialsGenerated) { - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mOutputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mOutputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); } - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidOutputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mFluidOutputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); } } private static void rewriteAsslineRecipes(ItemStack stack, OrePrefixes[] LuVMaterialsGenerated, GT_Recipe.GT_Recipe_AssemblyLine recipe){ for (OrePrefixes prefixes : LuVMaterialsGenerated) { - if (LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, stack, false)) { - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - LuVTierEnhancer.doStacksCointainAndReplace(new Object[]{recipe.mOutput}, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + if (LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mInputs, stack, false)) { + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + LuVTierEnhancer.doStacksContainAndReplace(recipe, new Object[]{recipe.mOutput}, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); } - if (LuVTierEnhancer.doStacksCointainAndReplace(new Object[]{recipe.mOutput}, stack, false)) { - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - LuVTierEnhancer.doStacksCointainAndReplace(new Object[]{recipe.mOutput}, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + if (LuVTierEnhancer.doStacksContainAndReplace(recipe, new Object[]{recipe.mOutput}, stack, false)) { + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + LuVTierEnhancer.doStacksContainAndReplace(recipe, new Object[]{recipe.mOutput}, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); } } - if (LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, stack, false)) { - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + if (LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mInputs, stack, false)) { + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); } - if (LuVTierEnhancer.doStacksCointainAndReplace(new Object[]{recipe.mOutput}, stack, false)) { - LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + if (LuVTierEnhancer.doStacksContainAndReplace(recipe, new Object[]{recipe.mOutput}, stack, false)) { + LuVTierEnhancer.doStacksContainAndReplace(recipe, recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); } } @@ -192,7 +193,8 @@ public class LuVTierEnhancer implements Runnable { gt_recipe.mInputs = replaceArrayWith( gt_recipe.mInputs, Materials.Osmiridium, - WerkstoffLoader.Ruridit + WerkstoffLoader.Ruridit, + gt_recipe ); GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes.stream() @@ -201,7 +203,8 @@ public class LuVTierEnhancer implements Runnable { recipe_assemblyLine.mInputs = replaceArrayWith( recipe_assemblyLine.mInputs, Materials.Osmiridium, - WerkstoffLoader.Ruridit + WerkstoffLoader.Ruridit, + recipe_assemblyLine ) ); @@ -225,25 +228,33 @@ public class LuVTierEnhancer implements Runnable { return false; } - private static ItemStack[] replaceArrayWith(ItemStack[] stackArray, Materials source, Werkstoff target) { + private static ItemStack[] replaceArrayWith(ItemStack[] stackArray, Materials source, Werkstoff target, Object recipe) { + boolean replaced = false; for (int i = 0; i < stackArray.length; i++) { ItemStack stack = stackArray[i]; if (!BW_Util.checkStackAndPrefix(stack)) continue; - stackArray[i] = replaceStackWith(stack, source, target); + stackArray[i] = replaceStackWith(stack, source, target, recipe); } return stackArray; } - private static ItemStack replaceStackWith(ItemStack stack, Materials source, Werkstoff target) { + private static ItemStack replaceStackWith(ItemStack stack, Materials source, Werkstoff target, Object recipe) { ItemData ass = GT_OreDictUnificator.getAssociation(stack); - if (ass.mMaterial.mMaterial.equals(source)) - if (target.hasItemType(ass.mPrefix)) + if (ass.mMaterial.mMaterial.equals(source)) { + if (target.hasItemType(ass.mPrefix)) { stack = target.get(ass.mPrefix, stack.stackSize); + if (recipe instanceof GT_Recipe) { + ((GT_Recipe) recipe).setOwner(MOD_ID); + } else if (recipe instanceof GT_Recipe_AssemblyLine) { + // todo: update NEI fake recipe + } + } + } return stack; } - private static boolean doStacksCointainAndReplace(FluidStack[] stacks, FluidStack stack, boolean replace, Fluid... replacement) { + private static boolean doStacksContainAndReplace(Object recipe, FluidStack[] stacks, FluidStack stack, boolean replace, Fluid... replacement) { boolean replaced = false; for (int i = 0; i < stacks.length; i++) { if (GT_Utility.areFluidsEqual(stack, stacks[i])) @@ -255,10 +266,17 @@ public class LuVTierEnhancer implements Runnable { replaced = true; } } + if (replace && replaced) { + if (recipe instanceof GT_Recipe) { + ((GT_Recipe) recipe).setOwner(MOD_ID); + } else if (recipe instanceof GT_Recipe_AssemblyLine) { + // todo: update NEI fake recipe + } + } return replaced; } - private static boolean doStacksCointainAndReplace(Object[] stacks, ItemStack stack, boolean replace, ItemStack... replacement) { + private static boolean doStacksContainAndReplace(Object recipe, Object[] stacks, ItemStack stack, boolean replace, ItemStack... replacement) { boolean replaced = false; for (int i = 0; i < stacks.length; i++) { if (!GT_Utility.isStackValid(stacks[i])) { @@ -284,6 +302,13 @@ public class LuVTierEnhancer implements Runnable { replaced = true; } } + if (replace && replaced) { + if (recipe instanceof GT_Recipe) { + ((GT_Recipe) recipe).setOwner(MOD_ID); + } else if (recipe instanceof GT_Recipe_AssemblyLine) { + // todo: update NEI fake recipe + } + } return replaced; } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java index 08ed4cd980..b7b4d07894 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java @@ -267,12 +267,18 @@ public class PlatinumSludgeOverHaul { toDel.add(recipe); else if (GT_Utility.areFluidsEqual(Rhodium.getMolten(1), recipe.mFluidOutputs[i])) toDel.add(recipe); - else if (GT_Utility.areFluidsEqual(Materials.Iridium.getMolten(1), recipe.mFluidOutputs[i])) + else if (GT_Utility.areFluidsEqual(Materials.Iridium.getMolten(1), recipe.mFluidOutputs[i])) { recipe.mFluidOutputs[i] = AcidicIridiumSolution.getFluidOrGas(1000); - else if (GT_Utility.areFluidsEqual(Materials.Platinum.getMolten(1), recipe.mFluidOutputs[i])) + recipe.reloadOwner(); + } + else if (GT_Utility.areFluidsEqual(Materials.Platinum.getMolten(1), recipe.mFluidOutputs[i])) { recipe.mFluidOutputs[i] = PTConcentrate.getFluidOrGas(1000); - else if (GT_Utility.areFluidsEqual(Materials.Osmium.getMolten(1), recipe.mFluidOutputs[i])) + recipe.reloadOwner(); + } + else if (GT_Utility.areFluidsEqual(Materials.Osmium.getMolten(1), recipe.mFluidOutputs[i])) { recipe.mFluidOutputs[i] = AcidicOsmiumSolution.getFluidOrGas(1000); + recipe.reloadOwner(); + } } else { if (GT_Utility.areFluidsEqual(Ruthenium.getMolten(1), recipe.mFluidOutputs[i])) toDel.add(recipe); @@ -296,6 +302,7 @@ public class PlatinumSludgeOverHaul { continue recipeloop; int amount = recipe.mOutputs[i].stackSize * 2; recipe.mOutputs[i] = LeachResidue.get(dust, amount); + recipe.reloadOwner(); } } if (BW_Util.areStacksEqualOrNull(Rhodium.get(dust), recipe.mOutputs[i]) || BW_Util.areStacksEqualOrNull(Rhodium.get(dustImpure), recipe.mOutputs[i]) || BW_Util.areStacksEqualOrNull(Rhodium.get(dustPure), recipe.mOutputs[i])) { @@ -305,6 +312,7 @@ public class PlatinumSludgeOverHaul { continue recipeloop; int amount = recipe.mOutputs[i].stackSize * 2; recipe.mOutputs[i] = CrudeRhMetall.get(dust, amount); + recipe.reloadOwner(); } } if (!BW_Util.checkStackAndPrefix(recipe.mOutputs[i])) @@ -318,12 +326,15 @@ public class PlatinumSludgeOverHaul { if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dust) || GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustImpure) || GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustPure)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(PTMetallicPowder.get(dust), amount * 2); + recipe.reloadOwner(); } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustSmall)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(PTMetallicPowder.get(dustSmall), amount * 2); + recipe.reloadOwner(); } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustTiny)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(PTMetallicPowder.get(dustTiny), amount * 2); + recipe.reloadOwner(); } } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mMaterial.mMaterial.equals(Materials.Palladium)) { for (int j = 0; j < recipe.mInputs.length; j++) { @@ -333,12 +344,15 @@ public class PlatinumSludgeOverHaul { if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dust) || GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustImpure) || GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustPure)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(PDMetallicPowder.get(dust), amount * 4); + recipe.reloadOwner(); } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustSmall)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(PDMetallicPowder.get(dustSmall), amount * 4); + recipe.reloadOwner(); } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustTiny)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(PDMetallicPowder.get(dustTiny), amount * 4); + recipe.reloadOwner(); } } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mMaterial.mMaterial.equals(Materials.Osmium)) { for (int j = 0; j < recipe.mInputs.length; j++) { @@ -348,12 +362,15 @@ public class PlatinumSludgeOverHaul { if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dust) || GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustImpure) || GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustPure)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(IrOsLeachResidue.get(dust), amount); + recipe.reloadOwner(); } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustSmall)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(IrOsLeachResidue.get(dustSmall), amount); + recipe.reloadOwner(); } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustTiny)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(IrOsLeachResidue.get(dustTiny), amount); + recipe.reloadOwner(); } } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mMaterial.mMaterial.equals(Materials.Iridium)) { for (int j = 0; j < recipe.mInputs.length; j++) { @@ -363,12 +380,15 @@ public class PlatinumSludgeOverHaul { if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dust) || GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustImpure) || GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustPure)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(IrLeachResidue.get(dust), amount); + recipe.reloadOwner(); } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustSmall)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(IrLeachResidue.get(dustSmall), amount); + recipe.reloadOwner(); } else if (GT_OreDictUnificator.getAssociation(recipe.mOutputs[i]).mPrefix.equals(dustTiny)) { int amount = recipe.mOutputs[i].stackSize; recipe.mOutputs[i] = BW_Util.setStackSize(IrLeachResidue.get(dustTiny), amount); + recipe.reloadOwner(); } } } @@ -395,6 +415,7 @@ public class PlatinumSludgeOverHaul { ItemData ass = GT_OreDictUnificator.getAssociation(stack); if (BW_Util.checkStackAndPrefix(stack) && ass.mMaterial.mMaterial.equals(Materials.Platinum)) { recipe.mInputs[i] = GT_OreDictUnificator.get(ass.mPrefix,Materials.BlueAlloy,stack.stackSize); + recipe.reloadOwner(); } } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/util/BWRecipes.java b/src/main/java/com/github/bartimaeusnek/bartworks/util/BWRecipes.java index c7f578fe41..4e3b6ffc4a 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/util/BWRecipes.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/util/BWRecipes.java @@ -22,6 +22,7 @@ package com.github.bartimaeusnek.bartworks.util; +import com.github.bartimaeusnek.bartworks.MainMod; import com.github.bartimaeusnek.bartworks.common.loaders.BioItemList; import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; @@ -241,8 +242,17 @@ public class BWRecipes { public static class DynamicGTRecipe extends GT_Recipe { - public DynamicGTRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecialItems, int[] aChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue) { + public DynamicGTRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecialItems, int[] aChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue, GT_Recipe originalRecipe) { super(aOptimize, aInputs, aOutputs, aSpecialItems, aChances, aFluidInputs, aFluidOutputs, aDuration, aEUt, aSpecialValue); + if (originalRecipe != null) { + this.owners = new ArrayList<>(originalRecipe.owners); + this.stackTraces = new ArrayList<>(originalRecipe.stackTraces); + this.setOwner(MainMod.MOD_ID); + } + } + + public DynamicGTRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecialItems, int[] aChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue) { + this(aOptimize, aInputs, aOutputs, aSpecialItems, aChances, aFluidInputs, aFluidOutputs, aDuration, aEUt, aSpecialValue, null); } } -- cgit