
L-Bedwars
An advanced BedWars plugin with proxy support, packing multiple features into one!
L-BedWars
Advanced BedWars plugin for Folia/Paper/Spigot 1.19+. Fully configurable, multi-language, with stats tracking, cosmetics, battle pass, shop, team upgrades, and proxy support.
Features
Multi-Arena System
Supports unlimited arenas with four mode types — solo (1 player/team), duo (2), trio (3), quad (4). Each arena has its own config, shop, upgrades, generators, and region bounds.
Folia Support
Game Mechanics
- Pre-game lobby: Players join a shared waiting lobby, countdown starts when minimum players are met (configurable per mode)
- Game start: 5-second invulnerability countdown, armor is applied, items given, generators activated, shop/upgrade NPCs spawned
- Bed system: Each team has a bed breakable by enemies. Breaking a bed prevents that team from respawning
- Sudden death: When
max-game-timeis reached, all remaining beds break with particle effects (BLOCK_CRACK, STEP_SOUND), dropped bed items are cleaned up, and dragons spawn for teams with the Dragon Buff upgrade - Win condition: Last team alive wins. If all players disconnect, the game resets immediately
Generators
Four types: Iron, Gold, Diamond, Emerald with configurable spawn rates and upgrade schedules.
- Base rates: Iron (2s), Gold (8s), Diamond (30s), Emerald (60s)
- Diamond generators auto-upgrade at 300s, 600s, 900s into game
- Emerald generators auto-upgrade at 360s, 720s, 1080s into game
- Team forge upgrades (via team upgrades) improve iron/gold rates
- Each upgrade tier reduces spawn delay by a configurable amount
Shop System
Per-mode shop configuration (shop/<mode>.yml). Categories contain buyable items with:
- Cost type: Iron, Gold, Diamond, or Emerald
- Display: Custom name, lore, material
- Reward commands: Optional commands executed on purchase
- Shop is accessed via Shop NPC placed during arena setup
Team Upgrades
Per-mode upgrade trees (upgrades/<mode>.yml) purchased with diamonds via Upgrade NPC:
- Sharpened Swords — increases sword damage (multiple tiers)
- Reinforced Armor — reduces incoming damage (multiple tiers)
- Dragon Buff — spawns a dragon for your team at sudden death
- Heal Pool — regeneration zone at your base
- Forge — improves generator spawn rates
- Trap — triggers when enemies enter your base (alerts team, reveals enemies)
- Alarm Trap — alerts team when enemies are nearby
Special Items
Buyable from the shop with unique mechanics:
- Pop-Up Tower (Wool, 6 emeralds): Animated block-by-block tower placement (wool frame + ladder access). Built in the direction the player is facing. Configurable cooldown (
specials.popup-tower.cooldown). Safety checks prevent building near beds, arena boundaries, or team spawn entrances - Iron Golem (Iron Ingot, 4 emeralds): Spawns a team-protecting golem with configurable health, speed, follow range, and collidable setting. Attacks nearby enemies. Cooldown between spawns
- Bridge Egg (Egg, 2 emeralds): When thrown, creates a temporary bridge from the impact point
- Fireball (Fire Charge, 1 emerald): Explosive projectile that destroys blocks and damages entities
- TNT (TNT, 2 gold): Placeable explosive with configurable fuse and knockback mechanics for TNT jumping
Tracker Compass
Buyable compass (1 emerald) that tracks the nearest enemy player. Right-click to update target. Tracks players from different teams only. Target updates every 5 seconds automatically. Removed on death.
Spectator System
When a player dies (final kill), they enter spectator mode with:
- Compass — cycle through alive players to spectate
- Red Bed — teleport to team bed locations
- Players are invisible and can fly through blocks
- Admin spectate via
/bwa spectator
Rejoin System
If a player disconnects during a game while their bed is still alive, they can rejoin using /bw rejoin. They respawn at their team's spawn after a 5-second countdown.
Stats Tracking
Tracks per-player statistics stored in YAML, SQLite, or MySQL:
- Kills, Deaths, K/D Ratio
- Final Kills, Final Deaths, Final K/D Ratio
- Wins, Losses, W/L Ratio
- Beds Broken, Games Played
- Winstreak (persistent across sessions)
- All stats accessible via PlaceholderAPI placeholders
Level System
100 levels with XP scaling. XP formula: XP = floor(500 * 1.15^(level-1)). XP sources:
- Kill: +10 XP
- Win: +60 XP
- Final Kill: +20 XP
- Bed Break: +30 XP
- Each 5 levels grants an achievement broadcast
Battle Pass
Configurable season-based progression system:
- Tiers: Configurable number of tiers with XP requirements per tier
- Free Rewards: Available to all players (opened via
/bw battlepass) - Premium Rewards: Require a separate permission to unlock
- XP Sources: Kills, wins, final kills, bed breaks (configured in
rewards.yml) - Contribute to Battle Pass: Toggleable - when enabled, XP goes to both level and battle pass systems
- Progress resets each season via
/bwa bp reset confirm
Daily Rewards
Configurable daily reward system:
- XP Reward: Configurable amount
- Coins Reward: Configurable amount
- Money Reward: Vault economy integration (configurable amount)
- Cooldown: Configurable in hours (minimum 1)
- Claim via
/bw dailyreward - Admin management via
/bwa reward *
Cosmetics
Cosmetic items purchasable and selectable via GUI:
- Kill Effects — visual effects on kill (e.g., lightning, hearts, smoke)
- Victory Dances — effects played on game win
- Death Cries — sound played on death
- Projectile Trails — particle trails behind projectiles
- Island Toppers — decorative blocks placed at team spawn
- Victory Songs — NoteBlockAPI-powered songs played on win
- Each cosmetic has a price (coins), permission node, and unlock condition
Scoreboard
Customizable scoreboards:
- Lobby Scoreboard: Shows arena name, player count, map name, mode, waiting time, your team
- In-Game Scoreboard: Shows kills, finals, beds broken, game time (with dragon countdown if near max-game-time), team information
- All text configurable via language files
- Updates every 2 seconds
BossBar
Configurable waiting lobby indicator:
- Toggleable via
bossbar.enabled - Title with placeholders:
{arena},{seconds},{count},{max} - Countdown bar (
show-countdown): Drains the progress bar during the lobby countdown - Appears instantly when a player joins the arena lobby
- Updates in real-time as players join/leave
- Hidden when the game starts
Tab List
Customizable tab list header and footer per arena:
- Supports team color sorting
- Placeholders for arena name, player count, game state
- Configurable via language files
Ban System
In-game ban management:
- Ban duration: Supports seconds (
5s), minutes (30m), hours (10h), days (5d), permanent (perm) - Ban GUI: View all banned players with
/bwa banlist - Unban: Remove bans via
/bwa unban <player> - Bans check on arena join
Proxy Mode (BungeeCord/Velocity)
Multi-server support with companion proxy plugin:
- Server status broadcasting: Arena state, player count, map info shared via TCP
- Cross-server spectate: Teleport to and spectate players on any server
- Smart joining:
/bw join <mode>finds the best available arena across all servers - Queue system: If no arena is available, players are queued and auto-connected when one opens
- Party support: Party leader's queue state shared with members
- Server MOTD: Displays arena status and player count
- Leaderboard holograms: Placeable holograms showing top players (configurable per stat)
Command Whitelist
Limit which commands players can use during matches:
- Toggleable via
command-whitelist.enabled(default:false) - Configurable command list in
command-whitelist.commands - Silent cancellation for non-whitelisted commands
- Only active during
PLAYINGgame state
Party Integration
Support for alessiodp's Parties API:
- Party members join the same arena together
- Party leader's game mode determines which mode the party joins
- Queue system in proxy mode shares queue state with all party members
Multi-Language
YAML-based language system with built-in support for English, Turkish, and Spanish:
- Loaded from
messages_<lang>.ymlormessages.yml(custom) - All in-game messages, titles, action bars, scoreboard lines, and GUI text are configurable
- Language set via
languageinconfig.yml - Easy to add new languages by creating new message files
PlaceholderAPI
30+ placeholders under the %lbedwars_*% identifier covering stats, levels, economy, cosmetics, and real-time arena information.
Commands
/bedwars (alias: /bw) — Player Commands
Permission: bedwars.play (default: all players)
| Subcommand | Arguments | Description |
|---|---|---|
help | — | Shows the help menu |
join | <arena> | Join a specific arena by name |
randomjoin | <mode> | Join a random available arena by mode (solo, duo, trio, quad) |
rejoin | — | Rejoin your last game if your bed is still alive |
leave | — | Leave the current arena |
list | — | List all enabled arenas with player counts |
stats | [player] | View your stats or another player's stats (opens GUI) |
level | — | View your level, XP, and progress to next level |
dailyreward | — | Claim your daily reward |
cosmetics | — | Open the cosmetics selection menu |
battlepass | — | Open the Battle Pass menu |
Examples:
/bw help
/bw join BedWars1
/bw randomjoin solo
/bw rejoin
/bw leave
/bw list
/bw stats
/bw stats Notch
/bw level
/bw dailyreward
/bw cosmetics
/bw battlepass
/bedwarsadmin (aliases: /bwa, /bwadmin) — Admin Commands
Permission: bedwars.admin (default: op)
Arena Management
| Subcommand | Arguments | Description |
|---|---|---|
help | — | Shows the admin help menu |
create | <name> | Create a new arena with the given name |
setup | <arena> | Enter setup mode for an arena (enables /setup commands) |
delete | <arena> | Delete an arena and its config |
enable | <arena> | Enable an arena for joining |
disable | <arena> | Disable an arena (prevents joining) |
setlobby | <arena> | Set the waiting lobby spawn at your current location |
setspectator | <arena> | Set the spectator spawn at your current location |
setmainlobby | — | Set the global main lobby (post-game teleport destination) |
setmode | <arena> <mode> | Set arena game mode: solo, duo, trio, quad |
forcestart | <arena> | Force-start the game countdown immediately |
reload | — | Reload all configurations and language files |
Team Management
| Subcommand | Arguments | Description |
|---|---|---|
addteam | <arena> <name> <color> <max-players> | Add a team to an arena (max-players: 1-4) |
removeteam | <arena> <name> | Remove a team from an arena |
Available colors: RED, BLUE, GREEN, YELLOW, AQUA, WHITE, BLACK, GOLD, GRAY, DARK_RED, DARK_BLUE, DARK_GREEN, LIGHT_PURPLE
Spectate
| Subcommand | Arguments | Description |
|---|---|---|
spectator | <arena|player> | Spectate an arena or teleport to and spectate a specific player |
Level Management
| Subcommand | Arguments | Description |
|---|---|---|
addxp | <player> <amount> | Add XP to a player |
Battle Pass Management
| Subcommand | Arguments | Description |
|---|---|---|
bp reset | [confirm] | Reset the Battle Pass season (must confirm within 30s) |
Daily Reward Management
| Subcommand | Arguments | Description |
|---|---|---|
reward help | — | Show reward help menu |
reward setxp | <amount> | Set the XP reward amount |
reward setcoins | <amount> | Set the coin reward amount |
reward setmoney | <amount> | Set the money reward amount (requires Vault) |
reward setcooldown | <hours> | Set reward cooldown in hours (minimum 1) |
reward reset | <player> | Reset a specific player's reward cooldown |
reward info | — | Show current reward settings |
reward toggle | — | Enable/disable the reward system |
Ban Management
| Subcommand | Arguments | Description |
|---|---|---|
ban | [duration] <player> <reason> | Ban a player from BedWars. Duration formats: 5s, 30m, 10h, 5d, perm or permanent. Default: permanent |
unban | <player> | Unban a player |
banlist | [page] | Open the ban list GUI or view a specific page |
Examples:
/bwa create MyArena
/bwa setup MyArena
/bwa addteam MyArena Red RED 4
/bwa removeteam MyArena Red
/bwa delete MyArena
/bwa enable MyArena
/bwa disable MyArena
/bwa reload
/bwa setlobby MyArena
/bwa setspectator MyArena
/bwa setmainlobby
/bwa forcestart MyArena
/bwa setmode MyArena quad
/bwa spectator MyArena
/bwa spectator Notch
/bwa addxp Notch 500
/bwa bp reset
/bwa bp reset confirm
/bwa reward setxp 100
/bwa reward setcoins 50
/bwa reward setmoney 1000.0
/bwa reward setcooldown 24
/bwa reward reset Notch
/bwa reward info
/bwa reward toggle
/bwa ban 7d Notch Griefing
/bwa ban perm Notch Hacking
/bwa unban Notch
/bwa banlist
/setup — Arena Setup Commands
Permission: bedwars.setup (default: op)
Note: Must be in setup mode first using /bwa setup <arena>. In setup mode you get a blaze rod wand.
| Subcommand | Arguments | Description |
|---|---|---|
help | — | Shows setup help menu |
setspawn | <team> | Set the team's spawn point at your current location |
setbed | <team> | Set the team's bed location (stand near the bed and look at it; sets both head and foot automatically) |
setgenerator | <type> | Place a generator at your location. Types: IRON, GOLD, DIAMOND, EMERALD |
setshop | — | Place a shop NPC at your current location |
setupgrade | — | Place an upgrade NPC at your current location |
setregion | — | Save the arena region using the two corners selected with your blaze rod wand (left-click = corner 1, right-click = corner 2) |
done | — | Finalize and save the arena configuration, exit setup mode |
Examples:
/bwa setup MyArena (enter setup mode)
/setup setspawn Red
/setup setbed Blue
/setup setgenerator IRON
/setup setgenerator DIAMOND
/setup setshop
/setup setupgrade
/setup setregion (select corners with wand first)
/setup done (save and exit)
Permissions
| Permission | Default | Description |
|---|---|---|
bedwars.play | true | Access to player commands and gameplay |
bedwars.admin | op | Access to admin commands |
bedwars.setup | op | Access to arena setup commands |
bedwars.bypass | op | Bypass block/game restrictions (place/break during game, join started games) |
Placeholders (PlaceholderAPI)
All placeholders use the %lbedwars_<placeholder>% format.
Stats
| Placeholder | Type | Description |
|---|---|---|
%lbedwars_kills% | int | Total kills |
%lbedwars_deaths% | int | Total deaths |
%lbedwars_kd% | float | Kill/death ratio (2 decimal places) |
%lbedwars_finalkills% | int | Final kills |
%lbedwars_finaldeaths% | int | Final deaths |
%lbedwars_finalkd% | float | Final kill/death ratio (2 decimal places) |
%lbedwars_wins% | int | Total wins |
%lbedwars_losses% | int | Total losses |
%lbedwars_wlr% | float | Win/loss ratio (2 decimal places) |
%lbedwars_bedsbroken% | int | Beds broken |
%lbedwars_gamesplayed% | int | Games played |
%lbedwars_winstreak% | int | Current win streak |
Level & XP
| Placeholder | Type | Description |
|---|---|---|
%lbedwars_level% | int | Current level (1–100) |
%lbedwars_xp% | int | Current XP amount |
%lbedwars_xp_required% | int | XP required to reach next level |
%lbedwars_xp_percent% | float | Progress to next level as percentage (0–100) |
%lbedwars_xp_progress% | string | Progress bar (20 segments, filled/unfilled) |
Economy
| Placeholder | Type | Description |
|---|---|---|
%lbedwars_balance% | int | Balance (integer, rounded down) |
%lbedwars_balance_formatted% | string | Balance with formatting |
Cosmetics
| Placeholder | Type | Description |
|---|---|---|
%lbedwars_active_killeffect% | string | Name of active kill effect |
%lbedwars_active_victorydance% | string | Name of active victory dance |
%lbedwars_active_trail% | string | Name of active projectile trail |
%lbedwars_active_victorysong% | string | Name of active victory song |
Arena (real-time — only shows data when player is in an arena)
| Placeholder | Type | Description |
|---|---|---|
%lbedwars_arena% | string | Current arena name |
%lbedwars_gamestate% | string | Current game state (WAITING / STARTING / PLAYING / ENDING) |
%lbedwars_gametime% | string | Game elapsed time in MM:SS format |
%lbedwars_isplaying% | string | YES if playing, NO otherwise |
%lbedwars_isspectating% | string | YES if spectating, NO otherwise |
%lbedwars_players% | int | Current player count in arena |
%lbedwars_maxplayers% | int | Maximum player count in arena |
%lbedwars_team% | string | Team name |
%lbedwars_teamcolor% | string | Team color code (e.g., &c) |
%lbedwars_team_colored% | string | Team name with color codes applied |
%lbedwars_teammates% | int | Total teammates in the team |
%lbedwars_teammates_alive% | int | Alive teammates |
%lbedwars_hasbed% | string | YES if bed is alive, NO otherwise |
Position Leaderboards (requires online database)
%lbedwars_position_kills%
%lbedwars_position_wins%
%lbedwars_position_final-kills%
%lbedwars_position_beds-broken%
Returns the player's ranking position (integer).
rewards.yml — Game Event Rewards
| Path | Type | Default | Description |
|---|---|---|---|
game-rewards.kill-xp | int | 10 | XP earned per kill |
game-rewards.win-xp | int | 60 | XP earned per win |
game-rewards.bed-break-xp | int | 30 | XP earned per bed break |
game-rewards.final-kill-xp | int | 20 | XP earned per final kill |
game-rewards.kill-coins | int | 5 | Coins earned per kill |
game-rewards.win-coins | int | 30 | Coins earned per win |
battlepass.yml — Battle Pass Settings
| Path | Type | Default | Description |
|---|---|---|---|
battlepass.enabled | boolean | false | Enable the Battle Pass system |
battlepass.contribute-to-bp | boolean | true | If true, XP earned in games also contributes to battle pass progress |
battlepass.tiers | int | 50 | Number of tiers in the pass |
battlepass.xp-per-tier | int | 250 | XP required per tier |
battlepass.rewards.free.<tier> | list | — | Free reward commands per tier |
battlepass.rewards.premium.<tier> | list | — | Premium reward commands per tier |
cosmetics.yml — Cosmetics Configuration
| Path | Type | Default | Description |
|---|---|---|---|
kill-effects.<name>.material | string | — | Display material in GUI |
kill-effects.<name>.price | int | — | Price in coins |
kill-effects.<name>.permission | string | — | Required permission node |
kill-effects.<name>.effect | string | — | Effect type (e.g., LIGHTNING, HEART, NOTE, SMOKE, FLAME, EXPLOSION, CRIT, SPELL) |
victory-dances.* | — | — | Same structure as kill effects |
death-cries.* | — | — | Same structure with sound name |
trails.* | — | — | Same structure with particle type |
island-toppers.* | — | — | Same structure with block material |
victory-songs.* | — | — | Same structure with NBS filename |
dailyrewards.yml — Daily Reward Settings
| Path | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Enable daily rewards |
xp | int | 50 | XP reward amount |
coins | int | 25 | Coins reward amount |
money | double | 100.0 | Money reward amount (Vault) |
cooldown | int | 24 | Cooldown in hours |
shop/<mode>.yml — Shop Configuration
Structure per category:
categories:
<category_name>:
item: <material> # Display item in shop GUI
name: "<display name>" # Category display name
lore:
- "<lore line>" # Category lore
items:
- material: <material> # Item to buy
name: "<display name>" # Item display name
lore: # Item lore
- "<lore line>"
price-type: IRON|GOLD|DIAMOND|EMERALD
price: <amount> # Cost
amount: <count> # Quantity received
reward-commands: # Commands run on purchase (optional)
- "<command>"
upgrades/<mode>.yml — Upgrade Configuration
Structure per upgrade:
upgrades:
<upgrade_name>:
name: "<display name>"
item: <material>
lore:
- "<lore line>"
max-tier: <tier_count>
costs:
- <diamond_cost> # One cost per tier (list)
values:
- <value> # One value per tier (list)
Default upgrades: sharpened-swords, reinforced-armor, dragon-buff, heal-pool, forge, trap, alarm-trap.
arenas/<arena>/config.yml — Arena Definition
Auto-generated during setup. Contains:
- Mode and display name
- Team definitions: color, name, spawn location, bed location + facing direction, bed foot location
- Generator locations: iron, gold, diamond, emerald positions
- NPC locations: shop and upgrade NPC coordinates
- Region bounds: min/max X, Y, Z coordinates
- Lobby location: waiting lobby spawn point
- Spectator spawn: spectator observation location
Dependencies
Required:
- Paper 1.19+ (or Folia/Spigot with Paper API)
Soft dependencies (optional):
| Plugin | Purpose |
|---|---|
| PlaceholderAPI | Placeholder expansion for %lbedwars_*% |
| Vault | Economy integration for shop purchases |
| NoteBlockAPI | Victory song playback (.nbs files) |
| Parties (alessiodp) | Party queue system |
Proxy Module
A companion BungeeCord/Velocity plugin (L-BedWarsProxy) for multi-server networks.
Features
- Smart Joining:
/bw join <mode>finds the best available arena server and connects the player - Queue System: If all servers are full, players queue and auto-connect when a slot opens
- Party Support: Party leader's queue state is shared, all members connect together
- Server Status Broadcasting: Game servers report arena states via TCP (configurable port)
- Server MOTD: Displays current arena status and player counts on the server list
- Cross-Server Spectate: Admin spectate any player across servers
- Leaderboard Holograms: Placeable holograms showing top players per stat (kills, wins, final kills, beds broken, deaths, final deaths, losses, games played)
Proxy Commands
/bw — Join Commands (no permission required)
| Subcommand | Arguments | Description |
|---|---|---|
join | <mode> | Find and connect to best available arena |
rejoin | — | Reconnect to your previous game server |
stats | [player] | View stats GUI |
battlepass / bp | — | Open Battle Pass GUI |
/bwa — Admin Commands (permission: lbedwarsproxy.admin, default: op)
| Subcommand | Arguments | Description |
|---|---|---|
gui | [filter] | Open arena browser UI (filter: all, solo, duo, trio, quad) |
tp | <player> | Teleport to and spectate a player across servers |
leaderboard | [stat] | Open leaderboard GUI (stat: kills, wins, final_kills, beds_broken) |
hologram set | [stat] | Place a leaderboard hologram |
hologram remove | [id] | Remove a hologram by ID |
hologram list | — | List all placed holograms |
ban | [duration] <player> <reason> | Proxy-wide ban |
unban | <player> | Proxy-wide unban |
banlist | [page] | View banned players |
SUPPORT
discord: squezsaz discord: https://discord.gg/W23eQgPFKM
