public float getMultiplierForInput(ItemStack input, Fluid output) { if (output != null) { for (IRecipe recipe : recipes) { RecipeOutput out = recipe.getOutputs()[0]; if (out.getFluidOutput().getFluid().getID() == output.getID()) { for (RecipeInput ri : recipe.getInputs()) { if (ri.isInput(input)) { return ri.getMulitplier(); } } } } } // no fluid or not an input for this fluid: best guess // (after all, the item IS in the input slot) float found = -1f; for (IRecipe recipe : recipes) { for (RecipeInput ri : recipe.getInputs()) { if (ri.isInput(input)) { if (found < 0f || found > ri.getMulitplier()) { found = ri.getMulitplier(); } } } } return found > 0 ? found : 0; }
public boolean isValidInput(MachineRecipeInput input) { for (IRecipe recipe : recipes) { if (input.item != null && recipe.isValidInput(input.slotNumber, input.item)) { return true; } else if (input.fluid != null && recipe.isValidInput(input.fluid)) { return true; } } return false; }
public IRecipe getRecipeForInput(MachineRecipeInput[] inputs) { if (inputs == null || inputs.length == 0) { return null; } for (IRecipe recipe : recipes) { if (recipe.isInputForRecipe(inputs)) { return recipe; } } return null; }
public void addRecipe(IRecipe recipe) { if (recipe == null || !recipe.isValid()) { Log.debug("Could not add invalid Vat recipe: " + recipe); return; } recipes.add(new VatRecipe(recipe)); }
public boolean isValidInput(MachineRecipeInput[] inputs) { for (IRecipe recipe : recipes) { boolean allValid = true; for (MachineRecipeInput input : inputs) { if (input.item != null) { allValid = recipe.isValidInput(input.slotNumber, input.item); } else if (input.fluid != null) { allValid = recipe.isValidInput(input.fluid); } if (!allValid) { break; } } if (allValid) { return true; } } return false; }
@Override public List<IEnderIoRecipe> getAllRecipes() { List<IEnderIoRecipe> result = new ArrayList<IEnderIoRecipe>(); List<IAlloyRecipe> recipes = AlloyRecipeManager.getInstance().getRecipes(); for (IRecipe cr : recipes) { List<IRecipeComponent> components = new ArrayList<IRecipeComponent>(); for (crazypants.enderio.machine.recipe.RecipeInput ri : cr.getInputs()) { if (ri.getInput() != null) { IRecipeInput input = new RecipeInput(ri.getInput(), -1, ri.getEquivelentInputs()); components.add(input); } } for (RecipeOutput co : cr.getOutputs()) { IRecipeOutput output = new crazypants.enderio.crafting.impl.RecipeOutput(co.getOutput(), co.getChance()); components.add(output); } result.add( new EnderIoRecipe(IEnderIoRecipe.ALLOY_SMELTER_ID, cr.getEnergyRequired(), components)); } return result; }