Crime scenarios
Robberies
Persistent street crime, gas station and ATM robberies, plus staged multi-crew bank heists with dispatch and recovery.
01
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
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-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.robberies.perk.gangsteradds 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
- Verify every bank region visually: crew, building, each breach door, and every pickup.
- Run the breach chain with too few charges, too few distinct planters, missing prerequisites, and the correct crew.
- Confirm the first alarm, additional alarm-enabled breaches, police count scaling, and gangster anonymity.
- Leave and re-enter the building with and without loot; allow one escape timer to complete.
- Stop/restart during an active breach and verify door restoration and escrow recovery.
- Test each Citizens NPC, gas station, and ATM twice to confirm its independent cooldown.
- Test payouts with healthy and low staff/treasury balances.
- Finish with
/robbery statusand 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
Commands
| 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.