Your backend player count goes up, but your proxy count does not. So the network total stays wrong, and it looks off. The bridge fixes that.

It is a separate plugin for the proxy. Velocity and its forks, BungeeCord and its forks.

How it works

Each backend publishes a full snapshot of its fake players every couple of seconds. The proxy reads those snapshots and injects matching connections, so the network list and counts include them.

Whole snapshots, not add and remove events. Whatever state the proxy is in, the next snapshot corrects it. Either side can restart, or miss a message, and the two still line up. That is the part that used to drift.

Setup

  1. Drop the bridge jar into your proxy's plugins/ folder.
  2. Pick a transport and fill in the credentials in the bridge's config.yml.
  3. On each backend, set bridge.enabled: true in config.yml, with the same transport and the same credentials.
  4. Set bridge.server-name to the exact name that server has in your proxy config. survival, hub1, whatever it is. That string is how the proxy knows where a bot belongs, so it has to match.
  5. Restart everything.

MySQL or Redis

Both carry the same data.

MySQL is polled. One row per server in the ultraspoof_bridge table. The proxy reads it every poll-seconds, and after stale-after-seconds with no movement it drops that server's bots.

Redis is pushed. The snapshot goes to ultraspoof:bridge:snapshot:<server> with a TTL and gets announced on a channel. An expired key removes those bots by itself.

Use whichever you already run. Redis reacts a bit faster, MySQL is one less thing to install.

Proxy config