package resonantinduction.old.api;

import net.minecraft.item.ItemStack;
import dark.lib.recipes.ProcessorType;

/**
 * Simple interface that allows an item to control how its salvaged, processed, or refined by a
 * processor. This is 100% optional as the processor by default can break down most items. The only
 * reason to use this is for more complex processing or were the item was created with NBT.
 * 
 * @author Darkgaurdsman
 */
public interface IProcessable
{
	/** Can this item be Processed by the machine */
	public boolean canProcess(ProcessorType type, ItemStack stack);

	/**
	 * Gets the output array of items when this item is processed by a processor machine
	 * 
	 * @param type - type of machine see ProcessorTypes enum for info
	 * @param stack - ItemStack of this item or block
	 * @return Array of all item outputed, Make sure to return less than or equal to the amount of
	 * items it takes to craft only one of this item
	 */
	public ItemStack[] getProcesserOutput(ProcessorType type, ItemStack stack);
}
