Common workflows
Step-by-step recipes for the most-used host operations. Each recipe ends with a verification step you can run in game.
Tweak weed balance
- Open
/config. - Select Economy / drugs or search
drugs. - Open
configs/economy/drugs.json. - Edit weed fields such as
seedPurchaseQuantity,waterDosesPerBottle,harvestYield, andgrowthDurationSeconds. - Save.
- Confirm the config reload.
- Buy seeds and water in game.
- Verify the number of spawned seed units and water doses.
- Grow a full plant and verify harvest yield.
Add an emergency service
- Open
/config. - Select Emergency services.
- Add a row under
dispatch.services. - Set a stable
id, such asfire. - Set
name,icon,accentColor, andtargetJobIds. - Add localization keys if using
nameKeyanddescriptionKey. - Save and test from the emergency call dialog.
targetJobIds must match real job ids. A service with no valid target jobs is ignored.
Add a fine preset
- Open
/config. - Select Justice / Fines.
- Add a row in
configs/economy/fines.json. - Set a stable
id,label,amount, andicon. - Optionally set
relatedLawIdto a real law id fromconfigs/government.json. - Save and test issuing the fine with a police job.
Add a GPS location
- Open
/config. - Select Phone.
- Add a row in GPS Locations.
- Set a stable id.
- Set the world position as
x y z. - Save and open the phone GPS app to verify.
Add an RP name
- Open
/config. - Select RP names.
- Add first names or last names to the relevant list.
- Save.
- Test the RP name randomizer.
Add a shop entity
- Open
/config. - Select Shop.
- Add a tab if needed.
- Add an entity item.
- Set
source.type. - Set the correct source path or cloud ident.
- Add
requiredJobIdsif the item is restricted. - Set
maxPerPlayerwhen the item is a world entity. - Save and buy the item in game.
Add an NPC
- Open
/config. - Select NPCs.
- Add a global NPC.
- Set type, position, yaw, model, label, and vendor fields.
- Save.
- Restart or reload the map to confirm placement.
Add a runtime map door
- Give the operator
map.doors.manage. - Equip the Toolgun and select Map Door.
- Pick a model preset, or choose Custom and select a local
.vmdlor an s&box cloud model package. - Set AccessType to
BuyableorJobRestricted. - For buyable doors, set
Priceand an optionalPropertyGroupId. - For job doors, fill
AllowedJobswith comma-separated job ids such aspolice,mayor. - Check the yellow hinge preview marker. If it appears on the handle side, swap
HingeSide; if it is still using the wrong edge on a custom model, overrideHingeAxisfromAutotoXorY. - Aim at the bottom-center placement point and primary fire.
- Open
/config→ Map doors to confirm the generatedid,map,position,yaw, size multipliers,hingeAxis, andmodelPath. - Save edits or run
litherarp.map_doors_reload. - Test opening, locking, buying, lockpicking, and removal with real player jobs.
To edit an existing runtime door, aim at it with the Map Door tool and press reload (R). The tool loads that door's title, access mode, price/job list, size multipliers, hinge side, hinge axis, timing, lockpick flag, and model. Change the settings, then primary fire to update that same door in place. Press reload while not aiming at a runtime door to clear the current edit selection.
To replace a native scene door, aim at it with the tool and press reload. Primary fire saves a runtime replacement and hides the original through disabledSceneDoors. Restore native doors via /config → Map doors → Restore Defaults or litherarp.map_doors_restore_scene_defaults.
Add runtime map glass
- Give the operator
map.glass.manage. - Equip the Toolgun and select Glass.
- Enable or disable
Breakable. - Set
Thickness,Material, and breakable auto-repair values. - Primary fire at corner 1.
- Aim at corner 2 and primary fire again.
- Open
/config→ Map glass to confirm the generatedid,map,center, axes, size, material, and repair options. - Save edits or run
litherarp.map_glass_reload. - Test collision, bullets, breakage, repair, and visibility labels from both sides.
Install a LitheraRP addon
- Confirm the package was published as a
.litrpaddonmanifest from an s&box Addon Project targeting LitheraRP. - Give the operator
addons.manage. - Open
/config. - Select Addons.
- Add an entry.
- Set
idto a stable local id, for examplepolice_pack. - Set
packageIdentto the published package ident, for examplecreator.police_pack. - Save
configs/addons.json. - Press Apply Enabled.
- Read
lastStatusandlastMessage. - Review changed configs and test the imported content in game.
The importer backs up changed files under configs/addon_backups/. If any touched config reports a validation error or fallback, the importer restores the previous contents and marks the addon entry as error.
Create a LitheraRP addon manifest
- Create an s&box Addon Project.
- Set the target game to LitheraRP in project settings.
- Restart the editor after changing the target game.
- Create a
Lithera RP Addon Manifestcustom resource. - Fill
AddonId,DisplayName,Version,Author, andSummary. - Add every cloud asset package needed by the pack to
RequiredPackages. - Add config patches.
- Prefer
UpsertArrayByIdwith stable ids for repeatable installs. - Publish the manifest asset.
- Give server operators the package ident.
Recommended first addon shape
- Start with one manifest resource and one
UpsertArrayByIdpatch. - Use ids prefixed with your creator or server name, for example
northside_notice_board. - Patch only the data your addon owns; do not overwrite unrelated server policy.
- Test install, apply, reload, uninstall, then apply again to confirm the patch is repeatable.
- If the addon needs models, materials, prefabs, or sounds, import them into the s&box Addon Project before publishing and reference their package-local paths from config.
For a weapon addon, publish the weapon prefab and assets in the Addon Project, then patch configs/shop.json to add a dealer stock entry that points at that prefab. The prefab can use gamemode-provided components such as Sandbox.ConfigurableFirearmWeapon, but addons cannot add new C# weapon logic by themselves.
Example: Discord link patch
Example: GPS point patch
Packs should add or update their own stable ids and leave server-owner choices intact.
Create a custom language pack
- Copy
Data/Localization/entoData/Localization/<code>. - Translate values.
- Keep placeholders.
- Set the active language with
litherarp.lang_set <code>. - Run
litherarp.lang_status. - QA every major UI screen.
Create a custom theme
- Copy the Data folder
configs/themes/defaultto a new folder. - Name the folder with the final theme id, for example
configs/themes/my-theme. - Edit the copied
theme.json. - Change token colors under
colorsfirst. - Switch
configs/theme.json→activeThemeto the new folder id. - Run
litherarp.theme_reload. - Add advanced SCSS only after tokens are validated.