Back to blog

LuckPerms: Temporary Staff Permissions for Minecraft Events

Mineando
Voxel key and hourglass on a dark green background with white Mineando branding.

Give event staff a dedicated LuckPerms group with a limited lifetime, restrict where that membership applies, and rehearse both expiry and early removal. The job is complete when the person can perform the agreed tasks during their shift and loses those extra abilities afterward. A countdown alone does not establish that outcome.

This guide is for community operators and event teams already running LuckPerms on a Java server. It assumes an administrator can review an existing staff group and use LuckPerms commands. The example is a proposed rehearsal, not a test performed on your server. It does not cover external access such as SSH, Discord roles or a hosting provider account.

Define the shift before assigning a rank

Write down the person's actual tasks: inspect reports, move a participant out of a stuck location, or operate a particular event feature. For each task, identify the responsible plugin, its documented permission nodes and the intended target. A teleport command that can move any player may be broader than the assignment requires.

Use a dedicated group, such as eventstaff, whose permissions and inherited groups have been reviewed. Do not inherit an administrator group just to make one missing command work. Record a few abilities that must remain unavailable, including permission management and unrelated moderation tools. The event lead should approve this task list before the technical rehearsal.

Keep a record with these fields:

  • Account identity, preferably with its verified UUID, and the person responsible for approval.
  • Group, permitted tasks, excluded tasks and server or world scope.
  • Shift start, intended end with time zone, and the administrator who can remove access early.
  • Rehearsal evidence and the follow-up check after the event.

This fits naturally into the preparation and rehearsal work described on Mineando's Minecraft events page. Agree who owns the access check alongside player onboarding and the event schedule.

Confirm what the server context actually means

In the example, server=event must match the server value configured in LuckPerms on the intended backend. It is not automatically your DNS name or the name displayed in a server menu. LuckPerms documents this mapping on its contexts page.

Inspect the online user's context with /lp user EventHelper info. Replace EventHelper with the verified account. Test on the actual backend where the event plugin handles the action. An offline account has no current player context, so an offline inspection cannot replace the in-game check.

For a network, list every place the person can travel: event backend, lobby and regular survival server. A contextual membership limits that particular inheritance path. Existing global permissions, another group or operator access may still grant the same ability. If you cannot explain the account's other access, resolve that before adding another role.

The commands below use /lp on the backend. Proxy installations have their own command aliases and context behaviour; do not copy the example into the proxy console and assume it tests backend permissions.

Assign a temporary membership deliberately

With the group already reviewed and the context confirmed, an administrator could assign a three-hour shift:

/lp user EventHelper parent addtemp eventstaff 3h deny server=event
/lp user EventHelper parent info

The name, group, duration and context are example values. The three hours begin when the command succeeds, not at the scheduled event start. If you issue it during morning preparation, it may expire before an evening show. Check the resulting expiry against the shift record immediately.

The explicit deny modifier rejects a duplicate temporary node. It is useful when two operators might issue the same assignment. Investigate a rejection instead of extending the grant blindly. LuckPerms also supports accumulate and replace; the latter keeps the longest duration, so it should not be assumed to shorten access. See the official parent commands reference.

Rehearse with a short duration and a normal account

In a controlled test environment, use a short grant such as 2m and a non-operator account with a known baseline. Repeat the checks with the eventual staff account to catch permissions inherited from its existing groups. Do not use destructive moderation commands against real participants as a test.

CheckExpected outcome
Before the grantThe account cannot perform the additional staff tasks.
Grant active on the event backendEach agreed task works against a test target.
Grant active in the lobby or survival backendThe extra event tasks remain unavailable.
Unrelated privileged actionIt remains unavailable throughout the shift.
After expiry, still connectedThe additional task is denied when attempted again.
After reconnectingThe same restricted baseline remains.

Record actual outcomes, not just whether the rank prefix changed. Include the software versions and any plugin configuration that affects the action. If the expiry test fails, keep the role out of the live event until you understand why. A feature may maintain state beyond the permission check that originally enabled it; verify the complete interaction rather than only its opening command.

For an unexpected result, /lp user EventHelper permission check YOUR_PERMISSION_NODE helps inspect the permission decision. Replace YOUR_PERMISSION_NODE with the real node from the relevant plugin. The permission commands documentation describes this diagnostic.

If necessary, briefly enable /lp verbose on EventHelper, reproduce one safe action, and stop with /lp verbose off. The verbose documentation explains the filtered permission checks. Keep useful evidence in the incident record before stopping; off clears collected matches. No public upload is needed for this basic workflow.

Revoke early and verify the handover

If the shift ends early, remove its temporary membership with the matching context:

/lp user EventHelper parent removetemp eventstaff server=event

Repeat the post-expiry checks immediately. This removes the specified temporary membership; it does not remove every permission the account can obtain elsewhere. If a task still works, inspect other grants and the plugin's behaviour. Avoid clearing all parent groups as an improvised cleanup, because the account may have legitimate community roles to retain.

Close the record with the removal or expiry time, the verifier and any exception. Review separate access systems independently. If the rehearsal exposes broader operating gaps, bring the role matrix and test results to a managed infrastructure enquiry. Mineando scopes paid projects individually; ongoing support and live coverage are agreed separately.

Tell us what you’re building.

Paid projects, with a scope and quote agreed before we start.

Discuss your project