diff options
author | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2020-12-30 23:30:33 +0100 |
---|---|---|
committer | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2020-12-31 02:02:58 +0100 |
commit | 939441f7b24e5f6abb0b5534dfea715b4be6e5ed (patch) | |
tree | adf8d57b6b80b2202ce354fa5a5d83cfc9de11ce /src/main/java/gregtech/common/tileentities | |
parent | 2db36cb988b58ace9d91d6f7b636a6059507c873 (diff) | |
download | GT5-Unofficial-939441f7b24e5f6abb0b5534dfea715b4be6e5ed.tar.gz GT5-Unofficial-939441f7b24e5f6abb0b5534dfea715b4be6e5ed.tar.bz2 GT5-Unofficial-939441f7b24e5f6abb0b5534dfea715b4be6e5ed.zip |
Implemented ReverseRecipes
Diffstat (limited to 'src/main/java/gregtech/common/tileentities')
-rw-r--r-- | src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java index 4589940a14..92ed054b05 100644 --- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java +++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java @@ -120,6 +120,13 @@ public class GT_MetaTileEntity_Disassembler } private boolean process(){ + + GT_Recipe gt_recipe = GT_Recipe.GT_Recipe_Map.sDisassemblerRecipes.findRecipe(this.getBaseMetaTileEntity(), true, this.mEUt, null, this.getAllInputs()); + if (gt_recipe != null) { + gt_recipe.isRecipeInputEqual(true, null, this.getRealInventory()); + return setOutputsAndTime(gt_recipe.mOutputs, gt_recipe.mInputs[0].stackSize); + } + Collection<DissassembleReference> recipes = this.findRecipeFromMachine(); if (recipes.isEmpty()) return false; @@ -131,6 +138,7 @@ public class GT_MetaTileEntity_Disassembler recipe.inputs[i] = null; recipe.inputs = GT_Utility.getArrayListWithoutNulls(recipe.inputs).toArray(new ItemStack[0]); + return setOutputsAndTime(recipe.inputs, recipe.stackSize); } @@ -160,12 +168,12 @@ public class GT_MetaTileEntity_Disassembler .map(x -> x.recipe) .collect(Collectors.toList()); - handleRecipeTranceformation(inputs, output, recipesColl); + handleRecipeTransformation(inputs, output, recipesColl); return new DissassembleReference(recipes.stream().mapToInt(x -> x.stackSize).min().orElseThrow(NumberFormatException::new), output, null); } - private static void handleRecipeTranceformation(ItemStack[] inputs, ItemStack[] output, List<GT_Recipe> recipesColl) { + private static void handleRecipeTransformation(ItemStack[] inputs, ItemStack[] output, List<GT_Recipe> recipesColl) { for (int i = 0, inputsLength = inputs.length; i < inputsLength; i++) { Set<ItemStack[]> inputsStacks = null; if (recipesColl != null) @@ -183,6 +191,25 @@ public class GT_MetaTileEntity_Disassembler addOthersAndHandleAlwaysReplace(inputs, output); } + /** + * Public Interface for ReverseRecipes, do not call inside of this class. + * @param inputs + * @param output + * @param inputsStacks + */ + public static void handleRecipeTransformation(ItemStack[] inputs, ItemStack[] output, Set<ItemStack[]> inputsStacks) { + for (int i = 0, inputsLength = inputs.length; i < inputsLength; i++) { + ItemStack input = inputs[i]; + ItemData data = GT_OreDictUnificator.getItemData(input); + if (data == null || data.mMaterial == null || data.mMaterial.mMaterial == null || data.mPrefix == null) { + output[i] = input; + continue; + } + handleReplacement(inputsStacks, data, output, input, i); + } + addOthersAndHandleAlwaysReplace(inputs, output); + } + private static void addOthersAndHandleAlwaysReplace(ItemStack[] inputs, ItemStack[] output){ for (int i = 0; i < inputs.length; i++) { //Adds rest of Items |