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 likedrink
,potion
, orTM
to give items functionality out of the box. -
⚙️ Control how items behave by setting flags like
isUsable
,isPokemonUsable
, and adding template-specific fields such assatiety
,ps
, ortmMove
.
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. 💡