Skip to content

Network Setup

mahdixser edited this page Aug 23, 2026 · 2 revisions

Network Setup

If you're running more than one Spigot/Paper server — a survival server, a skyblock server, a lobby, whatever — and you want a ban on one to actually mean something on all of them, this is what you want.

How it works

SXBans syncs punishments between servers over Redis pub/sub, not through proxy-specific plugin messaging. That's a deliberate choice: it means the exact same setup works whether your proxy is BungeeCord, Waterfall, or Velocity, and it means punishments sync even if there's no player online to act as a message carrier (which is a real limitation of the older Bukkit plugin-messaging approach — it literally cannot send a cross-server message with zero players connected).

The short version: every server in your network connects to the same Redis instance, and each SXBans install publishes/subscribes to the same channels. When you ban someone on survival, that server publishes the punishment; skyblock and lobby pick it up and apply it locally.

Setup

  1. Get a Redis server running somewhere all your Minecraft servers can reach. If they're on the same machine or same private network, localhost/an internal IP is fine — you generally don't want Redis exposed to the public internet.

  2. On every server in the network, set in config.yml:

    redis:
      enabled: true
      host: your-redis-host
      port: 6379
      password: 'set-one-if-redis-is-reachable-by-anything-else'
    
    network:
      server-name: 'survival'   # unique per server!
      sync-punishments: true
  3. Give each server a unique server-name. This is how the plugin tells servers apart in logs, the web panel, and the sync messages themselves — two servers with the same name will confuse the "did I already apply this" check and cause weirdness.

  4. Restart all of them. That's it — no further setup needed for basic sync.

Verifying it's working

Ban a test account on one server, then check /check <name> on another server in the network. It should show up as banned within a second or two. If it doesn't, see the checklist below.

If it's not syncing

  • Confirm redis.enabled: true on every server, not just one.
  • Confirm they're all pointed at the same Redis host/port/password.
  • Confirm each server has a different network.server-name.
  • Check each server's console for Redis connection errors on startup — a failed connection there means that server silently isn't participating in sync at all.
  • If you're running Redis with a password (requirepass in redis.conf), make sure the plugin's redis.password matches exactly.

Building your own proxy-side plugin

If you want punishments to also affect the proxy layer directly — say, rejecting a banned player's connection before they even pick a server, instead of waiting for them to connect and get kicked by the backend — you'll need a small companion plugin running on your Velocity or BungeeCord proxy. It doesn't share code with SXBans (different platforms, can't share a Bukkit-specific jar), but it can talk the same Redis protocol.

The full message format — channel names, JSON structure, field meanings — is documented in NETWORK_PROTOCOL at the root of the repo. It's short and deliberately simple; a basic Velocity plugin that subscribes to the ban channel and disconnects matching players is maybe a hundred lines of code.

A note on the older BungeeCord messaging channel

There's a network.bungee-messaging.enabled option left in for backwards compatibility with an older sync mechanism that used Bukkit's plugin-messaging channels instead of Redis. If you're setting up sync for the first time, ignore it and use Redis — it's strictly more capable and works with Velocity too, which the old channel never did.

Clone this wiki locally