> For the complete documentation index, see [llms.txt](https://quickfire-corp.gitbook.io/ncpf/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://quickfire-corp.gitbook.io/ncpf/guides/getting-started/configuration/permissions.md).

# Permissions

{% hint style="warning" %}
**Good to know:** Splitting your product into fundamental concepts, objects, or areas can be a great way to let readers deep dive into the concepts that matter most to them.
{% endhint %}

**able of context**

* [Shortcuts](#shortcuts)
* [Checks](#checks)
* [Specific](#specific)
* [Commands](#commands)
* [Auxiliary commands](#auxiliary-commands)
* [Miscellaneous and parent permissions](#miscellaneous-and-parent-permissions)
* [Configure permission caching behavior](#configure-permission-caching-behavior)

## Shortcuts <a href="#shortcuts" id="shortcuts"></a>

<table><thead><tr><th>Permissions</th><th width="150">Explanation</th></tr></thead><tbody><tr><td><code>nocheatplus.shortcut.info</code></td><td>Gives permissions to</td></tr><tr><td><code>nocheatplus.shortcut.monitor</code></td><td>Gives permissions for</td></tr><tr><td><code>nocheatplus.shortcut.safeadmin</code></td><td>Gives permissions to</td></tr><tr><td><code>nocheatplus.shortcut.bypass</code></td><td>Gives permissions to bypass all checks.</td></tr></tbody></table>

## Checks

| Permissions                                                  | Explanation                                                                                                 |
| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------- |
| `nocheatplus.checks`                                         | Exempts from all checks                                                                                     |
| `nocheatplus.checks.<Check category here>`                   | Exempts from all checks of a given check category.                                                          |
| `nocheatplus.checks.<Check category here>.<Check name here>` | Exempts group of this check. (Example: nocheatplus.checks.moving.creativefly will exempt from CreativeFly). |

### Specific

| Permissions                                       | Explanation                                                                      |
| ------------------------------------------------- | -------------------------------------------------------------------------------- |
| `nocheatplus.bypass.denylogin`                    | Exempts from login denial.                                                       |
| `nocheatplus.checks.blockplace.boatsanywhere`     | Allows to place boats on the ground (not just in water).                         |
| `nocheatplus.checks.blockbreak.break.liquid`      | Allows to break water/lava through cheats.                                       |
| `nocheatplus.checks.moving.survivalfly.speeding`  | Extra speed permission for SurvivalFly.                                          |
| `nocheatplus.checks.moving.survivalfly.sprinting` | Will exempt players from getting checked for backwards and blindness sprinting.  |
| `nocheatplus.checks.moving.survivalfly.step`      | Will exempt players from SurvivalFly's step cheat modules.                       |
| `nocheatplus.checks.moving.survivalfly.sneakin`   | Exempt players from the horizontal limits for sneaking.                          |
| `nocheatplus.checks.moving.survivalfly.blocking`  | Exempt players from the horizontal limits for blocking/shielding.                |
| `nocheatplus.checks.moving.survivalfly.waterwalk` | Will exempt players from getting checked by SurvivalFly's main waterwalk checks. |

## Commands

| Permissions                        | Explanation                                                                                                         |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `nocheatplus.command.commands`     | Can view all NC+ commands with */ncp commands*                                                                      |
| `nocheatplus.command.exempt`       | Can exempt players from checks with */ncp exempt*                                                                   |
| `nocheatplus.command.exemptions`   | Can list all check exemptions of a player with */ncp exemptions*                                                    |
| `nocheatplus.command.info`         | Can view check violations of a player with */ncp info*                                                              |
| `nocheatplus.command.inspect`      | Can retrieve player status data with */ncp inspect*                                                                 |
| `nocheatplus.command.lag`          | Can view server lag spikes with */ncp lag*                                                                          |
| `nocheatplus.command.log`          | Can access internal debug data with */ncp log*                                                                      |
| `nocheatplus.command.notify`       | Can toggle on/off in-game cheat notifications (includes permission `nocheatplus.notify`) for */ncp notify* command) |
| `nocheatplus.notify`               | Can view NC+ in-game notifications (but can't toggle them on/off without the permission above)                      |
| `nocheatplus.command.reload`       | Can reload NC+ to re-read configurations and permissions with */ncp reload*                                         |
| `nocheatplus.command.removeplayer` | Can remove a players violation history with */ncp removeplayer*                                                     |
| `nocheatplus.command.unexempt`     | Can unexempt a player from checks with */ncp unexempt*                                                              |
| `nocheatplus.command.version`      | Can view the version information with */ncp version*                                                                |

### Auxiliary commands

| Permissions                      | Explanation                                                          |
| -------------------------------- | -------------------------------------------------------------------- |
| `nocheatplus.command.allowlogin` | Can remove temporary kicked players with */ncp allowlogin*           |
| `nocheatplus.command.ban`        | Can ban players with */ncp ban*                                      |
| `nocheatplus.command.delay`      | Can delay command execution with */ncp dela*                         |
| `nocheatplus.command.denylogin`  | Can temporary kick players with */ncp denylogin*                     |
| `nocheatplus.command.kick`       | Can kick players with */ncp kick*                                    |
| `nocheatplus.command.kicklist`   | Can view all players that have been temp-kicked with */ncp kicklist* |
| `nocheatplus.command.tell`       | Can send private messages to players using */ncp tell*               |

## Miscellaneous and parent permissions

| Permissions          | Explanation                                                                                                     |
| -------------------- | --------------------------------------------------------------------------------------------------------------- |
| `nocheatplus.admin`  | Gives access to all [commands](/ncpf/guides/getting-started/configuration/commands.md) including Auxiliary ones |
| `nocheatplus.notify` | Will receive hack notifications over in-game chat                                                               |

Commands for which the permission got set by the protection features (hide plugins), might have altered default permissions or NoCheatPlus may have set a filter permission 'nocheatplus.filter.command.COMMAND\_NAME', for the case the command was allowed to be run by everyone.

**Notes**

* By default NoCheatPlus assigns all permissions and gives full rights to players that have been `/op-ed` on your server. If you don't want to give OPs full access to all NoCheatPlus features then take a look in the configuration of your permissions plugin with [LuckPerms](https://luckperms.net/)!

**Related**

* [Checks](/ncpf/guides/getting-started/configuration/checks.md)
* [Commands](/ncpf/guides/getting-started/configuration/commands.md)
* [Debugging](https://github.com/Updated-NoCheatPlus/Docs/blob/master/Development/Debugging.md)

## Configure permission caching behavior

Permission caching has been introduced. This allows for configuration of how to check for permissions, in case permission checks turn out to consume too much performance, or in case you want to override the behavior for other reasons.

{% hint style="warning" %}
You can set a default policy and define further rules for mapping permissions to policies for individual permissions, based on wildcards, or based on regular expressions.
{% endhint %}

Policy definition:

* Fetching policy `[, flag1 [,flag2]]`
* Separate any parts by `' ' or ',' or ':'.`
* Flags are preceded by the state `'+'` for true and `'-'` for false. Default flag states can be omitted, such as `+world` or `+offline`.
* Flags apply for invalidation, regardless of the fetching policy.

| Fetching policies    | Meaning/usage                                |
| -------------------- | -------------------------------------------- |
| ALWAYS               | Always check.                                |
| ONCE                 | Once until invalidation.                     |
| INTERVAL:*(seconds)* | Only check every *(seconds)* seconds.        |
| TRUE                 | Always assume permission to be set to true.  |
| FALSE                | Always assume permission to be set to false. |

| Policy flags | Meaning/usage                                                                                                |
| ------------ | ------------------------------------------------------------------------------------------------------------ |
| +offline     | Invalidate permissions once the player is offline (default). Strictly this also invalidates with logging on. |
| -offline     | No invalidation with leaving the server, unless +world is set (!).                                           |
| +world       | Invalidate with world changes and leaving the server (default).                                              |
| -world       | No world based invalidation. Behavior with leaving the server depends on the `offline` flag now.             |

Rule definition:

* Matching rule separated by `' :: '` from a policy definition.

| Matching rule                                                                              | Meaning/usage                                                                           |
| ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- |
| *(directly the permission, excluding the variants given below.)*                           | Match only that permission                                                              |
| startswith:*(...)* *or* *(...)*\*                                                          | All permissions that start with the given part.                                         |
| endswith:*(...)* *or* \**(...)*                                                            | All permissions that end with the given part.                                           |
| contains:*(...)* *or* \**(...)*\*                                                          | All permissions that contain the given part.                                            |
| regex:*(regular expression pattern)*                                                       | All permissions matching the regular expression pattern (standard java String.matches). |
| (Constructions with \* *(...)* \* *(...)* \* don't work, use regular expressions instead.) |                                                                                         |

### Default policy

* Configuration path: permissions.policy.default
* Value: string
* Content: policy definition
* Examples:
  * `INTERVAL:10, -offline, -world` for checking every 10 seconds, ignoring world changing and leaving the server.
  * `ONCE` for checking once only, still invalidate with changing the world and with logging on/off.

### Rules

* Configuration path: permissions.policy.rules
* Value: String list.
* Content: matching rule separated by ' :: ' from a policy definition.
* The first matching rule is applies, testing in the order in which they're defined.
* Examples:
  * See default configuration...
  * `nocheatplus.checks.survivalfly.* :: FALSE, -offline, -world` Never check the sub permissions of survivalfly, assume set to false always.
  * `startswith:nocheatplus.checks.survivalfly. :: FALSE, -offline, -world` Same as above.
  * `nocheatplus.checks.survivalfly* :: INTERVAL:10` Check the survivalfly permission and sub permission only every 10 seconds (invalidate with logging on/off and with world changing).
