Introduction
What ExyliaProxyUtils is, what it lets the backends of a network do, and how this documentation is organised.
ExyliaProxyUtils is the proxy half of ExyliaLib. A backend server on its
own cannot run /server, find a player who is on another server, or land a teleport on the other side
of the network. ExyliaLib asks for those things over Redis; this plugin, installed on the proxy,
answers. It is free, and its source and releases are on
GitHub.
One jar runs on Velocity and on BungeeCord. It has no commands, no permissions and no menus of its own: everything it does is asked of it by the Exylia plugins on the backends, through one Redis channel.
What it does
The player-proxy: and console-proxy: lines every Exylia plugin accepts in its command lists
run here, as the player or as the proxy console.
Moves a player to another server and hands the destination a note, so a teleport lands next to somebody instead of at spawn.
Network lookupsFinds any connected player and their server, and the whole player list for tab completion.
Network kicksDisconnects a player wherever they are; how ExyliaStaff kicks and bans across servers.
Ban plugins on the proxyEvery punishment LiteBans, LibertyBans, AdvancedBan or BanManager makes on the proxy goes into a Redis stream ExyliaStaff reads, and their history can be imported.
Bans at loginPlayers ExyliaStaff has banned are turned away at the proxy, before they reach any server.
Requirements
| Requirement | Detail |
|---|---|
| Proxy | Velocity 3.4 or newer, or BungeeCord (built against the 1.21 API) and its forks. |
| Java | 21 |
| Redis | The same Redis every backend uses, reachable from the proxy. |
| Backends | ExyliaLib 1.106.0 or newer with Redis enabled in a database.yml. Older ExyliaLib spoke to the 1.x proxy plugin over plugin messages and cannot talk to 2.x. |
| Optional, on the proxy | LiteBans, LibertyBans, AdvancedBan (BungeeCord only), BanManager. |
A plugin message travels down a player's connection, and a modified client can write one. A bridge built on them has to trust the proxy to filter the client's bytes out before they reach a backend; one missed check and a player runs proxy console commands. Redis sits on the network's own side: only a backend can publish there, and it works with nobody online. Versions 1.x used plugin messages; 2.0.0 does not.
How to read this documentation
Getting started
Installation, the one file to fill in, and how to check the backends can reach the proxy.
Features
What each module answers, the ban plugins on the proxy, the login check and automatic updates.
Reference
What can be run through the proxy, permissions, every configuration key, the wire protocol, the developer side and the FAQ.
Conventions
- Identifiers between
<and>are variables:player-proxy:server <name>meansplayer-proxy:server lobby. <prefix>is the network's Rediskey-prefix,exyliaunless you changed it.server-idis a backend's name on the network, set underdatabase.redisin itsdatabase.yml. On the proxy, the same server must have the same name.
Something missing on this page? Tell us on Discord