aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/interfaces/metatileentity
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/interfaces/metatileentity')
-rw-r--r--src/main/java/gregtech/api/interfaces/metatileentity/IItemLockable.java41
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;
+ }
+}