Skip to content

Minecraft Lobby

PaperMC-based lobby server that sits alongside the Fabric survival backend in the KBVE MC stack. It’s the first server new players land on when they connect, and the fallback when the Fabric backend disconnects unexpectedly — instead of getting kicked, players get moved here until Fabric comes back.

The world is a vanilla superflat preset (bedrock + 2 dirt + grass, plains biome, no structures, no mob spawning) with DIFFICULTY=peaceful so there’s zero combat. Nether and End dimensions are disabled (ALLOW_NETHER=false, ALLOW_END=false) — portals stay inert and /execute in commands targeting those dimensions fail, keeping all activity on the overworld. No custom spawn structures are baked in — admins build with WorldEdit after first boot, then lock the spawn point in with /setspawn.

PluginPurpose
LuckPermsCross-server permission sync via the pluginmsg channel (same wire format as Fabric + Velocity).
EssentialsXCore /sethome, /tpa, /back, kit system. Required base dependency for every EssentialsX addon below.
EssentialsX-Spawn/spawn, /setspawn, spawn-on-join. Separate addon JAR — the /spawn command lives here, not in the core EssentialsX jar.
EssentialsXAntiBuildBlocks build/break/interact for non-permissioned players — grief-proofs the lobby by default.
WorldEditAdmin building tool; same version line as Fabric for consistency.
AdvancedPortalsPhysical portal regions that fire proxy commands on player entry. Lets us place decorative portals that teleport players to other backends via the Velocity command plugin.
itzg/minecraft-server:java25
└─► TYPE=PAPER, VERSION=1.21.11
└─► Superflat peaceful world (LEVEL_TYPE=minecraft:flat)
└─► Paper native Velocity forwarding (paper-global.yml secret)
└─► Kubernetes Deployment (1 replica, Recreate strategy)
└─► ClusterIP Service: mc-lobby-backend
└─► Registered with Velocity as `lobby`

The Velocity proxy (see mc-velocity) has the lobby as its default try target:

[servers]
lobby = "mc-lobby-backend.arc-runners.svc.cluster.local:25565"
mc = "mc-fabric-backend.arc-runners.svc.cluster.local:25565"
try = ["lobby", "mc"]

Combined with failover-on-unexpected-server-disconnect = true in the Velocity advanced section, this means players on mc who get disconnected (fleet restart, pod recycle, Fabric crash) are automatically sent back to the lobby instead of getting kicked to their client disconnect screen.