> For the complete documentation index, see [llms.txt](https://lethium.gitbook.io/lethium-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lethium.gitbook.io/lethium-docs/server-setup/luckperms.md).

# LuckPerms: ranks and permissions

Ranks, groups, permissions and prefixes: the LuckPerms setup behind the whole server.

LuckPerms decides **who can do what** and what **rank badge** a player shows in chat and the tab list. Nearly everything else in the setup reads from it: ClickEm VIP tiers, TAB, LPC chat, EssentialsX and EasyCommandBlocker.

Files: `plugins/LuckPerms/config.yml` and the database `luckperms-h2-v2.mv.db` (storage method `h2`, a local file). **Back up the `.mv.db` file**: it holds every group and permission.

{% hint style="success" %}
**Quick start**

* Give a rank: `/lp user <name> parent set <group>`.
* Temporary rank: `/lp user <name> permission settemp clickem.vip.<tier> true 30d accumulate`.
* Give a permission: `/lp group <group> permission set <node> true`.
* Edit visually: `/lp editor`.
  {% endhint %}

{% hint style="info" %}
You rarely edit files. Use commands or the web editor: run `/lp editor`, open the link, edit, and press **Apply**.
{% endhint %}

### The rank ladder

There are two ladders. Each group **inherits** the group before it (for example `mvp` has `group.vip`), so higher ranks keep everything lower ranks have.

#### Player (store) ranks

| Group      | Prefix priority | Badge                     | ClickEm VIP tier |
| ---------- | --------------- | ------------------------- | ---------------- |
| `default`  | 0               | `:clickem_rank_member:`   | none             |
| `vip`      | 10              | `:clickem_rank_vip:`      | `vip`            |
| `mvp`      | 20              | `:clickem_rank_mvp:`      | `mvp`            |
| `elite`    | 30              | `:clickem_rank_elite:`    | `elite`          |
| `supreme`  | 40              | `:clickem_rank_supreme:`  | `supreme`        |
| `legend`   | 50              | `:clickem_rank_legend:`   | `legend`         |
| `ultimate` | 60              | `:clickem_rank_ultimate:` | `ultimate`       |
| `clicker`  | 70              | `:clickem_rank_clicker:`  | `clicker`        |

#### Staff ranks

| Group       | Prefix priority |
| ----------- | --------------- |
| `trainee`   | 100             |
| `helper`    | 110             |
| `srhelper`  | 120             |
| `mod`       | 130             |
| `srmod`     | 140             |
| `admin`     | 150             |
| `sradmin`   | 160             |
| `manager`   | 170             |
| `developer` | 180             |
| `owner`     | 200             |

The **priority** number is the first number of each group's prefix. When a player has several groups, the prefix with the **highest priority** shows. The badge is a **prefix** of the form `prefix.<priority>.&f:clickem_rank_<name>: &#<colour>`, where `:clickem_rank_<name>:` is an icon from the ItemsAdder resource pack.

### What the default group has

Everyone is in `default`. It carries:

| Permission                                                                   | Why                                                                                                                                                |
| ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `clickem.command`                                                            | Use ClickEm commands.                                                                                                                              |
| `essentials.msg`, `essentials.reply`, `essentials.r`, `essentials.msgtoggle` | Private messages.                                                                                                                                  |
| `essentials.me` = **false**                                                  | Blocks `/me`.                                                                                                                                      |
| `ecb.tab.default`, `easycommandblocker.tab.default`                          | Lets EasyCommandBlocker show the player the tab-complete list. See [Security and utilities](/lethium-docs/server-setup/security-and-utilities.md). |

The `vip` and `mvp` groups also carry `clickem.vip.vip` and `clickem.vip.mvp`, and the `elite` to `clicker` tiers match the player's **primary group** through ClickEm's LuckPerms integration. See [VIP Perks](/lethium-docs/gameplay/vip-perks.md).

### Common jobs

{% tabs %}
{% tab title="Give a rank" %}

```
/lp user <name> parent set vip
```

Use `parent add` to add a second group, `parent remove` to take one away.
{% endtab %}

{% tab title="Give a rank for a limited time" %}

```
/lp user <name> parent addtemp vip 30d
```

Or give only the ClickEm tier for 30 days (this is what the Gems Shop and rank vouchers do):

```
/lp user <name> permission settemp clickem.vip.mvp true 30d accumulate
```

`accumulate` adds to time already granted.
{% endtab %}

{% tab title="Give a permission" %}

```
/lp user <name> permission set <node> true
/lp group vip permission set <node> true
```

Use `false` to deny. `/lp user <name> permission info` lists what a player has.
{% endtab %}

{% tab title="Create a new rank" %}

```
/lp creategroup partner
/lp group partner parent add default
/lp group partner meta addprefix 25 "&f:clickem_rank_vip: &#D79431"
/lp group partner displayname Partner
```

To make it a ClickEm VIP tier, add a tier with `required-group: partner` in `vip-perks.yml`.
{% endtab %}

{% tab title="Change a badge colour or icon" %}

```
/lp group vip meta removeprefix 10
/lp group vip meta addprefix 10 "&f:clickem_rank_vip: &#FF8800"
```

The icon name must exist in the ItemsAdder `clickem_emojies` content.
{% endtab %}

{% tab title="Check what a player is" %}
`/lp user <name> info` shows their groups and primary group. `%luckperms_highest_group_by_weight%` is used by the Bedrock scoreboard.
{% endtab %}
{% endtabs %}

### The ClickEm permissions to know

| Node                             | Who should have it                          |
| -------------------------------- | ------------------------------------------- |
| `clickem.command`                | Everyone (default)                          |
| `clickem.admin`                  | Staff only (operators by default)           |
| `clickem.zones.bypass`           | Staff who build or test                     |
| `clickem.vip.<tier>`             | Granted by ranks or vouchers                |
| `clickem.autoattack.targets.<n>` | Perk: more auto-attack targets              |
| `clickem.anti-afk.bypass`        | Players exempt from the human check         |
| `clickem.fly`                    | Allows `/fly`                               |
| `clickem.zone.<zone id>`         | Given automatically for zones a player owns |

The full list is on the [Permissions](/lethium-docs/commands/permissions.md) page.

### How LuckPerms ties into the rest

* **TAB** shows the badge (from `%img_clickem_rank_<name>%`) and sorts the tab list in this order: owner, developer, manager, sradmin, admin, srmod, mod, srhelper, helper, legend, supreme, elite, mvp, vip, default. See [TAB](/lethium-docs/server-setup/tab.md).
* **LPC** formats chat with `%vault_prefix%`. See [Chat](/lethium-docs/server-setup/chat.md).
* **Vault** exposes the prefix to LPC and TAB placeholders.
* The **LuckPerms PlaceholderAPI expansion** provides `%luckperms_*%`.

{% hint style="warning" %}
`/lp` commands can give full control. Only trusted staff should have `luckperms.*`. A typo such as `/lp user <name> permission set * true` gives that player everything.
{% endhint %}

### Backups

Stop the server or run `/lp export <file>` to write a human-readable backup to `plugins/LuckPerms/`. Restore with `/lp import <file>`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://lethium.gitbook.io/lethium-docs/server-setup/luckperms.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
