Configuration
Configuration
ML Clothing has two config files, both left out of escrow so they can be edited:
shared/config.luaholds the clothing, bag, armor plate, wear, and anti-exploit settings.shared/invadmin_config.luaholds the settings for the bundled inventory admin panel.
Every value below is shown with its default and explained.
General
1Config.Debug = false -- Enable debug prints in console
2Config.Language = 'en' -- Language: 'en' | 'it' | 'de' | 'es' | 'fr'Config.Debug: whentrue, prints diagnostic lines throughDebugPrint. Keep itfalsein production.Config.Language: the active locale. Locale files present in the build areen,it,de,es,fr, andpt-BR. If the chosen language has no file, the resource falls back to English.
Notifications
Each entry toggles one player notification. Set to false to suppress that message.
1Config.Notifications = {
2 inventory_full_dropped = true, -- Notify when items are dropped because inventory is full
3 not_enough_space = true, -- Notify when there's not enough space to equip
4 inventory_full_add_failed = true, -- Notify when item couldn't be added to inventory
5 outfit_updated = true, -- Notify when outfit is changed
6 clothing_slot_occupied = true, -- Notify when trying to equip a slot that's already taken
7 no_carrier_equipped = true, -- Notify when trying to insert a plate without a carrier
8 carrier_full = true, -- Notify when plate carrier is full
9 plate_inserted = true, -- Notify when an armor plate is inserted
10 plate_swapped = true, -- Notify when a plate is swapped for a better one
11 plate_not_better = true, -- Notify when the new plate isn't better than current
12 bag_item_blocked = true, -- Notify when an item is blocked from entering the bag
13}inventory_full_dropped: item dropped on the ground because the inventory is full.not_enough_space: not enough room to equip the item.inventory_full_add_failed: item could not be added back to the inventory.outfit_updated: outfit changed successfully.clothing_slot_occupied: the target clothing slot is reserved or already taken.no_carrier_equipped: a plate was used without a plate carrier equipped.carrier_full: the plate carrier has no free plate slot.plate_inserted: a plate was inserted.plate_swapped: a plate was swapped for a stronger one.plate_not_better: the inserted plate is weaker than what is already in the carrier.bag_item_blocked: an item was blocked from entering a bag by the bag blacklist.
Bag and bag effect
1Config.BagEffect = true -- If true, equipped bags affect player movement speed based on weight
2
3Config.Bag = {
4 DefaultWeight = 5000, -- Default bag carry capacity (grams) when no specific bag size matches
5 DefaultCols = 3, -- Default bag inventory columns
6 DefaultRows = 3, -- Default bag inventory rows
7
8 SpeedTable = {
9 { 0, 1.00 },
10 { 5, 0.97 },
11 { 10, 0.93 },
12 { 15, 0.88 },
13 { 18, 0.82 },
14 { 27, 0.75 },
15 { 36, 0.65 },
16 { 40, 0.55 },
17 },
18}Config.BagEffect: whentrue, a worn bag slows the player based on the total weight it carries.Config.Bag.DefaultWeight: bag capacity in grams used when the worn bag drawable has no entry inConfig.BagSizes.Config.Bag.DefaultCols/DefaultRows: default bag grid used with the default weight.Config.Bag.SpeedTable: pairs of{ weight_kg, speed_multiplier }. The player speed multiplier is interpolated linearly from bag weight in kilograms.0 kggives full speed (1.00);40 kggives0.55.
Bag sizes
1Config.BagSizes = {
2 female = {
3 [111] = { weight = 10000, cols = 4, rows = 4 },
4 -- ...
5 [125] = { weight = 15000, cols = 6, rows = 4 },
6 -- ...
7 },
8 male = {
9 [111] = { weight = 15000, cols = 6, rows = 4 },
10 -- ...
11 },
12}Config.BagSizes: maps the worn bag drawable index, per gender, to a stash size. Each entry setsweight(grams),cols, androws. When a bag is equipped, the drawable index of the ped's bag component decides which entry applies. Drawables with no entry fall back toConfig.Bag.DefaultWeightand the default grid. The file ships with a large default table for bothmaleandfemale; edit, add, or remove indices to match your bag models.
Progress
1Config.Progress = {
2 OpenDuration = 2500, -- Duration (ms) of the progress bar when opening a bag
3}Config.Progress.OpenDuration: length in milliseconds of the progress bar shown when a player opens a bag stash.
Armor plates
1Config.SyncPlatesEveryHit = true -- Sync plate health to database on every damage event
2Config.UseBrokenPlates = true -- If true, destroyed plates drop as broken plate items
3Config.BrokenPlateItem = 'brokenplate' -- Item name for broken/used armor plates
4
5Config.HeavyDrawables = {
6 male = { 12, 13, 15, 18 }, -- Male drawable indices with heavy armor visuals
7 female = { 22, 23, 25, 28 }, -- Female drawable indices with heavy armor visuals
8}
9
10Config.Plates = {
11 ['heavyplate'] = 50, -- Heavy armor plate: 50% armor
12 ['lightplate'] = 25, -- Light armor plate: 25% armor
13 ['brokenplate'] = 0, -- Broken plate: no armor (can be repaired)
14}Config.SyncPlatesEveryHit: whentrue, plate health is written back to plate metadata on every damage event, so plate wear survives a disconnect at the cost of more frequent writes.Config.UseBrokenPlates: whentrue, a plate that reaches zero health becomes the broken plate item.Config.BrokenPlateItem: the item name used for a destroyed plate. Must be a registered item.Config.HeavyDrawables: per-gender ped drawable indices that count as heavy armor visuals and affect movement.Config.Plates: maps each plate item name to its armor value (0 to 100).heavyplategives 50,lightplategives 25,brokenplategives 0. The armor value a carrier grants is the sum of its plate health, capped at 100.
Clothing items
1Config.ClothingItems = {
2 hat = { slot = 11, type = 'prop', componentId = 0 },
3 undershirt = { slot = 12, type = 'component', componentId = 8 },
4 jacket = { slot = 13, type = 'component', componentId = 11 },
5 bodyarmor = { slot = 14, type = 'component', componentId = 9 },
6 gloves = { slot = 15, type = 'component', componentId = 3 },
7 pants = { slot = 16, type = 'component', componentId = 4 },
8 shoes = { slot = 17, type = 'component', componentId = 6 },
9 mask = { slot = 18, type = 'component', componentId = 1 },
10 glasses = { slot = 19, type = 'prop', componentId = 1 },
11 earrings = { slot = 20, type = 'prop', componentId = 2 },
12 chain = { slot = 21, type = 'component', componentId = 7 },
13 bracelet = { slot = 22, type = 'prop', componentId = 7 },
14 watch = { slot = 23, type = 'prop', componentId = 6 },
15 bag = { slot = 24, type = 'component', componentId = 5 },
16 decals = { slot = 25, type = 'component', componentId = 10 },
17}Config.ClothingItems: the master map from item name to inventory slot and ped component. Each entry has:
- slot: the inventory slot the item locks into. Must be unique per item. The values run 11 to 25.
- type: 'component' for a ped component or 'prop' for a ped prop.
- componentId: the GTA component or prop index the item drives.
- From this table the resource builds
Config.ClothesSlotID(the sorted list of reserved slots),Config.ValidSlotsPerItem, andConfig.ComponentMapping. Those three are derived automatically; do not edit them by hand.
bodyarmor uses slot 14 and drives the plate carrier. Do not remap it or add the wear system to it. It has its own plate durability system.
Default clothing
1Config.DefaultClothing = {
2 male = {
3 mask = { draw = 0, text = 0 },
4 hat = { draw = -1, text = -1 },
5 -- ...
6 pants = { draw = 21, text = 0 },
7 shoes = { draw = 34, text = 0 },
8 -- ...
9 },
10 female = {
11 -- ...
12 pants = { draw = 15, text = 0 },
13 shoes = { draw = 35, text = 0 },
14 -- ...
15 },
16}Config.DefaultClothing: the drawable and texture applied to each clothing slot when an item is removed, per gender. A value of-1clears the component or prop (nothing worn). These are the fallback naked-state values so removing a jacket does not leave a gap.
Anti-exploit
1Config.AntiExploit = {
2 PlateSwapCooldown = 2000, -- Cooldown (ms) between plate swap actions
3 ValidatePlateHealth = true, -- Server validates plate health on every action
4 MaxHeavyPlates = 2, -- Max heavy plates a player can carry
5 MaxLightPlates = 1, -- Max light plates a player can carry
6 PreventArmorDupe = true, -- Prevent armor duplication exploits
7}PlateSwapCooldown: minimum milliseconds between plate swap actions per player.ValidatePlateHealth: whentrue, the server re-checks plate health on every plate action instead of trusting the client.MaxHeavyPlates: maximum heavy plates a player may carry.MaxLightPlates: maximum light plates a player may carry.PreventArmorDupe: whentrue, blocks the known armor duplication paths.
Stash prefixes
1Config.Stash = {
2 PlateCarrierPrefix = 'platecarrier_', -- Prefix for plate carrier stash IDs
3 BagPrefix = 'playerbag_', -- Prefix for bag stash IDs
4}Config.Stash.PlateCarrierPrefix: internal ID prefix for plate carrier stashes.Config.Stash.BagPrefix: internal ID prefix for bag stashes. These are used to build unique stash identifiers; leave them unless they collide with another resource.
Bag blacklist
1Config.BagBlacklist = {
2 enabled = true, -- Master toggle (false = disables the whole filter)
3 denyBagInsideBag = true, -- Prevents nesting bags inside other bags (recommended: true)
4
5 items = {
6 -- 'gold',
7 -- 'weapon_rpg',
8 },
9
10 prefixes = {
11 'blueprint_',
12 -- 'ammo_',
13 },
14}enabled: master switch for the bag content filter.falsedisables the whole feature.denyBagInsideBag: whentrue, blocks nesting a bag inside another bag.items: exact item names blocked from entering a bag.prefixes: any item whose name starts with one of these strings is blocked. The default ships withblueprint_.- The filter runs on the inventory swap hook: a matching incoming item has the swap refused. The player notice is toggled by
Config.Notifications.bag_item_blocked.
Wear and decay
1Config.WearDecay = {
2 Enabled = true, -- Master switch for the wear system
3 Time = '60m', -- Default time a piece lasts while worn: '45s', '30m', '2h', '1d' (plain number = minutes)
4 OnDepleted = 'break', -- at 0 durability: stays worn but broken (0 protection via ml_clothingBroken)
5 Notify = true, -- notify the player when a piece breaks
6
7 Repairable = false, -- no repair item: equip a fresh piece to restore protection
8 RepairItem = 'repair_kit',
9 RepairCount = 1,
10 RepairAmount = 100,
11
12 Items = {
13 ['antirad_mask'] = {
14 time = '30m',
15 male = {
16 { component = 1, drawable = 244, texture = 0 },
17 -- ...
18 },
19 },
20 ['antirad_suit'] = {
21 time = '60m',
22 unisex = {
23 { component = 11, drawable = 660, texture = 0 },
24 { component = 11, drawable = 731, texture = 0 },
25 },
26 },
27 },
28}Enabled: master switch for the wear system. When on, configured drawables lose durability while worn.Time: how long a piece lasts while worn before it breaks. Accepts a number with a unit suffix ('45s','30m','2h','1d') or a plain number, read as minutes. Entries without their owntimeuse this default. The tick rate and drain per tick are derived internally.OnDepleted: behavior at zero durability.'break'keeps the piece worn but broken, giving no protection, and flags it in theml_clothingBrokenstatebag.Notify: notify the player when a piece breaks.Repairable: whenfalse, worn gear cannot be repaired with an item; the player equips a fresh piece to restore protection.RepairItem/RepairCount/RepairAmount: the default repair item, quantity consumed, and durability restored, used by entries that do not set their own.Items: the drawables managed by the wear system. An entry matches by drawable (component, drawable, texture) per gender (male,female, orunisex) or by item name, and may set its owntime. Each entry may override the default repair withrepairItem,repairCount, andrepairAmount. SettingrepairItem = falsemakes a piece non-repairable. The shipped entries target radiation gas masks and antirad suits. Do not addbodyarmorhere; it has its own plate durability. See_INSTALL/WEAR_DECAY.txtfor the full setup notes. Configs from older builds that still setTickSecondsanddrainPerTickkeep working;timewins when both are present.
Admin panel
The bundled inventory admin panel is configured in a separate file.
1Config.AdminAce = nil
2Config.Command = 'invadmin'
3Config.OpenKey = nil
4Config.DefaultTheme = 'default'
5Config.ClothingCatalogUrl = 'http://127.0.0.1:3960/api/catalog'Config.AdminAce: an ACE permission that grants admin access to the panel. When set, a player holding this ACE passes the admin check. Whennil, access falls back toBridge.HasPermission.Config.Command: the chat command that opens the admin panel. Defaultinvadmin.Config.OpenKey: an optional key binding to open the panel. When set to a non-empty string, a keybind command is registered. Whennil, no keybind is created and the panel opens by command only.Config.DefaultTheme: the panel theme sent to the UI on open. Default'default'.Config.ClothingCatalogUrl: the HTTP endpoint the clothing tab reads its drawable catalog from. The default points to a local service; a hosted catalog URL will be published and can be set here. The clothing tab also usesml_autocapture(free resource) for item image capture; without it the capture button reports that the resource is not running.
1Config.RateLimit = {
2 list = 500,
3 get = 400,
4 save = 1500,
5 delete = 1500,
6 upload = 1500,
7 playerList = 500,
8 playerGet = 400,
9 playerGive = 800,
10 playerRemove = 800,
11 stashList = 500,
12 stashGet = 400,
13 stashSave = 1500,
14 stashDelete = 1500,
15}Config.RateLimit: per-action cooldowns in milliseconds for the admin panel callbacks. Each key maps to one server action (item list, get, save, delete, image upload, player list and give/remove, stash list, get, save, delete). Raising a value throttles that action more; lowering it allows faster repeat use.
1Config.Editor = {
2 DefaultGrid = { width = 1, height = 1 },
3 MaxGrid = 5,
4 DefaultWeight = 0,
5 DefaultStack = true,
6 DefaultClose = true,
7 NamePrefix = 'custom_',
8 Rarities = {
9 'common',
10 'uncommon',
11 'rare',
12 'epic',
13 'legendary',
14 },
15 ConsumableTypes = {
16 'food',
17 'drink',
18 'alcohol',
19 'medical',
20 'other',
21 },
22 MaxImageBytes = 524288,
23}DefaultGrid: default item grid size for a new item created in the editor.MaxGrid: maximum grid width or height allowed in the editor.DefaultWeight: default weight for a new item.DefaultStack: whether new items are stackable by default.DefaultClose: whether new items close the inventory on use by default.NamePrefix: prefix applied to item names created in the editor. Defaultcustom_.Rarities: the rarity options offered in the editor.ConsumableTypes: the consumable type options offered in the editor.MaxImageBytes: maximum size in bytes for an item image upload. Default524288(512 KB).
Server ConVars
These convars go in your server.cfg (or a separate ox.cfg you exec from it). They are read once at resource start, so any change requires a restart of the resource (or the server). A complete, commented file with every convar and its default ships at setup/server.cfg.example.
Use setr for any convar the interface reads, and set for server-only values (webhooks, loot tables, ACE-style checks). setr replicates the value to game clients; set keeps it on the server only. If a client-facing convar is set with plain set, the client never receives the value and silently falls back to its built-in default - the setting will appear to do nothing, with no error anywhere. Every convar below already shows the correct prefix: copy it exactly as written.
inventory:framework: Overrides framework detection. Leave unset to let ml_bridge auto-detect it. Acceptsesx,qb,qbx,ox,nd,standalone. Default:'esx'.inventory:weight: Maximum weight a player can carry, in grams. Default:30000.inventory:slots: Flat slot count, ignored ifinventory:gridrowsis greater than 0. Default:50.inventory:gridcols: Columns of the player inventory grid. Default:8. (exclusive to this build)inventory:gridrows: Rows of the player inventory grid. When greater than 0, the total slot count becomes (gridcols × gridrows + 15); the extra 15 slots are reserved for clothing. Default:4. (exclusive to this build)inventory:secondarygridcols: Columns of the grid used by secondary inventories (trunk, stash, glovebox). Default:6. (exclusive to this build)inventory:police: Jobs with police privileges (steal command, evidence locker, etc). JSON array of strings. Default:'["police","sheriff"]'.inventory:accounts: Currency accounts used by the framework; the first entry is the primary account. JSON array of strings. Default:'["money"]'.
1setr inventory:framework ''
2setr inventory:weight 30000
3setr inventory:slots 50
4setr inventory:gridcols 8
5setr inventory:gridrows 4
6setr inventory:secondarygridcols 6
7setr inventory:police '["police","sheriff"]'
8set inventory:accounts '["money","black_money"]'inventory:dropcols: Columns of the drop grid (the "bag on the ground"). Default:6. (exclusive to this build)inventory:droprows: Rows of the drop grid. When greater than 0, it overridesinventory:dropslotswith (dropcols × droprows). Default:4. (exclusive to this build)inventory:dropslots: Total drop slots, used only wheninventory:droprowsis 0. Default matches the player slot count.inventory:dropweight: Maximum total weight of a drop, in grams. Default matches the player weight.inventory:dropmodel: Prop model spawned as the bag on the ground. Default:'prop_med_bag_01b'.inventory:dropprops: Spawns a visible prop for every drop. This has a server and client cost; leave at 0 unless the visual is needed. Default:0.
1setr inventory:dropcols 6
2setr inventory:droprows 4
3setr inventory:dropslots 50
4setr inventory:dropweight 30000
5setr inventory:dropmodel 'prop_med_bag_01b'
6setr inventory:dropprops 0inventory:weaponanims: Plays holster/unholster animations when equipping a weapon. Default:1.inventory:weaponnotify: Shows an "Equipped X" notification when a weapon is drawn. Default:1.inventory:weaponmismatch: Anti-cheat check: kicks the player if the client reports a weapon the server does not know about. Default:1.inventory:autoreload: Reloads automatically when the magazine is empty. Default:0.inventory:aimedfiring: Restricts firing to while aiming. Default:0.inventory:ignoreweapons: Weapons excluded from the mismatch check, for weapons added by other resources. JSON array of weapon names or numeric hashes. Default:'[]'.inventory:suppresspickups: Suppresses the native GTA world pickups (money and weapons spawned by the game). Default:1.inventory:disableweapons: Disables weapons entirely, for melee-only servers. Default:0.
1setr inventory:weaponanims 1
2setr inventory:weaponnotify 1
3setr inventory:weaponmismatch 1
4setr inventory:autoreload 0
5setr inventory:aimedfiring 0
6setr inventory:ignoreweapons '[]'
7setr inventory:suppresspickups 1
8setr inventory:disableweapons 0inventory:showStockBadge: Shows a "STOCK" (stackable) or "UNIQUE" (non-stack) badge on the item tooltip, plus a compact ∞ chip in the bottom-right corner of the slot. Helps decide at a glance, while looting, whether to take the whole stack or a single item. Default:0. (exclusive to this build)inventory:slotrules_debug: Debug logging for reserved slot rules (slot 1 = firearm, slot 2 = melee). Prints the reason for every rejection to the console. Leave at 0 in production. Default:0. (exclusive to this build)inventory:keys: Default keybinds: [inventory, secondary inventory, hotbar wheel]. JSON array of 3 key names. Default:'["F2","K","TAB"]'.inventory:enablekeys: Control IDs left active while the inventory is open (e.g. 249 = Y chat). JSON array of control IDs. Default:'[249]'.inventory:imagepath: Base path used for item images. Override it to serve images from an external CDN. Default:'nui://ox_inventory/web/images'.inventory:validhosts: External hosts authorized for item images loaded via URL. Any other domain is rejected. Server-side only. JSON object. Default:'{"r2.fivemanage.com":true,"i.fmfile.com":true}'.inventory:screenblur: Blurs the world behind the UI while the inventory is open. Default:1.inventory:itemnotify: Shows a "You picked up X" notification when an item is collected. Default:1.inventory:disablesetupnotification: Hides the first-run inventory setup notification. Default:0.inventory:enablestealcommand: Enables/stealfor the police job, to take items from a cuffed player. Default:1.inventory:target: Uses ox_target for stash/shop/crafting interactions instead of 3D markers. Default:0.inventory:giveplayerlist: Shows a clickable player list for giving items instead of 3D targeting. Default:0.
1setr inventory:showStockBadge 1
2setr inventory:slotrules_debug 0
3setr inventory:keys '["F2","K","TAB"]'
4setr inventory:enablekeys '[249]'
5setr inventory:imagepath 'nui://ox_inventory/web/images'
6set inventory:validhosts '{"r2.fivemanage.com":true,"i.fmfile.com":true}'
7setr inventory:screenblur 1
8setr inventory:itemnotify 1
9setr inventory:disablesetupnotification 0
10setr inventory:enablestealcommand 1
11setr inventory:target 0
12setr inventory:giveplayerlist 0ox_inventory:defaultTheme: Default primary accent color, hex. Players can override it from the UI. Default:'#00d4aa'. (exclusive to this build)ox_inventory:rarityStyle: How rarity is displayed in the grid:'fill-container'(fills the slot) or'border'. Default:'fill-container'. (exclusive to this build)ox_inventory:buttonTheme: Colors action buttons with the theme's primary color. Default:'true'. (exclusive to this build)ox_inventory:clothingPanelVisible: Shows the clothing panel next to the main inventory. Default:'true'. (exclusive to this build)ox_inventory:virtualPed: Shows the 3D ped preview next to the inventory. Default:'true'. (exclusive to this build)ox_inventory:enableThemePicker: Shows the theme color picker inside the inventory. Disable it to force everyone ontoox_inventory:defaultTheme. Default:'true'. (exclusive to this build)inventory:customRarities: Adds custom rarities on top of the 8 built-in ones (common, uncommon, rare, epic, legendary, special, illegal, police). Also add ararity_<name>key tolocales/*.jsonfor translation. JSON object:{ "key": { r, g, b, alpha?, glowSize?, glowAlpha? } }. (exclusive to this build)inventory:customCategories: Adds custom categories on top of the 9 built-in ones (all, food, medical, weapons, materials, tools, currency, equipment, misc). Also add acat_<name>key tolocales/*.json. JSON object:{ "key": { "name": "...", "icon": "<svg...>" } }. (exclusive to this build)
1setr ox_inventory:defaultTheme '#00d4aa'
2setr ox_inventory:rarityStyle 'fill-container'
3setr ox_inventory:buttonTheme 'true'
4setr ox_inventory:clothingPanelVisible 'true'
5setr ox_inventory:virtualPed 'true'
6setr ox_inventory:enableThemePicker 'true'
7setr inventory:customRarities '{}'
8setr inventory:customCategories '{}'inventory:shopmarker: Marker used for shops. JSON object:type(integer),colour[r,g,b],scale[x,y,z].inventory:evidencemarker: Marker used for the police evidence locker.inventory:craftingmarker: Marker used for crafting benches.inventory:dropmarker: Marker used for ground drops.
1setr inventory:shopmarker '{"type":29,"colour":[30,150,30],"scale":[0.5,0.5,0.5]}'
2setr inventory:evidencemarker '{"type":2,"colour":[30,30,150],"scale":[0.3,0.2,0.15]}'
3setr inventory:craftingmarker '{"type":2,"colour":[150,150,30],"scale":[0.3,0.2,0.15]}'
4setr inventory:dropmarker '{"type":2,"colour":[150,30,30],"scale":[0.3,0.2,0.15]}'inventory:randomloot: Enables random loot generation in dumpsters and non-owned vehicles. Default:1.inventory:networkdumpsters: Synchronizes dumpster contents across all players. Uses more bandwidth. Default:0.inventory:randomprices: Randomizes shop prices on every restart. Default:0.inventory:vehicleloot: Vehicle loot table. Array of[itemName, min, max, chance?].inventory:dumpsterloot: Dumpster loot table.
1set inventory:randomloot 1
2setr inventory:networkdumpsters 0
3set inventory:randomprices 0
4set inventory:vehicleloot '[["sprunk",1,1],["water",1,1],["garbage",1,2,50],["money",1,50],["money",200,400,5],["bandage",1,1]]'
5set inventory:dumpsterloot '[["mustard",1,1],["garbage",1,3],["money",1,10],["burger",1,1]]'inventory:loglevel: Log level. 0 = off, 1 = purchases and transfers, 2 = every item movement. Default:1.inventory:loghookrejection: Also logs actions rejected by hooks, useful for finding why a player cannot move an item. Server-side only. Default:1.inventory:webhook: Discord webhook for general logs (transfers, shop purchases, etc). Default:''.inventory:evidencegrade: Minimum job grade required to access the evidence locker. Default:2.inventory:trimplate: Trims whitespace from vehicle plates before lookups. Default:1.
1set inventory:loglevel 1
2set inventory:loghookrejection 1
3set inventory:webhook ''
4set inventory:evidencegrade 2
5set inventory:trimplate 1inventory:clearstashes: Deletes stashes inactive for longer than N, expressed as a MySQL interval. Default:'6 MONTH'.inventory:bulkstashsave: Saves stashes in bulk with a single query on restart, instead of one query per stash. Default:1.inventory:cleartime: Time, in minutes, after which orphaned/invisible items are dropped. Default:5.inventory:versioncheck: Checks the resource version on startup and warns if it is not an official release. Default:'true'.
1set inventory:clearstashes '6 MONTH'
2set inventory:bulkstashsave 1
3set inventory:cleartime 5
4set inventory:versioncheck 'true'