Skip to content

Inventory & Items: Complete Customization Guide

This guide will walk you through everything you need to know to configure player inventories and create your own custom items in your Fivemon server. With just a few structured JSON files, you can define:

  • Fully usable items like food, drinks, potions, TMs, tools, and more.

  • How and where these items are stored in the player's inventory.

  • What items players start with when they join the game.

  • How dropped bags work when players lose or discard items.

  • Whether if players lost their inventory on dead or not.

Fivemon’s item system is modular, extensible, and beginner-friendly, thanks to its support for Item Use templates. These templates let you add powerful, scripted functionality to items — like teaching a move, restoring HP, or granting new inventory slots — all without needing custom code.

Meanwhile, the inventory system lets you define tabbed layouts, weight limits, slot counts, and starting items, giving you full control over how items are distributed, categorized, and used.

Whether you're adding a bottle of water, a legendary TM, or configuring how many Poké Balls a new trainer receives, this guide has you covered.

Configuring Default Inventory and Bag

You can define the initial inventory of all players and configure how the bag dropped on the ground works directly inside your server’s:

uri-config/data/config/config.json

This configuration lets you control:

  • The starting items for each player.

  • The structure and behavior of the default inventory UI.

  • The temporary bag created when a player drops their items manually.


inventory Block

This section defines what every player starts with, and how their inventory is organized.

"inventory": {

    "removeOnDead": true,
    "start": [
        {
            "item": "water",
            "quantity": 5
        },
        {
            "item": "bread",
            "quantity": 3
        },
        {
            "item": "money",
            "quantity": 1000
        }
    ],
    "defaultMaxStackAmount": 64,
    "name": "Personal Inventory",
    "weight": 100,
    "windows": [
        {
            "name": "general",
            "label": "General",
            "categories": ["money", "food", "egg", "item", "pokemon_food", "special_pokemon_items", "utility_pokemon_items", "utility_items", "held_items", "evolutionary_items", "evolution_items"],
            "slots": 24
        },
        {
            "name": "healing",
            "label": "Healing",
            "categories": ["status_healing_items", "hp_healing_items", "healing_items", "move_enhancement", "stat_enhancement", "battle_boost", "encounter_items"],
            "slots": 24
        },
        {
            "name": "pokeballs",
            "label": "Poké Balls",
            "categories": ["capture_pokemon_items"],
            "slots": 24
        },
        {
            "name": "battle_item",
            "label": "Battle Items",
            "categories": ["battle_items", "vitamin", "level_up", "battle_effect"],
            "slots": 24
        },
        {
            "name": "berries",
            "label": "Berries",
            "categories": ["berries", "apricorns"],
            "slots": 24
        },
        {
            "name": "hmtm",
            "label": "HM/TM",
            "categories": ["HM", "TM"],
            "slots": 24
        },
        {
            "name": "treasure",
            "label": "Treasure",
            "categories": ["fishing_items", "sellable_items", "miscellaneous_items"],
            "slots": 24
        },
        {
            "name": "key",
            "label": "Key Items",
            "categories": ["vehicle", "tool", "special_items"],
            "slots": 24
        }
    ]
}

Key Inventory Settings:

  • removeOnDead: Toggle to select if inventory is lost on death or not.

  • start: The list of items and quantities each player receives when they first join.

  • defaultMaxStackAmount: Max items per slot if not overridden by the item’s definition.

  • windows: Defines inventory tabs by categories (e.g. food, tools, battle items), each with its own number of slots.


bag Block

This defines how the drop bag works when a player drops their items on the ground.

"bag": {
    "model": "p_ld_bs_bag_01",
    "zOffset": -1,
    "name": "Bag",
    "weight": 100,
    "windows": [
        {
            "name": "general",
            "label": "Items",
            "categories": ["*"],
            "slots": 6
        }
    ]
}

Key Bag Settings:

  • model: The prop model used to visually represent the bag in the world.

  • zOffset: Adjusts the height placement of the bag object.

  • weight: Max weight the dropped bag can hold.

  • windows: Structure of the bag inventory (usually a single tab with a small number of slots).


Where to Define Items

You should define your items inside:

uri-config/data/content/items.json

Each item follows a standard structure, and if you want it to be usable, you need to assign it a corresponding Item Use template.

You can also define new items with ox_inventory bridge, just edit the ox_inventory files as usual.


Base Item Structure

Here’s an example of a standard non-usable item:

{
    "name": "money",
    "label": "Money",
    "icon": "https://www.svgrepo.com/show/395619/money.svg",
    "description": "Fresh and crisp currency for all your spending needs.",
    "category": "money",
    "weight": 0.001,
    "stackAmount": 10000,
    "isUnique": false,
    "isRare": false,
    "isTradeable": true,
    "isAuctionable": false,
    "sellPrice": 0,
    "buyPrice": 0,
    "isUsable": false,
    "isPokemonUsable": false,
    "isPokemonEquippable": false,
    "isIllegal": false,
    "dropRate": 0,
    "tags": []
}

Basic Identity Fields

Field Type Description
name string Unique identifier for the item (lowercase, no spaces, use _ or -).
label string The name shown to players in the UI.
description string Tooltip or detailed description. Can include lore or usage details.
icon string URL to the item's icon (usually .svg or .png).
category string Logical category (e.g. food, medicine, key_item, utility_items).

Inventory and Trading Fields

Field Type Description
weight number How much the item weighs (used for inventory limits).
stackAmount number Max number of items per inventory slot (e.g. 16 for food).
isUnique boolean If true, only one of this item can exist per player (e.g. key items).
isRare boolean Used for rarity tagging (cosmetic/info only by default) (unused for now).
isTradeable boolean If true, players can trade it with others.
isAuctionable boolean If true, the item can be sold in auctions or marketplaces (unused for now).
isIllegal boolean Used for roleplay systems (e.g. contraband tracking, police logic) (unused for now).
dropRate number If used in loot systems, this defines how common the item is (0–100) (unused for now).

Economy Fields

Field Type Description
sellPrice number Price when selling the item to vendors or systems.
buyPrice number Price to buy the item from a shop or merchant.

Usability Fields

Field Type Description
isUsable boolean If true, the item can be used by the player (e.g. food, drink, tools).
isPokemonUsable boolean If true, the item can be used on a Pokémon (e.g. potion, TM).
isPokemonEquippable boolean If true, the item can be equipped by a Pokémon (e.g. held items).
use string Name of the Item Use template (e.g. drink, potion, TM, bag).

Tags (Optional)

Field Type Description
tags array Can be used to attach custom metadata for scripts (unused for now).

Example: Drink (Restores Thirst)

{
    "name": "water",
    "label": "Water Bottle",
    "icon": "https://www.svgrepo.com/show/297764/water-bottle-water.svg",
    "description": "Refreshing bottled spring water.",
    "category": "food",
    "weight": 0.2,
    "stackAmount": 16,
    "isUsable": true,
    "use": "drink",
    "satiety": 25
}
  • use: "drink"

  • satiety: Value from 1 to 100 indicating how much thirst is restored.


Example: Eat (Restores Hunger)

{
    "name": "bread",
    "label": "Bread",
    "icon": "https://www.svgrepo.com/show/530223/bread.svg",
    "description": "A loaf of bread, tough enough to survive the wild.",
    "category": "food",
    "weight": 0.2,
    "stackAmount": 16,
    "isUsable": true,
    "use": "eat",
    "satiety": 25
}
  • use: "eat"

  • satiety: Works exactly the same as for drinks.


Example: Potion (Restores HP to Pokémon)

{
    "name": "potion",
    "label": "Potion",
    "icon": "https://example.com/potion-icon.svg",
    "description": "Restores HP to a Pokémon.",
    "category": "medicine",
    "weight": 0.1,
    "stackAmount": 10,
    "isPokemonUsable": true,
    "use": "potion",
    "ps": 20
}
  • use: "potion"

  • ps: Amount of HP the item restores to the Pokémon.


Example: TM (Teaches a Move)

{
    "name": "tm_confusion",
    "label": "TM - Confusion",
    "icon": "https://example.com/tm-icon.svg",
    "description": "Teaches the move Confusion to a compatible Pokémon.",
    "category": "tm",
    "weight": 0.05,
    "stackAmount": 1,
    "isPokemonUsable": true,
    "use": "TM",
    "tmMove": "confusion"
}
  • use: "TM"

  • tmMove: ID of the move that will be taught. Make sure it’s a move that the Pokémon can legally learn via machine.


Example: Backpack (Adds Inventory Slots)

{
    "name": "bag",
    "label": "Bag",
    "icon": "https://www.svgrepo.com/show/404790/backpack.svg",
    "description": "A durable and spacious backpack.",
    "category": "utility_items",
    "weight": 1.0,
    "stackAmount": 1,
    "isUsable": true,
    "use": "bag",
    "bagWeight": 50,
    "bagSlots": 24,
    "clothingId": 82,
    "clothingTextureID": 0,
    "clothingProp": "prop_cs_heist_bag_01",
    "clothingPropZOffset": -0.65
}

This item lets players carry more items when equipped.


Summary

With the tools provided by Fivemon, you have everything you need to build a fully customized item and inventory experience:

  • 🧳 Configure the player inventory system through config.json:

    • Set the initial items each player receives.

    • Customize inventory tabs, slot limits, categories, and overall weight.

  • 🎒 Define the dropped bag inventory when players drop their items, including the model, contents, and slot layout.

  • 🎯 Create any item you want by defining it in items.json. Use Item Use templates like drink, potion, or TM to give items functionality out of the box.

  • ⚙️ Control how items behave by setting flags like isUsable, isPokemonUsable, and adding template-specific fields such as satiety, ps, or tmMove.

This system is powerful, modular, and ready to scale with your content — from casual gameplay to complex roleplay setups. You can create usable tools, medicines, progression items, and integrate them easily into quests, trades, NPCs, and world interactions.

And the best part? You can do it all without touching a single line of Lua or JS. Just structured JSON and creativity. 💡