blob: 71305b61ce3f0d5d1006198f6679c626b5d8ebc3 [file] [log] [blame] [raw]
package li.cil.oc.api.driver;
import net.minecraft.item.ItemStack;
/**
* May be implemented by drivers for robot upgrades that act as hotswap bays,
* i.e. which can be installed into the 'dynamic' slots, and provide on-the-fly
* changeable upgrade slots (i.e. which can be changed in the robot GUI,
* without disassembling and re-assembling the robot).
* <p/>
* These drivers will not be queried for environments. The reported tier is the
* maximum tier supported in the dynamic slot they provide.
*/
public interface UpgradeContainer extends Item {
/**
* The type of slot provided as the dynamic slot. This will usually be
* for other upgrades, but may be for any type of item component.
* <p/>
* While the driver's own type implicitly has to be 'Upgrade' and could
* therefore be used instead, this makes the intention more clear.
*
* @param stack the item stack to get the provided slot type for.
* @return the slot type provided by that dynamic slot upgrade.
*/
Slot providedSlot(ItemStack stack);
/**
* The maximum item tier of the items that can be placed into the slot
* provided by the specified container.
* <p/>
* This will usually be equal to the container's tier.
*
* @param stack the item stack to the the supported tier for.
* @return the maximum tier supported by that dynamic slot upgrade.
*/
int providedTier(ItemStack stack);
}