Chonkzilla-SimpleLobby icon

SimpleLobby

Host-side lobby tools split out of SimpleSell: whitelist, bans, lobby guard, RPC firewall, late join, /lobby, and a scrap guard against client mods that post interior scrap counts. Written by Claude & Chonk.

Last updated 10 hours ago
Total downloads 36
Total rating 0 
Categories AI Generated Tweaks & Quality Of Life BepInEx Server-side Mods Tools
Dependency string Chonkzilla-SimpleLobby-0.1.1
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

SimpleLobby

Written by Claude & Chonk

Your Lethal Company v81 lobby: whitelist, bans, the lobby guard, a host-side firewall against forged game requests, late join, the crew list fix, /lobby, and a scrap guard against client mods that report the interior's scrap to the lobby.

Host only. Only the host needs it. Everyone else can join with no mods at all, and vanilla players never notice it. A whitelisted friend who also has it gets a couple of extras (below).

New in 0.1.0: split out of SimpleSell. All of this used to be part of SimpleSell (up to 0.1.39). It is the same code with the same settings; SimpleSell 0.1.40 is selling, buying and organizing only. Your settings come across by themselves (see Coming from SimpleSell).

Commands

Command What it does
/players Lists players, flagging anyone running networked mods
/kick <name> Kicks a player
/guard warn|kick Whether flagged players get a warning or an automatic kick
/guard scrap on|off|log|warn|kick The scrap guard (below)
/ban <name or steam id> Bans permanently by Steam ID, so a name change doesn't get around it. A name works even after they leave (from the join log), and a numeric profile link works too
/unban <name or steam id> Lifts a ban
/bans Lists bans
/whitelist add|remove <name> Lets a trusted friend run some commands too (see below)
/lobby status Tag, visibility, and what Steam reports about whether someone can join
/lobby public|friends|private Changes who can find the lobby
/lobby name <name> Renames the lobby
/lobby hide|show Hides or shows the modded tag in the lobby browser
/lobby late on|off Lets someone join after the game has started, while you're in orbit
/lobby invite Opens Steam's invite window for the lobby (works after the game has started)

Whitelisted friends

Whitelisted players can run stock, time, overtime (/ot), gear, organize, merge, buy and credits from normal chat, with no mods on their side. You can change that list with WhitelistedCommands in the config. Those are SimpleSell's commands: the whitelist lives in SimpleLobby and SimpleSell asks it, so one /whitelist covers both (and SimpleHQ's bank). /buy works for them before the game has started too, and spends the ship's credits.

If they also have SimpleLobby installed, whitelisted players can:

  • pull the lever to start the game before you've started it this session. Normally only the host can do that. The host still checks they're at the lever, in the ship, in orbit.
  • move equipment before the game has started: anything that isn't scrap, plus your gear list (e.g. the shotgun). Scrap stays locked until the first landing, as in vanilla.

The host gets the same pre-start equipment allowance. Without SimpleLobby, the friend's own game keeps the lever and pre-start pick-ups locked; their commands still work. /whitelist add|remove applies at once to someone who's connected.

During a SimpleHQ tournament every player may pick things up before the lever (SimpleHQ allows it so teams can stage their kit), and SimpleLobby doesn't refuse those pick-ups. The lever rule is unchanged.

If their / commands don't work, another chat mod on their machine is probably grabbing them. They can type ! instead: !stock, !merge.

Late join

Off by default, and off again every time you start the game. Type /lobby late on and friends can join your running game whenever the ship is in orbit. The lobby closes when you pull the lever and opens again when you're back in orbit. Bans, kicks and version checks still apply. Never while SimpleHQ tournament mode is on.

The game drops its Steam lobby the first time you land. If that has happened, SimpleLobby opens a new Steam lobby for the game you're already hosting: same name, same privacy and same version. Friends can find it in the lobby list (public lobbies), use Join Game on your Steam profile, or be invited with /lobby invite, which opens Steam's invite window. The game's own invite button is greyed out once the game has started. To turn this off, set [Lobby] ReopenSteamLobby = false.

The joiner arrives in the ship, alive, with the current credits, quota, deadline and moon. If they have SimpleLobby installed, they can pick things up and pull the lever right away. Without it, the game won't let them pick up items until the first landing. Joining while landed isn't possible: the joiner's game would have no moon interior. Someone who tries then is told to wait until the ship is back in orbit.

A late joiner can show up as "unknown" to other players, and see them as "unknown" too, unless they're Steam friends. You as the host always see real names. Players who have SimpleOptimize see real names as well.

Safer joins (0.1.37). Two people joining at the same moment can no longer both get the last slot and crash the lobby for everyone. Someone who still gets through with no slot left is turned away with "Lobby is full!", and only them. A joiner whose connection gets stuck (the game can't send them the world, or they take more than 45 s) is disconnected so they can try again, instead of being retried forever. Config [Lobby] ReserveJoinSlots, RefuseJoinWithoutSlot, DropStuckJoiners, StuckJoinSeconds, RepairJoinSync (all on). These protect every join, not only late joins.

The pause menu crew list only shows players who are really in the game. Without SimpleLobby it keeps the names of strangers who tried to join a public lobby and were turned away.

Firewall

Cheat menus don't need networked mods: they send the game's own requests directly. The host now checks who sent each one. Landing needs a lever pull from that player at the lever. Store items, unlockables, the cruiser and routes must be paid for at the terminal. Furniture moves and chat must come from the player they claim to be. Debug commands from other players are refused.

A request no unmodded game can send (a faked player, a debug command, a landing when nobody pulled the lever) gets the sender banned automatically by their real Steam ID, the same as /ban. Whitelisted players are never auto-banned. Price mismatches and spam are only refused and logged.

Items too: other players can only drop, place or deposit an item they're actually holding, pick up items within reach, and put them down near themselves, so client sell and teleport mods can't move anything. An item only goes on the sell desk if the desk accepted it. Anything stuck there anyway goes back on the ship by itself ([Firewall] DeskJanitor). Belt bags follow the game's own rule (non-scrap items only, 15 at most, into the bag in your hand); scrap sent into a bag anyway counts as forged, and anything a bag shouldn't hold is dropped back out for everyone ([Firewall] BeltBagVanillaRule). The first forbidden bag attempt only gets a private warning; repeated attempts ban ([Firewall] BeltBagStrikes, default 3). Lobby Guard can message a single player privately, which also works for players without mods. The host's chat box takes up to [Lobby] HostChatLimit characters (default 120), so longer /lobby name names fit. The game's lobby list shows only the first 40.

Look for [RpcFirewall] in the BepInEx log. Settings are under [Firewall] (BanForgedRpc, BanLeverlessStart, LogAllowed, ...).

Scrap guard

Mods like GeneralImprovements (ScrapLeft monitor), ShipLootPlus, DetailedScan or ScanFix tell their player how much scrap is left inside. The host can't stop those: every player's game already has every scrap item (the vanilla terminal scan counts them too), and those mods only read that and show it on their own screen. Hiding the scrap values isn't an option either: the one message that sends them also decides each item's look and the end-of-day total, so vanilla players would see the wrong grade and wrong models.

What the host can stop is a readout that goes through the host, and that's what the scrap guard does:

  • System chat lines from other players are limited to the three a vanilla game sends ("X joined the ship.", "X was left behind.", "[playerNumN] started the ship."). Anything else, like abu's AutoScan posting Inside: 23 ≈1450 to everyone, never reaches anyone. ([ScrapGuard] VanillaSystemLinesOnly)
  • Chat that's only a scrap readout (12 1450, what AutoTerminalScanClassic posts in its Everyone mode) isn't relayed. ([ScrapGuard] BlockScrapReadoutChat)
  • Mods that ask the host first, like LCBridgeOverlay, get no answer and stay off; the guard names them.

Each catch is reported to you privately (Action = Warn, default), only logged (Log), or kicked (Kick). Whitelisted players are never kicked by the scrap guard; their scrap readouts are still held back. A typed "12 1450" is never a kick on its own. Toggle in game with /guard scrap on|off|log|warn|kick. The host's own lines (every suite plugin's, including SimpleSell's /briefing live) are never checked.

Mod (downloads, Oct 2026) How it gets its numbers Stopped?
GeneralImprovements (3.2M) ScrapLeft ship monitor (off by default); counts items on that player's machine, approximate value by default No: own screen only
GoodItemScan (692k) Totals the items its own scan reaches No: own screen only
DetailedScan (675k), ScanFix (488k), Better Terminal Scanner (19k) Terminal command on that player's machine No: own screen only
ShipLootPlus (567k) Moon loot value on its own display No: own screen only
QualityCompany (70k) Scan module on that player's machine; its networked parts need the host to run it Scan: no. Network parts: already dead without the host
BetterTotalScrap (78k) End-of-day screen No (and it's after the day)
abu AutoScan (5.6k) Posts the count to everyone as a system line; off on clients by default (HostOnly) Yes, the line is blocked and reported
AutoTerminalScanClassic (3.4k) Posts "count value" in chat in Everyone mode (default: only to self) Yes in Everyone mode, blocked and reported
ScrapCounter (0.9k) HUD on that player's screen No: own screen only
LCBridgeOverlay (1.2k) Asks the host for permission first Already off without the host; the guard names it

Coming from SimpleSell

The first time SimpleLobby runs it copies, from local.simplesell.cfg, every [Lobby] and [Firewall] setting and [General] CommandPrefix into local.simplelobby.cfg: whitelist, bans, guard mode, WhitelistedCommands, the alt prefix, the host chat limit, every firewall switch. Same section and key names. SimpleSell.playerlog.txt (the join log /ban uses for people who already left) is copied to SimpleLobby.playerlog.txt. SimpleSell's own file is only read; its old lines stay there, so going back to SimpleSell 0.1.39 still has them. [Migration] ImportedFromSimpleSell = true marks it done.

DeskGuardRange exists in both: SimpleLobby's item firewall uses its copy; SimpleSell's desk-beam check (used when the item firewall is off) uses [Selling] DeskGuardRange. AutoReturnBeamedItems and /return stayed in SimpleSell.

SimpleSell 0.1.39 or older still contains all of this. If one of those is installed, SimpleLobby does nothing at all (no patches) and says so once in chat, so nothing runs twice. Use SimpleSell 0.1.40+.

Without SimpleSell, SimpleLobby works on its own. The pre-start equipment allowance then covers non-scrap items only (SimpleSell's gear list adds scrap like the shotgun), and desk refusals go back to the ship through the desk janitor instead of /return.

Defaults worth knowing

  • The lobby guard flags anyone running networked mods. It only warns unless you switch it to kick with /guard. In a lobby where people run other mods, expect it to flag them.
  • The modded tag is hidden by default (HideLobbyModTag = true), so your lobby looks vanilla in the browser. Use /lobby show to turn that off.
  • Late join is off at every launch. /lobby late on when someone needs it.
  • The scrap guard is on, in warn mode.

Everything is configurable in local.simplelobby.cfg.

Install

Drop SimpleLobby.dll into BepInEx/plugins, or install with a mod manager. Requires BepInEx 5.4.2100. Works with or without SimpleSell (0.1.40 or newer).