Minecraft Game Modes
A network puts several Minecraft servers behind one address. Players connect, land in a lobby, pick Skyblock, OneBlock or Chunklock from an NPC or a compass menu, and move between them without disconnecting. Each game mode runs on its own server with its own memory, CPU, world, plugins and backups, so a lag spike or crash in one never touches the others.
┌──► Lobby (Paper)
Players ──► Velocity (public) ─────┼──► Skyblock (Paper + BentoBox/BSkyBlock)
├──► OneBlock (Paper + BentoBox/AOneBlock)
└──► Chunklock (Paper + Chunklock)
shared: one MySQL database for LuckPerms ranks
This guide builds exactly that network from nothing, and then covers running it: permissions, chat and tab list, economy, backups, restarts, updates and fixing problems. The same steps work for any mix of game modes; swap in your own.
Time needed: an evening for Velocity, the lobby and the connections (steps 1–7), then however long each game mode's own guide takes. Difficulty: advanced, but every step says what to click and how to check it worked.
Before you start you need:
- One server per game mode, plus a Velocity server and a lobby server, on your account. You can't create servers yourself in the panel: ask us or order them (step 2).
- One MySQL database for LuckPerms (your plan's Databases count must be at least 1).
- Basic panel skills: editing files in Files, using Console, installing from Minecraft Plugins. If those are new, read Install plugins and Files and SFTP first.
- This guide uses the general Velocity steps from Velocity networks and adds everything specific to a multi-game-mode network.
Plan the network
Fill in this plan before you ask for servers. It decides how much to order and saves rework.
| Server | Name in Velocity | Server type | Memory to start | Plugins (core) | Guide |
|---|---|---|---|---|---|
| Proxy | (none) | Velocity | 1 GB | LuckPerms, TAB, ViaVersion | this guide |
| Lobby | lobby |
Paper | 1.5–2 GB | LuckPerms, FancyNpcs, DeluxeMenus, PlaceholderAPI, WorldGuard | this guide, step 7 |
| Skyblock | skyblock |
Paper | 4–6 GB | BentoBox + BSkyBlock, LuckPerms, CoreProtect | Skyblock |
| OneBlock | oneblock |
Paper | 3–5 GB | BentoBox + AOneBlock, LuckPerms, CoreProtect | OneBlock |
| Chunklock | chunklock |
Paper | 3–5 GB | Chunklock, LuckPerms, CoreProtect, Chunky | Chunklock |
Rules for the plan:
- Names are lowercase, no spaces:
lobby,skyblock,oneblock,chunklock. You'll type them invelocity.toml, in NPC actions, in menus and in LuckPerms contexts, and they must match exactly everywhere. - One game mode per server. Don't put Skyblock and OneBlock on the same server to save money: they'd share one main thread and lag together, which is the problem a network solves.
- Pick each server's Minecraft version as the newest version all that server's plugins support. They can differ (for example, if the Chunklock plugin lags a release behind). Velocity itself supports all current versions, and ViaVersion on Velocity lets newer clients join older back-ends (step 12). Matching versions everywhere is simplest when you can.
- Velocity is light. Its own guidance is roughly 512 MB of heap per 500 players; 1 GB is plenty for small and medium networks. Spend memory on the game servers.
Get the servers on your account
- Contact us (or order through your account) for the servers in your plan: Velocity, lobby, and one Paper server per mode, with the memory from the table. Mention it's a network so we can keep the back-end ports private.
- When they appear in your server list, open each one and go to Settings. Rename them so you can tell them apart, e.g.
Network - Velocity,Network - Lobby,Network - Skyblock. - On each Paper server, open Startup and set Minecraft Version to the exact version you chose for that server (not
latest). Change version - On the Velocity server, open Startup and check the Velocity version is current. Keep it up to date: newer Velocity builds are what let newer Minecraft clients connect.
- Start each Paper server once, accept the EULA in the console when asked, then Stop it. First start
Check it worked: every server in your list has a clear name, and each Paper server has generated server.properties, config/paper-global.yml and spigot.yml in Files.
Write down each server's address
Velocity needs the address and port of every back-end.
- Open each Paper server's Network page.
- Note the primary allocation: an IP address and port, e.g.
10.11.30.202:40003. Use the address shown there, not your public connect address. - Fill in a table like this (yours will have different numbers):
| Name | Address from Network |
|---|---|
lobby |
10.11.30.202:40005 |
skyblock |
10.11.30.202:40003 |
oneblock |
10.11.30.202:40007 |
chunklock |
10.11.30.202:40002 |
The Velocity server's own allocation is the only address players use. Give players that address (or point your domain's SRV record at it). Connect
Set up Velocity
4.1 Generate the files
- Open the Velocity server and Start it. Wait until the console shows it's listening, then Stop it.
- In Files you now have
velocity.toml,forwarding.secretand apluginsfolder.
4.2 Edit velocity.toml
Open velocity.toml in Files. Don't replace the whole file: change the lines below and leave everything else (including config-version) as it is.
# --- top of the file ---
motd = "<aqua>CrashCrafts Network</aqua> <gray>- Skyblock, OneBlock, Chunklock"
show-max-players = 200
online-mode = true
force-key-authentication = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"
announce-forge = false
kick-existing-players = false
ping-passthrough = "DISABLED"
[servers]
lobby = "10.11.30.202:40005"
skyblock = "10.11.30.202:40003"
oneblock = "10.11.30.202:40007"
chunklock = "10.11.30.202:40002"
# Where players go when they join, and where they fall back to if a server goes down
try = ["lobby"]
[forced-hosts]
# Delete the example.com lines that come in the default file.
# Optional: send a subdomain straight to one mode.
# "skyblock.yourdomain.com" = ["skyblock"]
[advanced]
compression-threshold = 256
bungee-plugin-message-channel = true
failover-on-unexpected-server-disconnect = true
What each setting does:
| Setting | Value | Why |
|---|---|---|
bind |
leave as the panel set it | Velocity listens on your allocation. Changing it breaks the connection. |
motd |
your text | The server-list message. Uses MiniMessage tags (<aqua>, <gray>, <bold>), not & codes. Back-end MOTDs are never shown. |
show-max-players |
e.g. 200 |
The "max players" number in the server list. Back-end max-players still caps each server. |
online-mode |
true |
Velocity checks every player with Mojang. Never turn this off. |
player-info-forwarding-mode |
"modern" |
Securely passes each player's real UUID, skin and IP to back-ends, signed with the secret. |
forwarding-secret-file |
"forwarding.secret" |
The file holding the shared secret. |
[servers] |
name = address | Every back-end, using the addresses from step 3. |
try |
["lobby"] |
New players land in the lobby, and players kicked from a restarting server are moved there. |
[forced-hosts] |
your domains, or empty | The default file contains lobby.example.com and similar entries pointing at servers you don't have. Delete or edit them, or Velocity complains about unknown servers at start-up. |
bungee-plugin-message-channel |
true |
Required for lobby NPCs and menus to move players (FancyNpcs' send_to_server, DeluxeMenus' [connect]). |
failover-on-unexpected-server-disconnect |
true |
If a back-end crashes, players go to the lobby instead of being disconnected. |
compression-threshold |
256 |
Velocity compresses traffic to players. Back-ends turn compression off (step 5). |
4.3 Copy the forwarding secret
- Open
forwarding.secretin Files. It contains one long random line. - Copy it somewhere safe (a password manager). You'll paste it into every back-end.
4.4 Install Velocity plugins
Velocity has its own plugins (Paper plugins don't work on it). Install them into the Velocity server's plugins folder: from Minecraft Plugins if it lists a Velocity version, or download the Velocity jar from the plugin's Modrinth/Hangar page and use Files → plugins → Upload.
| Plugin | Needed? | Why |
|---|---|---|
| LuckPerms (Velocity version) | Yes | Ranks and proxy permissions (step 9). |
| ViaVersion (+ ViaBackwards) | Recommended | Lets players on newer (and older) clients join. |
| TAB | Optional | One tab list showing the whole network (step 10). |
| ajQueue | Optional | Queues for full servers (free; ajQueuePlus is paid). |
| A punishment plugin | Recommended | Network-wide bans (step 10). |
| Geyser + Floodgate | Only for Bedrock | Bedrock players. Geyser goes on Velocity only. Bedrock |
Start Velocity. Check it worked: the console shows no errors, and velocity plugins in the Velocity console lists the plugins you installed.
Set up each Paper back-end
Repeat this for every Paper server: lobby, Skyblock, OneBlock and Chunklock.
5.1 server.properties
Stop the server, open server.properties and set:
| Setting | Value | Why |
|---|---|---|
online-mode |
false |
Velocity has already checked the player. The back-end trusts Velocity's signed forwarding instead. Only safe with step 5.2 done. |
network-compression-threshold |
-1 |
Only Velocity compresses; double compression wastes CPU. |
enable-status |
true |
Velocity, queue plugins and player-count placeholders ping back-ends. |
prevent-proxy-connections |
false |
Leave off; Velocity is the proxy. |
white-list |
false |
Use the whitelist on the lobby only, if at all, or players get kicked mid-network. |
server-port |
leave as set | The panel sets it to the allocation. |
5.2 config/paper-global.yml
Find the proxies: section and set the velocity part:
proxies:
bungee-cord:
online-mode: true
proxy-protocol: false
velocity:
enabled: true
online-mode: true
secret: 'paste-the-forwarding-secret-here'
velocity.enabled: trueturns on modern forwarding.velocity.online-modemust matchonline-modeinvelocity.toml(true).secretis the exact text fromforwarding.secret, in single quotes.
5.3 spigot.yml
Make sure settings.bungeecord is false. That setting is for BungeeCord's old, insecure forwarding and conflicts with Velocity's.
5.4 Start and check
Start the server. The start-up log should show no forwarding errors. Repeat 5.1–5.4 on every Paper back-end.
Test the connections
Do these tests before building anything else. Fixing forwarding later, after players have joined, is much harder.
- Join the Velocity address from your Minecraft client. You should land in the lobby (still an empty world for now).
- Type
/server skyblock. You should move to the Skyblock server with the same skin. Repeat foroneblockandchunklock, then/server lobby. - Try connecting directly to a back-end's address (for testing only). It must refuse you with a message like "This server requires you to connect with Velocity." If it lets you in, that server's forwarding isn't set up, and anyone could join it as anyone. Fix it before going further.
- In the Velocity console, run
glist all. It lists every server and who's on it.
Build the lobby
The lobby is the first thing every player sees. Keep it small, fast and focused on getting players into a game.
7.1 The lobby world
Choose one:
- A downloaded or commissioned lobby map. Stop the lobby server, delete the
worldfolder (andworld_nether,world_the_end) in Files, upload the map's folder and rename it toworld(or setlevel-nameto its name). Large maps upload more easily over SFTP. Upload a world - Build your own. Start with a flat or void world and build a small spawn: a central hub with one area or NPC per game mode.
Then set, in the lobby's server.properties:
| Setting | Value | Why |
|---|---|---|
view-distance |
6 |
The lobby is small; fewer chunks to send. |
simulation-distance |
4 |
Nothing needs to grow or move far away. |
max-players |
your network size | Every player passes through the lobby. |
spawn-protection |
0 |
WorldGuard handles protection. |
allow-nether |
false |
No Nether in a lobby. |
gamemode / force-gamemode |
adventure / true |
Players can't break or place blocks, and always arrive in adventure mode. |
7.2 Protect it with WorldGuard
Install WorldEdit and WorldGuard on the lobby (Minecraft Plugins), restart, then run these in game as an op (or in the console, adding -w world):
/rg flag __global__ pvp deny
/rg flag __global__ mob-spawning deny
/rg flag __global__ fall-damage deny
/rg flag __global__ item-drop deny
/rg flag __global__ block-break deny
/rg flag __global__ block-place deny
/rg flag __global__ time-lock 6000
/rg flag __global__ weather-lock clear
__global__ is WorldGuard's region for the whole world. Ops and staff with worldguard.region.bypass.world can still build. Check it worked: from a non-op account, try to break a block, hit another player and drop an item: all three should fail.
Falling into the void: put a floor of barrier blocks a few blocks below your build, or make sure players can't reach the edge. A player who dies in the void respawns at world spawn, so set it with /setworldspawn standing on your spawn point.
7.3 NPCs that send players to each server
We use FancyNpcs (free, maintained, packet-based so the NPCs cost almost nothing). Install it on the lobby, restart, then stand where the Skyblock NPC should be and run:
/npc create skyblock
/npc skin skyblock Notch
/npc displayname skyblock <gold><bold>SKYBLOCK</bold></gold>
/npc turn_to_player skyblock true
/npc action skyblock ANY_CLICK add send_to_server skyblock
/npc action skyblock ANY_CLICK add play_sound entity.experience_orb.pickup
/npc create skyblockmakes an NPC calledskyblockwhere you stand.skincopies a player's skin; use any player name, or a skin URL.send_to_server skyblockmust match the name invelocity.tomlexactly.- Triggers are
ANY_CLICK,LEFT_CLICKorRIGHT_CLICK.
Repeat for oneblock and chunklock. To move an NPC, stand in the new spot and run /npc move_here <name>. /npc list shows them all.
Check it worked: from a non-op account, click each NPC. You should move to that server. If nothing happens, check bungee-plugin-message-channel = true in velocity.toml and that the name matches.
7.4 A compass menu
A menu lets players switch from anywhere in the lobby. Install DeluxeMenus and PlaceholderAPI (DeluxeMenus needs it) on the lobby and restart.
In Files, open
plugins/DeluxeMenus/gui_menus/and create a filegames.yml:menu_title: '&8Choose a game' open_command: games size: 27 items: 'skyblock': material: GRASS_BLOCK slot: 11 display_name: '&a&lSkyblock' lore: - '&7Build your island in the sky.' - '&eClick to play' left_click_commands: - '[close]' - '[connect] skyblock' 'oneblock': material: OAK_LOG slot: 13 display_name: '&6&lOneBlock' lore: - '&7One block. Endless phases.' - '&eClick to play' left_click_commands: - '[close]' - '[connect] oneblock' 'chunklock': material: MAP slot: 15 display_name: '&b&lChunklock' lore: - '&7Unlock the world one chunk at a time.' - '&eClick to play' left_click_commands: - '[close]' - '[connect] chunklock'Open
plugins/DeluxeMenus/config.ymland register it undergui_menus::gui_menus: games: file: games.ymlRun
/dm reload, then/games. Check it worked: the menu opens and each item moves you to its server.
[connect] <server> is DeluxeMenus' send-to-server action and needs the same Velocity setting as the NPCs.
Giving players a compass that opens it: use a join-item plugin such as ItemJoin to give every player a compass in a fixed hotbar slot that runs the games command when used. Its wiki explains the item and command options. If you'd rather not add another plugin, a hologram or sign at spawn saying "Type /games" works too.
Walk-in portals: a portal plugin with proxy support, such as Advanced Portals, can send players to a server when they walk through a frame. See its docs for the portal tag that sets a proxy destination.
7.5 Holograms with player counts
Install FancyHolograms on the lobby. Above each NPC:
/hologram create text skyblock_info
/hologram edit skyblock_info setLine 1 <gold>Skyblock
/hologram edit skyblock_info addLine <gray>Players: %bungee_skyblock%
The %bungee_skyblock% placeholder comes from PlaceholderAPI's Bungee expansion: run /papi ecloud download Bungee, then /papi reload. It asks Velocity for player counts through the same plugin message channel. If it shows 0 or the raw text, check the expansion is installed and the server name matches.
7.6 Spawn behaviour
Install EssentialsX and EssentialsXSpawn on the lobby. Stand on your spawn point and run /setspawn, then in plugins/Essentials/config.yml set spawn-on-join: true so players always arrive at spawn, not where they logged out. Restart.
7.7 What not to put in the lobby
No economy, claims, survival or game-mode plugins. Fewer plugins means a lobby that starts in seconds and almost never breaks.
Set up each game-mode server
Now follow each mode's own guide on its own server, from its install step to its launch checklist:
- Skyblock: Skyblock guide. Decide island size and spacing before the first start: changing them later breaks islands.
- OneBlock: OneBlock guide. Check the Java version on Startup if AOneBlock won't load.
- Chunklock: Chunklock guide. Set a world border and pre-generate before players arrive. Pre-generate
On every game-mode server:
- Install LuckPerms (step 9) and CoreProtect. Give each server's CoreProtect its own database or table prefix; don't share CoreProtect between servers.
- Separate plugins and configs. Don't copy the Skyblock
pluginsfolder to OneBlock: each server gets only what its mode needs. - Give players a way back to the lobby. Players can type
/server lobby(Velocity grants/serverto everyone by default). For a friendlier/lobbyor/hubcommand, install a hub-command plugin on Velocity, or add a DeluxeMenus menu withopen_command: lobbyand a[connect] lobbyaction on each game server.
Chat, tab list and bans across the network
| What | Recommended | How |
|---|---|---|
| Chat | Per server for game-mode networks | Each mode keeps its own chat, which players of different modes usually prefer. Nothing to install. |
| Network-wide chat (optional) | A proxy-aware chat plugin | For example Carbon (Paper and Velocity) syncs across servers through Redis, NATS or RabbitMQ; ask us if you need one of those. Check any chat plugin you choose is still maintained: several older network chat plugins have been discontinued. |
| Tab list | TAB on Velocity | Shows every player on the network, grouped by server, with LuckPerms prefixes. For placeholders from back-end plugins, add TAB-Bridge on each back-end. |
| Bans and mutes | A proxy punishment plugin with MySQL | A ban on Velocity blocks the whole network. LiteBans (paid) and LibertyBans (free) both run on Velocity; check the plugin page lists your Velocity version. Give it its own database. |
| Staff chat | Your punishment or chat plugin's staff channel | Moderators on different servers can talk to each other. |
If you skip a proxy ban plugin, a ban with EssentialsX on Skyblock only blocks Skyblock; the player can still join the lobby and other modes.
Economy and inventories
- Keep economies separate. Use a separate economy on each game-mode server (EssentialsX's economy stores balances per server by default). Otherwise money from a mature Skyblock farm buys a head start in Chunklock, and one mode's inflation ruins the others.
- Share an economy only on purpose, for example a cosmetic currency or vote rewards. That needs an economy plugin that stores balances in MySQL and supports several servers; check its docs say so, and give it its own database.
- Inventories are per server. Items never travel between modes. Tell players this in the lobby. Inventory-sync plugins exist for servers running the same mode (Survival-1 and Survival-2); never sync between different modes.
Bedrock players and client versions
- ViaVersion on Velocity lets players on newer clients join back-ends running an older version. Add ViaBackwards for older clients. Install the Velocity versions on the proxy, not on the back-ends.
- Bedrock: Geyser on Velocity only, Floodgate on Velocity and every back-end, all using the same Floodgate key. Never run Geyser on a back-end. Bedrock crossplay
- Test with an old client, a new client and a Bedrock device before launch.
Back up every server
Each server needs its own backup schedule. Times are UTC; stagger them so they don't all run at once. Backup schedules
| Server | Backup every | Example cron (minute, hour) | Tasks |
|---|---|---|---|
| Skyblock | 6 hours | 0, */6 |
save-all, then Create Backup after 10 s |
| OneBlock | 6 hours | 15, */6 |
save-all, then Create Backup after 10 s |
| Chunklock | 6 hours | 30, */6 |
save-all, then Create Backup after 10 s |
| Lobby | Weekly, and before changes | 0, 8, day of week 1 |
Create Backup |
| Velocity | Weekly, and before changes | 30, 8, day of week 1 |
Create Backup |
For each: Schedules → Create Schedule, set the time, turn Only when Server is Online? off, Create, then Edit → Tasks → + to add the tasks. Run it once with Run now and check Backups.
Also lock a backup on every server before updating plugins or Minecraft versions, and download a copy of Velocity's velocity.toml and forwarding.secret: without them the network can't be rebuilt.
Restarts and maintenance order
Daily restarts
Restart game servers one at a time, so the network is never fully down. When a back-end restarts, Velocity moves its players to the lobby (try and failover), and they can go back once it's up.
| Server | Restart time (UTC) | Tasks |
|---|---|---|
| Skyblock | 0 9 * * * |
say Restarting in 1 minute, then Restart after 60 s |
| OneBlock | 5 9 * * * |
same |
| Chunklock | 10 9 * * * |
same |
| Lobby | 15 9 * * * |
same |
| Velocity | Weekly only, e.g. 30 9 * * 1 |
warning on each back-end, then Restart |
09:00 UTC is 5:00 am Eastern in summer. Restarting Velocity disconnects everyone, so do it rarely: weekly, or for updates. Most velocity.toml changes (adding a server, editing the MOTD) apply with velocity reload in the Velocity console, no restart needed.
Schedules shows each screen.
Start-up order after maintenance
- Back-ends first (lobby, then game servers), so they're ready to receive players.
- Velocity last.
If Velocity starts first, players who join are sent to a lobby that isn't up yet and get a connection error.
Performance and monitoring
- Profile each server separately. spark is built into Paper:
/spark tpsshows TPS and MSPT,/spark profiler start, wait a few minutes during busy play, then/spark profiler stopfor a report link. Fix lag - Velocity rarely lags. If everyone lags on every server at once, check Velocity's console for errors and its memory use. If only one mode lags, it's that back-end.
- Settings per game server (
server.properties):view-distance7–8 andsimulation-distance4–6 on Skyblock/OneBlock (islands are small, farms are the cost), and pre-generation plus a border on Chunklock. Lobby 6 and 4. - Paper's safe wins from Paper best practices apply to every back-end.
- Memory: watch each server's usage on its Console page graphs. Raise memory only on the server that needs it.
Running the network long term
Updating
- Lock a backup on every server you'll touch, and run
lp exportfor ranks. - Update Velocity first (newer Velocity supports newer clients and older back-ends), then its plugins.
- Update one back-end at a time. Change the version on Startup only after checking every plugin on that server supports the new version. Use the
plugins/update/folder for plugin updates. Updating plugins safely - Update LuckPerms on all servers to the same version close together: mixed LuckPerms versions on one database usually work, but staying in step avoids surprises.
- Test each server through Velocity before moving to the next.
Adding another game mode later
- Ask us for a new Paper server and rename it in Settings.
- Set its version on Startup, first start, EULA, stop.
- Do step 5 on it (forwarding secret,
online-mode=false, compression-1). - Add it to
[servers]invelocity.toml, thenvelocity reload. - Install LuckPerms with the shared database and a new
server:name. - Add an NPC, a menu item and a hologram in the lobby.
- Add backup and restart schedules, staggered from the others.
Removing a game mode
Remove its NPC, menu item and [servers] line first, velocity reload, then download a final backup before asking us to remove the server.
Moderation across servers
- CoreProtect on each game server:
/co inspectto check a block,/co rollback u:<player> t:1d r:50to undo grief on that server. - Proxy bans for anything serious, so the player is off the whole network.
- One staff team, one LuckPerms setup: permissions don't need to be redone per server.
Common problems
| Problem | Cause | Fix |
|---|---|---|
| Players can join a back-end directly | Forwarding not enabled on that server, or online-mode=true there with no Velocity setup. |
Redo step 5 on that server, and ask us to keep its port private. |
| "Unable to verify player details" or "Invalid forwarding secret" when switching | The secret on that back-end doesn't match forwarding.secret. |
Copy the secret again, paste it in single quotes in paper-global.yml, restart that server. |
| "This server requires you to connect with Velocity" when joining the network | [servers] points at the wrong address, or Velocity isn't using modern forwarding. |
Check addresses against each Network page and player-info-forwarding-mode = "modern". |
| NPC or menu does nothing | bungee-plugin-message-channel is false, the action is /server, or the name doesn't match. |
Set it to true and velocity reload; use send_to_server / [connect]; match names exactly. |
"Unknown command" when an NPC runs /server or /queue |
Those are proxy commands; the lobby doesn't have them. | Use the send-to-server action. For ajQueue, install the same ajQueue jar on the lobby too so it forwards /queue. |
| Players get kicked to the lobby every few minutes | A back-end is crashing or restarting. | Read that server's console and crash reports. |
| Ranks differ between servers | That server's LuckPerms isn't on the database, or the change hasn't synced. | Check its console says MariaDB; set messaging-service: sql; run lp sync. |
| A per-server permission doesn't apply | The server: name in that server's LuckPerms config doesn't match the context. |
Run lp info on that server to see its server name, and use that in server=. |
| Wrong skins, or UUIDs change between servers | Forwarding isn't working on that server (offline-mode UUIDs). | Fix step 5; check lp user <name> info shows the real UUID. |
Velocity won't start after editing velocity.toml |
A typo (missing quote or bracket), or a forced host pointing at a server that isn't in [servers]. |
Read the first error in the console; restore the file from a backup if unsure. |
| Players on new clients can't join one server | That back-end runs an older version. | ViaVersion (+ ViaBackwards) on Velocity, kept up to date. |
| Player counts in holograms show 0 | Bungee expansion missing, enable-status=false, or the name doesn't match. |
/papi ecloud download Bungee, /papi reload, check names. |
| Bedrock players can't join | Geyser on a back-end, or the Floodgate key differs. | Geyser on Velocity only; copy the same Floodgate key everywhere. |
| Items lost moving between modes | Inventories are per server by design. | Tell players; never sync inventories between different modes. |
| Everyone disconnected at once | Velocity restarted or crashed. | Check Velocity's console; restart Velocity rarely and only after warnings. |
Launch checklist
- [ ] Every server renamed in Settings, with an exact Minecraft version on Startup.
- [ ]
velocity.toml:online-mode = true,player-info-forwarding-mode = "modern", every server in[servers],try = ["lobby"], example forced hosts removed,bungee-plugin-message-channel = true. - [ ]
forwarding.secretsaved somewhere safe, and pasted on every back-end. - [ ] Every back-end:
online-mode=false,network-compression-threshold=-1,proxies.velocity.enabled: true,settings.bungeecord: false. - [ ] Direct joins to every back-end refused (tested).
- [ ] Lobby protected with WorldGuard, NPCs and
/gamesmenu tested from a non-op account. - [ ] Each game-mode server finished using its own guide and launch checklist.
- [ ] LuckPerms on every server and Velocity, one database, unique
server:names; a test group visible everywhere. - [ ] Staff groups created; only the owner is op.
- [ ] Proxy-wide bans set up (or a decision to moderate per server).
- [ ] Backup schedule on every server, staggered, with a backup visible the next day;
lp exportdone. - [ ] Daily restarts staggered; Velocity restarts weekly only.
- [ ] ViaVersion on Velocity; Bedrock tested if you use Geyser.
- [ ]
/spark tpschecked on every server during the first busy hour.

