> For the complete documentation index, see [llms.txt](https://docs.boii.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.boii.dev/fivem-paid-resources/list-inventory/guides/creating-and-using-containers.md).

# Creating & Using Containers

Containers are shared, slot-based inventories that can be created dynamically or pre-defined for vehicles, world drops, fridges, etc. They support the same clean method API as player inventories.

***

## Creating a Container

Use the `create_container` export **from the server** to create any container:

```lua
local data, err = exports.list_inventory:create_container("world", "fridge", {
    owner = "house_7",
    coords = vector3(123.4, 456.7, 789.0),
    persist = true
})
```

#### Params

| Name       | Type     | Description                                  |
| ---------- | -------- | -------------------------------------------- |
| `category` | `string` | Logical group (`world`, `vehicle`, etc.)     |
| `subtype`  | `string` | Container type (`fridge`, `drop`, etc.)      |
| `options`  | `table`  | Metadata: `owner`, `coords`, `persist`, etc. |

***

## Getting a Container

Use `get_container(id)` to retrieve an active container object:

```lua
local container = exports.list_inventory:get_container("trunk:ABC123")
if not container then return end
```

Once retrieved, you can use any container method:

```lua
container:add_item("bandage", 2)
```

***

## Container Methods

All container objects support these public methods:

* `add_item(id, amount, metadata)`
* `remove_item(lookup, amount)`
* `split_item(slot, amount)`
* `get_items()` / `get_item(lookup)`
* `has_item(lookup, amount)`
* `clear_items()`
* `save()` / `sync()`
* `get_data(key)` / `set_data(key, value)`

***

## Default Container Types

Container types and defaults are defined in `data/containers.lua`. You can modify these or add your own.

#### Vehicles

| Type       | Default Slots | Category  |
| ---------- | ------------- | --------- |
| `trunk`    | 100           | `vehicle` |
| `glovebox` | 10            | `vehicle` |
| `trailer`  | 120           | `vehicle` |

#### Loot & Drops

| Type      | Default Slots | Category | Extras                    |
| --------- | ------------- | -------- | ------------------------- |
| `drop`    | 200           | `loot`   | Bag prop, outlines red    |
| `airdrop` | 50            | `loot`   | Crate prop, outlines blue |

#### Storage Containers

| Type          | Default Slots | Category  | Notes                       |
| ------------- | ------------- | --------- | --------------------------- |
| `desk_fridge` | 5             | `storage` | quality\_preservation = 1.5 |
| `mini_fridge` | 40            | `storage` | quality\_preservation = 2.0 |
| `fridge`      | 40            | `storage` | prevent\_spoil = true       |

You can define props, outline styles, and special logic like spoilage blocking or preservation multipliers.

***

## Temporary Drops

Drop containers (category `loot`, subtype `drop`) are temporary. When emptied, they are:

* Deleted from server memory
* Removed from the client UI

These are handled internally when a player drops an item however you could make one if you want too, why not? Who said you cant.

```lua
local coords = GetEntityCoords(GetPlayerPed(source))
exports.list_inventory:create_container("loot", "drop", {
    owner = "drop_" .. source,
    coords = coords,
    persist = false
})
```

***

## Notes

* Containers use **slot limits**, not weights
* Some types (like fridges) can prevent degradation or slow it if enabled
* If a persistent container already exists for an `owner`, it will be loaded instead of recreated
* You can define **your own** container types freely, provided ones are purely example

Stay slotted, stay chill.™


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.boii.dev/fivem-paid-resources/list-inventory/guides/creating-and-using-containers.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
