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.
Justice owns arrest/restraint, transport, detention, charges, fines/tickets, bail, wanted records, warrants, emergency entry, K9, contraband, death bodies and forensic work, radar/IR and road spikes. Configure facilities and roles before using intake. Suite installation covers the combined plugin.
First-start checklist
Confirm /justice status reports the intended database type.
Create at least one prison facility and one prison cell. Logouts while tased or in holding need a prison destination.
Create holding facilities and cells if temporary detention will be used.
Set each facility's release point.
Review maximum prison and holding times.
Set the Economy government treasury account through Economy.
Configure police, judge, forensic, K9, and administrator permissions.
Review or replace the default charges through /charges.
Populate the contraband catalog through /contraband.
Test local chat routing with the configured /l command.
Test one cuff, holding booking, prison booking, fine, ticket, K9 alert, and body examination before opening the system to players.
Creating facilities with WorldEdit selections
Justice creates and updates its WorldGuard regions directly from the executing administrator's current WorldEdit selection. Both cuboid and polygon selections are supported.
Facility and cell IDs are converted to lowercase. IDs may contain lowercase letters, numbers, underscores, and hyphens and may be at most 64 characters.
Create a holding drop-off
Use WorldEdit to select the entire holding intake/drop-off area.
Keep the selection active and remain in the same world.
Stand at the location that should initially serve as the release point. This does not have to be inside the selected drop-off.
Run:
/justice facility cityholding holding
Justice creates the WorldGuard region:
justice_dropoff_cityholding
Create a prison drop-off
Repeat the process with a prison intake selection:
/justice facility cityprison prison
This creates:
justice_dropoff_cityprison
Add cells
Cells must be registered one at a time.
Select the complete cell with WorldEdit.
Stand inside that selection at the exact safe location and facing direction where inmates should appear.
A cell cannot be added to an unknown facility. The combined generated WorldGuard region ID must not exceed 128 characters.
Set the final release point
Stand where released players should be sent and run:
/justice releasepoint cityprison
Do the same for each holding facility.
Listing and deleting facilities
Run /justice facility list (or /justice facility with no extra arguments) to see each facility's ID, holding/prison type, world, drop-off region, registered cell count and occupied cell count. /justice facility delete <id> removes that facility and its registered cells after the database transaction succeeds. Both commands require and work from console. Deletion refuses active or queued sentences, including offline inmates, and occupied cells. Release or transfer all inmates first. WorldGuard regions are retained; remove them separately with WorldGuard if their geometry and flags are no longer needed.
Facility escape boundary
Select the entire facility with WorldEdit, including every cell, intake area, corridor and yard, then run /justice boundary <facility> in that facility's world with . For example, /justice boundary cityprison creates justice_facility_cityprison. This is a third, separate WorldGuard region; justice_dropoff_<id> remains intake-only and cell regions remain assignment and safe return points. Repeat the boundary command with the same ID to resize it; existing WorldGuard flags, ownership, membership, priority and parent are retained. Justice does not set entry/exit flags, so remove any operator-configured flags that prevent the intended free movement.
Inmates may roam outside their assigned cells. Leaving their own facility boundary, including an accepted teleport or world change, ends the active or queued sentence, frees its cell and records CUSTODY_ESCAPE in the audit history. The inmate is not teleported to a release point. Re-entering does not restore that sentence; staff must book a new term if appropriate. Sentence command filtering and officer cell returns stop after escape, including for staff. Separate cuffs, ties and tase restrictions keep their normal rules.
Existing facilities require operator setup: select their real perimeter and run the boundary command before relying on escape detection. No database migration is needed: WorldGuard persists the boundary. A missing or unloaded boundary does not automatically free everyone; cell roaming remains allowed, but sentence commands and clocks remain active until a boundary is configured or the sentence ends. Startup warns about each missing boundary. The boundary must encompass all cell teleport points and intake/queued inmate locations; resizing it can cause inmates outside the new shape to escape. Deleting a facility retains this region, as it does its other WorldGuard regions.
Returning an inmate to their cell
Right-click a sentenced player with (included in ) to return them to their assigned cell. The officer must be able to act, be within custody.reach (default 4.5 blocks), have line of sight and not be serving a sentence. This works for holding and prison. Holding crafted handcuffs or a WeaponMechanics weapon (including a taser) skips the return-to-cell action; the normal cuffing or weapon action applies instead, with its usual restrictions. Use an empty main hand or another item to return an inmate to their cell. The inmate leaves their vehicle and escort; cuffs remain with their anchor moved to the cell. Sentence length and remaining time do not change. Queued inmates without an assigned cell cannot be returned until a cell is available.
Resizing a configured region
Make a new WorldEdit selection and repeat the same facility, boundary or cell command with the same IDs. Justice replaces the region's shape while preserving its existing WorldGuard flags, owners, members, priority, and parent.
Justice does not automatically apply gameplay flags. Configure any desired WorldGuard flags normally after creation.
Arresting, cuffing, and dragging
An officer can begin cuffing either by right-clicking a player with crafted handcuffs in the main hand or by running /cuff <player> while holding them.
The officer and target must remain within the configured movement tolerance of their starting positions for the configured cuff duration. The default tolerance is 0.4 blocks. The attempt is cancelled if:
Either player changes position
Either player logs out
The officer teleports
The officer changes hotbar slot
The officer stops holding the handcuffs
Either player becomes unavailable or out of the active attempt
Looking around does not count as movement and does not cancel the timer. Small positional corrections within the tolerance are also accepted. On completion, a walking target is cuffed and attached to the officer; a seated target remains cuffed in the vehicle.
An officer may drag up to two suspects. Cuffed players cannot move themselves, although they can still turn their camera. On attachment, Justice immediately places a suspect at custody.follow-distance beside the officer if the path is clear. With two suspects, both remain in front with a small left/right separation. The position follows the officer in X, Y, and Z and stays at the configured horizontal holding distance as terrain permits.
Cuffed players cannot fly or begin gliding. On foot, horizontal and upward velocity are removed every tick, including velocity introduced by hits or other plugins. Officer flight never makes a walking suspect fly. A walking suspect stays at the last safe supported position if the officer rises into the air, and the cuffs break when the three-dimensional gap exceeds custody.leash-break-distance. External suspect teleports remain blocked; Justice's marked custody positioning and scoped vehicle-carrier updates are accepted.
Drag movement checks the suspect's actual player-sized bounding box against nearby block collision shapes. It tries the front position first and then shorter legal advances, using supported elevations on stairs and slabs up to custody.step-up-height. It rejects walls, ceilings, unsupported air, and paths that would sweep the body through solid geometry. When blocked, the suspect catches on the obstruction; the restraint breaks if the officer continues far enough to exceed the gap limit. Simple Elevators transfers use the verified elevator event and require a collision-free supported destination beside the officer.
Justice 1.4.16 corrects collision checks at ordinary world coordinates so a cuffed player follows on supported ground after attachment. If a newly cuffed player remains stationary on clear, flat ground, confirm the server loaded MCSkylines-*.jar after a restart.
When Simple Elevators 3.15.0 or newer is installed and integrations.simple-elevators is enabled, its official ElevatorEvent authorizes one otherwise-blocked officer teleport. Justice transfers every actively dragged suspect to the same destination and then resumes front-positioning. The source, destination, world, vertical movement, event lifetime, and final officer position are validated. Other plugin teleports still release the officer's restraints.
Restraint position is server-authoritative. A cancelled movement event sends a correction to the restrained player's client, while a per-tick legal-position anchor repairs unattached cuffed players whose position bypassed the event path. An attached walking suspect is returned toward the legal front position when the path is clear; displacement beyond the configured gap breaks the cuffs. Seating a cuffed suspect detaches the walking tether and preserves cuffs. Unexpected teleports, riptide propulsion, gliding, flight, velocity, interaction, inventory, and command paths fail closed and significant rejected displacement is rate-limited in the audit log.
Use /uncuff for slot one and /uncuff2 for slot two. /uncuff <player> releases a specifically named online suspect.
All suspects owned by an officer are released if that officer dies or teleports. Actively dragged suspects are released if their officer logs out. A suspect is also released from cuffs on death. A cuffed suspect who logs out remains persistently cuffed for reconnect unless another release rule applies.
Staff with cannot be cuffed unless the officer also has .
Restrictions and local chat
Cuffed and detected-tased players cannot normally:
Interact with entities or blocks
Break or place blocks
Attack
Drop or pick up items
Open or use inventories
Run non-whitelisted commands
Teleport out of restraint
Speak in global chat
Their normal chat, including speech during a prison or holding sentence, runs as /l <message> through the installed chat plugin. The plugin handles its usual local formatting, permissions, moderation and recipients. custody.local-chat-command changes the command if needed. Justice does not create a separate local channel. Explicit /l message and /local message use the same command; sentence command whitelists still apply.
Sentenced players use sentences.prison-command-whitelist or sentences.holding-command-whitelist, including operators, staff with bypass, and cuffed inmates. Prison defaults to [l, msg, r, help, bail]; holding defaults to [l]. Empty lists block all commands, including local chat commands; ordinary speech still routes locally. /l, /local and the configured local command share one local whitelist entry. Other aliases need their own entries, and namespaced labels such as essentials:msg must be listed explicitly. Entries are root labels without / or arguments. Restrained players without a sentence use custody.allowed-cuffed-commands (empty by default), with local chat allowed.
An active sentence overrides for sentence commands until release or facility escape. /modmode has no automatic exception. Use holding release, bail or an authorized integration with JusticeApi.reduceSentence to end a term early. Adding a command to the whitelist permits its complete command tree.
WeaponMechanics tase bridge
A player is considered tased only while every effect listed in tase.detection-effects is present. The default combination is Weakness, Slowness, and Jump Boost.
While detected as tased:
Normal cuff-style restrictions apply
Sprinting is disabled
Horizontal velocity is capped
Upward velocity is capped to prevent repeated-hit launching
Chat is routed through local chat
Non-whitelisted commands are blocked
WeaponMechanics shooting is blocked whenever the shooter has Weakness if tase.block-guns-with-weakness is enabled. This firearm check needs only Weakness; full tase restriction detection still needs every configured tase effect. The denial text supports MiniMessage.
Logging out while detected as tased removes cuffs and assigns the maximum configured prison sentence with audit reason Tase Log. Configure a prison facility before relying on this rule. Cuffing and uncuffing do not remove potion effects.
Holding and prison intake
Automatic intake
When an officer walks into a configured drop-off while dragging a suspect, Justice begins intake automatically:
Holding drop-off: opens the narrative-book workflow
Prison drop-off: opens the charge-selection GUI
Only one pending intake is maintained per suspect.
Holding intake
The officer receives a virtual writable book. Write the holding reason and sign the book.
Closing or submitting without signing cancels intake
A blank signed narrative is rejected
Successful intake uncuffs the suspect
The holding term is the configured maximum holding time
The booking and narrative are stored in the database and audit trail
An authorized officer can release a holding detainee with /release <player>.
Logging out while in holding converts the case to the maximum prison sentence with audit reason Holding Log.
Prison intake
The prison GUI shows all configured charges.
Left-click a charge to increase its count
Right-click to decrease its count
Counts cannot exceed the charge's configured maximum
Use the arrows for pagination
Click Submit after choosing at least one charge
Write and sign the narrative book
Justice totals the selected charges, caps prison time at maximum-prison-minutes, applies the automatic charge fine, removes the suspect from the wanted list, logs the booking, and places the suspect in the first available cell.
There is no overall cap on automatic charge fines. Each charge's own maximum count limits its contribution.
If the suspect is transferred directly from holding into prison, time already served in holding is deducted from the prison term. If the credit satisfies the entire term, the suspect is released.
Cell assignment and sentence clocks
Cells are occupied by one sentence at a time
Stale cell occupancy is reconciled at startup
If every cell is occupied, intake is stored in a pending queue
Pending terms do not count down until a cell becomes available
A queued suspect is assigned to the first available cell automatically
Active sentence time counts down only while the player is online
The configured warning is sent near the end of the term
A separate absolute real-time deadline releases custody even if the player remains offline
Prisoner death releases the sentence
Leaving the assigned cell is allowed; leaving the configured whole-facility boundary records escape and ends sentence restrictions
Bail and external sentence reductions
Bail is available only for prison sentences.
/bail <minutes>
Bail:
Uses the player's wallet only
Transfers funds to the Economy government treasury
Costs bail.cost-per-minute
Cannot reduce more than bail.maximum-sentence-percent of the original sentence
Fails without sufficient wallet funds
Releases the player if the reduction reaches zero remaining time
Other plugins can reduce time without consuming the bail allowance through the public JusticeApi.reduceSentence method. This is intended for future prison work, mining, activities, or similar systems.
Charges
The default seed contains Assault, Murder, and Possession of Contraband.
charges.yml is imported only when the database has no charge records. Once charges exist in the database, editing charges.yml does not replace them. Use /charges for live management.
Add a charge
Open /charges, click Add charge, and answer in chat using:
id | name | description | MATERIAL | prison minutes | fine | max count
Example:
burglary | Burglary | Entering a property to commit a crime | IRON_PICKAXE | 8 | 750.00 | 10
Edit or delete
Click a charge and enter the replacement fields without the ID
Shift-right-click a charge to delete it
Enter cancel in chat to cancel an edit
Charge IDs use the same lowercase ID rules as facilities. Prison minutes and fines may be zero but not negative. Maximum count must be at least one. The icon must be a valid Bukkit Material name.
Fines, debt, and traffic tickets
Direct fines
/fine <player> <amount> <reason>
The cap is selected from the issuer's permissions:
: fines.police-cap
: fines.judge-cap
Amounts must be positive and within the applicable cap. Negative or malformed values are rejected.
Payment is collected in this order:
Active wallet
Active checking accounts
Unpaid remainder becomes Economy fine debt
Transfers and later debt garnishment go to the Economy government treasury. The debt reference prevents Justice from manufacturing funds or treating a negative amount as payment.
An online recipient receives a detailed message naming the issuer and reason, the total fine, the amount collected immediately, and the amount added as debt. Automatic charge fines also report the charged, paid, and debt amounts.
Traffic tickets
/ticket <online-player> <amount> <reason>
The amount must be positive and no greater than fines.traffic-cap. The recipient receives clickable PAY and DENY choices.
/ticketaccept collects the ticket as an automatic fine or registers debt
/ticketdeny refuses it without collecting payment
No answer before the timeout auto-denies the ticket
The issuing officer is notified of acceptance, denial, or timeout while online
The recipient receives an immediate confirmation after accepting or denying; accepted tickets then report the paid and debt amounts
Wanted list
Add a player with:
/wanted add <player> <charges or reason>
Adding an already wanted player appends a timestamped officer entry and extends the summary rather than replacing history.
Open /wl to view a paginated inventory of player heads. Each entry shows the marking officer, date, summary, and full history in its item tooltip.
Remove a case manually with:
/wanted remove <player> [reason]
Justice also removes wanted status when:
The player is successfully booked into prison
The player dies from a cause not classified as suicide or an uncredited fall
An explicit suicide or ordinary fall without an attributed killer preserves wanted status. A player-attributed pushed fall is treated according to Bukkit's killer attribution.
Contraband and frisking
Contraband uses exact Bukkit item identity, not material alone. One registered custom pistol does not automatically make every item with the same base material illegal. Persistent data, components, custom models, enchantments, names, and custom-item metadata remain part of the comparison.
Manage the catalog
Hold or carry the exact item to register.
Open /contraband with .
Click the item in your lower player inventory while the GUI is open.
Click a registered item in the top catalog to remove it.
Users with only receive a read-only paginated catalog.
Frisk a suspect
The target must be cuffed and online:
/frisk <player>
The GUI displays the target's storage, armor, and offhand slots. Registered contraband is marked. Clicking marked content confiscates only registered illegal items and transfers them to the officer.
Search and extraction recurse through bundles and block-state containers, including nested shulker boxes, to a maximum depth of eight. Scans are also bounded to prevent pathological item trees. The officer needs enough empty inventory slots for confiscated stacks.
Ender Chests
Players cannot deposit direct or nested registered contraband into an Ender Chest through clicks, hotbar swaps, shift-clicks, or inventory drags. Removing existing content is not blocked.
K9 operations
Spawn one K9 with /k9 or /k9 spawn. Spawning a new dog despawns the officer's previous dog.
The K9:
Is a normal, damageable tamed wolf
Never deals damage through Justice
Scans nearby player inventories on the configured interval
Recursively detects registered contraband
Skips its owner and staff with
Enters an interested alert stance, stands, looks at, and physically paths toward the nearest carrier
Stops at k9.approach-distance, barks at k9.bark-interval-seconds, and continues sending the officer an action-bar summary
Clears combat targets and cannot deal damage, so tracking never becomes an attack
Applies a ten-second alert cooldown per dog and suspect
Shift-right-click your dog to open its management GUI. The GUI can rename it, leash or unleash it, make it sit or stand, and despawn it. Renaming consumes the officer's next chat message as the name; enter cancel to stop.
Property scan
Stand inside the WorldGuard property and run:
/k9 scan
The scan checks containers that are inside at least one WorldGuard region applicable at the officer's location. It inspects only already loaded chunks near the officer, never force-loads chunks, stops at k9.property-container-limit, and recursively scans portable containers inside those inventories.
The command reports the number of contraband matches, not the number of unique containers or item stacks.
Bodies, forensics, and autopsies
Every player death creates a temporary body using native server entities:
A native Paper mannequin uses the victim's complete player profile and skin in a fixed horizontal sleeping pose, centered at the death location and aligned to the victim's horizontal facing
Three low Interaction entities cover the visible body from head to feet, including diagonal headings and deaths while looking straight up or down
Each right-click gesture triggers one corpse action or message, including wallet handling, even when Paper sends both at-entity and base interaction callbacks
The body displays visual copies of the victim's armor, main-hand item, and off-hand item
Corpse interaction is always intercepted, all displayed equipment has a zero drop chance, and the corpse cannot be damaged, so players cannot take the skin head or displayed items
Normal death drops are not removed or stored by the body
No ProtocolLib packet NPC is used
Bodies fall under gravity until their footprint meets terrain, including slabs and stairs. The sleeping visual, search hitboxes and disposal location move together; they fall again if their support disappears. A body marker remains visible at 32 blocks under ordinary client settings. The vanilla client can still cull the sleeping mannequin itself at shorter range. Bodies in the void are removed.
Bodies naturally disappear after bodies.despawn-seconds and do not survive a server restart.
Forensics
Hold a forensics kit, target or right-click the body, and use /forensics if needed. The examiner receives approximate time, cause, weapon, an obscured assailant clue when attributable, and suicide classification. One use is deducted.
Autopsy
Hold an autopsy kit with . The report includes the victim, exact recorded time, cause, attributable killer, weapon, ammunition, hit location, distance, and suicide classification. The one-use kit is consumed.
WeaponMechanics evidence records the most recent relevant firearm hit for up to 30 seconds before death, including weapon title, ammunition when available, hit point, and distance. Without that integration, Justice falls back to Bukkit damage and killer information.
Body disposal
Hold a body dissolver and right-click or target the body with /forensics.
The dissolver is consumed at the start
The player must remain near both the body and the starting location
Disposal lasts bodies.dissolve-seconds
Entity-caused damage, logout, moving out of range, body despawn, or body removal interrupts the action
An interrupted action does not refund the dissolver
Successful disposal removes the body but forensic and autopsy examinations do not
Warrants, emergency entry, and firearm warnings
Police with can right-click a door with the crafted battering ram to force it open, including a locked door. The ram does not require a warrant or a managed Property parcel. It spends stamina and durability on each strike, can require multiple attempts, and persists a forced-open breach until the door is mined and replaced. Every strike and completion is audited.
An officer can request a warrant for a managed Property parcel with /warrant request <property> <probable-cause>. A judge reviews pending requests through /warrants. Once approved, a warrant lets its requester with use locks on the covered property through normal interaction until expiry. No battering ram is needed. The bypass covers lock USE only; it does not grant lock management, breaking, or removal.
Justice displays a visible WeaponMechanics firearm label just above the carrier's head and warns nearby viewers through the action bar. It enforces the configured long-gun and pistol inventory limits. A WeaponMechanics title containing taser is excluded from both warning displays and both firearm limits.
Vehicle custody and persistent breaches
Cuffing also works on seated vehicle occupants. Aim at the occupied seat with handcuffs; the ordinary range, permission, movement tolerance and cuff timer still apply. A vehicle must remain stopped during that timer. Seating ends the walking tether while keeping the restraint; driving and internal passenger-carrier updates do not release it. Normal escape teleports remain blocked.
One cuffing gesture starts one countdown and sends one start notice to each participant. Repeated clicks while the same attempt is active do not restart it or repeat notices.
Cuffed players can use local speech commands; other commands, including /sit and /modmode, are blocked by default. custody.allowed-cuffed-commands is an explicit configurable whitelist, empty in new defaults; remove unwanted entries from existing configurations. Active prison or holding sentences use their own command whitelist even when cuffed or granted staff bypass; without a sentence, cuff restrictions apply. Restrained chat runs as /l <message> on the server thread through the chat plugin's normal command pipeline. custody.local-chat-command is the command to run (normally l). Configure that command in your chat plugin; its formatting, local radius, permissions, moderation, ignores and cooldowns apply. Justice provides no separate chat fallback. Existing chat cancellations, including unconscious-player restrictions, remain active. Local commands are allowed during restraint; active sentences must allow l, local or the configured local command in their sentence whitelist.
Ramming has no cooldown. Each valid strike costs warrants.ram-stamina-cost (50 by default) and one of warrants.ram-durability uses (50 by default). Average capacity 100 makes this half a bar; maximum-fit capacity 200 makes it one quarter. Health must be available to authorize stamina spending; its disabled/creative/bypass rules still apply. Insufficient stamina rejects the strike before durability is spent. A door's required number of strikes is chosen once and progress persists: wood defaults to 1–3 and iron to 3–6, configurable through ram-wood-min-attempts, ram-wood-max-attempts, ram-iron-min-attempts, and ram-iron-max-attempts. The old cooldown setting is ignored.
Successful breaches force both door halves open until the door is mined and replaced. Ordinary clicks and redstone cannot close it; trying to ram an already breached door spends nothing. rammed-doors.yml records progress, officer identity and time across restarts. Staff with can sneak-right-click a breached door to inspect it. Online staff with receive every strike and result; the alert permission is configurable with warrants.ram-staff-permission. Audit records retain the attempts and completion. Both new staff permissions default to operators. Keep the breach file with the rest of the data folder during upgrades.
The matching complete pack now includes the concealed-carry holster artwork. Issue genuine items through Core to retain their functional metadata.
Unconscious restraints
When Health knocks a person unconscious, Justice immediately detaches their walking escort but keeps their persisted cuffs. An unconscious officer also stops escorting suspects without uncuffing them. /drag and vehicle ejection cannot restart an escort while either participant is downed. Health controls the patient's supported pose; Justice updates its restraint anchor during unconsciousness so revival does not snap the patient back to the old escort position. Loaded downed states and repeated escort ticks receive the same protection. Manual uncuffing still works.
Traffic radar, helicopter IR and road spikes
These tools require the Vehicles module and . Restrained, incapacitated or dead operators cannot use them. Issue registered items through /skylines give justice:radar_gun [player] [amount] and /skylines give justice:spike_strip [player] [amount], with and the corresponding granular issuance permission.
Handheld radar on foot
On foot, hold the genuine handheld radar in your main hand and aim at a vehicle. Scanning starts automatically at the five-tick HUD cadence (about 0.25 seconds at 20 TPS); no command or click is required. The boss bar shows the target’s plate and absolute speed in m/s, or No target. The nearest rendered hull wins, walls block the ray, and the observer’s own vehicle is excluded. Put the radar away to stop. Off-hand-only possession does not activate it. Selecting another item, entering a seat, death, restraint/incapacitation, lost police permission, disconnect or Vehicles becoming unavailable stops the handheld display. Holding it again on foot resumes scanning. Right-clicking or using /radar while holding it does not toggle it off.
Moving radar
From an eligible police ground vehicle’s driver seat, with no handheld selected, use /radar to toggle moving radar. Eligible police CAR definitions include cars, SUVs, vans, prison buses and custom definitions with police equipment; motorcycles are excluded by both definition and model ID. The scanner follows the vehicle’s heading, independently of where the driver looks.
It checks forward and rear horizontal sectors, each with a fixed 30-degree half-angle, within the configured radar range (default 96 blocks, bounded to 8–128). Targets must be loaded road vehicles (CAR-type definitions, including motorcycles) in the same world; the observer’s own vehicle and contacts blocked by solid line of sight are excluded. One boss bar reports the fastest absolute-speed eligible vehicle across both sectors, its plate, and FRONT or BEHIND. Equal speeds choose the closest contact, then a stable vehicle ID. It reports absolute m/s, not closing speed; no eligible contact displays No target.
The HUD refreshes every five ticks. Leaving the eligible driver seat, losing permission/ability to act, changing worlds or Vehicles becoming unavailable stops moving radar. It needs no extra hotbar slot. Put the handheld radar away before using this driver mode.
Helicopter infrared scanner
From a seat in a police helicopter, /ir toggles its infrared scanner. Aim at the search area to see up to six nearest heat contacts, with name, distance and compass bearing. Only that operator sees thermal particles/HUD. IR resolves crouching players through vegetation/leaves, but solid buildings block it. Spectators, invisible and hidden/vanished players are excluded. IR does not change global glow/potion state and stops when the operator leaves the eligible helicopter.
Road spikes
A strip cannot be placed beneath any part of a parked or moving vehicle, including an NPC bus or articulated rear section. Its complete four-block placement span is checked before the item is consumed, so placement cannot instantly puncture a vehicle already over it. A vehicle on a separate bridge level does not block the road below.
On foot, right-click the top of a road with a spike strip to extend it forward from the clicked road edge, parallel to your facing direction. The entire four-block strip needs clear, supported terrain; placement follows the actual block surface, including slabs. One strip per officer is allowed. It consumes one carried strip and appears as visible road equipment. /spikes remove retrieves your strip within five blocks if an inventory slot is free. It expires after five minutes and is removed on owner quit, lost eligibility, Vehicles unavailability or module shutdown. Expiry does not refund the item. Strips are temporary, do not persist over restart, and never replace road blocks.
Spike contact checks each wheel's swept path every server tick so fast vehicles do not skip the strip. Only ground vehicles are affected. Vehicles applies its damage region protection before committing each puncture; rejected/protected contacts do not change tire state. Gun hits accumulate capped damage on the particular wheel before puncturing it; shotgun pellets contribute independently. Partial damage and flats persist in Vehicles and alter handling as described in the vehicle tire guide. Mechanics clear flats and partial tire damage with one iron ingot through Repair when stationary and empty.
traffic-equipment.radar-range-blocks and ir-range-blocks default to 96 and clamp to 8-128 and 16-128 respectively. spike-lifetime-seconds defaults to 300 and clamps to 30-3600. /justice reload refreshes these settings. Moving radar and IR sessions are runtime-only and restart off. Handheld radar automatically starts again whenever a returning player is eligible and holds the item in the main hand. Vehicles fleet features.police-equipment controls which vehicles have police sensors (defaults police IDs/prison bus); type and seat rules still apply. Air/sea hotbars are not replaced by this ground action-menu update.
Install the matching complete resource pack for the radar/strip models, control icons, lamps and all tire combinations. Install the matching combined MCSkylines-1.0.29.jar and restart; preserve the existing module data. The complete pack includes the approved Yelp/Phaser audio.
Justice items and recipes
Justice items contain persistent identity data and have a maximum stack size of one. Renaming an ordinary item does not turn it into a Justice item.
Handcuffs
I
ICI
I
I: Iron Ingot
C: Iron Bars
Forensics kit
CP
SB
C
C: Copper Ingot
P: Paper
S: String
B: Brush
A forensics kit begins with 10 uses and is consumed after the tenth examination.
Autopsy kit
GI
SG
I G
G: Glass Pane
I: Iron Ingot
S: Shears
An autopsy kit has one use.
Body dissolver
FBF
BSB
FBF
F: Fermented Spider Eye
B: Blaze Powder
S: Slime Ball
The dissolver is consumed immediately when disposal begins, even if disposal is interrupted.
Configuration reference
Every value in a Default column is a bundled, operator-configurable setting in config.yml, not a guarantee of the live server’s policy. Explicit clamp ranges are fixed validation bounds; operators choose values within them.
Database
Setting
Default
Meaning
database.type
SQLITE
SQLITE or MYSQL
database.sqlite-file
data.db
Relative path inside plugins/MCSkylines-Justice/
database.busy-timeout-ms
10000
SQLite lock wait timeout
database.backup-on-startup
true
Copies an existing SQLite database before opening it
database.backup-retention
14
Number of newest startup backups retained
database.mysql.host
localhost
MySQL hostname
database.mysql.port
3306
MySQL port
database.mysql.database
justice
Database/schema name
database.mysql.username
minecraft
Database user
database.mysql.password
change-me
Database password
database.mysql.use-ssl
true
Uses MySQL VERIFY_IDENTITY; requires valid TLS hostname trust
database.mysql.pool-size
6
Connection pool size, clamped from 2 to 32
Switching database types does not migrate existing Justice data.
Currency and custody
Setting
Default
Meaning
currency.symbol
$
Display symbol
currency.decimal-places
2
Currency scale used for parsing and display
custody.cuff-seconds
3
Stationary cuff time, clamped from 1 to 30 seconds
custody.reach
4.5
Maximum initial cuff distance
custody.cuff-movement-tolerance
0.4
Maximum distance either participant may move from the cuff attempt's starting point
custody.max-dragged
2
Drag slots, clamped from 1 to 2
custody.follow-distance
1.25
Distance at which suspects are held beside the officer; effective values are clamped from 0.75 to 1.35 blocks
custody.leash-break-distance
5.0
Three-dimensional separation at which restraints break, clamped from 2 to 32 blocks
custody.step-up-height
1.05
Maximum collision-checked stair/slab rise, clamped from 0.5 to 1.25 blocks
custody.handcuffs-material
IRON_NUGGET
Base material for crafted handcuffs
custody.handcuffs-custom-model-data
0
Modern custom-model float; zero disables it
custody.local-chat-command
l
Root local-chat command without /
custody.allowed-cuffed-commands
[]
Root commands allowed while cuffed or tased
Changing the handcuff material or model does not convert existing items. Give or craft new handcuffs after changing identity-related presentation.
The former custody.leash-break-horizontal and custody.leash-break-vertical keys are ignored. Set custody.leash-break-distance on updated installations.
Warrants and firearm visibility
Setting
Default
Meaning
warrants.active-minutes
30
Approved warrant lifetime
warrants.ram-stamina-cost
50
Fixed stamina spent per strike; no cooldown
warrants.ram-durability
50
Strikes per ram
gun-visibility.enabled
true
Display visible firearm warnings
gun-visibility.overhead-offset
0.2
Height above the carrier's head for the overhead label
gun-visibility.carry-limits-enabled
true
Enforce inventory carry limits
gun-visibility.maximum-long-guns
1
Maximum long guns, excluding tasers
gun-visibility.maximum-pistols
2
Maximum pistols, excluding tasers
Tase
Setting
Default
Meaning
tase.bridge-enabled
true
Enables effect-combination tase detection
tase.detection-effects
WEAKNESS, SLOWNESS, JUMP_BOOST
Every listed effect must be active
tase.block-guns-with-weakness
true
Cancels WeaponMechanics shooting with Weakness
tase.blocked-gun-message
Configured MiniMessage
Firearm denial message
tase.velocity-cap-horizontal
0.35
Maximum horizontal velocity while tased
tase.velocity-cap-upward
0.08
Maximum upward velocity while tased
Sentences and bail
Setting
Default
Meaning
sentences.maximum-prison-minutes
60
Maximum prison term, clamped from 1 to 525,600
sentences.maximum-holding-minutes
15
Holding term and abuse cap, clamped from 1 to 1,440
sentences.absolute-offline-release-hours
24
Real-time safety release, clamped from 1 to 8,760 hours
sentences.warning-minutes
1
Remaining-time warning threshold, clamped from 1 to 60
sentences.prison-command-whitelist
l, msg, r, help, bail
Allowed root commands in prison
sentences.holding-command-whitelist
l
Allowed root commands in holding
bail.enabled
true
Enables personal bail
bail.cost-per-minute
100.00
Wallet cost per minute; must be positive
bail.maximum-sentence-percent
50
Maximum original sentence percentage removable through bail
Fines, bodies, and K9
Setting
Default
Meaning
fines.police-cap
10000.00
Maximum direct police fine
fines.judge-cap
100000.00
Maximum direct judge fine
fines.traffic-cap
500.00
Maximum traffic ticket
fines.ticket-timeout-seconds
60
Response window, clamped from 10 to 600 seconds
bodies.despawn-seconds
300
Natural body lifetime, clamped from 10 to 86,400 seconds
bodies.dissolve-seconds
60
Required disposal time, clamped from 1 to 3,600 seconds
bodies.dissolve-range
3.0
Maximum distance from body and starting location
k9.scan-range
12
Nearby player scan radius, clamped from 2 to 64 blocks
k9.scan-seconds
1
Scan interval, clamped from 1 to 60 seconds
k9.property-container-limit
256
Maximum property containers per scan, clamped from 1 to 4,096
k9.bark-interval-seconds
2
Bark interval while tracking contraband, clamped from 1 to 30 seconds
k9.approach-distance
2.0
Distance at which the K9 stops approaching, clamped from 1.25 to 6 blocks
k9.tracking-speed
1.15
K9 pathfinding speed while approaching, clamped from 0.5 to 2.0
Integrations and logging
Setting
Default
Meaning
integrations.weapon-mechanics
true
Enables WeaponMechanics listeners when the plugin is present
integrations.simple-elevators
true
Enables the official Simple Elevators 3.15+ event bridge when Elevator is installed
Relative base filename used to generate dated files
logging.retention-days
90
Human-readable audit retention, clamped from 1 to 3,650 days
logging.discord-webhook
Blank
Optional HTTPS Discord-compatible webhook
Configured file paths must remain inside plugins/MCSkylines-Justice/. Absolute paths and traversal outside the data folder are rejected.
Messages and MiniMessage
messages.yml supports MiniMessage formatting. <prefix> is replaced with the configured prefix. Runtime placeholders include:
{target}
{officer}
{reason}
{amount}
{result}
The traffic prompt uses clickable MiniMessage actions for /ticketaccept and /ticketdeny. Run /justice reload after editing messages.
Persistence and audit logging
Justice persists:
Cuffs and responsible officers
Sentences and remaining time
Facilities, cells, and occupancy
Charges
Wanted cases and appended history
Exact contraband items
Booking narratives and selected charges
Audit events
Bodies, active K9 entities, pending tickets, GUI sessions, active cuff attempts, and body-disposal timers are intentionally not restored after restart.
Every significant action is written to the database and server console. When enabled, Justice also writes a dated human-readable file. The optional webhook receives a shortened action summary and must use HTTPS with a valid host.
SQLite uses WAL mode, foreign-key enforcement, a single database worker, and startup backups. MySQL uses HikariCP and a bounded worker pool. On shutdown, Justice waits up to five seconds for queued database work.
Public API for other plugins
Justice registers dev.serverplugins.justice.api.JusticeApi through Bukkit's ServicesManager.
isRestrained reports persistent handcuffs, not potion-effect tase state. reduceSentence accepts positive seconds and safely schedules sentence mutation on the server thread when called asynchronously. Vehicle plugins can query restraint/custody state before placing or removing a suspect and should leave physical vehicle behavior to their own implementation.
Troubleshooting
Justice does not load
Confirm Java 21 and Paper 1.21.11
Confirm WorldEdit, WorldGuard, and Economy load first
Check for a stale JAR under plugins/update/
Validate config-version: 1
Review database credentials and MySQL TLS settings
Read the earliest Justice could not start safely exception, not only the final disable message
Facility or cell setup says the selection is incomplete
Make both WorldEdit selection points
Use a cuboid or polygon selection
Execute the command in the same world as the selection
For a cell, stand inside the selection at the safe teleport point
A region has the wrong shape
Make the correct selection and repeat the same setup command with the same IDs. Existing WorldGuard settings are preserved.
A suspect is queued instead of teleported
Every registered cell is occupied or unavailable. Add another cell or release an existing inmate. Queued time begins counting only after assignment.
Tase restrictions do not activate
Confirm tase.bridge-enabled: true
Confirm every configured potion effect is present simultaneously
Use Bukkit potion-effect names
Confirm /justice reload succeeded
Weapon blocking has its own test: when enabled, any Weakness effect should block WeaponMechanics shooting.
Local chat says it is unavailable
Confirm the local-chat plugin exposes the configured root command and allows players to execute it in their current state. Store only the root label, such as l, not /l or /l message.
Changes to charges.yml do not appear
The database already contains charges. Manage them with /charges; charges.yml is seed data for an empty charge table only.
A fine is rejected
Amount must be positive
Issuer must have or
Amount must be within that role's cap
Economy and its government treasury account must be available
A K9 property scan reports zero
Stand inside the intended WorldGuard property
Ensure relevant chunks are already loaded
Confirm the containers lie in a region also applicable at the officer's position
Register the exact item variant as contraband
Check the container scan limit
A forensic kit does not work
Hold the correct Justice item in the main hand
Confirm the matching permission
Target the body within five blocks or right-click its hitbox
Bodies disappear naturally and on plugin shutdown
/justice reload succeeds but the database did not change
Reload updates configuration values, messages, and recipes. The active database connection and backend are established at startup, so database changes require a full restart.
The strip extends four blocks from the clicked road surface in the horizontal facing direction. Stand beside the road facing across it and click its near edge. The visible model, terrain clearance and swept tire-contact area share this orientation and width; diagonal placement is supported. Its existing permission, ownership, lifetime, retrieval and vehicle damage-region checks still apply.
Criminal restraints, nonlethal equipment and tackling
Issue equipment with /skylines give justice:zipties, justice:police_baton, justice:pepper_spray and justice:radar_gun. They have distinct item models in the matching complete pack. Keep the curated pack; installing only these model definitions discards earlier vehicle, weapon and sight assets.
Zipties and criminal search
Hold zipties and right-click a player, or use /ziptie <player>. Deployment takes five seconds (custody.ziptie-seconds), while handcuffs remain three seconds. Both people must stay within the configured movement tolerance, with the same item selected and an unobstructed view. Completing an attempt consumes one ziptie item. Cancelling it consumes nothing. Existing staff protection still applies; police can be tied. Criminal equipment does not grant police permissions.
Ties share restraint movement, interaction, firearm and inventory restrictions. Their type and captor persist in the database across logout and restart. The captor can escort a conscious captive with /drag <player> and right-click to place/remove them from a nearby passenger seat. Police can handle either kind of restraint. As with handcuffs, death releases the restraint and the current escort rules apply when its owner dies, teleports or logs out.
Use /robsearch <player> or sneak-right-click your own ziptied captive to open the criminal search and seizure menu. Click any inventory, armor or off-hand item to take the entire stack, including weapons, police gear and items inside a container item. This does not debit money accounts or open an ender chest. The target must remain online, restrained by your own ties, visible and within 4.5 blocks. Permission, ownership and distance are rechecked for every seizure; a full inventory prevents transfer. Menu icons are snapshots: transfers always read the current target inventory. Every seizure is audited and both players receive feedback. Police /frisk still extracts registered contraband rather than granting the criminal menu to any cuffed target.
Hold shears and use /unziptie <player> within 4.5 blocks and line of sight to cut ties. Any permitted, conscious, unrestrained rescuer can cut them; ownership is not required. This command cannot remove police handcuffs. Officers retain their existing /uncuff access.
Baton, pepper spray and tackle
Police baton: left-click a player in melee range. It replaces ordinary
weapon damage with a shared hit streak on the suspect. Each streak needs 2, 3 or 4 accepted hits (20%, 60%, 20%); multiple officers stack hits. Reaching the threshold causes four seconds of incapacitation without health damage. A streak resets after 12 seconds without a hit or on disconnect/incapacitation. The default per-officer hit cooldown is one second; existing customized cooldowns remain active.
Pepper spray: right-click a player, or aim and right-click within four
blocks. It applies seven seconds of Slowness III, blindness and nausea without health damage or incapacitation. Players can still act, but WeaponMechanics projectiles are randomly deflected by up to 20 degrees horizontally and 15 degrees vertically while sprayed; shared gun definitions and projectile speed are unchanged. Its cooldown is ten seconds.
Tackle: right-click the same player three times within two seconds,
with your main hand empty and within three blocks. Success incapacitates for a rounded, bounded Gaussian duration centered on tackle-seconds (default mean seven seconds, standard deviation 1.54 seconds, range 3–11 seconds) and subtracts one health point (half a heart). Damage is capped to leave at least one heart, and does not heal a target who was already below that floor. A failed contest sends escape feedback. Every eligible attempt costs 40 Health stamina before the contest, including failures. Insufficient stamina prevents the attempt. A successfully tackled defender loses 25 stamina, clamped at zero, even while recovering from exhaustion. Protection-cancelled impacts do not penalize the defender. Stamina recovery supplies the default cooldown: with 100 stamina, two attempts leave 20, too little to try again until stamina recovers. No fixed timer applies by default.
The tackle contest starts at 65% success for equally rested players facing each other. Faster movement than the defender adds up to 15 percentage points; looking away adds up to another 15. Relative remaining stamina adds/subtracts up to ten points. Before equipment bonuses, the probability stays between 55% and 95%. Without Health, stamina is treated as equal and no debit is made. Unconscious, already restrained or already incapacitated defenders cannot be tackled. Vehicles, walls and protected staff cannot be used to bypass normal eligibility checks. Disabled world PvP, friendly-fire restrictions, invulnerability and region/PvP cancellation vetoes nonlethal impacts. Tackle's capped health loss does not generate a bullet wound or trigger medical execution rules.
With Health enabled, every correctly worn SWAT/militant piece adds five percentage points to the wearer's tackle capability and resistance (20 points for four pieces). The patrol health:police_body_armor vest grants 2.5 defensive points and no offensive bonus. Apply the difference after the ordinary contest bounds; the current gear permits a 35% minimum and the maximum remains 95%. Equal tactical equipment cancels out. Each piece also has a 1% movement-speed penalty; a full matching suit spends one extra stamina point per sprint simulation cycle.
Only a full matching four-piece SWAT or militant suit blocks new pepper-spray hits and raises the shared baton threshold to 4/5/6 hits (20%/60%/20%). Partial suits, mixed sets and the patrol vest grant neither bonus. Armor is checked at the accepted impact, after PvP/region vetoes. An attempted spray still uses its normal cooldown when blocked by armor and tells both players it was resisted. Existing pepper effects persist if armor is equipped afterward. Changing equipment during a baton streak does not reset accumulated hits or reroll its base threshold.
Disconnecting while incapacitated by a baton or tackle invokes the existing Tase Log custody penalty. Pepper spray alone does not trigger that penalty.
Baton incapacitation and tackling block movement bursts, jumping/wall climbing, fighting, firearms, item use and other restrained actions for their duration. Looking and falling remain possible, and local speech remains available. Pepper spray impairs movement, vision and aim while leaving actions available. Unconscious actors cannot use these tools; creative/spectator targets are excluded.
Permission
Default
Purpose
Everyone
Apply ties with the item; cut ties with shears
Everyone
Search/seize from your own ziptied captive
Everyone
Attempt the three-click tackle
Police parent
Use the police baton
Police parent
Use pepper spray
Defaults are configurable under nonlethal: baton-seconds: 4, baton-cooldown-seconds: 1, pepper-seconds: 7, pepper-cooldown-seconds: 10, pepper-range: 4.0, tackle-window-millis: 2000, tackle-seconds: 7, tackle-cooldown-seconds: 0, tackle-reach: 3.0, tackle-stamina-cost: 40.0, and tackle-target-stamina-penalty: 25.0. Reload Justice to apply configuration changes. Missing keys and message templates are added on upgrade without overwriting customization.
Crafting shapes are SS / S / S for zipties (string), I / I / S for a baton (iron ingots and a stick), and B /PGP/ I for spray (stone button, blaze powder, glass bottle, iron ingot). Each recipe produces one item. Usage remains governed by its permission even when someone else crafts or supplies the item.
Local chat, unconscious transport and radar aiming
Ordinary chat while cuffed, tied, incapacitated or serving a sentence runs as /l <message> through the server command API after command preprocessing. Players can speak normally for every message, including after using /l or /local without a message to select the local channel; a command prefix is not required for each message. Routing also works when secure profiles are enforced and the chat plugin uses signed message arguments. Set custody.local-chat-command to another command root if needed. The server's chat plugin owns local formatting, channel membership, permissions, moderation, ignores, cooldowns and recipients. Justice does not create a synthetic [Local] channel or deliver chat itself. Ensure the configured command exists in your chat plugin. /l message and /local message normalize to that command. Other commands retain the configured restrictions; active sentences still enforce their own whitelists, including for automatically routed speech. Existing chat cancellation and Health's unconscious-player chat block remain active: tasing is distinct from being downed.
To verify custody chat, send ordinary speech before and after selecting /l, then compare it with /l <message> while cuffed, in holding and in prison. The configured local command must be permitted by each sentence whitelist; an empty whitelist deliberately blocks both forms of speech. Confirm nearby recipients receive each permitted message once and distant players do not.
An unconscious but restrained person can be placed in a vehicle. Health suspends its old floor anchor only during authorized transport and while seated; it keeps unconscious state, bleed-out and the restraint. Upon removal, it creates a fresh supported anchor at the exit. Walking escorts still stop on unconsciousness.
On foot, hold the radar in your main hand and hold right-click for native spyglass zoom; release to stop zooming. It works when aimed at air or a block, and radar use takes priority over boarding an entity being measured. Scanning remains automatic while held. Newly issued radar uses a spyglass, and existing genuine radar items convert while held without changing their identity or model. Old custom aiming modifiers are removed. The matching resource pack keeps the gun upright with its handle in the hand, and its third-person aiming pose has the same visible scale. Both dominant-hand settings have a matching aiming model; install the radar model, inherited left-hand model and item binding together from the complete pack. Minecraft's native spyglass view hides the first-person held item while zoomed, so the gun remains visible to other players during aiming but does not appear inside the telescope view. Restart after installing the combined JAR and rebuild/resend the matching pack.
Beanbag shotgun integration choice
A beanbag shotgun is feasible in WeaponMechanics. Keep projectile flight, ammo, reload, sound and the shotgun model there; Justice should own the impact incapacitation and nonlethal health cap. WeaponMechanics supports base damage and hit mechanics, but low base damage alone can still kill, and Health's generic gun hook can otherwise generate wounds or headshot deaths. A future beanbag implementation should identify the weapon explicitly in both integrations, exclude it from lethal injury/evidence paths, cap final health loss and apply the Justice incapacitation timer. This update does not create a beanbag weapon or change the existing shotgun ammunition.
Install the combined MCSkylines-1.0.29.jar and matching asset bundle. Preserve all existing module data and databases. Back up Justice's database before the upgrade; the additive ziptie_restraints table records type without altering the existing restraints table. Test vehicle placement, local chat and client model rendering on the server before deployment to players.
Tackle stamina
Existing configurations retain customized settings. To replace the earlier 10-stamina/10-second defaults with stamina-based recovery, merge these values into plugins/Justice/config.yml, then reload Justice:
Costs are absolute Health stamina points, so fitter players with greater capacity can sustain more attempts. Failed contests and region-cancelled attempts still spend the tackler's exertion; only an accepted successful impact drains the target. Clicks before the third click, ineligible targets, cooldown rejection and insufficient stamina do not spend anything. The Health stamina bypass and disabled stamina settings are respected. With Health unavailable, Justice still works and no stamina debits apply; operators can set a positive fixed cooldown in that case.
Web citation evidence
The City desktop displays a player's citations through the existing Justice API. Its trusted gateway may resolve a citation by ID with JusticeApi.citation; that lookup is an integration contract, not public authorization. Technology's bridge requires a server secret and the Node backend rechecks the cited player, issuing officer, explicit officials and participants in linked court cases before disclosing attachments. Public case readership alone does not grant evidence access. A case can link only its client's citation.
The issuing officer and authorized prosecution can append evidence supplements; accepted native photos cannot be edited or replaced. Evidence uses a private R2 bucket rather than Justice's database, with source/stored hashes, three non-expired native photos per bundle and external image-host/YouTube links. Retention protects active cases and preservation holds. Ticket photos become eligible only after PAID/VOID has been observed for the retention period and every linked case is closed, old enough and unheld. Keep appeals open or held. Ticket payment and live enforcement still use the in-game interfaces. See the panel backend guide for deployment and recovery.
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.
6. Command reference
Command
Permission
Description
/justice reload
Reloads config.yml, messages.yml, and recipes
/justice status
Shows database type and facility, cell, charge, and contraband counts
/justice facility <id> <holding|prison>
Creates or updates a drop-off from the current WorldEdit selection
/justice facility list
Lists facility IDs, type, world, region and cell occupancy; player or console
/justice facility delete <id>
Deletes an empty facility and registered cells; retains WorldGuard regions; player or console
/justice boundary <facility>
Creates or resizes the whole-facility escape boundary from the current WorldEdit selection
/justice cell <facility> <cell-id>
Creates or updates a cell from the current selection and standing location
/justice releasepoint <facility>
Sets the facility's release location
/skylines give justice:<item> [player] [amount]
plus the granular item node
Issues a registered Justice item
/justice audit [count]
Displays recent audit rows; defaults to 10 and is capped at 100
/cuff <player>
Starts the stationary cuff timer
/uncuff [player]
Releases the named player or dragged slot one
/uncuff2
Releases dragged slot two
/drag <player>
Attaches an already cuffed player to the officer
/frisk <player>
Opens the frisk GUI for a cuffed online player
/jail <player>
Manually opens prison intake while standing in a prison drop-off
/release <player>
Releases a player from holding
/charges
Opens the paginated charge-management GUI
/fine <player> <amount> <reason>
Police or judge fine permission
Issues a direct fine; the target may be offline
/ticket <player> <amount> <reason>
Offers an online player a traffic ticket
/ticketaccept
None
Accepts the player's pending ticket
/ticketdeny
None
Refuses the player's pending ticket
/wanted add <player> <charges/reason>
Adds or appends a wanted entry
/wanted remove <player> [reason]
Removes a wanted entry
/wl
Opens the paginated wanted-list GUI
/contraband
Opens the paginated contraband catalog
/k9 [spawn]
Spawns a new K9 and removes the officer's previous K9
/k9 despawn
Removes the officer's K9
/k9 scan
and
Scans loaded containers in the current WorldGuard property
/forensics
Kit-specific permission
Examines the targeted body or starts disposal, depending on the held item
/bail <minutes>
Pays from the prisoner's wallet to reduce a prison sentence
Most operational commands are player-only. /justice reload, /justice status, /justice audit, /justice facility list and /justice facility delete <id> can be used from the console. Item issuance is centralized under /skylines give.
Warrant, breach, and traffic commands
Syntax
Arguments / action
Access
/warrant request <property> <reason>
Request property-scoped search authority; property reference from Property and remaining reason
/warrants
Review pending warrants in GUI
/justice corpses clear
Remove all managed death bodies; no extra arguments
; player or console
/radar
Toggle eligible police driver’s front/rear fastest-target radar; no arguments. Handheld works automatically while held
; eligible ground driver; motorcycles excluded
/ir
Toggle eligible police helicopter thermal scanner
; eligible helicopter seat
/spikes remove
Retrieve own deployed strip within five blocks into a free slot
; on-foot eligibility
facility and cell-id in setup are stable IDs; select a complete WorldEdit cuboid before facility/cell commands. Amount in fine/ticket is currency; bail takes an integer number of sentence minutes. Player targets for operational custody must be online; fine supports saved offline players. Charge, contraband, wanted, warrant review and intake choices are menu workflows, not undocumented text commands. Kit items determine forensic/autopsy/disposal action. Example: /justice facility central holding, then /justice cell central cell_a at the selected cell's spawn.
Battering rams are item interactions, not a /ram command. Hold the genuine ram and strike the eligible door with ; inspection is sneak-right-click with . A warrant request accepts a current-world property ID or world:property and required remaining probable-cause text.
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
/radar
Toggle heading-aligned front/rear moving radar; handheld scans automatically while held.