The Two Windows#
City Builder has two interfaces, both for staff. It helps to know which is which from the start:
Window | Opened with | What it is for |
|---|---|---|
Decoration mode |
| Building the world: placing props, moving them, putting them away and selling them. |
Furniture Creator |
| Growing the catalogue: adding new props, with their price, picture, colours and behaviour. |
Both check the same permission — a framework admin or a job in Config.CreatorJobs (see Installation → Who Can Build). Anyone else gets "You don't have permission to do this".
Everything placed with City Builder is global: it belongs to the server, not to the staff member who placed it, and every player sees it. Any builder can move, put away or sell any object.
Decoration Mode#
Type /citybuilder. Your character stays where it is, the camera lifts off as a free camera, the HUD and minimap hide, background music starts and the decoration panel opens along the bottom of the screen.

The panel has two tabs on its left edge:
Tab | What it shows |
|---|---|
Objects | The furniture catalogue. Five rooms across the top — Kitchen, Bathroom, Bedroom, Living, Garden — each with its categories, a search box and a card per prop with its picture and price. Hidden when |
Stash | Every object already placed on the server. This is where you select a placed object to move it, put it away or sell it. |
The camera may fly up to Config.MaximumDistanceForDecorate metres (350 by default) from where your character stands. Go further and the builder closes with "You are too far from the decoration area" — walk your character closer and open it again. Set the value to false to remove the limit.
Press Esc or the close button to leave. A prop you were placing but had not bought is removed; everything already placed stays.
Placing a Prop#
Choose it
In the Objects tab pick a room, then a category, then a prop — or type in the search box. If the prop has colour variants, choose one in the header: each variant is its own model and may have its own price.
Position it
The prop appears five metres in front of the camera, outlined in blue. Move it with either editor (below), press G to settle it on the ground, and fly around it with the free camera to check it from every side.
Buy it
Press Enter and confirm. With money enabled the price is taken from the builder's cash or bank; with money off the button reads Place item and it is free. The object is saved and appears for every player at once.
Placed objects are streamed: each player only spawns the ones within Config.SpawnDistance (30 m by default). A whole decorated city costs a player nothing until they walk into it.
The Two Editors#
Press M to switch between them at any time. The current one is announced on screen.
The default, and the fastest for furnishing a room. Hold the left mouse button and the prop follows the cursor over floors, walls and terrain. While holding, Z and X turn it left and right.
For precise work. The prop shows 3D handles: drag an arrow to move along one axis, or a ring to rotate around it.
K switches the handles between Translate and Rotate — also selectable in the header.
Q switches the axes between world and the prop's own (local) orientation.
F focuses the free camera on the prop: it frames it and slowly orbits around it. Press again to fly freely.
A prop cannot be raised more than 10 m above where it was when you selected it, so it never gets lost in the sky.
Controls#
Key | Action |
|---|---|
Mouse + W A S D | Fly the free camera. |
Left click (hold) | Mouse mode: drag the prop. Gizmo mode: select a prop and use the handles. |
Z / X | Rotate the prop in mouse mode. |
G | Place the prop on the ground. |
M | Switch between mouse mode and gizmo mode. |
K | Gizmo: translate or rotate. |
Q | Gizmo: world or local axes. |
F | Gizmo: focus and orbit the camera around the selected prop. |
F3 | Turn the free camera on or off. |
F5 | Show or hide the cursor, to switch between clicking the panel and flying the camera. |
F6 | Hide or show the decoration panel, for a clear view. |
Enter | Buy and place the new prop. |
Esc | Close decoration mode. |
The keys shown on the instructional bar at the bottom right always match the current mode. Free-camera speeds live in CameraOptions in config/config.lua.
Managing Placed Objects#
Open the Stash tab. It lists every object on the server; click one — or, in gizmo mode, click the object in the world — and the header turns into its management panel:
Action | What it does |
|---|---|
Move | Drag it or use the handles, exactly as when placing it. |
Save Location | Writes the new position and rotation of every object you moved, and moves them for every player. |
Put in Stash | Removes it from the world without deleting it. Press again to bring it back to the same spot — handy for seasonal or event decoration. |
Sell Furniture | Deletes it for good. With money enabled the builder receives |
Interactive Props#
Some props do something when a player stands next to one (within 1.5 m) and presses E. The behaviour comes from the catalogue entry, so every copy of that prop behaves the same.
Stashes#
Props with type = 'stash' — washing machines, fridges, cabinets, kitchenettes and more out of the box — show [E] - Open stash and open a storage in your inventory. Every placed copy has its own stash, named citybuilder_<id>, with the slots and weight set on the prop — or Config.DefaultStashData when the prop sets none. Anyone can open it.
Wardrobes#
Props with type = 'gardrobe' show [E] - Open gardrobe and open the outfit menu of your clothing script.
Lights#
Props in the Light category cast a real spotlight in the direction they face — rotate the prop to aim it. The beam already shows while you are positioning it. Brightness comes from Config.DefaultLightIntensity.
Dynamic doors#
Props marked isDoor = true are left unfrozen so they swing open and closed, when dynamic doors are enabled (see Installation → Dynamic Doors).
Your own interactions#
Any prop can show [E] - Interact and fire one of your events — an arcade machine that starts a mini-game, a jukebox that opens a music menu. See Commands and Exports → Custom Prop Events.
Money#
City Builder ships with money off: prices are hidden, placing is free and selling pays nothing. Turn it on to make building cost something — useful when a job, not only admins, builds:
-- config/config.lua
Config.EnableMoney = true
Config.MoneyType = 'bank' -- 'money' (cash) or 'bank'
Config.SellObjectCommision = 0.3 -- selling pays back 30 % of the price
-- How prices are written in the interface (display only)
Config.Intl = {
locales = 'en-US',
options = { style = 'currency', currency = 'USD', minimumFractionDigits = 0 }
}If the builder cannot afford a prop, the purchase is refused with "You don't have enough money!" and the prop is removed.
The Furniture Creator#
Type /citybuilderfurniture (rename it with Config.FurniCreatorCommand). On the left are the catalogue's categories and the props added in game so far; on the right, the form.

Pick a category
The new prop will appear under that category in decoration mode.
Fill in the basics
Object name is the model's spawn name, for example
prop_couch_01— it is checked against the game, so a typo or a prop your server does not stream is refused. Add a label, description, price and colour label.Add a picture
Paste a direct image URL (a square PNG of 512 × 512 px or more looks best), or take one with the photo studio below.
Set its behaviour
Under Advanced, make it a Stash (with slots and max weight) or a Wardrobe. The position offset moves the [E] prompt relative to the prop — raise
zfor a tall wardrobe.Add colour variants (optional)
Each variant is another model shown as a colour choice of the same item, with its own label, price and behaviour.
Create
The prop is saved to the database and sent to every connected player immediately — no restart.
Props added in game can be edited or deleted from the same window. Props written in config/furniture.lua cannot be deleted here — remove them from the file. A prop created in game with the same object name as a catalogue prop in the same category replaces that catalogue entry after the next restart.
The Photo Studio#
Needs screenshot-basic and a FiveManage token (see Installation → Photo System Setup). Write the object name first, then press the camera button next to the image field.

Your character is hidden and the prop appears alone on a gradient backdrop, facing the camera:
Key | Action |
|---|---|
Z / X | Turn the prop. |
Q / E | Raise or lower it. |
Mouse wheel | Zoom in and out. |
Enter | Take the photo and upload it. |
Backspace | Cancel. |
After the upload you are returned to the form with the image URL already filled in. On slow PCs, raise Config.FurniCreator.interval (milliseconds to wait before the capture) if pictures come out half-loaded.
The Furniture Catalogue#
The shipped catalogue lives in config/furniture.lua: 38 categories and more than 440 props, plus colour variants. Edit it for changes the Furniture Creator does not cover — a new category, prices in bulk, doors or custom events.
Rooms#
Config.FurnitureNavigation is the row of rooms at the top of the Objects tab. A category points at a room by its number.
# | Room | Categories |
|---|---|---|
1 | Kitchen | Cookers, dishwashers, fridges, hanging cabinets, hotplates, kitchenettes, knife blocks, microwaves, ovens, sinks, tables, chairs |
2 | Bathroom | Washing machines, toilets, toilet paper and brushes, showers, mirrors, towels |
3 | Bedroom | Beds, bedside tables, carpets, decals, laptops, paintings, wardrobes |
4 | Living | Couches, coffee tables, lamps, plants, TVs and jukeboxes |
5 | Garden | Bushes, trees, outdoor sofas, lights, security cameras |
A category and its props#
Config.Furniture = {
['washingmachine'] = { -- the category key
label = 'Washing machine',
img = Config.ImagePath .. 'decorate/categories/rooms/bathroom/bathroom-washingmachine-blue.svg',
navigation = 2, -- room: 2 = Bathroom
dynamic = true,
css = { width = 4.5, top = 5.5, left = 2.5 }, -- position on the room illustration
items = {
[1] = {
img = Config.ImagePath .. 'decorate/categories/rooms/bathroom/items/washing/prop_washer_02.png',
object = 'prop_washer_02', -- the model
price = 400,
label = 'Clear washing',
description = 'A beautiful washing machine, at a good price and completely new.',
colorlabel = 'White',
colors = { -- optional variants
{ label = 'Old', object = 'v_ret_fh_washmach', price = 310 },
},
type = 'stash', -- 'stash' | 'gardrobe' | nil
offset = { x = 0.0, y = 0.0, z = 0.0 }, -- where the [E] prompt sits
stash = { maxweight = 50000, slots = 3 },
},
}
},
}Prop field | Meaning |
|---|---|
| The model's spawn name. Must exist in the game or be streamed by your server. |
| Charged when placed, if money is enabled. Selling pays back a share of it. |
| What the card in the catalogue shows. |
| Variants: each with its own |
|
|
|
|
| Where the [E] prompt appears, relative to the prop. Required for any interactive prop. |
|
|
A brand-new category also needs its navigation room, an img icon and a css position on that room's illustration; copy an existing category in the same room and adjust it. Restart the resource after editing the file.
Settings Reference#
config/config.lua
Setting | Default | Purpose |
|---|---|---|
| 'en' | Language of the interface and messages. |
| false | Charge for props and pay out when selling. |
| 'money' |
|
| 0.3 | Share of the price paid back when selling. |
| true | Show the Objects tab. |
| police, ambulance | Jobs and grades that may build, besides admins. |
| 1 000 000 / 30 | Weight and slots of a stash prop with no size of its own. |
| 40.0 | Brightness of light props. |
| false | Your FiveGuard resource name, so the free camera is not flagged. |
| shipped track · 0.01 | Background music in decoration mode: an |
| false | Mute the interface click sounds. |
| en-US, USD | How prices are formatted. Display only. |
| 'citybuilderfurniture' | The Furniture Creator command. |
| 300 | Milliseconds to wait before a photo is captured. |
| — | Free-camera look, move, climb and rotate speeds. |
| — | The game control codes behind each key. Change at your own risk. |
| false | Verbose console output. Keep it off in production. |
config/decorate.lua
Setting | Default | Purpose |
|---|---|---|
| 30.0 | Metres around a player within which placed objects are spawned. |
| 350.0 | How far the camera may fly from the character. |
| true | Leave door props unfrozen so they swing. |
config/furniture.lua
Setting | Purpose |
|---|---|
| The rooms across the top of the catalogue. |
| Every category and prop. |
| Props that fire your own event on [E]. See Commands and Exports. |



