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

  1. Put MythicProxy-Velocity-<version>.jar in the plugins folder of the proxy.
  2. Put MythicProxy-Paper-<version>.jar in the plugins folder of every backend.
  3. Start the proxy and the backends, in any order. The first start creates the config files: plugins/mythicproxy/config.json on the proxy (Velocity Config) and plugins/MythicProxy/config.yml on every backend (Paper Config).
  4. 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 identified line appears only while server-name is empty.
  • Reconnected instead of Connected is 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}
  1. On the first backend, run /mm test cast ProxyTestSet.
  2. On the second backend, run /mm test cast ProxyTestRead. The chat shows proxytest is hello, a value that came through the proxy. If it shows proxytest is none, wait a few seconds, try again, and check that this backend logged Connected to proxy.
  3. Run /mm test cast ProxyTestClear to remove the variable.
Updated Oct 29, 2026