Products Docs Help Store Discord

LuckPerms

Permission management integration.

LuckPerms integration for granular permission control.

Default Permissions

Without LuckPerms, permissions work via OP level:

PermissionDefault
Player commandsEveryone
Admin commandsOP Level 2+

Permission Nodes

Player Permissions

PermissionDescription
cobbleranked.player.useUse /ranked command
cobbleranked.player.casual.useUse /casual command
cobbleranked.player.queue.joinJoin queue
cobbleranked.player.queue.leaveLeave queue
cobbleranked.player.stats.viewView own stats
cobbleranked.player.leaderboard.viewView leaderboard

Format Permissions

PermissionDescription
cobbleranked.player.format.singlesQueue for Singles
cobbleranked.player.format.doublesQueue for Doubles
cobbleranked.player.format.triplesQueue for Triples

Admin Permissions

PermissionDescription
cobbleranked.admin.*All admin commands
cobbleranked.admin.arena.*All arena commands
cobbleranked.admin.arena.createCreate arenas
cobbleranked.admin.arena.deleteDelete arenas
cobbleranked.admin.arena.editEdit arena positions
cobbleranked.admin.arena.listList all arenas
cobbleranked.admin.arena.teleportTeleport to arenas
cobbleranked.admin.config.reloadReload configuration
cobbleranked.admin.config.viewView configuration
cobbleranked.admin.player.seteloSet player ELO
cobbleranked.admin.player.viewothersView other players’ stats
cobbleranked.admin.queue.clearClear all queues
cobbleranked.admin.queue.viewView queue status
cobbleranked.admin.queue.kickKick players from queue
cobbleranked.admin.season.*All season commands
cobbleranked.admin.season.infoView season info
cobbleranked.admin.season.rotateTrigger season rotation
cobbleranked.admin.debugAccess debug commands

Bypass Permissions

PermissionDescription
cobbleranked.player.bypass.cooldownBypass queue cooldown
cobbleranked.player.bypass.queuelimitBypass queue limit

LuckPerms Setup

Grant Player Permissions

/lp group default permission set cobbleranked.player.use true
/lp group default permission set cobbleranked.player.casual.use true

Grant Admin Permissions

/lp group admin permission set cobbleranked.admin.* true

Grant Specific Bypass

/lp group vip permission set cobbleranked.player.bypass.cooldown true

Rank Display Permissions

CobbleRanked automatically grants rank-based permissions and display features:

PermissionDescription
cobbleranked.rank.<tier>Current rank tier permission
cobbleranked.rank.title.<tier>Persistent title permission (earned once, kept forever)

Example: When a player reaches Ultra Ball tier:

  • They get cobbleranked.rank.ULTRABALL permission (current rank)
  • They get cobbleranked.rank.title.ULTRABALL permission (permanent, kept even after tier loss)

Rank Display Settings

Configure in config/cobbleranked/integrations/luckperms.yaml:

# config/cobbleranked/integrations/luckperms.yaml
enabled: true
syncMode: SUFFIX          # PREFIX, SUFFIX, GROUP, or ALL
removeOnRankLoss: true   # Remove display when losing rank
opBypassAdminPermissions: true   # OPs (level 2+) can run admin commands without explicit nodes

tierMappings:
  POKEBALL:
    suffix: " &f[Poké Ball]&r"
    weight: 100
  GREATBALL:
    suffix: " &9[Great Ball]&r"
    weight: 101
  # ... other tiers
SettingDescription
syncModeHow rank display is applied (suffix, prefix, group)
removeOnRankLossWhether to remove display when player drops below tier
permissionModeALLOW_BY_DEFAULT or REQUIRE_PERMISSION for command access

Dynamic Contexts (Tier / ELO)

CobbleRanked can expose each player’s current tier and ELO as LuckPerms contexts. This lets you write permission rules that depend on a player’s rank — e.g. grant a permission only to Master Ball tier and above, or only above 1500 ELO. Works on both pure-Fabric and Arclight (LuckPerms is available as a Fabric mod too).

# config/cobbleranked/integrations/luckperms.yaml
context:
  enableServerContext: false    # apply per-server (cross-server)
  enableWorldContext: false     # apply per-world
  # Dynamic tier/elo contexts (Arclight + LuckPerms only)
  enableTierContext: false      # expose the player's tier as a context
  enableEloContext: false       # expose the player's ELO as a context
  tierKey: "cobbleranked_tier"  # LuckPerms context key for the tier
  eloKey: "cobbleranked_elo"   # LuckPerms context key for the ELO

Example: permission rule for a tier

With enableTierContext: true, a player’s tier is exposed under the cobbleranked_tier context. In LuckPerms you can then create a context-based rule:

/lp group masterball permission set some.permission.true cobbleranked_tier=MASTERBALL

This grants some.permission only when the player’s CobbleRanked tier is MASTERBALL. Similarly, enableEloContext exposes the numeric ELO under cobbleranked_elo.

Ranked Bans

You can ban a player from ranked play through LuckPerms. The ban denies the cobbleranked.player.use permission, so the player can no longer open /ranked (Casual via /casual is still allowed).

/rankedadmin banranked <player>     # ban from ranked (requires LuckPerms)
/rankedadmin unbanranked <player>   # lift the ban (requires LuckPerms)

Cross-server sync: a ranked ban only carries across servers if LuckPerms uses shared storage (e.g. MySQL). If each server uses local storage (SQLite/H2/JSON), the ban applies per-server only. Make sure every linked server points at the same LuckPerms storage so the ban follows the player.

You can also set the denial node manually:

/lp user <player> permission set cobbleranked.player.use false

Without LuckPerms

If LuckPerms is not installed:

  • All players can use basic commands
  • Only OP Level 2+ can use admin commands
  • Bypass permissions are not available
  • Rank display features are disabled

See Also