package li.cil.oc.api.driver.item;
import li.cil.oc.api.network.EnvironmentHost;
import li.cil.oc.api.driver.Item;
import net.minecraft.item.ItemStack;
/**
* This interface can be added to item drivers to allow them to be picky
* about their supported host environment.
* <p/>
* This is useful for drivers for components that should only go into certain
* environments, such as robot specific upgrades.
*/
public interface HostAware extends Item {
/**
* Used to determine the item types this driver handles.
* <p/>
* This is used to determine which driver to use for an item when it should
* be installed in a computer. Note that the return value should not change
* over time; if it does, though, an already installed component will not
* be ejected, since this value is only checked when adding components.
*
* @param stack the item to check.
* @param host the type of host the environment would live in.
* @return <tt>true</tt> if the item is supported; <tt>false</tt> otherwise.
*/
boolean worksWith(ItemStack stack, Class<? extends EnvironmentHost> host);
}