CityRP systems index
Last updated
May be stale
This page was last updated ago, on 24 September 2026. Check what it says against the code before relying on it.
Created: 2026-09-18 Source concept: game-concept.md
Overview
CityRP is live, so this is a catalogue of what exists and not a list of what to build. It groups about 130 plugins, the core libraries and 66 vendored addons into 24 systems, and records two things about each: which pillars it serves, and where it is known to be fragile. Use it to find which system a change belongs to, what it depends on, and what to be careful of before touching it.
A system is a unit of design, not a folder. Several span plugins, libraries and addons at once.
Pillars are numbered as in the concept: 1 Community First, 2 A City You Can Build, 3 Systems Create Reasons to Interact, 4 Fun at Any Population, 5 Long-Term Growth. The two philosophies apply to every system. Meet Players Where They Are is not tagged. Live Trust Before Features is tagged "LT" only on the systems that exist to uphold it; every other system still owes it.
Systems Enumeration
Every system is implemented. "Design Doc" links a design or reference doc where one exists. Footgun numbers refer to AGENTS.md.
| # | System | Layer | Pillars | Contents | Design Doc | Depends On |
|---|---|---|---|---|---|---|
| 1 | Core Framework | Foundation | LT | Plugin loader, networking, DB and migrations, logging, access, layers, commands | plugins, networking, logging, commands | none |
| 2 | Support Systems | Foundation | LT | refund_ents, spawnpoints, item_db_update, perma_ents, model-state, internets_utils | none | 1 |
| 3 | Inventory & Items | Core | 3, 5 | Item libraries, inventory, currency, the item categories | items, items registration | 1 |
| 4 | Teams & Jobs | Core | 1, 3, 4 | Team libraries, employee_salary, uniforms, maintenance (a job) | maintenance | 1, 3 |
| 5 | Core RP Rules (generic) |
Core | 3 | Warrants, arrest, knockout, job equipment, leaders, demotion | none | 1, 3, 4 |
| 6 | Player State & Survival | Core | 3 | hunger, stamina, drowning, injuryinfo, ko-screen, bodybags, cpr, flashlight, voice distance and volume | none | 1, 5 |
| 7 | Building & Property | Core | 2 | Prop protection, limits, property_tool, propsave, doors, signs, billboards, worldprops, area, keypads, giveprops | limits, image hosts | 1, 3 |
| 8 | Sandbox Building Tools | Feature | 2 | The base Sandbox gamemode's spawn menu and toolgun, plus the vendored toolgun addons: duplicators, precision, stacker, smartsnap, material and bodygroup tools | none | 7 |
| 9 | Law Enforcement & Justice | Feature | 1, 3 | policedb, warrant_delegation, jailpoints, laws, breathalyser, less_lethals | none | 3, 4, 5 |
| 10 | Crime | Feature | 1, 3, 4 | weed, meth, carboosting, contraband, black market | weed, car boosting | 3, 4, 5, 13 |
| 11 | Restraint & Detention | Feature | 1, 3 | hostage-chairs, restrained_search. Shared by law enforcement and criminals. | none | 3, 5 |
| 12 | Gathering, Crafting & Resources | Feature | 4, 3, 5 | mining, mixtures, packaging, stove, fishing | none | 3 |
| 13 | Vehicles | Feature | 3 | vehicles, paint, skins, plates, cruise control, doors, tesla_charger, photon | vehicle params, emergency lighting | 1, 3 |
| 14 | Casino & Minigames | Feature | 1, 4 | pcasino, holdem, casinocards, collectables, trading cards and stickers | casino | 3 |
| 15 | Progression | Feature | 5, 4 | rep, xp-bar, MESKA | MESKA | 1 |
| 16 | Clans | Feature | 1, 5 | clans | clans | 1, 3 |
| 17 | Communication | Feature | 1 | radio, pradio, voiceradio, phonebook, chatbox, typing | none | 1, 4 |
| 18 | World & Environment | Feature | 4 | daynight, map, waypoints, zones | waypoints, environment | 1 |
| 19 | HUD & Player UI | Presentation | none | hud, tophints, context menu, settings, accessories, playermodel skins | UI scaling | most Feature systems |
| 20 | Community & Meta-Engagement | Meta | 1, 5 | login_rewards, steamgroup, referrals, website_rewards, Discord relay | none | 1, 3, 17 |
| 21 | Administration & Moderation | Meta | LT | admin, admin_assist, adminhub, bans, warning, passivemode, autokick, screengrab, onlinelog, tracking, eventbox, eventnotify | design/screengrab/rebuild-plan.md (draft) |
1 |
| 22 | Anti-cheat | Meta | LT | antihack, antilag, antithird | design/anti-cheat/feature-overview.md (draft) |
1 |
| 23 | Server Operations | Meta | LT | queue, beta, auto restart | server sessions | 1 |
| 24 | Dev Tooling | Meta | LT | fprofiler, inter_benchmark, tool_search, vehiclescript_editor | AGENTS.md | 1 |
Placement notes:
- Discord relay is under Meta-Engagement. It connects the game to the community outside it, which is not in-game communication.
- Weed and meth are crime, and they also work as solo loops, so Crime carries pillar 4.
- HUD & Player UI serves no pillar of its own. It presents the systems that do.
Priority
Milestone tiers (MVP, vertical slice, alpha) do not apply to a live game. This index tracks two things in their place: how well the pillars are covered, and where the code is fragile.
Pillar Coverage
| Pillar | Systems serving it | Reading |
|---|---|---|
| 1 Community First | 4, 9, 10, 11, 14, 16, 17, 20 | Well covered |
| 2 A City You Can Build | 7, 8 | Provided by the base Sandbox gamemode. Our part is limits, protection and property, which is system 7. |
| 3 Systems Create Reasons to Interact | 3, 4, 5, 6, 9, 10, 11, 12, 13 | Well covered |
| 4 Fun at Any Population | 4, 10, 12, 14, 15, 18 | Covered on paper. The system built for it, Gathering, leans on a mining plugin that has not merged. |
| 5 Long-Term Growth | 3, 12, 15, 16, 20 | Covered |
Live Trust Before Features is a philosophy, so it is not in the table. Systems 1, 2, 21, 22, 23 and 24 exist to uphold it, and every other system owes it.
Fragility
| System | Risk | Mitigation |
|---|---|---|
5 Core RP Rules (generic) |
About 3,300 lines with roughly 345 callers, and it holds knockout state, which has a revert history | Do not refactor in passing. Split it only as planned work. |
| 1 Core Framework | Dependencies resolve per realm (footgun 18), file-scope server gates (19), two plugin identities (22), hardcoded table names in migrations (24) | Read plugins.md before changing load behaviour |
| 2 Support Systems | refund_ents publishes a global that eight outside callers use without a nil guard (footgun 25) | Never exclude it by server or map without guarding the callers |
| 3 Inventory & Items | Registering a base item makes it obtainable (footgun 6); duplication bugs are a recurring class (7) | New items use ITEM:New |
| 4 Teams & Jobs | Job equipment is granted from three independent places (footgun 16) | Update all three together |
| 6 Player State & Survival | CPR cleanup and the knockout black screen have reverted refactors; hunger resets speed to a hardcoded base (footgun 4) | Layer effects; test thoroughly |
| 7 Building & Property | hook.Add runs before GM:* methods, so prop protection wins CanTool (footgun 3); image hosts (9); limits (27) |
Use cityrp.limits and cityrp.imageHosts |
| 9 Law Enforcement | policedb callbacks need validity checks inside the callback (footgun 2) | Re-validate inside every async callback |
| 10 Crime | Spike strip SWEPs have three reverted refactors | Treat as fragile |
| 12 Gathering | The mining plugin exists only on its PR branch | Base follow-up work there |
| 16 Clans | Server-only plugin, so it cannot be a hard dependency of anything with a client half (footgun 18) | optional_dependencies or cityrp.plugin.IsAvailable |
| 19 HUD & Player UI | Legacy HUD scaling bypasses cityrp.ui (footgun 15) |
New UI goes through cityrp.ui |
| 20 Meta-Engagement | The Discord relay's fake player object must mirror chatbox changes (footgun 10) | Grep the relay when the chatbox reads something new off a player |
| 21 Administration | Staff tools belong on ! and not / (footgun 14) |
cityrp.acommands.AddCommand |
| 22 Anti-cheat | Two near-identical scripts, and only one is wired in (footgun 1) | Confirm which file is included before editing |
Dependency Map
Foundation Layer
- Core Framework
- Support Systems
Core Layer
- Inventory & Items
- Teams & Jobs
- Core RP Rules (
generic) - Player State & Survival
- Building & Property
Feature Layer
8 to 18: Sandbox Building Tools, Law Enforcement & Justice, Crime, Restraint & Detention, Gathering, Vehicles, Casino & Minigames, Progression, Clans, Communication, World & Environment.
Presentation Layer
- HUD & Player UI
Meta Layer
20 to 24: Community & Meta-Engagement, Administration & Moderation, Anti-cheat, Server Operations, Dev Tooling.
Bottlenecks
Three systems sit under nearly every Feature system: Inventory & Items, Teams & Jobs, and Core RP Rules. A change to any of them has the widest blast radius in the gamemode.
Circular Dependencies
None at this level of detail. Core RP Rules and Teams & Jobs are close to one: generic grants job
equipment, and the team libraries define the jobs it grants to. The direction recorded here is that
generic depends on teams.
Recommended Design Order
Not applicable as a build order. Where design effort would pay off most, from the coverage and fragility tables above:
- Gathering, Crafting & Resources carries pillar 4 and is only partly merged.
- Core RP Rules (
generic) is the highest-risk system and has no design doc at all.
Progress Tracker
| Metric | Count |
|---|---|
| Total systems identified | 24 |
| Implemented | 24 |
| With a design or reference doc | 15 |
| With no doc of any kind | 9 |