Factorio.com|Forums|Wiki|Mod Portal|API Docs Prototype|Runtime|Auxiliary

# Factorio Runtime Docs Version 2.0.7

## Class LuaInventory

A storage of item stacks.

## Members

clear() |  | Make this inventory empty.
Make this inventory empty.
can_insert(items) | → boolean | Can at least some items be inserted?
Can at least some items be inserted?
insert(items) | → uint | Insert items into this inventory.
Insert items into this inventory.
remove(items) | → uint | Remove items from this inventory.
Remove items from this inventory.
get_item_count(item?) changed | → uint | Get the number of all or some items in this inventory.
Get the number of all or some items in this inventory.
is_empty() | → boolean | Does this inventory contain nothing?
Does this inventory contain nothing?
is_full() | → boolean | Is every stack in this inventory full? [...]
Is every stack in this inventory full? [...]
get_contents() changed | → array[ItemCountWithQuality] | Get counts of all items in this inventory.
Get counts of all items in this inventory.
supports_bar() | → boolean | Does this inventory support a bar? [...]
Does this inventory support a bar? [...]
get_bar() | → uint | Get the current bar. [...]
Get the current bar. [...]
set_bar(bar?) |  | Set the current bar. [...]
Set the current bar. [...]
supports_filters() | → boolean | If this inventory supports filters.
If this inventory supports filters.
is_filtered() | → boolean | If this inventory supports filters and has at least 1 filter set.
If this inventory supports filters and has at least 1 filter set.
can_set_filter(index, filter) changed | → boolean | If the given inventory slot filter can be set to the given filter.
If the given inventory slot filter can be set to the given filter.
get_filter(index) changed | → ItemFilter? | Gets the filter for the given item stack index.
Gets the filter for the given item stack index.
set_filter(index, filter) changed | → boolean | Sets the filter for the given item stack index. [...]
Sets the filter for the given item stack index. [...]
find_item_stack(item) changed | → LuaItemStack?, uint? | Finds the first LuaItemStack in the inventory that matches the given item name.
Finds the first LuaItemStack in the inventory that matches the given item name.
find_empty_stack(item?) changed | → LuaItemStack?, uint? | Finds the first empty stack. [...]
Finds the first empty stack. [...]
count_empty_stacks(include_filtered?, include_bar?) | → uint | Counts the number of empty stacks.
Counts the number of empty stacks.
get_insertable_count(item) changed | → uint | Gets the number of the given item that can be inserted into this inventory. [...]
Gets the number of the given item that can be inserted into this inventory. [...]
sort_and_merge() |  | Sorts and merges the items in this inventory.
Sorts and merges the items in this inventory.
resize(size) |  | Resizes the inventory. [...]
Resizes the inventory. [...]
destroy() |  | Destroys this inventory. [...]
Destroys this inventory. [...]
index | :: R defines.inventory? | The inventory index this inventory uses, if any.
The inventory index this inventory uses, if any.
entity_owner | :: R LuaEntity? | The entity that owns this inventory, if any.
The entity that owns this inventory, if any.
player_owner | :: R LuaPlayer? | The player that owns this inventory, if any.
The player that owns this inventory, if any.
equipment_owner | :: R LuaEquipment? | The equipment that owns this inventory, if any.
The equipment that owns this inventory, if any.
mod_owner | :: R string? | The mod that owns this inventory, if any.
The mod that owns this inventory, if any.
valid | :: R boolean | Is this object valid? [...]
Is this object valid? [...]
object_name | :: R string | The class name of this object. [...]
The class name of this object. [...]
[] (index) | :: R LuaItemStack | The indexing operator.
The indexing operator.
# (length) | :: R uint | Get the number of slots in this inventory.
Get the number of slots in this inventory.

## Methods

### clear()

Make this inventory empty.

### can_insert(items) → boolean

Can at least some items be inserted?

#### Parameters

items | :: ItemStackIdentification | Items that would be inserted.
Items that would be inserted.

#### Return values

→ boolean | `true` if at least a part of the given items could be inserted into this inventory.

### insert(items) → uint

Insert items into this inventory.

#### Parameters

items | :: ItemStackIdentification | Items to insert.
Items to insert.

#### Return values

→ uint | Number of items actually inserted.

### remove(items) → uint

Remove items from this inventory.

#### Parameters

items | :: ItemStackIdentification | Items to remove.
Items to remove.

#### Return values

→ uint | Number of items actually removed.

### get_item_count(item?) → uint changed

Get the number of all or some items in this inventory.

#### Parameters

item | :: ItemWithQualityID? | The item to count. If not specified, count all items.
The item to count. If not specified, count all items.

### is_empty() → boolean

Does this inventory contain nothing?

### is_full() → boolean

Is every stack in this inventory full? Ignores stacks blocked by the current bar.

### get_contents() → array[ItemCountWithQuality] changed

Get counts of all items in this inventory.

#### Return values

→ array[ItemCountWithQuality] | List of all items in the inventory.

### supports_bar() → boolean

Does this inventory support a bar? Bar is the draggable red thing, found for example on chests, that limits the portion of the inventory that may be manipulated by machines.

"Supporting a bar" doesn't mean that the bar is set to some nontrivial value. Supporting a bar means the inventory supports having this limit at all. The character's inventory is an example of an inventory without a bar; the wooden chest's inventory is an example of one with a bar.

### get_bar() → uint

Get the current bar. This is the index at which the red area starts.

Only useable if this inventory supports having a bar.

### set_bar(bar?)

Set the current bar.

Only useable if this inventory supports having a bar.

#### Parameters

bar | :: uint? | The new limit. Omitting this parameter will clear the limit.
The new limit. Omitting this parameter will clear the limit.

### supports_filters() → boolean

If this inventory supports filters.

### is_filtered() → boolean

If this inventory supports filters and has at least 1 filter set.

### can_set_filter(index, filter) → boolean changed

If the given inventory slot filter can be set to the given filter.

#### Parameters

index | :: uint | The item stack index
The item stack index
filter | :: ItemFilter | The item filter
The item filter

### get_filter(index) → ItemFilter?changed

Gets the filter for the given item stack index.

#### Parameters

index | :: uint | The item stack index
The item stack index

#### Return values

→ ItemFilter? | The current filter or `nil` if none.

### set_filter(index, filter) → boolean changed

Sets the filter for the given item stack index.

Some inventory slots don't allow some filters (gun ammo can't be filtered for non-ammo).

#### Parameters

index | :: uint | The item stack index.
The item stack index.
filter | :: ItemFilter or nil | The new filter. `nil` erases any existing filter.
The new filter. `nil` erases any existing filter.

#### Return values

→ boolean | If the filter was allowed to be set.

### find_item_stack(item) → LuaItemStack?, uint?changed

Finds the first LuaItemStack in the inventory that matches the given item name.

#### Parameters

item | :: ItemWithQualityID | The item to find
The item to find

#### Return values

→ LuaItemStack? | The first matching stack, or `nil` if none match.
→ uint? | The stack index of the matching stack, if any is found.

### find_empty_stack(item?) → LuaItemStack?, uint?changed

Finds the first empty stack. Filtered slots are excluded unless a filter item is given.

#### Parameters

item | :: ItemWithQualityID? | If given, empty stacks that are filtered for this item will be included.
If given, empty stacks that are filtered for this item will be included.

#### Return values

→ LuaItemStack? | The first empty stack, or `nil` if there aren't any empty stacks.
→ uint? | The stack index of the matching stack, if any is found.

### count_empty_stacks(include_filtered?, include_bar?) → uint

Counts the number of empty stacks.

#### Parameters

include_filtered | :: boolean? | If true, filtered slots will be included. Defaults to false.
If true, filtered slots will be included. Defaults to false.
include_bar | :: boolean? | If true, slots blocked by the current bar will be included. Defaults to true.
If true, slots blocked by the current bar will be included. Defaults to true.

### get_insertable_count(item) → uint changed

Gets the number of the given item that can be inserted into this inventory.

This is a "best guess" number; things like assembling machine filtered slots, module slots, items with durability, and items with mixed health will cause the result to be inaccurate. The main use for this is in checking how many of a basic item can fit into a basic inventory.

This accounts for the 'bar' on the inventory.

#### Parameters

item | :: ItemWithQualityID | The item to check.
The item to check.

### sort_and_merge()

Sorts and merges the items in this inventory.

### resize(size)

Resizes the inventory.

Items in slots beyond the new capacity are deleted.

Only inventories created by LuaGameScript::create_inventory can be resized.

#### Parameters

size | :: uint16 | New size of a inventory
New size of a inventory

#### Raised events

on_pre_script_inventory_resized instantly |
on_script_inventory_resized instantly |

### destroy()

Destroys this inventory.

Only inventories created by LuaGameScript::create_inventory can be destroyed this way.

## Attributes

### index :: Read defines.inventory?

The inventory index this inventory uses, if any.

### entity_owner :: Read LuaEntity?

The entity that owns this inventory, if any.

### player_owner :: Read LuaPlayer?

The player that owns this inventory, if any.

### equipment_owner :: Read LuaEquipment?

The equipment that owns this inventory, if any.

### mod_owner :: Read string?

The mod that owns this inventory, if any.

### valid :: Read boolean

Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.

### object_name :: Read string

The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.

## Operators

### [] (index)

The indexing operator.

#### Example

    -- Will get the first item in the player's inventory.
    game.player.get_main_inventory()[1]

### # (length)

Get the number of slots in this inventory.

#### Example

    -- Will print the number of slots in the player's main inventory.
    game.player.print(#game.player.get_main_inventory())