package buildcraft.api.recipes; import java.util.Set; import com.google.common.base.Predicate; import net.minecraftforge.fluids.FluidStack; public interface IComplexRefineryRecipeManager { IHeatableRecipe createHeatingRecipe(FluidStack in, FluidStack out, int heatFrom, int heatTo, int ticks); IHeatableRecipe addHeatableRecipe(FluidStack in, FluidStack out, int heatFrom, int heatTo, int ticks, boolean replaceExisting); ICoolableRecipe createCoolableRecipe(FluidStack in, FluidStack out, int heatFrom, int heatTo, int ticks); ICoolableRecipe addCoolableRecipe(FluidStack in, FluidStack out, int heatFrom, int heatTo, int ticks, boolean replaceExisting); IDistilationRecipe createDistilationRecipe(FluidStack in, FluidStack outGas, FluidStack outLiquid, int ticks); IDistilationRecipe addDistilationRecipe(FluidStack in, FluidStack outGas, FluidStack outLiquid, int ticks, boolean replaceExisting); IComplexRefineryRegistry<IHeatableRecipe> getHeatableRegistry(); IComplexRefineryRegistry<ICoolableRecipe> getCoolableRegistry(); IComplexRefineryRegistry<IDistilationRecipe> getDistilationRegistry(); public interface IComplexRefineryRegistry<R extends IComplexRefineryRecipe> { /** @return an unmodifiable set containing all of the distilation recipies that satisfy the given predicate. All * of the recipe objects are guarenteed to never be null. */ Set<R> getRecipes(Predicate<R> toReturn); /** @return an unmodifiable set containing all of the distilation recipies. */ Set<R> getAllRecipes(); R getRecipeForInput(FluidStack fluid); Set<R> removeRecipes(Predicate<R> toRemove); R addRecipe(R recipe, boolean replaceExisting); } public interface IComplexRefineryRecipe { int ticks(); FluidStack in(); } public interface IHeatExchangerRecipe extends IComplexRefineryRecipe { FluidStack out(); int heatFrom(); int heatTo(); } public interface IHeatableRecipe extends IHeatExchangerRecipe {} public interface ICoolableRecipe extends IHeatExchangerRecipe {} public interface IDistilationRecipe extends IComplexRefineryRecipe { FluidStack outGas(); FluidStack outLiquid(); } }