Proxy Setup

Architecture

XLogin supports Velocity and BungeeCord networks with a role-based configuration. Install XLogin on every backend server and configure the proxy section.

  Velocity / BungeeCord
  + XLogin.jar (proxy mode)
         |
    +---------+---------+
    |         |         |
  AUTH     LOBBY      GAME
  XLogin   XLogin    XLogin
  /login   Session   Session
  /register auto     auto

Server Roles

RolePurpose
AUTHLogin/register server. Players authenticate here and are redirected to the lobby.
LOBBYMain hub. Session auto-login. Invalid session → sent to auth.
GAMESub-servers (skyblock, etc.). Session auto-login. Invalid session → sent to auth.

Setup

XLogin is a single JAR that auto-detects the platform. Place the same file on both proxy and backends.

  1. Place XLogin.jar in the proxy's plugins/ folder.
  2. Place XLogin.jar in plugins/XCore/addons/ on each backend server.
  3. Configure the proxy's config.yml with the same database and Redis as XCore.
  4. Set premium.mode to match your backend config.
  5. Restart the proxy.
# XLogin proxy config.yml
database:
  type: MYSQL
  host: localhost
  port: 3306
  database: minecraft
  username: root
  password: ""

redis:
  enabled: true       # Recommended for instant delivery
  host: localhost
  port: 6379
  password: ""

premium:
  enabled: false
  mode: "opt-in"

Redis is strongly recommended. Without it, profiles are delivered via plugin messaging which may have slight timing delays. With Redis, the profile arrives on the backend before the player connects.

Backend Configuration

Auth Server

premium:
  enabled: true
proxy:
  enabled: true
  role: AUTH
  redirect-server: "lobby"
  redirect-delay: 20

Lobby Server

premium:
  enabled: true
proxy:
  enabled: true
  role: LOBBY
  auth-server: "auth"

Game Servers

premium:
  enabled: true
proxy:
  enabled: true
  role: GAME
  auth-server: "auth"

Connection Flow

  1. Player connects to the proxy. XLogin checks the database.
  2. Premium player: Mojang verified → routed directly to lobby (skips auth entirely).
  3. Valid session: routed directly to lobby (skips auth).
  4. New/expired player: routed to AUTH server/register or /login → redirected to lobby.
  5. LOBBY/GAME: session valid → silently authenticated.
  6. If a player reaches LOBBY/GAME without a valid session → kicked (proxy bypass protection).