Crime scenarios
MCSkylines-Robberies
Version 1.3.6 · Documentation refreshed October 12, 2026
Persistent street crime, gas station and ATM robberies, plus staged multi-crew bank heists with dispatch and recovery.
Required plugins: MCSkylines-Core, WorldGuard, MCSkylines-Economy, MCSkylines-Justice. Optional integrations: Citizens, WeaponMechanics, CarbonChat.
01
What it handles
Feature overview
Street robberies
Registered Citizens NPCs support risk, rewards, independent cooldowns, and police dispatch.
Gas stations & ATMs
WorldGuard locations and registered interaction blocks turn city landmarks into controlled scenarios.
Multi-stage banks
Prerequisite breach chains, multiple planters, alarms, crew locking, finite room loot, and escape timers.
Safe block restoration
Breach regions are snapshotted, cleared, and restored after completion or server recovery.
Crash-safe escrow
Bank loot moves from the government treasury through a recoverable escrow account.
Dynamic balancing
Gaussian rewards, police scaling, staff-balance compression, and configurable timing shape payouts.
Gangster perk
A permission-backed role perk improves street success, shortens gas robberies, and anonymizes dispatch.
Integrated policing
Justice supplies police counts and alerts while WeaponMechanics identifies real firearms.
02
Encyclopedia
Configuration defaults: Values shown for operator-configurable settings are the bundled defaults, and can be changed in the module’s configuration or definitions. The server’s active settings take precedence, so costs, speeds, ranges, durations, chances, effects, recipes, limits and enabled features may differ. Command examples illustrate syntax; fixed mechanics and validation bounds are not configuration defaults.
Robberies provides bank breach chains and finite loot, Citizens mugging/gas hold-ups and ATM robberies. WorldGuard, Economy and Justice services are required; Citizens and WeaponMechanics provide the relevant NPC/firearm identity. Loot is funded, not minted.
How a bank robbery progresses
The first successful breach locks the crew from non-police survival/adventure players who are physically inside the configured crew region. Later arrivals do not join that robbery. Every breach checks its registered region, required charge count, number of distinct planters, and prerequisite breaches.
Use only genuine serialized breaching charges. Contributing a charge records its planter so a single crew member cannot satisfy a multi-planter requirement by placing every pack. The first breach always dispatches police; a large vault always requires at least two distinct contributors even if its configuration is weaker.
When a breach completes, Robberies snapshots and clears the door region. Keep that region tight and free of containers because block data, not container inventory, is the recovery contract. The blocks are restored when the robbery ends and during crash recovery.
Each loot room rolls one finite Gaussian total once. Registered pickups divide that same room total, so additional props improve presentation without multiplying money. A carrier leaving the building region starts the configured escape timer. Loot is backed by Economy's treasury escrow and finalized or restored through the recovery-safe state machine.
Street robbery workflows
NPC mugging requires a configured Citizens NPC and the firearm identification supplied by WeaponMechanics. Gas stations use the configured region/NPC and a timed hold-up. ATMs are registered against the exact interaction block. Each NPC and each gas station tracks an independent server-wide cooldown; these are not per-player cooldowns.
The gangster perk adjusts only its documented outcomes: mugging success, gas duration, and dispatch identification. It does not bypass cooldowns, police requirements, region checks, or item authenticity.
Funding and payout behavior
Bank robbery money comes from the government treasury through escrow. NPC, gas, and ATM payouts come from the staff account. Street rewards compress when the staff balance is below the configured threshold instead of minting the advertised full value. Confirm both accounts are deliberately funded before live testing.
Current boundaries
Door-region snapshots do not preserve container inventories. Pickups are interaction registrations, not automatically discovered cash props. Ordinary TNT is never accepted. The plugin relies on Citizens and WeaponMechanics for the relevant NPC/firearm identity and does not invent substitutes when those integrations are missing.
Bank regions
Create these WorldGuard regions before running the setup commands:
- One crew region covering the space behind the teller desk. At the first detonation, every non-police survival/adventure player inside becomes part of the locked crew.
- One building region covering the complete bank interior. Leaving it starts a carrier's escape timer.
- One tight region around the blocks of each breachable door. The plugin snapshots every block in this region, replaces it with air, and restores it when the robbery ends or the server recovers.
Door regions should contain only the blocks that are safe to replace. Do not include container blocks: block data is restored, but container inventories are not part of the door snapshot. The default safety limit is 1,024 blocks per breach region.
Example bank
/robbery setup bank central world bank_behind_tellers central_bank
/robbery setup breach central entry bank_first_door entry ENTRY 3 1 true
/robbery setup breach central small-a bank_small_a_door small-a SMALL 2 1 false entry
/robbery setup breach central small-b bank_small_b_door small-b SMALL 2 1 false entry
/robbery setup breach central large bank_large_door large LARGE 6 2 false small-a small-bThe final number before true/false is the minimum number of distinct charge planters. Thus, the large vault above requires six packs with contributions from at least two crew members. Names after the alarm value are prerequisite breach IDs.
The first breach in a chain always triggers dispatch even if its alarm argument is accidentally set to false. Large-vault breaches always require at least two distinct crew members to contribute charges.
For each visible stack, pile, or drawer of cash, look directly at its interaction block and register a pickup:
/robbery setup pickup central small-a-1 small-a
/robbery setup pickup central small-a-2 small-a
/robbery setup pickup central small-b-1 small-b
/robbery setup pickup central large-1 large
/robbery setup pickup central large-2 large
/robbery setup pickup central large-3 largeEach room rolls its Gaussian total once. Its registered pickups divide that finite total; adding pickups does not create more money.
Supply serialized charges with /core give robberies:breaching_charge [player] [amount] (or /skylines give ...). /robbery give [player] [amount] is also available as a direct administrative fallback. Ordinary TNT is not accepted as a breaching charge. /robbery status confirms the module is active and reports the configured location counts.
Street locations
Look at a Citizens NPC when omitting the numeric Citizens ID:
/robbery setup npc downtown-citizen
/robbery setup gas route-7 route_7_gasOr provide an explicit ID as the last argument. Each NPC and each gas station has an independent server-wide cooldown.
Look at an ATM interaction block and run:
/robbery setup atm downtown-atmBalancing and permissions
All timings, Gaussian distributions, police scaling, staff-balance compression, currency formatting, and permissions are in config.yml. Every player-facing string and action bar is in messages.yml.
justice.policecounts online cops and receives dispatch alerts by default.- With the configurable defaults,
robberies.perk.gangsteradds 15 percentage points to mugging success (mugging.gangster-success-bonus: 0.15) and shortens gas robberies by 10% (gas.gangster-duration-multiplier: 0.9) inconfig.yml. It also anonymizes dispatch identification. - Bank loot comes from the government treasury through a crash-recoverable escrow account.
- NPC, gas, and ATM payouts come from the staff account and compress below the configured threshold.
Robber actions and failure states
Threaten configured NPCs with a recognized firearm, use genuine charges on registered breach targets, and interact with registered cash pickups after unlocking their room. The first detonation freezes crew membership from eligible people inside the crew region. More players arriving later do not join. Leave the bank building with loot and survive its escape channel for settlement. Police response, crew/police eligibility, cooldowns, prerequisite doors and funding still constrain attempts. Interrupted operations restore door block data and recover escrow; inventories inside a breach region are not included in its snapshot.
Reading command syntax
Configuration defaults: Values shown for operator-configurable settings are the bundled defaults, and can be changed in the module’s configuration or definitions. The server’s active settings take precedence, so costs, speeds, ranges, durations, chances, effects, recipes, limits and enabled features may differ. Command examples illustrate syntax; fixed mechanics and validation bounds are not configuration defaults.
<argument> is required; [argument] is optional. Replace the placeholder, including its brackets, with your value. Choices separated by a vertical bar mean choose one. ... accepts the remaining words. Do not type quotation marks around multiword names unless the command specifically requires them. A bare command has no required arguments. Examples use sample players/IDs: substitute entries from your server and use Tab for configured IDs.
player means a username; operational actions usually require that player online. amount and price are currency values such as 25.00, unless the row specifies items, levels, or units. reason, memo, message, name, and statement accept text where supported. duration uses the module's duration format (for example 10m, 2h, or 7d); it is not a bare number of minutes unless stated. id is the exact identifier displayed by that system, not its friendly name. Permissions and ownership/state/location checks both apply.
Robbery commands
| Syntax | Arguments / action | Permission |
|---|---|---|
/robbery or /robbery help | Help | Entry access |
/robbery status | Active module and location counts | robberies.status |
/robbery reload | Reload configuration/definitions/messages | robberies.reload |
/robbery give [player] [amount] | Issue genuine charges; self and one by default; console must name online player | robberies.give |
/robbery setup npc <id> [citizens-id] | Register citizen; omitted integer NPC ID uses looked-at Citizens entity | robberies.setup |
/robbery setup gas <id> <region> [citizens-id] | Register hold-up region and clerk | robberies.setup |
/robbery setup atm <id> | Register looked-at interaction block within six blocks | robberies.setup |
/robbery setup bank <id> <world> <crew-region> <building-region> | Register existing WG bank regions | robberies.setup |
/robbery setup breach <bank> <id> <region> <room> <ENTRY or SMALL or LARGE> <packs> <minimum-planters> <alarm> [required-doors...] | Door region, finite room ID/tier, integer charge/unique contributor counts, true/false alarm, prerequisite breach IDs | robberies.setup |
/robbery setup pickup <bank> <id> <room> | Bind looked-at block to existing bank room's finite loot | robberies.setup |
Setup requires an in-game player; region names must already exist and bank is the registered bank ID. Example: /robbery setup bank central world teller_area bank_building. The bank-chain example above supplies every required breach argument in order. Ordinary TNT is not an accepted charge.
Root commands and aliases
These are the registered command entry points. The subcommand tables above describe their complete operations. Alias names use the same arguments as their root.
| Syntax | Purpose | Permission / aliases |
|---|---|---|
/robbery <help|status|setup|give|reload> | Configure and administer robberies. | Checked by operation; aliases: /robberies, /rob |
03
Command roots
Use the command syntax sections above for every required argument and subcommand. The short usage below is the plugin’s registered help text.
| Command | Usage | Description | Permission |
|---|---|---|---|
/robberyAliases: robberies, rob | /robbery <help|status|setup|give|reload> | Configure and administer robberies. | Subcommand-based |
04
Permissions
| Node | Default | Description / children |
|---|---|---|
robberies.commit | No additional description. | |
robberies.perk.gangster | Improves street robberies and hides the robber's identity from dispatch. | |
robberies.admin | Full Robberies administration. Operators receive this parent automatically.Includes robberies.commit, robberies.perk.gangster, robberies.setup, robberies.give, robberies.status, robberies.reload | |
robberies.setup | No additional description. | |
robberies.give | No additional description. | |
robberies.status | No additional description. | |
robberies.reload | No additional description. |
Command and permission references reflect the current plugin.yml manifests in this workspace.