diff options
Diffstat (limited to 'src/main/java/gregtech/api/interfaces/metatileentity')
-rw-r--r-- | src/main/java/gregtech/api/interfaces/metatileentity/IItemLockable.java | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IItemLockable.java b/src/main/java/gregtech/api/interfaces/metatileentity/IItemLockable.java new file mode 100644 index 0000000000..65bfb416e2 --- /dev/null +++ b/src/main/java/gregtech/api/interfaces/metatileentity/IItemLockable.java @@ -0,0 +1,41 @@ +package gregtech.api.interfaces.metatileentity; + +import javax.annotation.Nullable; + +import net.minecraft.item.ItemStack; + +/** + * Implement this interface if your MetaTileEntity supports item locking. + */ +public interface IItemLockable { + + /** + * Set the locked item. + * <p> + * Implementers should make a copy of this item, as it can be either a physical item or a ghost item dragged from + * NEI. + * + * @param itemStack An item stack to lock + * @see com.gtnewhorizons.modularui.api.forge.ItemHandlerHelper#copyStackWithSize(ItemStack, int) + */ + void setLockedItem(@Nullable ItemStack itemStack); + + /** + * Get the locked item. + * + * @return an ItemStack of the locked item. Returns null if there is no locked item. + */ + @Nullable + ItemStack getLockedItem(); + + /** + * Clears the lock on the machine. + */ + void clearLock(); + + boolean isLocked(); + + default boolean acceptsItemLock() { + return false; + } +} |