# One Item at a Time: No Hotbar, No Inventory Screen

> Make the player carry only the item in hand in Unreal Engine 5, as in a brawler or a survival game: a one-slot inventory with no hotbar or inventory screen, where a pickup goes to the hand and swaps the weapon held.

Markdown version of https://rigbak.com/docs/universal-player-combat/one-item-at-a-time, a page of the Universal Player Combat documentation. Link that page when citing it.

Start from the demo player, `BP_UPC_Character`. The belt stays, cut to one hidden slot, since the belt brings each pickup to the hand. The slot holds one stack: a sword, or three potions, which a key uses and never holds. With a sword in it a shield pickup swaps (the sword goes down where the **G** drop key would put it, so it needs a **World Item** fragment; [Build Your First Combo](https://rigbak.com/docs/universal-player-combat/first-combo)'s `Item_MySword` has none, so add one or use the demo's `Item_UPC_Sword`); with potions in it a sword pickup reads **No Room**.

## Set it up (5 minutes)

1. **Give the character room for one item**

   An item in hand is an inventory item, so the inventory's one slot holds it: on `BP_UPC_Character`, set **InventoryComponent**'s **Config** to `InventoryConfig_UPC_SingleItem`.

   In **BP_UPC_Character**, under UPC > Inventory, set:

   | Property | Value |
   | --- | --- |
   | Config | InventoryConfig_UPC_SingleItem (replaces InventoryConfig_UPC_SurvivalGrid) |

   *The demo's single item config.*
2. **Shrink the belt to one slot**

   On `BP_UPC_PlayerController`'s **QuickBarComponent**, set **Slots** to one entry with no **Filter**. The config's **Belt Slots** is empty, so this belt applies, and its ticked **Auto Populate from Inventory** and **Auto Draw on Init** bring each pickup to hand.

   **Blocked Tags** switches the belt off while the character carries `UPC.State.BeltBlocked`. The demo's Freeflow style holds that tag in its **Gameplay Tags** fragment; keep it out of your style.

   **Details panel: QuickBarComponent** (component, in BP_UPC_PlayerController)

   **Category: UPC > Quick Bar**

   | Property | Value |
   | --- | --- |
   | Slots | 1 Array element |
   | Slots > Index [0] > Filter | None |
   | Blocked Tags | UPC.State.BeltBlocked |
   | Auto Populate from Inventory | true |
   | Auto Draw on Init | true |

   *Slots cut to one entry with no Filter. Only the rows this recipe reads are shown.*
3. **Hide the belt and the screen**

   In `BP_UPC_PlayerController`, delete the **BPC_UPC_InventoryScreens** component (the I key's screen) and the four `IA_UPC_SelectSlot` events (the slot keys). A character that carries potions keeps the first event, whose **Press Slot** call has **Slot Index** 0: that key uses the potion. In `CombatStyle_UPC_OverShoulder`, the starting style, remove `UPC.UI.Show.Belt` from the **Gameplay Tags** fragment to hide the HUD's belt.
4. **Press Play and swap weapons**

   At the weapon rack, press **E** on a sword: it comes to hand. On the shield the prompt reads **Swap** and names the sword; **E** trades them.

---

## What the character carries

**Details panel: InventoryConfig_UPC_SingleItem** (data asset, in Content Browser)

**Category: Containers**

| Property | Value |
| --- | --- |
| Containers | 1 Array element |
| Containers > Index [0] > Container | UPC.Inventory.Container.Hand |
| Containers > Index [0] > Definition | Container_UPC_Hand |

**Category: Held Items**

| Property | Value |
| --- | --- |
| Belt Space | Keeps Its Place |
| Equipped Space | Keeps Its Place |
| Has Belt | true |
| Belt Slots | 0 Array elements |
| Swap When Full | true |

*One container, Container_UPC_Hand, holds what the character carries. The belt's item and the item in hand keep their slot (Belt Space and Equipped Space: Keeps Its Place), so a pickup with the hand full swaps: the item in hand goes down and the new one comes in.*

**Details panel: Container_UPC_Hand** (data asset, in Content Browser)

**Category: Layout**

| Property | Value |
| --- | --- |
| Layout | Slots |
| Slot Count | 1 |
| Capacity Tag | None |

*One slot, holding one stack.*

**Starting Items**: list one, which the belt draws as play begins. The inventory skips a second, with a warning.

---

## When the hands are full

With **Swap When Full** on, a pickup or a rack's **Take** reads **Swap** and trades the item in hand for the new one; off, it reads **No Room** and does nothing ([Pickups, Drops and Holders](https://rigbak.com/docs/universal-player-combat/pickups-drops-holders#when-there-is-no-room)). **G** drops the item in hand, with no belt needed: its ability comes from `AbilitySet_UPC_Default`.

<details>
<summary>Held Items settings (Advanced)</summary>

**Belt Space** and **Equipped Space** are set to **Keeps Its Place** here. **Frees Its Place** lets the character hold one item and carry a second ([Containers and Rules](https://rigbak.com/docs/universal-player-combat/inventory-containers)).

</details>

<details>
<summary>With no belt at all (Advanced)</summary>

With no belt (a style carrying `UPC.State.BeltBlocked`, or a player controller with no **UPC Quick Bar**), the config still holds one item, but a pickup waits in the slot, put away, where it does not swap. To draw it, call the Equipment Manager's **Request Equip Item** from a key on the player's machine, with the item from the inventory's **Get All Items** and **Place** empty; once it is in hand, a swap works as above.

</details>

---

More ways to leave parts out: [Use Only Part of the Inventory](https://rigbak.com/docs/universal-player-combat/inventory-pick-what-you-need).
