Supported software
Install the plugin
Install the proxy plugins
plugins/ folder. Standard SimpleCloud templates already include simplecloud-api; add it through the target’s Plugins setting or the CLI if you use a custom template.Generate the configuration
Keep the generated files in the template
Apply and verify changes
/scproxy reload after editing files on a running proxy. If you edited its template instead, restart the proxy so it receives the changed files./tab reload belongs to a different tablist plugin and does not reload Proxy Essentials. Use /scproxy reload on the proxy.Generated files
Join states
A join state is a named access policy. Thejoinstates list in config.yml defines the available policies; the active state is stored on the selected SimpleCloud group or server instance.
Join states can:
- Require a permission to enter the proxy or a backend server
- Require a separate permission to enter a full proxy network
- Select a maintenance MOTD layout for the proxy
- Apply to a complete group or one running server instance
Proxy groups and backend groups behave differently
Lobby group to maintenance does not change the public network MOTD. Set the proxy group to maintenance when you want to restrict the whole network and show its maintenance layout.Define join states
/scproxy reload after adding or changing state definitions. Reloading a definition does not activate it.
Activate maintenance for the network
Assume the proxy group is namedProxy:
Configure the maintenance state
forced-motd-layout: maintenance on the state and make sure layout/maintenance.yml exists with motd.enabled: true.Reload the files
/scproxy reload on the proxy.Set the state on the proxy group
Verify the active state
simplecloud.proxy-essentials.join.maintenance to enter. Refresh the Minecraft multiplayer list to see the maintenance MOTD.Open the network again
Lobby group and its running server instances. The second changes only Lobby-1.
MOTD layout priority
The proxy resolves its server list layout in this order:- A valid layout stored on the proxy instance or group by
/scproxy layout set - The active join state’s
forced-motd-layout initial-layout
/scproxy layout set takes priority over forced-motd-layout. If maintenance activates but the MOTD stays public, check /scproxy layout info <proxy-group>. Either manage the layout explicitly with /scproxy layout set when changing states, or avoid pinning a layout when join states should switch it automatically.
The whitelist block currently present in the generated config.yml is not evaluated by the join checks. Use permission.join for administrator or maintenance access.
Server list layouts
Each file inlayout/ is one selectable server list layout. The file name is its layout name, so layout/maintenance.yml is referenced as maintenance.
RANDOM selects a random MOTD entry on each server list ping. QUEUE cycles through the configured entries. Place icon files in layout/server-icons/.
Use /scproxy layout set <group> <layout> only when you want to pin a layout independently of join-state changes.
MOTD by domain
Show a different server list layout to players based on the hostname they connected with, for example when multiple domains point at the same proxy. Add routes to thedomains list in config.yml:
play.example.com see the layout selected by the join state of the scalable Lobby group; players connecting through citybuild.example.com see the layout selected by the join state of the persistent Citybuild server.
- Exact matching:
domainmust be the complete hostname, such asplay.example.com. Wildcards and subdomains, such as*.example.com, are not supported. - Target scope:
targetnames a group or a persistent server, not a single server instance such asLobby-1. - Layout resolution: for a matching
domain, the proxy uses therulesentry whosestatematches the current join state ontarget. If that rule’slayoutdoes not exist, it falls back to that join state’s globalforced-motd-layout, then toinitial-layout. - Default target: a hostname without a matching
domain, or a route where none of the above resolves, falls back to the standard MOTD layout priority described above. - Live updates: routes recompute automatically when
target’s join state changes. Run/scproxy reloadafter adding or editing entries indomainsso the new routes take effect.
Tablist
Tablist entries live inconfig.yml. Their name is matched against the backend server on which each player is currently connected.
The first matching rule is used in this order:
- Exact server name, case-insensitive
- First configured prefix, such as
LobbyforLobby-1 *global
layout entries under the same name rotate automatically. Currently, the lowest update-time from all tablist entries becomes one global interval for every entry. Use the same value for all entries and restart the proxy after changing it, because /scproxy reload does not recreate the scheduled task.
Player count
The displayed count includes all proxies in the current proxy group. You can add other groups and persistent servers.Backend kick handling
falsekeeps the proxy’s normal fallback behavior after a backend kick.truedisconnects the player from the proxy with the backend’s kick reason instead of sending them to a fallback server.
Text formatting
Proxy Essentials uses MiniMessage for MOTDs, tablists, and messages. Use tags such as<red>, <color:#0ea5e9>, <bold>, and <br>.
Legacy & and § color codes are not supported.
Commands
Placeholders
<ping> colors in placeholder.yml:
Permissions
config.yml; you can replace them with permissions from your own permission scheme.
Choose which features Proxy Essentials manages
Proxy Essentials does not have to manage every feature at once. For example, you can use its join states while another proxy plugin provides the MOTD or tablist. Configure one provider for each feature so plugins do not overwrite each other’s output.Use another MOTD plugin
Setmotd.enabled to false in every layout that the proxy can select:
maintenance.yml, then run /scproxy reload. Proxy Essentials now leaves the complete ping response unchanged, including its description, icon, hover list, displayed version, and slots.
The replacement MOTD plugin must run on the proxy. A plugin installed only on a Lobby or another backend does not receive the network’s public server list ping.
Use another tablist plugin
Use an empty list inconfig.yml:
/scproxy reload. Proxy Essentials then stops sending tablist headers and footers. Players may need to reconnect before content sent previously disappears or is replaced by the other plugin.
update-time: 0 only disables scheduled tablist updates when the proxy starts; it does not reliably hand the feature to another plugin. Use tablist: [] instead.
Stop restricting joins
Join states have no globalenabled setting. Set every affected proxy and backend group back to an unrestricted state such as public:
permission.join is empty:
Stop aggregating player counts
/scproxy reload. The local proxy count remains available, but Proxy Essentials no longer adds players from the rest of the proxy group or additional targets.
Keep standard fallback handling
/scproxy reload. The proxy can then handle backend kicks with its normal fallback behavior.
Stop using Proxy Essentials
Remove the Proxy Essentials JAR from all matching proxy templates and restart the proxies. Keepsimplecloud-api installed if another plugin depends on it.
Troubleshooting
The plugin or its configuration does not appear
The plugin or its configuration does not appear
simplecloud-api are in the proxy template, then restart a matching proxy. Check the proxy console and the platform-specific data directory listed under Install the plugin. Installing the JAR on a Lobby does not load the proxy plugin.A reload command changes nothing
A reload command changes nothing
/scproxy reload, not /tab reload. Confirm that you edited the files belonging to the running proxy. Changes made only in a template require a proxy restart; changes made only in a temporary running group instance disappear when it stops.Another plugin's tablist keeps being overwritten
Another plugin's tablist keeps being overwritten
Maintenance is active, but the public MOTD does not change
Maintenance is active, but the public MOTD does not change
forced-motd-layout names an existing file with motd.enabled: true. Then check /scproxy layout info <proxy-group>: a layout stored with /scproxy layout set has higher priority than the join-state layout.A domain always shows the default MOTD instead of its route
A domain always shows the default MOTD instead of its route
domain; matching is case-insensitive but does not support wildcards or subdomains. Check that target is a group or persistent server name, not a single server instance. Confirm the current join state on target has a matching entry in rules, and that its layout names an existing file. Run /scproxy reload after editing domains.The MOTD is still controlled by Proxy Essentials
The MOTD is still controlled by Proxy Essentials
Colors appear as literal characters
Colors appear as literal characters
& or § codes with MiniMessage tags such as <green> or <color:#22c55e>, then reload the configuration.