> ## Documentation Index
> Fetch the complete documentation index at: https://simplecloud.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Proxy Essentials

> Configure SimpleCloud MOTDs, tablists, join states, player counts, and proxy layouts

## Overview

Proxy Essentials adds the common proxy-facing features a SimpleCloud network needs: server list MOTDs, tablist headers and footers, join states, whitelisting, summed player counts, and configurable hub-style commands.

All configuration is file-based and can be reloaded from the proxy.

## Supported Software

| Software   | Plugin Support |
| ---------- | -------------- |
| Velocity   | Yes            |
| BungeeCord | Yes            |

## Quick Setup

<Steps>
  <Step title="Install the plugin">
    Download the plugin from [GitHub](https://github.com/simplecloudapp/proxy-essentials-plugin/releases) and place it in your proxy template's `plugins/` folder.
  </Step>

  <Step title="Install the API plugin">
    Make sure the `simplecloud-api` plugin is installed on the same proxy template. Proxy Essentials uses it for player counts and SimpleCloud-aware proxy state.
  </Step>

  <Step title="Generate configuration files">
    Start the proxy once so the plugin creates `config.yml`, `layout/*.yml`, `placeholder.yml`, and `messages.yml`.
  </Step>

  <Step title="Configure proxy behavior">
    Configure join states, MOTD layouts, tablists, and player counts.

    <Check>
      After reloading or restarting the proxy, `/scproxy reload` should reload Proxy Essentials configuration without errors.
    </Check>
  </Step>
</Steps>

## Generated Files

| File              | Purpose                                                    |
| ----------------- | ---------------------------------------------------------- |
| `config.yml`      | Join states, whitelist, player count, and tablist settings |
| `layout/*.yml`    | Server list MOTD layouts                                   |
| `placeholder.yml` | Date, time, and ping color formatting                      |
| `messages.yml`    | Kick and command messages                                  |

## Join States

Join states decide whether a player may join and which MOTD layout should be forced while the state is active.

```yaml theme={null}
version: "2"
initial-state: public
initial-layout: public

joinstates:
  - name: public
    permission:
      join: ""
      full: "simplecloud.proxy-essentials.join.full.public"
    forced-motd-layout: null

  - name: maintenance
    permission:
      join: "simplecloud.proxy-essentials.join.maintenance"
      full: "simplecloud.proxy-essentials.join.maintenance"
    forced-motd-layout: maintenance

whitelist:
  enabled: true
  players:
    - Notch
```

### Player Count

The player count can include this proxy group plus extra groups or persistent servers. The update interval is configured in ticks.

```yaml theme={null}
player-count:
  enabled: true
  additional-groups: []
  additional-persistent-servers: []
  update-time: 20
```

## Server List Layouts

Create MOTD layouts in the `layout/` directory. Join states can force a layout with `forced-motd-layout`, and the `/scproxy layout` command can store a layout on a group.

```yaml theme={null}
config-version: "2"

motd:
  enabled: true
  update-type: RANDOM # RANDOM or QUEUE
  layouts:
    - name: public
      line1: "<color:#0ea5e9>A simplecloud.app network"
      line2: " "

server-icon:
  enabled: true
  file: simplecloud.png

player-list:
  enabled: true
  player-list:
    - ""
    - "simplecloud.app"
    - ""

version:
  name:
    enabled: false
    text: "Example"
  slots:
    enabled: true
    type: REAL # REAL, FAKE, or DYNAMIC
    fake-slots: 100
    dynamic-player-range: 5
```

## Tablist

Tablist layouts live in `config.yml`. The update time is configured in ticks.

```yaml theme={null}
tablist:
  - name: global
    layout:
      - header: "<br><color:#0ea5e9>SimpleCloud v3<br>"
        footer: "<br> <color:#ffffff><online_players> players <color:#cbd5e1>are playing on your network<br>"
    update-time: 20
```

## Commands

| Command                                           | Description                                                              |
| ------------------------------------------------- | ------------------------------------------------------------------------ |
| `/scproxy`                                        | Show available Proxy Essentials commands                                 |
| `/scproxy help`                                   | Show command help                                                        |
| `/scproxy reload`                                 | Reload `config.yml`, `placeholder.yml`, `messages.yml`, and MOTD layouts |
| `/scproxy joinstate help`                         | Show join state commands                                                 |
| `/scproxy joinstate info <group>`                 | Show the join state for a group                                          |
| `/scproxy joinstate info <group> <id>`            | Show the join state for one server                                       |
| `/scproxy joinstate set <group> <joinstate>`      | Set the join state for a group and its servers                           |
| `/scproxy joinstate set <group> <id> <joinstate>` | Set the join state for one server                                        |
| `/scproxy layout help`                            | Show layout commands                                                     |
| `/scproxy layout info`                            | Show the default MOTD layout                                             |
| `/scproxy layout info <group>`                    | Show the layout used by a group                                          |
| `/scproxy layout set <group> <layout>`            | Store a MOTD layout on a group and its running servers                   |

## Placeholders

| Placeholder          | Context       | Description                                       |
| -------------------- | ------------- | ------------------------------------------------- |
| `<online_players>`   | MOTD, tablist | Summed online player count                        |
| `<max_players>`      | MOTD, tablist | Max player count based on layout slot mode        |
| `<date:FORMAT>`      | MOTD, tablist | Current date/time using a MiniMessage date format |
| `<env:NAME>`         | MOTD, tablist | Environment variable value                        |
| `<env:NAME:default>` | MOTD, tablist | Environment variable value with fallback          |
| `<server_name>`      | Tablist       | Player's current server                           |
| `<ping>`             | Tablist       | Player ping with configured ping color            |

Configure date and ping rendering in `placeholder.yml`:

```yaml theme={null}
currentDateFormat: "dd.MM.yyyy"
currentTimeFormat: "HH:mm:ss"
pingColors:
  - ping: 0
    color: "<green>"
  - ping: 100
    color: "<gold>"
  - ping: 200
    color: "<dark_red>"
```

## Permissions

| Permission                                            | Description                                            |
| ----------------------------------------------------- | ------------------------------------------------------ |
| `simplecloud.proxy-essentials.command.help`           | Use `/scproxy`, `/scproxy help`, and `/scproxy reload` |
| `simplecloud.proxy-essentials.command.joinstate.help` | View join state help                                   |
| `simplecloud.proxy-essentials.command.joinstate.info` | View join states                                       |
| `simplecloud.proxy-essentials.command.joinstate.set`  | Change join states                                     |
| `simplecloud.proxy-essentials.command.layout.help`    | View layout help                                       |
| `simplecloud.proxy-essentials.command.layout.info`    | View layout assignments                                |
| `simplecloud.proxy-essentials.command.layout.set`     | Change a group's MOTD layout                           |
| `simplecloud.proxy-essentials.join.maintenance`       | Join while the maintenance state is active             |
| `simplecloud.proxy-essentials.join.full.public`       | Join a full public network                             |

<Frame>
  <img src="https://github.com/simplecloudapp/branding/blob/main/media/plugin/proxy-essentials/server-info.png?raw=true" alt="Proxy Essentials server list MOTD example" />
</Frame>
