Installation
MythicProxy has two plugins: one for the Velocity proxy and one for every Paper backend. The proxy plugin stores the data and passes changes between the backends, which connect to it.
Requirements
| Requirement | Details |
|---|---|
| Java | Java 21 or newer on the proxy and on every backend. |
| Velocity | Velocity 3.4 on the proxy. |
| Paper | Paper 1.21.4, or a fork of Paper, on every backend. |
| MythicMobs Premium | MythicMobs Premium 5.13.0 on every backend. |
| Shared secret | Velocity modern forwarding, or the same explicit secret on the proxy and every backend, see Secret. |
| Network | Every backend opens a TCP connection to the hub port (25580 by default), see Hub Port and Firewall. |
| Clocks | Keep the clocks of the proxy and of every backend synced, see Conflicts and Clocks. |
Installing
- Put
MythicProxy-Velocity-<version>.jarin thepluginsfolder of the proxy. - Put
MythicProxy-Paper-<version>.jarin thepluginsfolder of every backend. - Start the proxy and the backends, in any order. The first start creates the config files:
plugins/mythicproxy/config.jsonon the proxy (Velocity Config) andplugins/MythicProxy/config.ymlon every backend (Paper Config). - Connect a player to each backend through the proxy. A new backend learns the proxy's address from this first connection, see How Backends Find the Proxy.
Use the same MythicProxy version on the proxy and on every backend, or they may not understand each other's messages.
Building From Source
Run gradlew build in the project folder. The build needs Java 21, io.lumine:Mythic-Dist:5.13.0 and io.lumine:MythicRPG-API:0.0.1-SNAPSHOT. It writes MythicProxy-Paper-<version>.jar to paper/build/libs and MythicProxy-Velocity-<version>.jar to velocity/build/libs.
Checking That It Works
Start everything and connect to each backend once through the proxy. The names and addresses below are examples.
Proxy console at start:
Hub listening on 0.0.0.0:25580
MythicProxy enabled as 'proxy' with SQLITE storage, announcing hub 10.0.0.5:25580 using the Velocity forwarding secret
Then one line for each backend that connects:
Backend 'lobby' connected from /10.0.0.8:51234
With the default bind and an empty advertise, the proxy also logs the address it picked: Backends will be told to reach this proxy at 10.0.0.5:25580; set 'advertise' in config.json if that address is not reachable from them.
Backend console at the first start:
No proxies configured yet, waiting for a proxy to announce itself
MythicProxy enabled with 0 configured proxy(ies) and the MythicMobs Premium integration
Then, after the first player connects to it through the proxy:
Proxy 'proxy' announced its hub at 10.0.0.5:25580, connecting
Proxy 'proxy' identified this backend as 'lobby'
Connected to proxy 'proxy' at /10.0.0.5:25580
- The
identifiedline appears only whileserver-nameis empty. Reconnectedinstead ofConnectedis fine too.- With MythicRPG Premium, the enable line ends with
and the MythicRPG Premium integration.
If a line is missing, or the console shows a warning or an error, see Troubleshooting.
Test Skill
Save this as proxytest.yml in plugins/MythicMobs/Skills on two backends and run /mm reload on both:
ProxyTestSet:
Skills:
- networkVariableSet{var=proxytest;type=STRING;value=hello}
ProxyTestRead:
Skills:
- message{m="proxytest is <global.netvar.proxytest|none>"} @Self
ProxyTestClear:
Skills:
- networkVariableUnset{var=proxytest}
- On the first backend, run
/mm test cast ProxyTestSet. - On the second backend, run
/mm test cast ProxyTestRead. The chat showsproxytest is hello, a value that came through the proxy. If it showsproxytest is none, wait a few seconds, try again, and check that this backend loggedConnected to proxy. - Run
/mm test cast ProxyTestClearto remove the variable.