|  | package appeng.api.me.util; | 
|  |  | 
|  | import java.util.List; | 
|  |  | 
|  | import net.minecraft.inventory.InventoryCrafting; | 
|  | import net.minecraft.item.ItemStack; | 
|  | import net.minecraft.item.crafting.IRecipe; | 
|  | import net.minecraft.world.World; | 
|  | import appeng.api.IItemList; | 
|  |  | 
|  | /** | 
|  | * Interact with the internals of assembler patterns, get this via Util.getAssemblerPattern(...) | 
|  | * | 
|  | * Do not implement this version, implement ICraftingPattern | 
|  | * | 
|  | */ | 
|  | public interface ICraftingPatternMAC extends ICraftingPattern { | 
|  |  | 
|  | /** | 
|  | * Encode a pattern. | 
|  | * craftingMatrix - accepts a 3x3 grid of ItemStacks and Nulls. | 
|  | * output - accepts a single ItemStack, NEVER SEND NULL | 
|  | */ | 
|  | void encodePattern(ItemStack[] craftingMatrix, ItemStack output); | 
|  |  | 
|  | /** | 
|  | * I have no idea what the World is for, its just part of IRecipe... | 
|  | */ | 
|  | boolean isCraftable(World w); | 
|  |  | 
|  | /** Returns true if there is a pattern encoded. */ | 
|  | boolean isEncoded(); | 
|  |  | 
|  | IAssemblerCluster getCluster(); | 
|  |  | 
|  | /** Returns a 3x3 matrix of nulls or ItemStacks, or null if it is not included. */ | 
|  | ItemStack[] getCraftingMatrix(); | 
|  |  | 
|  | /** | 
|  | * Same as getCraftingMatrix(), but gets a crafting inventory for real crafting. | 
|  | * | 
|  | * Item pool is optional, null will work, but it won't be able to edit items... | 
|  | */ | 
|  | InventoryCrafting getCraftingInv( World w, IMEInventory itemPool, List<ItemStack> missing, List<ItemStack> used, IItemList all ); | 
|  |  | 
|  | /** returns the output of the pattern */ | 
|  | ItemStack getRecipeOutput( InventoryCrafting ic, World w ); | 
|  |  | 
|  | /** returns the recipe for the patterns */ | 
|  | IRecipe getMatchingRecipe( InventoryCrafting ic, World w ); | 
|  |  | 
|  | } |