> For the complete documentation index, see [llms.txt](https://lethium.gitbook.io/custombeacons-or-65-effects-or-35-hooks/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/custombeacons-or-65-effects-or-35-hooks/running-your-server/permissions.md).

# Permissions

CustomBeacons works for players with no permission setup at all: the player permissions are on by default. You only need permissions to give staff powers, to give VIPs more beacons, or to restrict worlds, beacon types and individual effects.

## Player permissions

| Permission                   | Default | What it allows                                                                                                                 |
| ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `custombeacons.use`          | true    | Open and use beacon menus                                                                                                      |
| `custombeacons.place`        | true    | Place beacons                                                                                                                  |
| `custombeacons.transfer`     | true    | Give a beacon to another player                                                                                                |
| `custombeacons.refund`       | true    | Sell back the last level of an effect or upgrade ([Refunds](/custombeacons-or-65-effects-or-35-hooks/how-it-works/refunds.md)) |
| `custombeacons.tp`           | true    | `/cbeacon tp` (also needs `tp.enabled: true` in config)                                                                        |
| `custombeacons.effect.<id>`  | true    | Use one effect, for example `custombeacons.effect.flying`. `custombeacons.effect.*` covers all                                 |
| `custombeacons.upgrade.<id>` | true    | Buy one beacon upgrade, for example `custombeacons.upgrade.range`. `custombeacons.upgrade.*` covers all                        |
| `custombeacons.enemy.exempt` | false   | Never treated as an intruder by `ENEMY_PLAYERS` effects. Meant for staff                                                       |

{% hint style="info" %}
To take an effect away from most players, set `custombeacons.effect.<id>` to **false** for the default group and **true** for the group that should have it. You can also turn an effect off for everyone with `enabled: false` in its file.
{% endhint %}

## Staff permissions

`custombeacons.admin` (default: op) includes all of these. Grant single ones for smaller roles.

| Permission                     | Allows                                                                                    |
| ------------------------------ | ----------------------------------------------------------------------------------------- |
| `custombeacons.admin.give`     | `/cbeacon give`                                                                           |
| `custombeacons.admin.setlevel` | `/cbeacon setlevel` and `setupgrade`                                                      |
| `custombeacons.admin.reload`   | `/cbeacon reload`, `setup`, `teams`, `currencies`                                         |
| `custombeacons.admin.gui`      | `/cbeacon admin` (browse and teleport to every beacon)                                    |
| `custombeacons.admin.history`  | `/cbeacon history` (purchase log)                                                         |
| `custombeacons.admin.remove`   | `/cbeacon remove`                                                                         |
| `custombeacons.admin.purge`    | `/cbeacon purge`                                                                          |
| `custombeacons.admin.backup`   | `/cbeacon backup`                                                                         |
| `custombeacons.admin.files`    | `/cbeacon files`                                                                          |
| `custombeacons.admin.migrate`  | `/cbeacon migrate`                                                                        |
| `custombeacons.admin.debug`    | `/cbeacon debug`                                                                          |
| `custombeacons.admin.manage`   | Edit any beacon without bypass (anti-abuse and limits still apply)                        |
| `custombeacons.admin.bypass`   | Ignore anti-abuse rules, limits, disabled commands, WorldGuard flags and ownership checks |

## Beacon limits by permission

With `limits.by-permission: true` (default):

| Permission                                   | Meaning                                                                 |
| -------------------------------------------- | ----------------------------------------------------------------------- |
| `custombeacons.limit.<number>`               | A player may own that many beacons, for example `custombeacons.limit.5` |
| `custombeacons.limit.unlimited`              | No limit                                                                |
| `custombeacons.worldlimit.<world>.<number>`  | Replaces the overall limit in that world                                |
| `custombeacons.worldlimit.<world>.unlimited` | No limit in that world                                                  |

If a player has several, the **highest** wins. Without any of them, `limits.per-player` from `config.yml` applies. A world without a worldlimit permission is only limited by the overall limit.

```
/lp group vip permission set custombeacons.limit.5 true
/lp group donor permission set custombeacons.limit.10 true
/lp group default permission set custombeacons.worldlimit.world_nether.1 true
```

## Restricting worlds and types

These whitelists only start to apply once **at least one** node of that kind is granted to a player.

| Permission                            | Allows                                                                      |
| ------------------------------------- | --------------------------------------------------------------------------- |
| `custombeacons.place.<world>`         | Place beacons only in the listed worlds                                     |
| `custombeacons.use.<world>`           | Open beacons only in the listed worlds                                      |
| `custombeacons.type.<beacon-type-id>` | Place only the listed beacon types, for example `custombeacons.type.bronze` |

## Other ways to restrict

* `disabled-worlds` in `config.yml`: beacons give no effects there.
* `anti-abuse.blocked-worlds`: beacons can't be placed there.
* `commands.disabled`: take subcommands away from players, for example `[tp, top, name, upgrades]`.
* `worlds:` inside an effect file: only those worlds.
* WorldGuard region flags, see [Integrations](/custombeacons-or-65-effects-or-35-hooks/reference/integrations.md).


---

# 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/custombeacons-or-65-effects-or-35-hooks/running-your-server/permissions.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.
