Inventory API
Inventory wraps named storage inventories.
Typical usage
local entity = console.getBlock().getEntity()
local cargo = entity.getNamedInventory("Cargo")
if cargo ~= nil then
print(cargo.getName(), cargo.getVolume())
for _, stack in ipairs(cargo.getItems()) do
if stack ~= nil then
print(stack.getName(), stack.getCount())
end
end
end
Reference
getName()getItems()Returns array ofItemStackvalues.getVolume()Returns current volume used by stored items.isEmpty()Returnstruewhen no items are stored. Use to detect unloading completion.isFull()Returnstruewhen no free slots remain.hasFreeSlot()Returnstrueif at least one slot is available.getTotalItemCount()Returns the total number of items across all filled slots.getItemCount(itemId)Returns the count of a specific item type by numeric ID.addItems(itemStacks)Adds requested stacks into this inventory.removeItems(itemStacks)Removes requested stacks from this inventory when enough items are present.transferTo(targetInventory, itemStacks)Moves requested stacks when source has items and target has free slots.transferFrom(sourceInventory, itemStacks)Pulls requested stacks fromsourceInventoryinto this inventory.clearItems()Removes all items from this inventory.
Inventory write operations return false when the request cannot be completed.
Cargo transfer detection
Poll these methods in a loop after docking to know when a transfer is done:
-- Wait for unloading to complete (inventory drained)
while not cargo:isEmpty() do sleep(1) end
-- Wait for loading to complete (reached target count)
local CHARGE_ID = 512
local TARGET = 1000
while cargo:getItemCount(CHARGE_ID) < TARGET do sleep(1) end