From 450a7874b06ff508987a4b0f3c3621ab4d9d28b3 Mon Sep 17 00:00:00 2001 From: querns <33518699+querns@users.noreply.github.com> Date: Mon, 29 Jul 2024 19:46:55 -0500 Subject: Adds lockable output buses (#2787) * Adds output locking for non-ME output buses * Add data stick support for output bus filters * Small optimization to output bus iteration * spotless, my one true enemy --- .../interfaces/metatileentity/IItemLockable.java | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/java/gregtech/api/interfaces/metatileentity/IItemLockable.java (limited to 'src/main/java/gregtech/api/interfaces/metatileentity') 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. + *
+ * 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; + } +} -- cgit