package pneumaticCraft.api.recipe; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; /** * Interface accessed via PneumaticRegistry.getInstance().getRecipeRegistry(), used to register recipes to PneumaticCraft. * @author MineMaarten */ public interface IPneumaticRecipeRegistry{ /** * * @param requiredFluid can be null * @param requiredItem can be null * @param requiredTemperature in degrees Kelvin. * @param requiredPressure required pressure. * @param output the output of the recipe. cannot be null. */ public void registerThermopneumaticProcessingPlantRecipe(FluidStack requiredFluid, ItemStack requiredItem, FluidStack output, double requiredTemperature, float requiredPressure); /** * Allows for registry of a recipe which allows for all your custom needs. * @param recipe */ public void registerThermopneumaticProcessingPlantRecipe(IThermopneumaticProcessingPlantRecipe recipe); /** * Add a recipe that needs an item to be drilled in an Assembly set-up to get the output. * @param input valid types: Block, Item, ItemStack * @param output valid types: Block, Item, ItemStack */ public void addAssemblyDrillRecipe(Object input, Object output); /** * Add a recipe that needs an item to be lasered in an Assembly set-up to get the output. * @param input valid types: Block, Item, ItemStack * @param output valid types: Block, Item, ItemStack */ public void addAssemblyLaserRecipe(Object input, Object output); /** * Adds a recipe to the Pressure Chamber. * @param input , either of type ItemStack or Pair<String, Integer>, where the String is the Ore dictionary entry and Integer is the amount (stack size) * @param pressureRequired negative pressures for negative pressure needs. * @param output */ public void registerPressureChamberRecipe(Object[] input, float pressureRequired, ItemStack[] output); /** * Allows for registry of a recipe which allows for all your custom needs. * @param recipe */ public void registerPressureChamberRecipe(IPressureChamberRecipe recipe); /** * Adds an Amadron offer. Both the input and output can either be ItemStack or FluidStack. An exception will be thrown if this is not the case. * This is a default offer, meaning it will be put in a clean config load. After that the user can change it at will to remove this added recipe. * It's a static offer, meaning if it exists in the instance, it will be there forever (like the Emerald --> PCB Blueprint offer). * @param input * @param output */ public void registerDefaultStaticAmadronOffer(Object input, Object output); /** * Adds an Amadron offer. Both the input and output can either be ItemStack or FluidStack. An exception will be thrown if this is not the case. * This is a default offer, meaning it will be put in a clean config load. After that the user can change it at will to remove this added recipe. * It's a periodic offer, meaning it will be shuffled (by default) once per day between other periodic offers, like the villager trade offers. * @param input * @param output */ void registerDefaultPeriodicAmadronOffer(Object input, Object output); /** * Adds a behaviour for when an inventory is framed with a Heat Frame, and is cooled below 0 degrees C. If the input item is a container item it will be returned as well. * @param input either of type ItemStack or Pair<String, Integer>, where the String is the Ore dictionary entry and Integer is the amount (stack size) * @param output */ public void registerHeatFrameCoolRecipe(Object input, ItemStack output); }