> For the complete documentation index, see [llms.txt](https://buildsystem.eintosti.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://buildsystem.eintosti.de/v4/developer-portal/integrations.md).

# System Integrations

Configure and utilize integrations with external plugins including PlaceholderAPI, LuckPerms, and WorldEdit.

***

## 1. PlaceholderAPI Placeholders

Placeholders retrieve settings and world metadata. If a world parameter is omitted, the player's current world is queried.

### Settings Placeholders

**Format**: `%buildsystem_settings_<setting_name>%`

| Placeholder                                | Outputs          | Description                           |
| ------------------------------------------ | ---------------- | ------------------------------------- |
| `%buildsystem_settings_clearinventory%`    | `true` / `false` | Inventory clear state.                |
| `%buildsystem_settings_disableinteract%`   | `true` / `false` | Interaction prevention status.        |
| `%buildsystem_settings_glasscolor%`        | String           | Selected glass pane color name.       |
| `%buildsystem_settings_hideplayers%`       | `true` / `false` | Hide other players state.             |
| `%buildsystem_settings_instantplacesigns%` | `true` / `false` | Sign text popup bypass state.         |
| `%buildsystem_settings_keepnavigator%`     | `true` / `false` | Retain navigator item setting.        |
| `%buildsystem_settings_navigatortype%`     | `NEW` / `OLD`    | Type of navigator layout.             |
| `%buildsystem_settings_nightvision%`       | `true` / `false` | Nightvision active status.            |
| `%buildsystem_settings_noclip%`            | `true` / `false` | Spectator noclip active status.       |
| `%buildsystem_settings_opentrapdoors%`     | `true` / `false` | Right-click iron doors opening state. |
| `%buildsystem_settings_placeplants%`       | `true` / `false` | Anywhere plant placement state.       |
| `%buildsystem_settings_scoreboard%`        | `true` / `false` | Scoreboard visibility status.         |
| `%buildsystem_settings_slabbreaking%`      | `true` / `false` | Double-slab single-break status.      |
| `%buildsystem_settings_spawnteleport%`     | `true` / `false` | Auto spawn teleport status.           |
| `%buildsystem_settings_worldsort%`         | String           | Sort method name.                     |

### World Placeholders

**Format**: `%buildsystem_<value>%` (queried world) or `%buildsystem_<value>_<world_name>%` (target world)

| Placeholder                     | Outputs           | Description                              |
| ------------------------------- | ----------------- | ---------------------------------------- |
| `%buildsystem_blockbreaking%`   | `true` / `false`  | Block break allowed status.              |
| `%buildsystem_blockplacement%`  | `true` / `false`  | Block place allowed status.              |
| `%buildsystem_builders%`        | String List       | Whitelisted builders.                    |
| `%buildsystem_buildersenabled%` | `true` / `false`  | Builder whitelist active status.         |
| `%buildsystem_creation%`        | Formatted Date    | World creation timestamp.                |
| `%buildsystem_creator%`         | String            | World creator name.                      |
| `%buildsystem_creatorid%`       | UUID              | World creator UUID.                      |
| `%buildsystem_explosions%`      | `true` / `false`  | Explosions enabled status.               |
| `%buildsystem_loaded%`          | `true` / `false`  | Memory loaded status.                    |
| `%buildsystem_material%`        | Material ID       | GUI representation icon block.           |
| `%buildsystem_mobai%`           | `true` / `false`  | Mob AI status.                           |
| `%buildsystem_permission%`      | Permission Node   | Join permission required (`-` for none). |
| `%buildsystem_private%`         | `true` / `false`  | Private visibility status.               |
| `%buildsystem_project%`         | String            | World project name.                      |
| `%buildsystem_physics%`         | `true` / `false`  | Block physics enabled status.            |
| `%buildsystem_spawn%`           | `x;y;z;yaw;pitch` | World spawn coordinates.                 |
| `%buildsystem_status%`          | Status Name       | Progress state.                          |
| `%buildsystem_type%`            | Dimension Type    | World dimension layout.                  |
| `%buildsystem_world%`           | String            | World name.                              |

***

## 2. LuckPerms Contexts

BuildSystem registers two context calculators dynamically. You can use these contexts in LuckPerms permission trees to grant permissions conditionally.

### Build Mode Context

* **Context Key**: `buildsystem:build-mode`
* **Values**: `true` / `false`
* **Use Case**: Grant builder tools or WorldEdit permissions only when players are in build mode (`/build`).

### World Role Context

* **Context Key**: `buildsystem:role`
* **Values**: `creator` / `builder` / `guest`
* **Use Case**: Grant access to administrative commands only in worlds where the player holds the target role.

***

## 3. WorldEdit Protection Hook

When the configuration `block-worldedit-non-builder` is enabled in `config.yml`, BuildSystem registers a listener to WorldEdit's API.

* **Block Checks**: If a player attempts to run a selection modification (e.g. `//set`, `//copy`, `//paste`) or use a WorldEdit brush tool inside a world where they are registered as a `guest` (neither creator nor in the builder whitelist), the action is cancelled.
* **Bypass**: Can be bypassed via `buildsystem.bypass.builders` or `buildsystem.admin` permission nodes.


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://buildsystem.eintosti.de/v4/developer-portal/integrations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
