All pluginsMC Skylines

Crime scenarios

Robberies

Persistent street crime, gas station and ATM robberies, plus staged multi-crew bank heists with dispatch and recovery.

01

Feature reference

What it handles

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

Setup & operation

Detailed guide

Version 1.3.1 uses the universally available java.util.Random implementation for Gaussian rewards, avoiding optional JDK random-provider failures on some Paper hosts.

Robberies requires WorldGuard, Economy, and Justice. Citizens supplies configured clerks/citizens and WeaponMechanics identifies firearms.

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-b

The 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 large

Each 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_gas

Or 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-atm

Balancing 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.police counts online cops and receives dispatch alerts by default.
  • robberies.perk.gangster adds 15 percentage points to mugging success, shortens gas robberies by 10%, and 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.

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.

Robbery testing checklist

  1. Verify every bank region visually: crew, building, each breach door, and every pickup.
  2. Run the breach chain with too few charges, too few distinct planters, missing prerequisites, and the correct crew.
  3. Confirm the first alarm, additional alarm-enabled breaches, police count scaling, and gangster anonymity.
  4. Leave and re-enter the building with and without loot; allow one escape timer to complete.
  5. Stop/restart during an active breach and verify door restoration and escrow recovery.
  6. Test each Citizens NPC, gas station, and ATM twice to confirm its independent cooldown.
  7. Test payouts with healthy and low staff/treasury balances.
  8. Finish with /robbery status and reconcile active state, configured counts, Economy ledger entries, Justice dispatch, and audit output.

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.

03

Admin reference

Commands

CommandUsageDescriptionPermission
/robberyAliases: robberies, rob/robbery <help|status|setup|give|reload>Configure and administer robberies.Subcommand-based

04

LuckPerms reference

Permissions

NodeDefaultDescription / children
robberies.committrueNo additional description.
robberies.perk.gangsterfalseImproves street robberies and hides the robber's identity from dispatch.
robberies.adminopFull Robberies administration. Operators receive this parent automatically.Includes robberies.commit, robberies.perk.gangster, robberies.setup, robberies.give, robberies.status, robberies.reload
robberies.setupfalseNo additional description.
robberies.givefalseNo additional description.
robberies.statusfalseNo additional description.
robberies.reloadfalseNo additional description.
Next pluginNarcotics

Command and permission references reflect the current plugin.yml manifests in this workspace.