What This System Does v2.0.0
Alright, so I've built this guard system to be as customizable as possible. With that comes a lot of information so be sure to read ALL of this!
🛡️ Duty Management
Guards can only go on duty if they're in the right area and have the proper rank.
⚖️ Wanted & Jail System
Wanted levels, chase mechanics, and that arrest minigame we've been wanting. Players actually have to work to escape now.
💰 Economy Integration
Guards earn time while on duty, can convert it to tokens, and there's a penalty system for people who abuse off-duty time.
🔧 Easy to Manage
I've made it super configurable so we can tweak things as we go. Plus it hooks into most of our existing plugins.
Getting This Running
- I've already got the dependencies covered (LuckPerms, WorldGuard, PlaceholderAPI)
- Just drop the EdenCorrections.jar into /plugins
- Restart the server and it'll generate the config files
You'll need to edit plugins/EdenCorrections/config.yml to match the desired setup:
# This should match our guard spawn area guard-system: duty-region: "guard_spawn" # These need to match our LuckPerms groups exactly rank-mappings: trainee: "trainee" private: "private" officer: "officer" sergeant: "sergeant" captain: "captain" warden: "warden"
Run these commands to give our guard ranks access:
Dependencies
- LuckPerms (strict rank enforcement)
- WorldGuard (duty region/safe/restricted zones)
- PlaceholderAPI (placeholders)
- Vault + Economy (penalty deductions)
- CoinsEngine (token commands for banking)
- CMI (kit and jail integration)
- ChatControl (enhanced tags/channel)
- MySQL (production database)
Duty System
This is the heart of the whole system - how guards actually go on and off duty.
- Rank Check: Only players with the right LuckPerms group can go on duty
- Location Check: They have to be standing in our guard spawn area
- Countdown: 5-second immobilization/chat warning gives players a sight heads up a guard will be patrolling soon
- Kit Assignment: Automatically gives them the right CMI kit based on their rank
- Inventory Backup: Saves their civilian inventory and restores it when they go off duty
guard-system: duty-region: "guard_spawn" # Our guard spawn area immobilization-time: 5 # 5 second countdown strict-rank-enforcement: true rank-mappings: trainee: "trainee" officer: "officer" captain: "captain" warden: "warden" kit-mappings: trainee: "guard_trainee" officer: "guard_officer" captain: "guard_captain" warden: "guard_warden"
Penalty Escalation
Overrun off-duty time triggers staged penalties with slowness and recurring economy deductions. Boss bar shows stage and overrun minutes.
- Grace:
guard-system.penalty-escalation.grace-period
- Stage 1/2: slowness + optional warnings
- Recurring: interval slowness +
$$$
deduction - Admin: clear/set/simulate via
/corrections duty
Wanted System
Levels 0–5 with decay, reason tracking, boss bar, + more
Chase System
Distance-capped, safe/restricted zones aware, dual boss bars (guard/target), warnings, and capture integration to jail.
Jail & Arrest Minigame
Countdown-based arrest with optional pointer minigame, configurable jail time by wanted level, offline jailing, and guard alerts.
- Countdown:
jail-system.countdown
withincountdown-radius
- Minigame:
jail-system.minigame.*
(length, speeds, colors, messages) - Time:
base-time
+ level *level-multiplier
Contraband
Request item drop by type (sword/bow/armor/drugs/potion) with timed compliance boss bar, detection messages, and auto-violation handling.
- Types:
contraband-system.types.*
- Drug test:
contraband-system.drug-test.*
- Compliance:
times.contraband-compliance
Duty Banking
Convert total duty time to tokens via a console command template. Auto-conversion support and status displays.
et give {player} {amount}
)Guard Loot
On-duty guard deaths drop from rank-based weighted pools in loot.yml
, with enchants, potions, names. Supports XP, announcements, and inventory retrieval.
- Pools:
guard-loot.default/officer/sergeant/captain
- Settings: announce, experience, retrieval (cost/time/ranks), spread
Progression
Namespaced commands for status and promotions. Works with LuckPerms tracks and configurable arrest/time/cost requirements.
- Commands:
/ecprogress
,/ecpromote
,/ecrankup
- Config:
progression.rankup.*
(track, economy-mode, requirements)
Commands You'll Need
These are the commands the guards will be using daily.
Go on or off duty. They need to be in the guard spawn area and have the right rank.
Arrest someone (works even if they're offline). You can add a reason if you want. Will automatically calculate their jail time based on their wanted level. No wanted level? Jails them for the configured default time.
Request contraband drops or test for drugs/potions.
Convert duty time to tokens or check how much time you have banked.
These are for us to manage the system.
Set someone's wanted level (0-5). Useful for testing or manual adjustments.
Give or take away off-duty time from someone. Good for rewards or fixing issues.
Clear someone's penalties or test the penalty system.
Reload the config after making changes.
Test what loot drops for different ranks or reload the loot config.
Permissions
edencorrections.guard
edencorrections.admin
edencorrections.guard.*
edencorrections.guard.duty
,.chase
,.jail
,.contraband
,.banking
,.retrieve
edencorrections.progression.use
edencorrections.admin.*
,edencorrections.admin
edencorrections.admin.area
,.loot
,.penalty
edencorrections.admin.bypass.guard-rank
,edencorrections.admin.bypass.cooldown
Configuration Examples
Here are the key config sections you'll probably want to adjust for our server.
# We're using SQLite for now (simpler) database: type: "sqlite" file: "edencorrections.db" # If we want to switch to MySQL later: # database: # type: "mysql" # host: "localhost" # port: 3306 # database: "prison_server" # username: "corrections_user" # password: "secure_password"
regions: safe-areas: ["spawn", "shops", "visitor_area"] # No chases here restricted-areas: ["armory", "admin_zone"] # No chases here either security: strict-rank-enforcement: true guard-immunity: wanted-protection: true # Guards can't get wanted contraband-exemption: true # Guards don't get contraband tested
banking-system: enabled: true conversion-rate: 3600 # 1 hour of duty = 1 token currency-command: "et give {player} {amount}" # Our token command auto-conversion: false # Penalty system (requires Vault) guard-system: penalty-escalation: economy-deduction: 50.0 # $50 per penalty stage deduction-interval: 300 # Every 5 minutes
user-interface: boss-bars: enabled: true update-interval: 20 # Update every second colors: duty: "GREEN" # On duty wanted: "RED" # Wanted level chase: "YELLOW" # Being chased penalty: "PURPLE" # Penalty stages
PlaceholderAPI Integration
Use these placeholders in other plugins, scoreboards, and chat formatting.
%edencorrections_duty_status% # On/Off duty status %edencorrections_duty_time_formatted% # Formatted duty time (1h 30m) %edencorrections_duty_rank% # Current guard rank %edencorrections_off_duty_time% # Available off-duty time
%edencorrections_wanted_level% # Wanted level (0-5) %edencorrections_wanted_stars% # Visual stars (★★★☆☆) %edencorrections_wanted_time_left% # Time until wanted expires %edencorrections_chase_status% # Being chased/chasing %edencorrections_chase_target% # Chase target name
%edencorrections_banking_tokens% # Available banking tokens %edencorrections_total_arrests% # Lifetime arrest count %edencorrections_progression_rank% # Progression system rank %edencorrections_penalty_stage% # Current penalty stage
Troubleshooting
If something goes wrong, here's how to figure out what's happening.
Shows you how many players are using the system, database performance, and other useful stats.
Turns on detailed logging so we can see exactly what's happening when issues occur.
Guards Can't Go On Duty
- Make sure they have the right LuckPerms group (trainee, officer, etc.)
- Check that the guard_spawn WorldGuard region exists
- Verify they're actually standing in the guard spawn area
- Look at the config to make sure rank mappings match our LuckPerms groups
Database Issues
- If using MySQL, check that the database server is running
- For SQLite, make sure the plugin folder has write permissions
- Check the server logs for any database connection errors
Performance Problems
- Spam control should already be enabled, but check the config
- Boss bars update every second by default - you can slow this down if needed
- Use /corrections system stats to see if there are any obvious bottlenecks
If you need to dig deeper, check these files:
- logs/latest.log - General server logs
- plugins/EdenCorrections/debug.log - Detailed plugin logs (when debug is on)