Troubleshooting

Most problems show up as a line in the console of the proxy or of a backend. Find the line on this page for its cause and fix. Lines are shown without the prefix the console adds. A part in angle brackets, such as <name> or <reason>, stands for a name, an address, a number or an error text. The hub is the port the proxy listens on for backends, see Hub Port and Firewall.

General Guidelines

  • Read both consoles. When the proxy refuses a backend, the backend only logs connection closed. The proxy console says why.
  • Compare with a healthy start. Checking That It Works shows the lines you should see.
  • Restart after editing a config file. Both plugins read their config only at startup, see Paper Config and Velocity Config.

Startup Problems

No Secret on the Proxy

  • Proxy (error): No secret: use modern forwarding with a forwarding.secret file or set 'secret' in plugins/mythicproxy/config.json, MythicProxy is disabled
  • Cause: secret in config.json is empty, and the proxy could not read Velocity's forwarding secret: velocity.toml is not in the folder the proxy was started from, or its secret file is missing or empty.
  • Fix: Start the proxy from the folder that holds velocity.toml, or set secret in config.json and the same value on every backend. See Secret.

No Secret on a Backend

  • Backend (error): No secret: enable Velocity modern forwarding in config/paper-global.yml or set 'secret' in plugins/MythicProxy/config.yml, disabling MythicProxy
  • Cause: The backend found no secret: secret in config.yml is empty and Paper's Velocity forwarding is not set up.
  • Fix: Turn on Velocity modern forwarding with the proxy's secret, or set secret in config.yml to the proxy's secret, and restart. See Secret.

The Configuration Cannot Be Loaded

  • Proxy (error, with the cause below it): Failed to load the configuration, MythicProxy is disabled
  • Cause: The proxy could not read config.json, velocity.toml or the secret file, or config.json holds a wrong value: invalid JSON, a storage other than SQLITE or MYSQL, a bind without a port, or text where a number belongs.
  • Fix: Correct config.json and restart the proxy. See Velocity Config.

Storage Cannot Start

  • Proxy (error, with the cause below it): SQLITE storage failed to start, MythicProxy is disabled or MYSQL storage failed to start, MythicProxy is disabled
  • Cause: The database could not be opened. For SQLite, the folder of sqlite-file must exist and be writable. For MySQL, the server must accept connections from the proxy, the database must already exist and the user must be allowed to create tables.
  • Fix: Correct the storage settings and restart the proxy. See Storage.

The Hub Cannot Open Its Port

  • Proxy (error, with the cause below it): Hub failed to listen on <bind>, MythicProxy is disabled
  • Cause: Another program uses the port in bind, or the address in bind does not belong to this machine.
  • Fix: Free the port or change bind, and restart the proxy. Backends that saved the old address keep trying it, see Backends Use the Wrong Proxy Address.

MythicMobs Premium Not Detected

  • Backend (warning): MythicMobs Premium not detected: the MythicMobs mechanics, conditions, placeholders and triggers are disabled
  • Cause: The backend runs the free version of MythicMobs. MythicProxy then adds no mechanics, conditions, placeholders, triggers, events skills or signals, and MythicMobs logs Failed to load custom mechanic <NAME> or Failed to load custom condition <NAME> for skill lines that use them.
  • Fix: Install MythicMobs Premium on the backend and restart. /mm version shows Is Premium: Yes once it is installed.

MythicRPG Premium Not Detected

  • Backend (warning): MythicRPG Premium not detected: the MythicRPG profile scopes and placeholders are disabled
  • Cause: MythicRPG is installed but is not the Premium version, or it did not enable. Lines with scope=profile or scope=targetprofile are then invalid, and the profilenetvar placeholders do not work.
  • Fix: Install MythicRPG Premium on the backend and restart, or use the caster and target scopes. See MythicRPG Profile Variables.

MythicRPG Cannot Be Hooked

  • Backend (warning, with a stack trace): Could not hook into MythicRPG: the MythicRPG profile scopes and placeholders are disabled
  • Cause: The installed MythicRPG version does not have what this MythicProxy version expects. The stack trace names what is missing.
  • Fix: Use MythicRPG and MythicProxy versions that work together, or report the stack trace.

A Backend Cannot Read Its Proxy List

  • Backend: an error while MythicProxy enables, and no MythicProxy enabled line
  • Cause: An entry in proxies in config.yml has a port that is not a whole number from 0 to 65535, for example proxy.example.com:abc.
  • Fix: Correct the entry and restart. See How Backends Find the Proxy.

Connection Problems

A Backend Keeps Reconnecting

  • Backend (warning): Proxy link <proxy> down (<reason>), retrying in 5s
  • Cause: <proxy> is the proxy's id, or its address if the backend has not connected to it yet. One such line when a proxy restarts is normal. If it keeps coming, look up <reason>:
Reason Cause Fix
connection closed The proxy refused the backend, or it is stopping. Read the proxy console: Wrong Secret or Backend Name Not Resolved.
A Java network error, such as a refused connection or a timeout The hub cannot be reached: the proxy is down, MythicProxy is disabled on it (Startup Problems), the address or port in proxies is wrong, or a firewall blocks it. Look for Hub listening on in the proxy console, then check the entry in proxies and the firewall.
Only a host name, while <proxy> reads <host>/<unresolved>:<port> The host name could not be looked up. A backend looks up a name only once. Fix the name or its DNS record, or use the IP address, and restart the backend.
unsupported protocol version <n> The proxy and the backend run different MythicProxy versions. The proxy logs nothing. Use the same version everywhere.
proxy '<id>' failed to prove it knows the secret The server at that address is not your proxy. Check the entry in proxies.
Any other reason, such as expected CHALLENGE, got <TYPE>, proxy rejected the connection with <TYPE>, invalid frame length <n> or malformed envelope The address is not a MythicProxy hub, or the hub runs another version. Point the entry at the hub port and use the same version everywhere.

Wrong Secret

  • Proxy (warning): Rejected backend '<name>' from <address>: wrong secret
  • Cause: The backend and the proxy use different secrets. <name> is the backend's server-name, and empty when it has none.
  • Fix: Use the same secret on both sides. A secret set in config.yml or config.json takes priority over the forwarding secret, so remove an old one. See Secret.

Backend Name Not Resolved

  • Proxy (warning): Cannot identify the backend connecting from <address> with Minecraft port <port>: <n> match(es) among <servers>. Set 'server-name' in its plugins/MythicProxy/config.yml
  • Cause: The backend has no server-name, and the proxy did not find exactly one server in velocity.toml with the backend's address and Minecraft port (<servers> lists them as name=host:port). The proxy closes the connection.
  • Fix: Set server-name on the backend to its name in velocity.toml and restart the backend. See Server Names.

Server Name Not Registered

  • Proxy (warning): Backend '<name>' from <address> is not listed in velocity.toml; lifecycle events will not reach it
  • Cause: The backend's server-name is not a server in velocity.toml. The backend still connects and shares variables, but the join, switch and quit triggers and events skills never run on it, and signals that other servers send to its players do not arrive.
  • Fix: Use the server name from velocity.toml, or leave server-name empty, and restart the backend. See Server Names.

Backends Use the Wrong Proxy Address

  • Proxy (info): Backends will be told to reach this proxy at <ip>:<port>; set 'advertise' in config.json if that address is not reachable from them
  • Proxy (warning): Could not determine an address to advertise; backends will be told to use 127.0.0.1:<port>, set 'advertise' in config.json
  • Backend: Proxy '<proxy>' announced its hub at <address>, connecting (info), then Proxy link <proxy> down (<reason>), retrying in 5s (warning) again and again.
  • Cause: With advertise empty, the proxy picks an address itself. That can be one your backends cannot reach, for example on another network adapter, behind NAT or in Docker, or 127.0.0.1, which works only on the same machine. Backends save every announced address and never remove one.
  • Fix: Set advertise on the proxy and restart it. Then stop each backend that saved a wrong address, remove that entry from proxies in its config.yml and start it again. See How Backends Find the Proxy.

A Hub Announcement Is Ignored

  • Backend (warning): Ignoring hub announcement with invalid address '<address>' or Ignoring malformed hub announcement carried by <player>
  • Cause: In the first case, the port in advertise on the proxy is not a whole number from 0 to 65535. In the second, a message on the plugin channel mythicproxy:hub was not a valid announcement, for example from another MythicProxy version.
  • Fix: Correct advertise and restart the proxy, and run the same MythicProxy version everywhere.

Two Backends Use the Same Name

  • Proxy: Backend '<name>' connected from <address> (info), then Backend '<name>' disconnected (<reason>) (warning), over and over, about every 5 seconds. A single disconnected line is normal when a backend stops or restarts.
  • Cause: The proxy keeps one connection per backend name, and a new connection closes the old one with the same name. Two backends have the same name, for example from a copied config.yml with server-name set, or one backend reaches the same proxy through two entries in proxies.
  • Fix: Give each backend its own server-name, or leave it empty. For two entries, stop the backend and remove the entry that differs from the address the proxy announces. See How Backends Find the Proxy.

A Backend Is Known Under Two Names

  • Backend (warning): Proxy '<proxy>' calls this backend '<new name>' but it is already known as '<old name>'
  • Proxy (warning, for each message): Backend '<name>' sent a message claiming origin '<origin>'; dropped
  • Cause: The backend has no server-name and took its name from a proxy. Later a proxy called it something else, for example after a rename in velocity.toml while the backend ran, or because two proxies list it under different names. The backend keeps the first name, so that proxy drops its messages.
  • Fix: Set server-name to the name in velocity.toml, use the same server name on every proxy, and restart the backend.

The Hub Cannot Accept a Connection

  • Proxy (warning): Hub accept failed: <reason>
  • Cause: The hub port reported an error while waiting for a backend. This does not happen in normal operation.
  • Fix: <reason> is the Java error text and names the problem.

Database Problems

Database Errors While Running

  • Proxy (warning, with a stack trace): Storing a variable from '<server>' failed, Adding to a variable from '<server>' failed, Deleting a variable from '<server>' failed, Loading variables for '<server>' failed or Expired variable cleanup failed. The plugin API adds Lease '<name>' for '<server>' failed, Storing blob '<name>' from '<server>' failed and Loading blob '<name>' for '<server>' failed.
  • Cause: A database operation failed, and nothing retries it:
    • A failed store or delete still reaches the connected backends, but not the database, so a server that starts or reconnects later loads the old value.
    • A failed add sends no new total, so only the backend that added shows its own estimate.
    • A failed load leaves the backend without those variables. If it was a joining player's load, their join and switch triggers never run.
    • A failed cleanup is tried again at the next interval.
  • Fix: Repair the database (the stack trace names the problem), then set the affected variables again. See Storage.

Skill Problems

Invalid Mechanic or Condition Lines

  • Backend (warning, when MythicMobs loads the skill):
Console message Used by
Invalid <name> line: needs var=, a supported type= and value= networkVariableSet
Invalid <name> line: needs var= and a numeric type= networkVariableAdd
Invalid <name> line: needs var= networkVariableUnset, networkVariableIsSet, networkVariableInRange
Invalid <name> line: needs var= and value= networkVariableEquals
Invalid <name> line: needs signal= networkSignal
  • Cause: <name> is the mechanic or condition name as written in your line. A line is invalid when a required attribute is missing, when scope= is not a valid scope (profile and targetprofile need MythicRPG Premium), or when type= is not a supported type. All of these give the same message, so needs var= can also mean a wrong scope= or type=. An invalid mechanic does nothing, and an invalid condition is always false.
  • Fix: Correct the line and run /mm reload. See Variable Scopes and Variable Types.

A Variable Cannot Be Created

  • Backend (warning, each time the mechanic runs): Cannot create a <TYPE> network variable '<name>' from value '<value>'
  • Cause: The value does not fit the type, so nothing is stored or sent. <TYPE> is INTEGER when the line has no type=. A common case is a placeholder that prints a decimal such as 20.5 into an INTEGER variable.
  • Fix: Make the value match the type, or change type=. See Variable Types.

A Skill Stops at a LOCATION Variable

  • Backend (error, each time the skill runs): Couldn't execute skill '<skill>': Enable debugging for a stack trace.
  • Cause: MythicMobs logs this when an error stops a skill. One cause is a networkVariableSet line with type=LOCATION whose value names a world this backend does not have. The rest of the skill does not run, and nothing is stored or sent.
  • Fix: Use a world that exists on every backend that runs the skill. See Variable Types.

Unknown Skill in Config

  • Backend (warning, each time the event fires): Unknown MythicMobs skill '<skill>' in config
  • Cause: A skill listed under events in config.yml does not exist on this backend. A skill that exists but whose conditions fail logs nothing.
  • Fix: Correct the name and restart, or create the skill on this backend and run /mm reload. See Events.

A Placeholder Without a Variable Name

  • Backend (error): Failed to construct placeholder global.netvar, or the same with caster.netvar, target.netvar, caster.profilenetvar or target.profilenetvar
  • Cause: MythicMobs logs this for a placeholder with no variable name after netvar, for example <global.netvar>.
  • Fix: Add the name, as in <global.netvar.boss_kills>. See Network Variable Placeholders.

Message Problems

Messages Over the Size Limit

  • Backend or proxy (warning): Not sending: <TYPE> message is <N> bytes, limit is 1048576
  • Cause: A message was larger than the limit, and nothing retries it. <TYPE> tells what it was: VAR_SET a variable value, SIGNAL a signal with its payload, SYNC_SNAPSHOT a page of variables the proxy sends to a backend, which then misses those variables. A backend keeps its own change, and the mechanic still reports success.
  • Fix: Keep values and payloads small, and split large data over several variables.

Dropped or Ignored Messages

  • Backend (warning): Dropped message from <proxy>: <reason> or Ignoring <TYPE> from <origin>: <reason>
  • Proxy (warning): Dropped message from '<server>': <reason> or Ignoring <TYPE> from '<server>': <reason>
  • Cause: A message could not be read, for example invalid VAR_SET payload, which happens when the two sides run different MythicProxy builds. The message is skipped and the connection stays up.
  • Fix: Run the same MythicProxy version on the proxy and on every backend.

A Message Cannot Be Handled

  • Backend (error, with a stack trace): Failed to handle <TYPE> from <origin>
  • Proxy (error, with a stack trace): Failed to handle <TYPE> from '<server>'
  • Cause: An error happened while handling a message: a bug in MythicProxy or, on a backend, in a plugin that uses the plugin API.
  • Fix: Read the stack trace. If it names a plugin that uses the MythicProxy API, fix that plugin. Otherwise report the stack trace.

A Channel Message Has No Target

  • Proxy (warning): Dropped a CHANNEL message from '<server>' without a target
  • Cause: A plugin on that backend called send of the plugin API without a target backend. The call returned true, but the proxy forwards a channel message only to a named backend.
  • Fix: Pass the receiving backend's name as the target.

Nothing in the Console

Join, Switch or Quit Triggers Do Not Run

A Placeholder Prints UNDEFINED

See Unset Variables: it explains when a placeholder has no value and how to add a default.

A Signal Reaches Nobody

networkSignal reports success even when nobody receives the signal. Check:

  • the target: server:NAME must match the server name exactly, including letter case, and a player target must be online, see Target Attribute
  • the receiver: on mobs, ~onNetworkSignal fires only for signals sent to all or to a server, see onNetworkSignal
  • MythicMobs Premium on the receiving backend (MythicMobs Premium Not Detected)

A Backend Ignores the Proxy

  • Console: no line
  • Cause: The backend's server name equals the proxy's proxy-id (default proxy), for example a server named proxy in velocity.toml. The backend then drops every message the proxy itself sends: saved variables, the player list, add totals, and join, switch and quit events.
  • Fix: Rename the server or change proxy-id, and restart. See Server Names.
Updated Oct 29, 2026