Skip to content

L‐Bedwars Proxy

squezsaz edited this page Jun 23, 2026 · 2 revisions

L-BedWarsProxy Wiki

Table of Contents

  1. Overview
  2. Installation
  3. Configuration
  4. Commands
  5. Placeholders
  6. Permissions
  7. Setup Guide

Overview

L-BedWarsProxy is a companion plugin for L-BedWars that enables multi-server proxy mode. It runs on Paper/Spigot 1.19+ and communicates with game servers via TCP socket, using BungeeCord plugin channels for cross-server player movement.

What It Does

  • Arena Status Tracking — Maintains a real-time registry of all game servers and their arena states
  • Player Routing — Directs players to the best available arena when they use /bw join <mode>
  • Queue System — Places players in a queue when no arena slot is available; auto-connects when a slot opens
  • MySQL Stats Database — Shared stats database across all game servers
  • Leaderboard Holograms — ArmorStand-based holograms displaying top players for any stat
  • PlaceholderAPI — Provides %lbedwars_*% placeholders for stats and server status
  • Cross-Server Spectate — Admins can spectate any player across servers via /bwa tp
  • Admin GUI — Interactive arena overview with paginated menus
  • Party Integration — Detects party membership and sends all members to the same server

Installation

Requirements

  • Paper/Spigot 1.19+ server (dedicated proxy/lobby server recommended)
  • L-BedWars plugin on each game server
  • MySQL database (optional, required for stats/leaderboard)
  • BungeeCord or Velocity network

Steps

  1. Place L-BedWarsProxy.jar in your proxy/lobby server's plugins/ folder
  2. Restart the server to generate default config files
  3. Edit config.yml (see Configuration section)
  4. On each game server, set proxy-mode: true and match the socket token
  5. Restart proxy server, then game servers

Start order: Proxy first, then game servers.

Verifying Connection

  • Proxy console: [L-BedWarsProxy] Server <name> connected!
  • Game server console: [L-BedWars] Socket connection established to proxy
  • In-game: /bwa gui shows connected arenas

Configuration

config.yml

language: en

socket-port: 5000
bind-address: 127.0.0.1
socket-token: "change-me"
allowed-ips:
  - "127.0.0.1"
max-connections: 50

database:
  host: "localhost"
  port: 3306
  database: "lbedwars"
  username: "root"
  password: ""
  table-prefix: ""
  pool-size: 5

health-check:
  enabled: true
  timeout-seconds: 15

queue:
  enabled: false
  priority-permissions:
    - "lbedwarsproxy.queue.priority"

holograms:
  leaderboard:
    enabled: false
    lines: 10
    update-interval: 60

Options

Section Option Default Description
Language language en en or tr
Socket socket-port 5000 TCP port for game server connections
bind-address 127.0.0.1 Bind address (0.0.0.0 for all interfaces)
socket-token change-me Shared secret for authentication (must match game servers)
allowed-ips ["127.0.0.1"] CIDR whitelist (empty = allow all)
max-connections 50 Max concurrent socket connections
Database host localhost MySQL host (omit to disable database features)
port 3306 MySQL port
database lbedwars Database name
username root MySQL username
password "" MySQL password
table-prefix "" Table name prefix (must match game servers)
pool-size 5 HikariCP connection pool size
Health Check enabled true Auto-detect offline servers
timeout-seconds 15 Seconds without update before marking offline
Queue enabled false Enable auto-queue when arenas are full
priority-permissions Permission nodes for queue priority
Holograms enabled false Enable leaderboard hologram updates
lines 10 Number of leaderboard entries per hologram
update-interval 60 Refresh interval in seconds

Commands

Player Commands

/bw join <mode>

Joins an arena of the specified mode.

Parameters:

  • modesolo, duo, trio, or quad

Behavior:

  1. If you are a party leader, all party members are sent to the same server
  2. Selects the best available arena (prefers WAITING lobbies, falls back to STARTING)
  3. If no arena is available and queue is enabled, you are placed in a queue
  4. You are automatically connected when a slot opens

Examples:

/bw join solo
/bw join quad

/bw rejoin

Reconnects to your last game server if you disconnected while your bed was alive.

Behavior:

  • Looks up your last server and sends you there
  • The game server will respawn you after a 5-second countdown

/bw stats [player]

Displays MySQL-stored stats for a player.

Parameters:

  • player (optional) — Player name. Defaults to yourself.

Displays:

Stats for Player1:
  Kills: 150
  Deaths: 100
  K/D: 1.50
  Wins: 25
  Losses: 10
  Beds Broken: 50
  Games Played: 35
  Level: 12
  XP: 4500

Admin Commands

All admin commands require lbedwarsproxy.admin permission.

/bwa gui [filter]

Opens an interactive arena status GUI.

Parameters:

  • filter (optional) — all, solo, duo, trio, or quad. Defaults to all.

How it works:

  • Each arena is shown as a colored wool item
    • Lime = WAITING (click to join)
    • Yellow = STARTING (click to join)
    • Red = PLAYING (cannot join)
    • Gray = OFFLINE
  • Item lore shows server name, mode, player count, map, game time
  • Click arrows to navigate pages

Examples:

/bwa gui
/bwa gui solo

/bwa tp <player>

Cross-server spectate command. Teleports you to a player on any game server as a spectator.

Parameters:

  • player — Target player name

Example:

/bwa tp Notch

/bwa leaderboard [stat]

Opens a paginated leaderboard GUI.

Parameters:

  • stat (optional) — Stat column. Defaults to kills.

Available stats: kills, deaths, final_kills, final_deaths, wins, losses, beds_broken, games_played

How it works:

  • Shows player heads with skins, ranked #1 to #45 per page
  • Click arrows to navigate pages

Examples:

/bwa leaderboard
/bwa leaderboard wins

/bwa hologram set <stat>

Places a leaderboard hologram at your current location.

Parameters:

  • stat — Stat column for the leaderboard

Example:

/bwa hologram set kills

/bwa hologram remove [id]

Removes a leaderboard hologram.

Parameters:

  • id (optional) — Hologram ID. If omitted, removes the nearest hologram.

Examples:

/bwa hologram remove
/bwa hologram remove hologram_1712345678

/bwa hologram list

Lists all placed holograms with their IDs, stats, and locations.

Example output:

Holograms:
  ID: hologram_1712345678 | Stat: kills | Location: world (0, 100, 0)
  ID: hologram_1712345690 | Stat: wins | Location: world (5, 100, 0)

Placeholders

L-BedWarsProxy provides a PlaceholderAPI expansion with identifier lbedwars. Requires PlaceholderAPI on the proxy server.

Placeholder Description
%lbedwars_kills% Player's total kills
%lbedwars_deaths% Player's total deaths
%lbedwars_final_kills% Player's final kills
%lbedwars_final_deaths% Player's final deaths
%lbedwars_wins% Player's total wins
%lbedwars_losses% Player's total losses
%lbedwars_beds_broken% Player's beds broken
%lbedwars_games_played% Games played
%lbedwars_level% Player's level (default: 1)
%lbedwars_xp% Player's XP
%lbedwars_kdr% Kill/death ratio (2 decimal places)
%lbedwars_arena_online% Total online players across all arenas
%lbedwars_arena_count% Number of online arena servers

Permissions

Permission Default Description
lbedwarsproxy.play true Allows using /bw join, /bw rejoin, /bw stats
lbedwarsproxy.admin op Allows using /bwa commands (GUI, tp, leaderboard, hologram)
lbedwarsproxy.queue.priority (none) Grants queue priority (permission node is configurable in queue.priority-permissions)

Setup Guide

Quick Start

  1. Install L-BedWarsProxy.jar on your proxy server
  2. Restart, then edit config.yml:
    • Change socket-token to a secure random string
    • Set bind-address and socket-port
    • Add your game server IPs to allowed-ips
    • Configure database section for MySQL (if using stats)
  3. On each game server, edit plugins/L-BedWars/config.yml:
    proxy-mode: true
    proxy-socket-address: "<proxy-ip>:5000"
    socket-token: "<same-token>"
  4. Restart proxy, then restart game servers

Enabling Queue

Edit config.yml:

queue:
  enabled: true
  priority-permissions:
    - "lbedwarsproxy.queue.priority"
    - "your.custom.permission"

Placing a Leaderboard Hologram

  1. Ensure database is configured and MySQL is running
  2. Stand at the desired location
  3. Run /bwa hologram set kills
  4. Enable auto-updates:
    holograms:
      leaderboard:
        enabled: true
        lines: 10
        update-interval: 60

Adding Queue Priority for VIP Players

Give the permission lbedwarsproxy.queue.priority to your VIP group. You can change the required permission node in config.yml under queue.priority-permissions.

Files

File Purpose
plugins/L-BedWarsProxy/config.yml Main configuration
plugins/L-BedWarsProxy/holograms.yml Saved hologram data (auto-generated)
plugins/L-BedWarsProxy/languages/messages_en.yml English messages
plugins/L-BedWarsProxy/languages/messages_tr.yml Turkish messages

Notes

  • The proxy plugin is not a BungeeCord plugin — it runs on a Paper/Spigot server acting as a hub/proxy
  • Game servers connect to the proxy via TCP, not the other way around
  • MySQL table name: {prefix}player_stats (must match game server config)
  • The plugin supports Folia servers
  • Party integration requires the Parties plugin (alessiodp/parties 3.2.16+) on the proxy server
  • PlaceholderAPI is optional; without it, %lbedwars_*% placeholders won't resolve