DISCORD:
https://discord.com/invite/Vr46JHm2kd
WIKI:
https://docs.maxking.lat/
MaxProtections
MaxProtections is a modern Paper protection plugin based on WorldGuard regions, configurable protection stones, interactive menus, member ranks, multilingual files, and safe runtime tracking.
Requirements
- Java 21 or newer.
- Paper API 1.21 compatible server.
- Spigot is not supported because the plugin uses Paper-only APIs.
- WorldGuard is required.
- Vault is optional and only needed for protection prices, economy purchases, and protection rent.
- ProtectionStones is optional and only needed while running /mp migrate protectionstones.
REMEMBER TO CHECK THE WIKI TO STAY UP-TO-DATE ON PERMISSIONS AND COMMANDS
Main Commands
Root command: /maxprotections with alias /mp.
| /mp create |
maxprotections.admin |
Opens the admin protection-stone creation menu. |
| /mp reload |
maxprotections.admin |
Reloads config and language files. |
| /mp lang |
maxprotections.admin |
Opens the language selection menu. |
| /mp debug <region> |
maxprotections.admin.debug |
Prints owner, members, YAML state, WorldGuard state, bounds, and stone coordinates for a placed protection or WG region. |
| /mp listplaced |
maxprotections.admin.listplaced |
Opens the admin menu with every tracked placed protection. Click an entry to print debug details. |
| /mp report protections |
maxprotections.admin.report |
Prints SQL-backed totals, active/orphaned counts, largest regions, top owners, and logged event count. |
| /mp repair |
maxprotections.admin.repair |
Repairs missing SQL tracking for safe MaxProtections WorldGuard regions when the protection YAML and center stone can be identified. |
| /mp migrate |
maxprotections.admin.repair |
Alias of /mp repair. |
| /mp repair cleanup |
maxprotections.admin.repair |
Removes stale tracker entries whose WorldGuard region no longer exists. It does not delete WorldGuard regions. |
Protection Commands
Root command: /protection with alias /p.
| /p give <player> <protection> <amount> |
maxprotections.protection.give |
Gives protection stones to a player. |
| /p buy <protection> |
maxprotections.protection.buy |
Buys one protection stone using Vault when a price is configured. |
| /p rent [region] |
maxprotections.protection + protection owner |
Pays overdue rent for the current or selected protection and reactivates it if suspended. |
| /p fly |
maxprotections.protection.fly |
Toggles flight while you remain inside an accessible protection. Flight is removed when leaving, dying, disconnecting, changing world, or losing access. |
| /p menu |
Protection owner/member-admin rank or maxprotections.admin |
Opens the protection menu for the region at your position. |
| /p settings |
maxprotections.flags + protection owner/member-admin rank, or maxprotections.admin |
Opens flag controls for the current protection. |
| /p member or /p members |
Protection owner/member-admin rank or maxprotections.admin |
Opens the member management menu. |
| /p member add <player> |
Protection owner/member-admin rank or maxprotections.admin |
Sends a pending invitation to an online player. |
| /p member remove <player> |
Protection owner/member-admin rank or maxprotections.admin |
Removes a member, teleports them outside if needed, and logs the event. |
| /p invite accept <id> |
Invited player |
Accepts a pending protection invitation. |
| /p invite deny <id> |
Invited player |
Rejects a pending protection invitation. |
| /p trust <player> |
Protection owner/member-admin rank or maxprotections.admin |
Shortcut for sending a member invitation. |
| /p untrust <player> |
Protection owner/member-admin rank or maxprotections.admin |
Shortcut for removing a member. |
| /p teleport <id> or /p tp <id> |
Protection access/rank |
Teleports to an accessible protection home. |
| /p home or /p homes |
Protection access/rank |
Opens the protection homes menu. |
| /p sethome |
Protection owner |
Sets the current protection home to your current location. |
| /p alias <alias> |
Protection owner/member-admin rank or maxprotections.admin |
Sets a friendly alias for the current protection. |
| /p info [id] |
Current protection, or protection access/rank when using an id or alias |
Shows information about the current or selected protection. |
| /p view |
Any player inside a protection |
Shows the protection border effect. |
| /p leave |
Any non-owner player inside a protection |
Teleports outside the current protection. |
| /p list |
Player-owned protections |
Lists protections owned by the player. |
Permissions
| maxprotections.admin |
OP |
Full Max Protections admin access. Includes admin debug/list/repair/report and protection child permissions. |
| maxprotections.admin.debug |
OP |
Allows /mp debug <region>. |
| maxprotections.admin.listplaced |
OP |
Allows /mp listplaced. |
| maxprotections.admin.repair |
OP |
Allows /mp repair, /mp migrate, and /mp repair cleanup. |
| maxprotections.admin.report |
OP |
Allows /mp report protections. |
| maxprotections.protection |
Everyone |
Allows player protection commands that require a base permission, including /p rent. |
| maxprotections.protection.give |
OP |
Allows /p give. |
| maxprotections.protection.buy |
Everyone |
Allows /p buy. |
| maxprotections.protection.fly |
OP |
Allows /p fly inside accessible protections. |
| maxprotections.protection.remove.others |
OP |
Allows removing another player's protection stone. |
| maxprotections.flags |
Everyone |
Allows protection owners/admins to modify protection flags from the menu. |
Protection limit permissions are generated dynamically from limits.groups in config.yml. For example, a group key vip defaults to maxprotections.limits.vip unless the group has a custom permission.
Runtime Files
- protections/<id>.yml: editable source for each protection stone, item, radius, price, WorldGuard defaults, and actionbar text.
- protections.db: SQLite runtime database for placed stones, owner/member state, pending invitations, event logs, aliases, homes, flags, rent status, region bounds, and stone coordinates.
Do not edit protections.db by hand while the server is running. Use the YAML files only for configurable templates, menus, language, and protection definitions. Use /mp repair only when WorldGuard and the SQL tracking data drift out of sync.
Protection Rent
Rent is controlled from protection.rent in config.yml:
Code (YAML):
protection:
rent:
enabled
: false
period-hours
: 168
check-interval-minutes
: 10
When enabled, each placed protection receives a paid-until timestamp. The plugin periodically tries to charge the owner through Vault using price-rent from that protection's protections/<id>.yml file, while price remains the one-time buy price. Existing files without price-rent fall back to price, then to legacy economy.price. If the owner cannot pay or economy is unavailable, the protection is safely suspended: the SQL record, members, alias, home, and stone remain, but the WorldGuard region is removed so the area no longer protects. The owner can run /p rent <region-or-alias> after getting funds to pay and reactivate the region.