-
Notifications
You must be signed in to change notification settings - Fork 0
L‐Bedwars Proxy
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.
- 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
- 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
- Place
L-BedWarsProxy.jarin your proxy/lobby server'splugins/folder - Restart the server to generate default config files
- Edit
config.yml(see Configuration section) - On each game server, set
proxy-mode: trueand match the socket token - Restart proxy server, then game servers
Start order: Proxy first, then game servers.
- Proxy console:
[L-BedWarsProxy] Server <name> connected! - Game server console:
[L-BedWars] Socket connection established to proxy - In-game:
/bwa guishows connected arenas
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| 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 |
Joins an arena of the specified mode.
Parameters:
-
mode—solo,duo,trio, orquad
Behavior:
- If you are a party leader, all party members are sent to the same server
- Selects the best available arena (prefers WAITING lobbies, falls back to STARTING)
- If no arena is available and queue is enabled, you are placed in a queue
- You are automatically connected when a slot opens
Examples:
/bw join solo
/bw join quad
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
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
All admin commands require lbedwarsproxy.admin permission.
Opens an interactive arena status GUI.
Parameters:
-
filter(optional) —all,solo,duo,trio, orquad. Defaults toall.
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
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
Opens a paginated leaderboard GUI.
Parameters:
-
stat(optional) — Stat column. Defaults tokills.
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
Places a leaderboard hologram at your current location.
Parameters:
-
stat— Stat column for the leaderboard
Example:
/bwa hologram set kills
Removes a leaderboard hologram.
Parameters:
-
id(optional) — Hologram ID. If omitted, removes the nearest hologram.
Examples:
/bwa hologram remove
/bwa hologram remove hologram_1712345678
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)
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 |
| 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) |
- Install
L-BedWarsProxy.jaron your proxy server - Restart, then edit
config.yml:- Change
socket-tokento a secure random string - Set
bind-addressandsocket-port - Add your game server IPs to
allowed-ips - Configure
databasesection for MySQL (if using stats)
- Change
- On each game server, edit
plugins/L-BedWars/config.yml:proxy-mode: true proxy-socket-address: "<proxy-ip>:5000" socket-token: "<same-token>"
- Restart proxy, then restart game servers
Edit config.yml:
queue:
enabled: true
priority-permissions:
- "lbedwarsproxy.queue.priority"
- "your.custom.permission"- Ensure
databaseis configured and MySQL is running - Stand at the desired location
- Run
/bwa hologram set kills - Enable auto-updates:
holograms: leaderboard: enabled: true lines: 10 update-interval: 60
Give the permission lbedwarsproxy.queue.priority to your VIP group. You can change the required permission node in config.yml under queue.priority-permissions.
| 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 |
- 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