Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
BedwarsEventHoster
Make sure Bedwars2023 is installed, or else this plugin wont work!
A BedWars2023 addon that turns two teams into a staged matchup — first-to or best-of — without anyone re-queuing or re-picking teams between games. You set the rosters once, start the event, and the plugin moves players in and out of arenas, keeps the score, and stops when someone hits the winning number.
Built for tournament nights, scrims, and stream events where the server only needs to run one match at a time and it needs to run cleanly.
Requirements
| Minecraft | 1.21.x |
| Java | 17+ |
| BedWars2023 | 5.0.0 (required) |
| PlaceholderAPI | 2.11.6+ (optional) |
Drop the jar in plugins/, start the server once so the config generates, then edit plugins/BedwarsEventHoster/config.yml if you want different messages, countdowns, or team colors.
How it works
- Create your teams and fill the rosters:
/bwevent team create team1
/bwevent team create team2
/bwevent team addplayer team1 aritive
/bwevent team addplayer team1 rukiamc
- Define the matchup:
/bwevent match first-to 3 team1 vs team2
- Start it:
/bwevent start
Everyone gets the announcement, a countdown runs, and both teams get pulled into an arena with their rosters already locked in. When a game ends the score is announced, players are sent back for the next one, and this repeats until a team reaches the winning number — then the event winner and full stats are posted.
Only one event runs at a time. While one is live, regular players can't join the event's arena and event players can't leave mid-game. If a match can't start because someone is offline, the plugin waits (with warnings) and aborts cleanly if they don't show.
Commands
| Command | Description |
|---|---|
/bwevent team create <name> [players=p1,p2,...] [color] |
Create a team, optionally adding online players |
/bwevent team delete <name> |
Delete a team |
/bwevent team addplayer <team> <player> |
Add a player to a team |
/bwevent team removeplayer <team> <player> |
Remove a player from a team |
/bwevent team list |
List teams and their rosters |
/bwevent match first-to/best-of <wins> <team1> vs <team2> |
Set the matchup (wins 1–10) |
/bwevent match clear |
Remove the current matchup |
/bwevent start |
Start the event |
/bwevent status |
Show matchup, score, and rosters |
/bwevent spec |
Spectate the running event |
/bwevent stop |
Force-stop and pull everyone back to lobby |
/bwevent clear |
Wipe all event data |
/bwevent disable / enable |
Block/unblock normal matches for everyone |
/bwevent alert |
Broadcast an event alert to the whole server |
/bwevent reload |
Reload the config |
Aliases: /bwe, /bwtournament. Admin commands need bwevent.admin (op by default); bwevent.spec and bwevent.status are granted to everyone.
Disconnect handling
This is the part that usually breaks events, so it's handled:
- Last player on a team disconnects mid-game — the match keeps going. If their bed is still standing they can rejoin and keep playing; if it got destroyed while they were gone, they're moved to spectators and the game resolves normally.
- Someone leaves during a lobby wait — the game countdown pauses until they're back, so nobody starts a man down.
- Player goes missing entirely — after a configurable wait (
missing-player-wait, default 300s) with warnings at 2m/1m/30s, the event stops and everyone goes back to the lobby instead of hanging forever. - Voluntary leaves are blocked — the leave item,
/leave, and the leave GUI don't work mid-event.
Placeholders
Register through PlaceholderAPI (identifier bwevent):
| Placeholder | Value |
|---|---|
%bwevent_current_score% |
Current score, e.g. 2-1 |
%bwevent_game% |
Current game number |
%bwevent_status% |
Matchup type, e.g. first-to 3 |
%bwevent_team1% / %bwevent_team2% |
Team names |
%bwevent_team1_score% / %bwevent_team2_score% |
Individual scores |
%bwevent_player_team% |
The viewer's event team |
%bwevent_state% |
Internal event state |
All of them show None when no event is running. Throw them on your scoreboard or tab so players can follow the series.
Configuration
Everything players see lives in config.yml — messages, countdowns, team colors, and a missing-player-wait timeout. There's also an after-game-start-commands list that fires console or player commands each time a game actually starts:
after-game-start-commands:
- "<console-command>say Game %game_number%: %team1% vs %team2%"
- "<player-command>say gl!"


