BungeeCord and Waterfall setup

Proxy

Install the connector on a BungeeCord or Waterfall proxy. It reads the join address and owns sessions, the same as on Velocity.

The clip shows, in order:

  1. One loader on the BungeeCord proxy.
  2. Pair it from the proxy console.
  3. Backends keep bungeecord: true.

BungeeCord and Waterfall get the same connector as Velocity, on every plan. The proxy is where a player first arrives, so it reads the address they typed and records one session from join to quit, across every server switch.

#How it works

  • Join address: read from the handshake and cleaned up the same way as on Velocity, so a player's first join address is kept no matter which proxy they used.
  • Sessions: one per connection to the proxy. A move to another server is a server hop, and every server the player visits is added to their route.
  • Player address: sent once per session so the server can read the country and keep a keyed hash. The address itself is never stored.
  • Heartbeat: every ten seconds, with memory, players online and server list pings. A proxy has no TPS.
  • Votes: when NuVotifier runs on the proxy, each vote is sent with the voter's UUID if the proxy knows the name.
  • Custom events: other plugins on the proxy can call MCAnalytics.track, the same as on Velocity.

#Requirements

  • BungeeCord or Waterfall built on the 1.20 API or newer.
  • Java 17 or newer.
  • Outbound HTTPS to mcanalytics.org on port 443.
  • A writable plugin folder, so the paired credential can be stored.

#Install and pair

Download the BungeeCord loader from the setup panel and put it in the proxy plugins folder. Start the proxy once. The loader writes its folder, plugins/MCAnalyticsLoader, and waits to be paired.

In Settings, Servers, press Add a server, pick BungeeCord, and press Get pairing code. Type the command into the proxy console without the slash. The loader saves the credential, downloads the connector and starts it. No restart is needed.

textBungeeCord console
mca pair K3M9-QT4B
mca status

#Configuration reference

The config file is plugins/MCAnalyticsLoader/config.toml. It has the same keys as on Velocity. The address, timeouts, retries and the local queue are fixed in the connector.

tomlplugins/MCAnalyticsLoader/config.toml
# Connect this proxy from the console:
#   mca pair <code>
# MCAnalytics always connects to https://mcanalytics.org.

# Name for this proxy. After pairing, the dashboard name wins.
server_name = "bungee-proxy"

# Full detail of connection problems in the console.
debug = false

# Update the loader jar by itself. A verified newer loader is
# saved as a .pending file and used after the next restart.
auto_update_loader = true
Behind a DDoS filter
Set proxy_protocol: true on the listener in BungeeCord's config.yml, and on the filter too. Without it the address the proxy reads is the filter's, not the player's.

#Backends

Put the Paper loader on each backend you want health, in game events and confirmed bans from, and pair it with its own code. Keep settings.bungeecord: true in spigot.yml. That is how auto mode knows the server is a backend and leaves sessions to the proxy.

Give each backend the name it has in BungeeCord's config.yml, so its sessions and its health land under one name.

#Console commands

CommandPermissionWhat it does
mca statusmcanalytics.adminCredential, queue, spool and session counts
mca pair <code>mcanalytics.adminRedeems a pairing code and stores the credential
mca inspect <hostname>mcanalytics.adminShows how the proxy cleans up one hostname
mca updatemcanalytics.adminChecks for a newer connector and a newer loader

#Limits

  • The client brand is read only where the proxy exposes it. BungeeCord does; a fork without it sends sessions without a brand.
  • On an offline mode proxy, a premium player checked by a login plugin such as FastLogin gets their Mojang account added only when Mojang's signed skin data names them. The nLogin premium hook is Velocity only.
  • Votes need NuVotifier on the proxy itself. A vote for a name the proxy has not seen since it started goes out without a UUID and stays unmatched.
  • One proxy and one Velocity proxy in the same network add up in Online now the same way two Velocity proxies do.