package gregtech.api.multitileentity.interfaces; import gregtech.api.multitileentity.multiblock.base.MultiBlockPart; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; public interface IMultiBlockInventory { boolean hasInventoryBeenModified(MultiBlockPart aPart); boolean isValidSlot(MultiBlockPart aPart, int aIndex); boolean addStackToSlot(MultiBlockPart aPart, int aIndex, ItemStack aStack); boolean addStackToSlot(MultiBlockPart aPart, int aIndex, ItemStack aStack, int aAmount); int[] getAccessibleSlotsFromSide(MultiBlockPart aPart, byte aSide); boolean canInsertItem(MultiBlockPart aPart, int aSlot, ItemStack aStack, byte aSide); boolean canExtractItem(MultiBlockPart aPart, int aSlot, ItemStack aStack, byte aSide); int getSizeInventory(MultiBlockPart aPart); ItemStack getStackInSlot(MultiBlockPart aPart, int aSlot); ItemStack decrStackSize(MultiBlockPart aPart, int aSlot, int aDecrement); ItemStack getStackInSlotOnClosing(MultiBlockPart aPart, int aSlot); void setInventorySlotContents(MultiBlockPart aPart, int aSlot, ItemStack aStack); String getInventoryName(MultiBlockPart aPart); boolean hasCustomInventoryName(MultiBlockPart aPart); int getInventoryStackLimit(MultiBlockPart aPart); void markDirty(MultiBlockPart aPart); boolean isUseableByPlayer(MultiBlockPart aPart, EntityPlayer aPlayer); void openInventory(MultiBlockPart aPart); void closeInventory(MultiBlockPart aPart); boolean isItemValidForSlot(MultiBlockPart aPart, int aSlot, ItemStack aStack); }