How to Copy Permissions and Ranks Across Your Network

Running a multiplayer network is equal parts architecture, governance, and patience. You can spend weeks polishing builds and minigames, only to watch players bounce because ranks don’t match between servers or staff commands work in one world but fail in another. Consistent permissions are the backbone of a smooth online experience, whether you host a modest SMP with a couple of Java instances or a sprawling network with PvP arenas, skyblock, and seasonal events. The tools to make it seamless are well understood, yet the details can trap even experienced admins.

What follows is the approach I use after a decade of building and maintaining Minecraft networks on Linux boxes and various hosting panels. The examples focus on Bukkit/Spigot/Paper and BungeeCord/Velocity, but the principles apply across similar ecosystems. If you run a different stack, map the concepts: define permissions once, centralize storage, replicate safely, and monitor drift.

Why consistent permissions matter

Players don’t care which backend server they’re on. They care that their rank unlocks /hat and /nick everywhere, that their kits show up in both SMP and PvP, and that their donor perks carry across minigames without weird gaps. Staff need reliable moderation powers across the network so escalations don’t turn into scavenger hunts. Inconsistent permission trees undercut trust, and trust is everything when you host a community that lives or dies by word of mouth.

There’s also real cost. Fragmented configuration slows down updates, multiplies human error, and makes audits painful. If you run staged environments with a test node and production nodes, scattering permissions means you never quite know what you’re deploying. Clean centralization saves hours every month and makes rollback feasible when an update goes sideways.

Know your building blocks

The Java server ecosystem offers a mature set of permission managers and proxies. The main pieces on most networks are:

    The permission plugin. LuckPerms dominates now. It’s fast, has a robust API, supports storage backends like MySQL and Redis, and plays well with proxies. If you’re still on PermissionsEx or GroupManager, you’re fighting uphill; plan a migration. The proxy. BungeeCord and Velocity sit in front of your backend servers, multiplexing connections and handing off your players to SMP, lobby, or PvP instances. These proxies can also federate permissions and synchronize certain data if configured correctly. The datastore. A shared MySQL or MariaDB database is the usual choice for LuckPerms when you want cross-server parity. Redis can provide messaging for real-time sync. You can run these on the same machine as your game servers for small setups, but a managed database from your hosting provider tends to deliver better uptime. The configs in your gameplay plugins. EssentialsX, chat formatters, region protection, anti-cheat, kits, economy — each has permission nodes that tie into your ranks. Standardize plugin versions across your network or you’ll wrestle with mismatched nodes.

Once you accept that permissions are data, not files, your strategy becomes straightforward: make one source of truth, then make every server read from it.

Two main strategies: synchronize or federate

You can copy permissions and ranks across your network in two proven ways. Both work; pick based on your network’s shape.

Synchronized datastore. Every server reads and writes to a single LuckPerms database. Changes propagate instantly via pub/sub. The proxy doesn’t need to know about ranks beyond pass-through. This is the simplest model for an SMP network with two to five backend servers and moderate concurrency. It scales surprisingly far if your database is tuned.

Federated proxy. LuckPerms runs in proxy mode with the primary datastore bound to your proxy. Backend servers run LuckPerms in “mirroring” mode or rely on the proxy to provide the player’s group and context. This reduces per-server database chatter and centralizes control at the proxy layer. It’s lovely for big networks with many short-lived game servers.

For most networks under a few hundred concurrent players, synchronized datastore wins on simplicity and reliability. Start there unless you already know you need proxy federation.

Setting up LuckPerms for cross-server parity

Let’s assume a Paper network behind a Velocity proxy, though the same holds for BungeeCord. Start by standardizing LuckPerms versions on every node. Mixing versions introduces strange inconsistencies and debug nightmares. Drop the LuckPerms jar into the plugins folder on each backend, plus the proxy if you want proxy-level permissions. Boot once to generate config files, then stop the servers.

Point each LuckPerms instance to a shared MySQL or MariaDB database. Create a dedicated database and user with only the rights it needs. Local socket connections are fine if your DB is on the same machine, but TCP with SSL is typical across hosts. In luckperms.conf, set storage-method to mysql, plug in your credentials, and enable messaging with Redis if you want real-time sync speeds. A small Redis instance keeps updates snappy when staff are moderating across multiple lobbies.

Define a naming convention for contexts. If you want certain permissions to apply network-wide, use context “global.” If a few nodes need custom behavior — for instance, allowing /fly in SMP but not in the PvP server — assign a server context like “server=smp.” LuckPerms will apply the most specific context that matches.

Create your base groups. I recommend a ladder such as default, member, vip, mvp, legend, staff, mod, admin, and owner. Use inheritance to reduce repetition: member inherits default, vip inherits member, and so on. Keep donor groups separate from staff groups and let players hold one of each. That avoids granting moderation powers to donors and keeps audit trails clean.

Assign permission nodes in the global context first. Grant universal essentials like chat, home, spawn, and private messages across the network. Then override where needed with server-specific grants or denies. When you add a minigame with different balance concerns, isolate those nodes to that server’s context.

Finally, set track promotions so ranks can be advanced with a single command. LuckPerms lets you define tracks and move a user along them consistently, which helps when you run vote-based promotions or staff upgrades.

Copy once, sync forever

Copying permissions just once is the wrong goal. You want a pipeline that keeps your ranks consistent every hour of every day. The moment you treat permissions as a living schema, not static files, you’ll stop chasing ghosts.

If you inherit an existing network, export your current permissions to a file with LuckPerms’ export command. Do this per server to catch divergence. Diff the exports to see how far you’ve strayed. Expect differences; they point to local overrides you’ll either fold into contexts or remove. Clean up one server at a time, starting with your lobby and SMP instances where most players spend time.

When everything reads from the same datastore, your day-to-day routine changes. You no longer copy flat files; you version your permissions using LuckPerms’ built-in editor or command exports. The web editor is excellent for bulk edits. Make changes during low-traffic windows, announce them to your staff, and keep a dated export in a private repository so you can roll back if a change misfires.

Avoid the two biggest traps

The issues I see again and again are circular inheritance and context leakage. Circular inheritance happens when Group A inherits Group B and Group B inherits Group A, often through an indirect chain. LuckPerms detects and warns, but you’ll waste time untangling it. Keep inheritance shallow. If you need many permutations, consider using temporary context grants or meta keys rather than stacking more groups.

Context leakage occurs when you think a permission is scoped to a server but it slips into global because of how it was granted. For example, granting an entire subtree like essentials.* globally can inadvertently expose /fly in PvP even if you deny it locally. Be explicit. Grant essentials.sethome and essentials.home separately if that matches your design. Specific beats wildcard when you care about fine-grained behavior.

Handling staff powers safely

Moderation powers should be boring and predictable. I separate staff groups into a parallel ladder with clean boundaries. Helper can mute and warn, Mod can kick and tempban, Admin handles permanent bans and rollback tools. Owner fills the gaps with server management nodes, not just blanket asterisks.

Audit who has what. LuckPerms lets you query all users with a given group. Run that weekly. Staff turnover and trial periods are normal in any active multiplayer community; remove powers on schedule. For sensitive commands like IP lookups, world edits, and economy adjustments, add meta tags that require two layers: the group and a server context. That way a Mod can run their toolbox in SMP but not in a high-stakes PvP arena where mistakes hurt gameplay balance.

Dealing with multiple game modes

Most networks that attract players mix SMP and PvP or run a rotating menu of minigames. The trick is to treat your core rank identity as network-wide and layer mode-specific perks on top. Donor kits, cosmetics, and utility commands like back or hat can travel with the player everywhere. Competitive advantages do not. Players accept this when you explain the why in your store and rules.

In SMP, donors might earn extra homes, access to resource worlds, or mild QoL perks like workbench and anvil commands. In PvP, cap perks to visual flair: tags, trails, and victory effects. Keep scoreboard or tablist prefixes consistent with their rank so they feel recognized, but avoid power creep that tilts the ladder. Use LuckPerms contexts to keep those differences sharp and enforceable.

If you run seasonal resets, tag permissions with a season context and clear them at reset time. It’s easier than combing through dozens of nodes to unwind temporary buffs, and it lets you run special events — weekend double home slots, holiday cosmetics — without polluting the permanent tree.

Migrating from a legacy permission manager

Plenty of servers still run PermissionsEx because it once did everything they needed. Migrating isn’t fun, but it’s survivable. The safest flow is to stand up a test server, install LuckPerms, and use the built-in migration commands. LuckPerms can ingest PEX data and map groups and nodes. Expect to fix edge cases: negated nodes, world-specific grants, and custom ladders.

Don’t rush. Export your PEX configuration, keep a copy in version control, and plan a maintenance window. After migration, audit a sample of players across each server to confirm that their commands and chat formatting still match their rank. If your chat plugin relies on group-specific prefixes, update its placeholders to pull from LuckPerms’ meta or cached prefix. Run your test server for a week with your staff before making the switch network-wide.

Keeping performance in check

Permissions won’t be your top CPU consumer — entities and chunk ticking take that crown — but database chatter adds up. Minimize latency by keeping your database close to your servers. For a single dedicated machine, local is best. For cloud setups, put the database in the same region as the game instances. Turn on Redis messaging so permission updates propagate quickly without forcing every node to poll.

Cache sizes matter. LuckPerms is efficient, but you can still save cycles by adjusting cache expiry for users who haven’t logged in recently. Watch for plugins that re-check permissions on every tick; that’s a red flag. Most modern gameplay plugins cache their lookups. If you encounter a lag spike when staff run commands that change groups, you likely need to tweak messaging or reduce synchronous database calls by upgrading your database tier.

Testing changes without breaking live gameplay

You don’t need a huge staging setup to test rank changes. Spin a detached test server pointed to a cloned database. If cloning is impractical, use a separate schema and import an export file. Build a checklist. Promote a dummy account through tracks, teleport, claim land, buy from a shop, toggle fly where allowed, and confirm that prevented commands stay prevented. Five to ten minutes of disciplined testing saves hours of in-game triage.

Communicate with your team. A staff lead can coordinate on Discord and collect edge cases that players report. When you ship a change network-wide, note the time, the export filename, and the commands you ran. That breadcrumb trail is your lifeline when a donor alerts you that their mvp kit vanished.

Practical steps to implement and maintain

    Pick LuckPerms as your manager, keep every server and the proxy on the same plugin version, and connect them to one MySQL/MariaDB database with Redis messaging enabled. Define clear groups and inheritance, separate donor and staff tracks, and use contexts to scope server-specific behavior rather than maintaining separate permission files. Export your permission set regularly, commit it to a private repository, and tag releases so you can roll back after problematic changes. Standardize plugin versions across servers to keep permission nodes consistent, and document any plugin whose nodes you override heavily. Schedule a monthly audit: list users with staff groups, diff exports against last month, and test the top ten donor commands across SMP and PvP servers.

Handling IP bans, alts, and cross-server moderation

Once your ranks are consistent, moderation becomes the next frontier. If your proxy runs an IP-based ban plugin, align its permission nodes with your staff ladder. Velocity and BungeeCord each have mature ban managers that integrate with LuckPerms. Grant ban and unban powers at the proxy level so staff don’t need to jump servers to handle issues. Use contexts to restrict investigative tools — alt detection, geolocation — to senior staff, and log their use.

A word on privacy: treat IP and country lookups as sensitive. Only experienced moderators or admins should have access. Document your policy and make sure people know which commands are logged.

Edge cases that will bite you once

Chat prefixes. Many networks use chat plugins that build prefixes from group weight or meta. Standardize your color codes and prefix strings in LuckPerms meta so your chat plugin can stay ignorant of group internals. The first time you see a donor show [default] in PvP but [vip] in SMP, you’ll wish you had.

World-specific nodes. Some plugins still honor world contexts. If your SMP has a resource world and a main world, decide whether players can set homes or back in both. Use LuckPerms’ world context to lock behaviors where necessary. Test nether and end worlds as well; a missed context there often breaks teleports.

Temporary permissions. Sponsors, event winners, or staff-in-training often get temporary nodes. Use LuckPerms’ timed grants rather than calendar reminders. The system will expire them cleanly, and the audit trail will show who added what and when.

Data drift after outages. If your database or Redis goes down, servers may run with stale caches. When services return, force a sync with LuckPerms commands on each node. Build a simple runbook for your team so they don’t restart everything in a panic and make the situation worse.

Security and principle of least privilege

Grant the minimum that makes the role effective. Resist the urge to give staff wildcard access because it’s fast. Every extra node creates a new way to disrupt gameplay, even inadvertently. Lock down console access, SSH keys, and control panel permissions at the infrastructure level. Inside the game, let your permission system express your policy precisely. If a role only needs to see player IPs during an investigation, grant that node temporarily or in a narrow context.

Keep an eye on your store if you sell ranks. Avoid promising commands that create maintenance headaches network-wide. Cosmetic perks are easy to honor across servers; gameplay perks must be tested in every mode you host. Players are happier with fewer, reliable perks than with a long list that breaks in half your worlds.

When proxy-level permissions are worth it

If your network grows beyond a handful of backends, move some responsibilities to the proxy. Running LuckPerms on Velocity or BungeeCord gives you a single choke point for authentications and staff powers. Backends can operate with cached mirrors, reducing database load. It also simplifies global chat and party systems, which can read consistent group and meta data directly from the proxy’s memory.

The trade-off is complexity. You must ensure that backends agree on contexts and that plugins relying on LuckPerms are satisfied with mirrored data. Test your reconnection logic and failure modes; proxies can become single points of failure if you don’t provision them with care. Use two proxies with a TCP load balancer if your player counts justify the expense.

A lightweight path for small servers and free hosting

Not every admin runs a paid dedicated box. If you’re on free or budget hosting with limited MySQL slots, you can still achieve consistency. Many hosts offer a single shared database that’s enough for LuckPerms across two or three Java servers. Keep your poll rate moderate, turn on asynchronous operations where available, and avoid installing feature-heavy plugins you don’t need. If you can’t get Redis, LuckPerms still syncs; updates will lag by a few seconds, which most players won’t notice.

In a two-server SMP with a PvP sidecar, an inexpensive database and careful scoping go a long way. You can run weekend events, keep ranks aligned, and deliver stable gameplay without chasing file copies.

Monitoring and observability

What you don’t measure will surprise you. Add basic health checks:

    Slow query logs in MySQL or MariaDB to catch badly indexed tables or noisy plugins. LuckPerms verbose logs during testing windows to confirm nodes resolve as expected. Proxy logs filtered for permission errors to catch missing nodes before players do.

For a larger network, integrate a metrics stack. Prometheus or a panel-provided monitor can track query counts and error spikes. Tag your LuckPerms exports with the changes you made that day. When players report that a command broke after a certain time, you’ll correlate it to a change rather than hunting blindly.

image

A brief anecdote and a reminder

On one network, we introduced a new PvP arena that shared kits with SMP by mistake. The permissions looked perfect on paper, but a single wildcard in the global context slipped through. It took exactly one evening for regulars to discover that /back worked after PvP deaths, breaking the risk-reward loop. The fix was a single deny at the PvP server context level, but the real lesson was process. We added a short game-mode checklist to our release routine, and the issue never reappeared.

Copying permissions is not a one-time task. It’s an operational habit. The moment you align your tools and your process, your network becomes easier to run, your staff spend less time firefighting, and your players enjoy consistent, predictable gameplay. Whether you host on a bare-metal machine at a known IP or use gtop100.com a managed panel with auto restarts, the same principles apply: define your ranks clearly, centralize storage, scope with contexts, and keep a steady hand on changes. The rest is just discipline and a few well-placed exports.