package cyano.basemetals.registry.recipe;
import java.util.Collection;
import net.minecraft.item.ItemStack;
/**
* Superclass for all crushed-item recipes. For recipes that use the OreDictionary to describe the
* input item, use the OreDictionaryCrusherRecipe class. If not using the OreDictionary, use the
* ArbitraryCrusherRecipe class. Note that you should use the OreDictionary for most recipes.
* @author DrCyano
*
*/
public interface ICrusherRecipe {
/**
* Gets the output item from applying this recipe.
* @return An ItemStack instance of the result of this recipe
*/
public abstract ItemStack getOutput();
/**
* Checks if the given ItemStack instance is the input for this recipe.
* @param input An ItemStack to test
* @return Returns true if and only if this recipe should produce an output item from the given
* input.
*/
public abstract boolean isValidInput(ItemStack input);
/**
* Returns a list of all registered blocks/items for which <code>isValidInput(...)</code> would
* return true. This method is only used for displaying recipes in NEI and does not need to be
* performance optimized.
* @return A list of allowed inputs.
*/
public abstract Collection<ItemStack> getValidInputs();
}