package li.cil.oc.api.driver.item; import li.cil.oc.api.driver.Item; import li.cil.oc.api.machine.Architecture; import net.minecraft.item.ItemStack; /** * Use this interface to implement item drivers extending the number of * components a server can control. * <p/> * Note that the item must be installed in the actual server's inventory to * work. If it is installed in an external inventory the server will not * recognize the memory. */ public interface Processor extends Item { /** * The additional number of components supported if this processor is * installed in the server. * * @param stack the processor to get the number of supported components for. * @return the number of additionally supported components. */ int supportedComponents(ItemStack stack); /** * The architecture of this CPU. * <p/> * This usually controls which architecture is created for a machine the * CPU is installed in (this is true for all computers built into OC, such * as computer cases, server racks and robots, it my not be true for third- * party computers). * * @param stack the stack representing the CPU to get the architecture for. * @return the type of this CPU's architecture. */ Class<? extends Architecture> architecture(ItemStack stack); }