Minecraft Game Modes
Minigame servers run short rounds of BedWars, SkyWars, Murder Mystery, Build Battle, TNT Run, Parkour and similar games. They work very differently from survival: worlds reset after every round, nothing players build is meant to last, every player is packed into a small arena doing a lot at once, and a lobby sends players into games.
This guide takes you from an empty server to a working minigame setup. You'll choose a layout and plugins, import an arena map, set up a complete BedWars arena command by command, store stats in MySQL, connect it to a lobby, and then run it long-term: permissions, anti-cheat, performance, backups, updates and scaling to more game servers.
Time needed: 2–3 hours for the first BedWars arena on one server, then about 30 minutes per extra arena once you have maps. A full network with a lobby takes an extra evening.
Before you start you need:
- A Paper server (Purpur works the same) on the newest Minecraft version all your minigame plugins support, pinned on Startup. Paper setup
- Memory: 2–3 GB for one server running a few arenas; 1–2 GB per game server and 1.5–2 GB for the lobby in a network.
- One MySQL database for stats (and one for LuckPerms if you run a network). Databases
- Arena maps, built by you or downloaded/bought. Each map is a world folder.
- For a network: a Velocity server and a lobby set up as in Run several game modes as one network.
Choose the layout
| Layout | How it works | Good for | Limits |
|---|---|---|---|
| A. Everything on one server | One Paper server holds the lobby world and several arenas. Players join games with signs, NPCs or /bw join. |
Starting out, up to about 30 players at once. | All games share one main thread: a busy round lags every other round and the lobby. |
| B. Lobby + game servers behind Velocity | A lobby server plus one or more game servers, each with one or a few arenas. The lobby sends players to a game server, and the game server sends them back afterwards. | Busy servers and several different games. | More servers to update and back up. |
Start with layout A. Move to B when /spark tps shows MSPT regularly above 40 during games, or when you add a second kind of game. Everything you build in layout A (maps, arena configs, stats database) carries over to B.
Layout B:
┌──► BedWars-1 (Paper, 2-4 arenas)
Players ──► Velocity ──► Lobby ───┼──► BedWars-2 (Paper, 2-4 arenas)
└──► Murder (Paper, Murder Mystery)
shared: MySQL for stats and LuckPerms
Choose your game plugins
Minigame plugins often fall behind new Minecraft versions, and many popular old ones are abandoned. Before choosing, open each plugin's page and check two things: the newest Minecraft version it lists, and the date of its last update. Anything not updated in the last year is a risk.
| Game | Plugin | Price | Notes |
|---|---|---|---|
| BedWars | Screaming BedWars (ScreamingSandals) | Free, open source | Supports a very wide range of versions up to the newest releases; good docs; built-in arena rebuild, MySQL stats, proxy ("bungee") mode. Used in this guide. |
| BedWars | BedWars2023 (community fork of BedWars1058) | Free | Uses a separate proxy companion plugin on the lobby for networks. Check its releases for your version. |
| BedWars | BedWars1058 | Free | The original; its listed versions stop well behind the newest releases. Prefer one of the above for new servers. |
| BedWars | MBedwars | Paid | Commercial, actively developed. |
| Murder Mystery | Murder Mystery (Plugily Projects) | Free | Recent releases list the newest versions. Needs the MiniGamesBox library plugin from the same authors. |
| Build Battle | Build Battle / Guess The Build (Plugily Projects) | Free | Same author and library as Murder Mystery, so menus and setup work the same way. |
| TNT Run | TNTRun_reloaded | Free | Check its page for the newest supported version. |
| SkyWars | Several (SkyWarsReloaded and newer projects, free and paid) | Varies | Support for the newest versions varies a lot; check each carefully before choosing. |
| Parkour | Parkour (A5H73Y) | Free | Courses, checkpoints, leaderboards. A great lobby activity. |
| KOTH, Duels, KitPvP | See PvP servers | Varies |
Tips for choosing:
- Prefer one author's suite for several games (Plugily's games share the same setup style and library), so players see consistent menus and you learn one system.
- Check proxy support if you plan layout B: the plugin should have a "bungee" or proxy mode that sends players back to the lobby after a game.
- Check MySQL support for stats, so stats are shared between game servers and survive map resets.
- Read reviews for "lag" and "reset": a plugin that resets arenas slowly will lag your server every round.
Prepare the game server
3.1 Version and first start
- Startup → set Minecraft Version to the exact version your plugins support.
- Start once, accept the EULA, Stop. First start
3.2 server.properties
| Setting | Value | Why |
|---|---|---|
view-distance |
6 |
Arenas are small; players never need far chunks. |
simulation-distance |
4 |
Only the arena needs ticking. |
spawn-protection |
0 |
The minigame plugin and WorldGuard handle protection. |
allow-nether |
false |
Minigames don't use the Nether. |
allow-flight |
true |
Knockback from fireballs, TNT and launch pads can look like flying and get players kicked. Your anti-cheat handles real fly hacks. |
max-players |
arenas × players per arena + 10 | Room for everyone plus spectators. |
enable-status |
true |
Queues and player-count placeholders ping the server. |
For a game server in layout B, also apply the back-end settings from the network guide: online-mode=false, network-compression-threshold=-1 and the Velocity secret in config/paper-global.yml.
3.3 Paper settings
In config/paper-world-defaults.yml:
| Setting | Value | Why |
|---|---|---|
environment.optimize-explosions |
true |
BedWars uses lots of TNT and fireballs; this makes explosions much cheaper. |
collisions.max-entity-collisions |
2 |
Crowded spawn islands and shops cost less. |
chunks.entity-per-chunk-save-limit |
arrow: 16, experience_orb: 16, snowball: 8 |
Stops loose entities piling up in arena chunks. |
Leave unsupported-settings alone. Paper settings
3.4 Core plugins
Install from Minecraft Plugins and restart:
| Plugin | Why |
|---|---|
| LuckPerms | Permissions for players, VIPs and staff (step 11). |
| Multiverse-Core | Loads each arena map as its own world. |
| Screaming BedWars | The BedWars game. |
| PlaceholderAPI | Stats and player counts in scoreboards, holograms and menus. |
| WorldEdit + WorldGuard | Protecting the lobby world (layout A). |
| CoreProtect | Logs in the lobby world, so you can undo grief there. |
Check with plugins in the console: everything should be green.
Import an arena map
Each arena is a world. A typical BedWars map has 4–8 team islands with beds, a middle island, and generators.
4.1 Upload the map
- Get the map as a folder containing
level.datand aregionfolder. If it's a.zip, unzip it on your computer first and check the folder structure. - Give it a short, lowercase name with no spaces, e.g.
bw_lighthouse. - Upload the folder to the root of your server (next to
world, not inside it). Use Files → Upload for small maps, or SFTP for anything big. Upload a world - If the map came with a
uid.datfile, delete it, so the server doesn't think it's a duplicate of another world.
4.2 Load it with Multiverse
In the console or in game:
mv import bw_lighthouse normal
mv tp bw_lighthouse
normal is the environment (Overworld). Multiverse remembers the world and loads it on every start. Check it worked: mv list shows bw_lighthouse, and you're standing in the map.
4.3 Calm the world down
While standing in the arena world, as an op:
- Stop mobs spawning in it with WorldGuard:
/rg flag __global__ -w bw_lighthouse mob-spawning deny. Don't add build or break flags here: the game plugin must let players build. - Time and weather are set per arena by the BedWars plugin (step 5.7), so you don't need game rules for them. Vanilla game rule names have changed between Minecraft versions; if you do set one, type
/gameruleand press Tab to see the names your version uses.
Set up a BedWars arena, step by step
This uses Screaming BedWars. All commands start with /bw admin <arena>, where <arena> is the arena's name. We'll call it lighthouse. You need the bw.admin permission (ops have it).
5.1 Create the arena
Stand anywhere inside the bw_lighthouse world and run:
/bw admin lighthouse add
The arena is now open for editing.
5.2 Set the arena bounds
The bounds are a box around the whole playable map, including the highest and lowest point players can build. Anything outside isn't part of the arena or its reset.
- Fly to one corner of the map, below the lowest island (players build bridges down):
/bw admin lighthouse pos1 - Fly to the opposite corner, above the highest build point:
/bw admin lighthouse pos2
5.3 Set the waiting lobby and spectator point
Players wait in the arena's lobby until the game starts. Many maps have a waiting platform above the middle; otherwise build a small one.
/bw admin lighthouse lobby
/bw admin lighthouse spec
Run each while standing where players should appear: lobby on the waiting platform, spec somewhere above the map with a good view.
If the waiting platform is inside the arena, also mark its corners with lobbypos1 and lobbypos2 (same idea as pos1/pos2), so the plugin can remove it when the game starts.
5.4 Add the teams
/bw admin lighthouse team add Red RED 2
/bw admin lighthouse team add Blue BLUE 2
/bw admin lighthouse team add Green GREEN 2
/bw admin lighthouse team add Yellow YELLOW 2
The format is team add <name> <colour> <players per team>. Colours available: BLACK, BLUE, GREEN, RED, MAGENTA, ORANGE, LIGHT_GRAY, GRAY, LIGHT_BLUE, LIME, CYAN, PINK, YELLOW, WHITE, BROWN. You need at least two teams. Use 2 for doubles, 1 for solo, 4 for squads.
5.5 Set each team's spawn and bed
For each team:
- Stand on the team's spawn point, facing the way players should face, and run
/bw admin lighthouse team spawn Red. - Look at the head of the team's bed (the pillow end) and run
/bw admin lighthouse team bed Red.
Repeat for Blue, Green and Yellow.
5.6 Add generators and shops
Generators (the plugin calls them spawners). Stand exactly where items should drop:
/bw admin lighthouse spawner add iron true
/bw admin lighthouse spawner add gold true
The resource types available out of the box are bronze, iron and gold; true shows a hologram above it. Each team island usually gets iron and gold. For diamond and emerald generators on the middle and outer islands, first add them to the plugin's config (step 6.2), restart, then add them the same way:
/bw admin lighthouse spawner add diamond true
/bw admin lighthouse spawner add emerald true
Made a mistake? Stand on it and run /bw admin lighthouse spawner remove.
Shops. Stand where each shopkeeper should stand, facing the island, and run:
/bw admin lighthouse store add &aItem Shop
That uses the default shop (shop.yml). To use a different shop file for upgrades, add the file name after the name: /bw admin lighthouse store add &bUpgrades upgradeShop.yml. To change the shopkeeper's look: /bw admin lighthouse store type Villager.
5.7 Game settings
/bw admin lighthouse minplayers 4
/bw admin lighthouse pausecountdown 30
/bw admin lighthouse time 1800
/bw admin lighthouse arenatime DAY
/bw admin lighthouse arenaweather CLEAR
| Command | Meaning |
|---|---|
minplayers 4 |
The countdown starts once 4 players are waiting. |
pausecountdown 30 |
Seconds of waiting-lobby countdown before the game starts. |
time 1800 |
Maximum game length in seconds (30 minutes). |
arenatime / arenaweather |
Fixed time and weather for this arena. Use Tab to see the accepted values. |
5.8 Save and test
/bw admin lighthouse save
The arena is now playable. Check it worked:
/bw listshowslighthouse.- From a normal (non-op) account, plus a friend or a second account, run
/bw join lighthouse. Temporarily setminplayers 2for testing if you're alone with one friend. - Play a whole round: break a bed, buy from the shop, check every generator drops items, and let the game end.
- After the round, walk the map: blocks players placed should be gone and beds back.
/bw admin lighthouse infolists everything the arena has, to spot a missing spawn or bed.
To change a saved arena later: /bw admin lighthouse edit, make your changes, then save again.
5.9 Join signs and team selectors (layout A)
- Join sign: place a sign with
[BedWars]on line 1 andlighthouseon line 2. Players right-click it to join. A sign withleaveon line 2 leaves the game. - Team selector: in the waiting lobby, place an armor stand, put the arena in edit mode, run
/bw admin lighthouse jointeam Redand right-click the armor stand. It gets red armour and players click it to pick Red. Save again afterwards.
Configure the game
Edit plugins/BedWars/config.yml with the server stopped (or use /bw reload after editing, between rounds).
6.1 Things to decide
Browse the file once; the settings are grouped and commented. Decide at least: what happens to players who leave mid-game, whether spectators can chat, whether players drop items on death, team chat, and the end-of-game rewards. The full list with explanations is on the plugin's Configuration docs page.
6.2 Add diamond and emerald generators
Under resources:, add:
resources:
diamond:
material: DIAMOND
color: BLUE
name: Diamond
interval: 30
translate: resource_diamond
spread: 1.0
emerald:
material: EMERALD
color: GREEN
name: Emerald
interval: 60
translate: resource_emerald
spread: 1.0
Keep the existing bronze, iron and gold entries. interval is seconds between drops. Restart, then add the generators to each arena as in step 5.6.
6.3 Shops
Shop items and prices are in shop.yml (and any other shop files you create) in the plugin folder. Make prices match your resources: if you don't use bronze, replace bronze prices with iron. Change a few prices at a time and play a round between changes.
Store stats in MySQL
Stats in files (statistics.type: yaml, the default) work on one server, but can't be shared between game servers. Use MySQL from the start.
On the game server: Databases → Create Database, name
bedwars. Open the eye for the details. DatabasesStop the server and edit
plugins/BedWars/config.yml:database: host: 10.11.30.202 port: 3306 db: s22_bedwars user: u22_AbCdEfGhIj password: 'your-database-password' table-prefix: bw_ type: mysql statistics: enabled: true type: databaseStart. The console should show no database errors. Play a round, then
/bw stats: your kills and wins should appear.
In layout B, give every BedWars game server the same database settings, so a player's stats follow them whichever server they play on.
Leaderboard holograms: stand where you want one and run /bw addholo leaderboard (or /bw addholo stats for the player's own stats). Remove one with /bw removeholo while looking at it.
Connect game servers to a lobby (layout B)
8.1 Bungee mode on the game server
In plugins/BedWars/config.yml on each BedWars game server:
bungee:
enabled: true
serverRestart: false
serverStop: false
server: lobby
auto-game-connect: true
kick-when-proxy-too-slow: true
random-game-selection:
enabled: true
preselect-games: false
| Key | Value | Why |
|---|---|---|
enabled |
true |
Proxy mode: the server exists only for games. |
server |
lobby |
The lobby's name in velocity.toml. Players go there after a game. |
auto-game-connect |
true |
A player arriving from the lobby is put straight into a waiting arena. |
random-game-selection.enabled |
true |
With several arenas on the server, it picks one for each player. |
serverRestart / serverStop |
false |
Keep these off on our panel. They make the server shut down after a game, expecting a script to start it again. In the panel a stopped server stays stopped until someone starts it. The plugin's own arena rebuild resets the map without a restart. |
Velocity must have bungee-plugin-message-channel = true for the plugin to send players back to the lobby. Velocity settings
8.2 Lobby NPCs
On the lobby, use FancyNpcs' send-to-server action. Never use an NPC command action that runs /server: that's a Velocity command the lobby doesn't have.
/npc create bedwars
/npc displayname bedwars <red><bold>BEDWARS</bold></red>
/npc skin bedwars Notch
/npc action bedwars ANY_CLICK add send_to_server bedwars1
bedwars1 is the game server's name in velocity.toml. Add a hologram above it with the player count (%bungee_bedwars1% from PlaceholderAPI's Bungee expansion). The full lobby build is in the network guide.
8.3 Queues for busy servers
When a game server is full, a direct send fails. A queue on Velocity makes players wait in line instead.
- ajQueue (free; ajQueuePlus is paid and adds priority and express queues) runs on Velocity and creates a queue for every server automatically. Players join with
/queue bedwars1. - An NPC or menu on the lobby can run
queue bedwars1as the player only if the same ajQueue jar is also installed on the lobby, which forwards the command to Velocity. Without it, players see "Unknown command". - To stop players skipping the queue with
/server, deny it:lp group default permission set velocity.command.server false. enable-status=truemust be set on the game server, or ajQueue thinks it's offline.
8.4 Parties
Groups of friends want to land in the same game.
- Screaming BedWars has a
partysection in its config that works with the Parties plugin: setparty.enabled: trueandautojoin-members: trueso a party leader joining pulls the whole party in. Party members are warped with/bw party warp. - For a network, the party plugin must be installed in its proxy mode so parties survive server switches. Check the party plugin's page supports your Velocity and Minecraft versions before relying on it.
Map resets
Every game must start on a clean map. There are three ways, from simplest to fastest:
| Method | How | Speed | Use when |
|---|---|---|---|
| The plugin's own reset | Screaming BedWars rebuilds the arena after each game, restoring broken blocks and removing placed ones inside the arena bounds. Plugily games and most others have their own reset too. | Fast for normal maps | Almost always. Start here. |
| A template copy | Some plugins unload the world, copy a saved template over it and reload it. | Slower; can cause a lag spike on big maps | When the plugin works this way. Keep templates small. |
| Advanced Slime Paper | A Paper fork from Infernal Suite that stores worlds in compact "slime" files and loads them in memory, so cloning a fresh arena is near-instant. | Fastest | Many arenas per server, or very frequent games. It replaces the server jar, so ask us to set it up, and check your minigame plugin supports loading worlds through it. |
Rules that apply to all of them:
- Set the bounds big enough. With Screaming BedWars, anything built outside
pos1/pos2isn't reset. Players will bridge outside a too-tight box. - Edit maps only in edit mode, or the next reset will undo or keep your changes unpredictably.
- Keep a master copy of every map in a locked backup and on your own computer, so a broken reset never costs you the map.
- Don't run CoreProtect logging in arena worlds if you can avoid it: millions of placed blocks per day fill the database for no benefit. Check CoreProtect's config for per-world settings.
Add more games
Murder Mystery and Build Battle (Plugily Projects)
- Install the MiniGamesBox library plugin and the game plugin from their pages (the plugin page links the right MiniGamesBox version), restart.
- Import the map with Multiverse as in step 4.
- Create and configure the arena with the plugin's setup command and in-game setup menu. The exact steps are on the plugin's Setup page in the Plugily wiki. Maps from Plugily's map pages come with arena settings to paste into
arenas.yml; if you import several, merge the arena sections by hand rather than overwriting the file. - Test a full round from non-op accounts, then set its stats to MySQL the same way as BedWars (the plugin's config has a database section).
Each Plugily game also has a proxy mode for layout B; turn it on in that game's config the same way.
Parkour in the lobby
Parkour (A5H73Y) gives waiting players something to do. Build a course in the lobby, then use the plugin's commands to create the course, set checkpoints and the finish, and show leaderboards. Its wiki lists every command. Keep the course inside your WorldGuard-protected lobby.
One game per server in layout B
Put each kind of game on its own server: BedWars on bedwars1, Murder Mystery on murder1. Different plugins on one server compete for the same main thread and often conflict over scoreboards and inventories.
Permissions plan
Create groups with LuckPerms. On a network, use one shared database so ranks apply everywhere. Shared LuckPerms
lp creategroup vip
lp creategroup helper
lp creategroup mod
lp creategroup admin
lp group vip parent add default
lp group helper parent add vip
lp group mod parent add helper
lp group admin parent add mod
lp group vip meta setprefix 10 "&a[VIP] "
lp group helper meta setprefix 20 "&b[Helper] "
lp group mod meta setprefix 30 "&2[Mod] "
lp group admin meta setprefix 40 "&c[Admin] "
Then grant the BedWars nodes:
| Group | Permission | Command | Effect |
|---|---|---|---|
| default | bw.cmd.join, bw.cmd.leave, bw.cmd.list, bw.cmd.stats, bw.cmd.rejoin, bw.cmd.autojoin, bw.cmd.leaderboard |
(granted by default) | Players can play. Nothing to do. |
| vip | bw.vip.forcejoin |
lp group vip permission set bw.vip.forcejoin true |
Join a full game. |
| vip | bw.vip.startitem |
lp group vip permission set bw.vip.startitem true |
Start the countdown early with the start item. |
| helper | bw.otherstats |
lp group helper permission set bw.otherstats true |
View other players' stats. |
| admin | bw.admin |
lp group admin permission set bw.admin true |
Create and edit arenas, /bw reload. |
Give arena builders bw.admin only on the server where they build, with a context: lp group builder permission set bw.admin true server=bedwars1.
Moderation nodes (if you use EssentialsX and CoreProtect on that server):
lp group helper permission set coreprotect.inspect true
lp group mod permission set essentials.kick true
lp group mod permission set essentials.mute true
lp group mod permission set essentials.tempban true
lp group mod permission set coreprotect.rollback true
Assign people with lp user <name> parent add mod. Check with lp user <name> permission check bw.admin. Only the owner should be op.
Fair play and moderation
Anti-cheat
PvP minigames attract cheaters (reach, kill aura, fly, scaffold). Install an anti-cheat on every game server, not on Velocity.
- Grim is a popular free, open-source anti-cheat. Check its page lists your Minecraft version.
- Test it in real games before launch: knockback from fireballs and TNT jumps can cause false flags. Tune the checks that misfire in its config rather than turning the whole anti-cheat off.
- Keep
allow-flight=trueso Paper's own fly check doesn't kick players the anti-cheat already handles.
Bans and chat
- On a network, ban on Velocity with a proxy punishment plugin, so a cheater is off every server. Bans across the network
- Mute and chat filtering: block advertising (other server addresses) and spam in the lobby, where every player passes through.
- Give helpers
/bw stats <player>(bw.otherstats) to spot suspicious win rates.
Old-style combat
Many BedWars and PvP players prefer pre-1.9 combat (no attack cooldown). OldCombatMechanics sets it per world, so arena worlds can use old combat and the lobby modern. PvP servers
Performance tuning
Measure first
During a busy round, run /spark tps (TPS should be 20, MSPT under 50) and /spark profiler start, play for 3–5 minutes, then /spark profiler stop and open the link. Fix lag
Typical causes and fixes
| What spark shows | Cause | Fix |
|---|---|---|
| Spikes when a game starts or ends | Arena reset or world loading on the main thread. | Smaller arena bounds, fewer arenas resetting at once, or Advanced Slime Paper. |
| Explosions high in the profile | TNT and fireballs. | optimize-explosions: true (step 3.3). |
| Entity ticking high | Dropped items, arrows, generator items piling up. | Reasonable generator intervals; entity save limits. |
| One plugin high all the time | A scoreboard, hologram or placeholder updating every tick. | Raise its update interval in its config. |
| MSPT high with all arenas full | The server's main thread is full. | Move some arenas to another game server (layout B). |
Arenas per server
As a starting point, 2–4 BedWars arenas per game server, depending on team size. Add arenas until busy-hour MSPT reaches about 35, then add a new game server instead.
Backups and updates
Backups
Minigame worlds reset every round, so they don't need frequent backups, but configs, arena setups and maps do.
| What | How often | How |
|---|---|---|
| Game servers | Daily, and before any change | Schedules → a daily schedule with Create Backup (times are UTC), e.g. 0 8 * * *. |
| Lobby | Weekly, and before changes | Same, 0 8 * * 1. |
| Arena maps (master copies) | Once per map, then whenever edited | Make a manual backup and Lock it; download a copy. |
| Stats database | Weekly | Not in panel backups. Use the plugin's export if it has one, or ask us for a database dump. |
Add a daily restart at a quiet time with a warning, a few minutes after the backup. A restart during a round ends that game, so pick the quietest hour and give a 5-minute warning. Schedules
Updates
- Lock a backup first.
- Update one plugin at a time using the
plugins/update/folder and a restart. Updating plugins safely - After each update, play a full round on a test arena: join, buy, break a bed, finish, and check the reset.
- Before changing the Minecraft version on Startup, check every minigame plugin, its library (MiniGamesBox) and your anti-cheat list the new version.
- On a network, update one game server, test it, then the rest.
Scaling up
When one game server isn't enough:
- Ask us for another Paper server and set it up exactly like the first (steps 3, 7 and 8). Easiest: download the first server's backup and upload its
pluginsfolder and arena worlds to the new one, then change anything that must be unique. - Add it to
velocity.tomlasbedwars2, thenvelocity reloadon Velocity. - Point the lobby at both: a second NPC, or a menu that lists each server with its player count. A queue plugin can also spread players over servers; check its docs for grouping servers.
- Keep the same stats database on all BedWars servers, so stats follow players.
- Stagger backups and restarts so not every game server restarts at once.
Common problems
| Problem | Cause | Fix |
|---|---|---|
| Blocks from last game are still there | Built outside the arena bounds, or the arena edited outside edit mode. | edit, set bigger pos1/pos2, save. Restore the map from your master copy if needed. |
/bw join says the arena isn't ready |
A required part is missing (fewer than two teams, no spawn or bed for a team, no lobby). | /bw admin <arena> info shows what's set; add the missing part and save. |
| Diamond or emerald generators can't be added | They're not defined in resources: in the config. |
Add them (step 6.2), restart, try again. |
| Countdown never starts | Fewer waiting players than minplayers. |
Lower minplayers while testing. |
| Bed break doesn't count | The bed was set while looking at the foot, not the head. | edit, team bed <team> while looking at the pillow end, save. |
| Players kicked for flying | Knockback looks like flight. | allow-flight=true; let the anti-cheat handle real fly. |
| Players stuck on the game server after a round | bungee.server doesn't match the lobby's name, or bungee-plugin-message-channel is off. |
Match the name in velocity.toml; set the Velocity option and velocity reload. |
| Game server went offline after a game | serverRestart or serverStop enabled. |
Set both to false; start the server again. |
| NPC says "Unknown command" | It runs /server or /queue on the lobby. |
Use send_to_server; for ajQueue, install the same jar on the lobby too. |
| Queue says the server is offline | enable-status=false on the game server, or a plugin blocking pings. |
Set enable-status=true and restart. |
| Stats reset or differ between servers | File stats, or different databases per server. | statistics.type: database with the same database on every game server. |
| Lag spike when games start | Arena loading or reset on the main thread. | Smaller bounds, fewer arenas per server, or Advanced Slime Paper. |
Plugin red in plugins after an update |
Doesn't support the new Minecraft version, or the library (MiniGamesBox) is missing or outdated. | Read the console error; roll back from your locked backup. |
| Anti-cheat bans legitimate players | False flags from game knockback. | Tune or disable the specific check; test with real rounds. |
Launch checklist
- [ ] Layout chosen (one server, or lobby + game servers) and Minecraft version pinned on Startup to a version every plugin supports.
- [ ]
server.properties:view-distance=6,simulation-distance=4,allow-flight=true,enable-status=true(plus back-end settings in layout B). - [ ]
optimize-explosions: trueinpaper-world-defaults.yml. - [ ] Every arena imported with Multiverse, mob spawning denied, and a locked master backup of each map.
- [ ] Every arena saved and played through a full round by non-op accounts: beds, shops, generators, reset afterwards.
- [ ] Diamond and emerald resources added and generators placed.
- [ ] Stats stored in MySQL;
/bw statsworks; leaderboard holograms placed. - [ ] Layout B: bungee mode on,
serverRestart/serverStopoff,server: lobbymatchesvelocity.toml, NPCs tested. - [ ] Queue and parties tested with a group of friends, if you use them.
- [ ] LuckPerms groups made;
bw.adminonly for admins and builders; only the owner is op. - [ ] Anti-cheat installed on every game server and tested against real games.
- [ ] Proxy-wide bans and a chat filter in the lobby.
- [ ] Backup and restart schedules on every server, with a backup visible the next day.
- [ ]
/spark tpschecked during the first busy hour of real games.

