LAN and singleplayer - SocketSVC Docs
SocketSVC Docs

LAN and singleplayer

Hosting voice chat from your own game when you open a world to LAN — no server plugin required

這一頁還沒有翻譯,以下顯示英文原文。

The SocketSVC client can host voice chat by itself. When you open a singleplayer world to LAN, your game starts a small built-in voice server for that session, and everyone who joins with the SocketSVC client can talk. Nobody has to run a Paper plugin or a server mod.

Plain singleplayer has no voice

Nothing starts while you are playing alone. The built-in voice server only starts at the moment the world is actually published to LAN — there is nobody to talk to before that.

What happens when you open to LAN

You publish the world

Open the pause menu and use Open to LAN as usual. Essential Mod's world hosting runs the same integrated server and is expected to work the same way, though that path has not been separately verified in the code.

The voice server starts

The client starts a WebSocket voice listener bound to all network interfaces on an operating-system-assigned (ephemeral) port. It is deliberately not the same port as the game's own LAN port, it is different every session, and it is not part of Minecraft's LAN discovery broadcast — nothing needs to know it in advance.

Everyone in the world gets a handshake

Each player is sent a ws://<address>:<port> URL plus a one-time token on the socketsvc:handshake channel — the same handshake format the Paper plugin uses, so the client side needs no special handling. Players who were already in the world when you opened it to LAN are handshaken too, not just people who join afterwards.

The address each player receives is the local address their own Minecraft connection arrived on, so tunnels and virtual network adapters (for example Essential Mod's) work without any extra configuration. Your own connection is an in-memory pipe with no real socket address, so the host always gets 127.0.0.1.

Clients connect and voice works

Each token is a random one-time value that expires after 30 seconds and is consumed when the client opens the voice WebSocket. A connection with a missing, reused or expired token is rejected.

What guests need

Required?
The SocketSVC client modYes — for their Minecraft version, matching the loader they play on
The same loader as the hostNo. Host and guests can mix Fabric/Quilt, NeoForge and Forge freely
Fabric APIOnly for guests on Fabric/Quilt, as always
Any server plugin or server modNo — that is the whole point of LAN hosting

See Installation for picking the right JAR. Players without SocketSVC can still join and play the world normally; they simply are not part of voice chat.

Proximity voice

LAN voice is proximity voice, the same as on a real server: players are heard by distance, fade out towards the edge of the range, and are only heard by people in the same dimension. The relay is the very same one the Paper plugin and the server mods run.

The host's settings decide for everyone in the world, just as a dedicated server's config does — guests' own settings are not consulted. Change them under Advanced → LAN hosting; a change is applied to a running LAN session immediately, no reopening needed.

SettingDefaultEffect
Proximity voiceOnOff brings back the original "party line": everyone hears everyone at full volume, wherever they are
Hearing range48 blocksWhere a voice falls silent
Fade start distance0 blocksWhere it starts fading; 0 fades across the whole range

Whisper and shout work on LAN too, for anyone who has bound their keys: a whisper carries a sixth of the hearing range and a shout twice it, so they scale with whatever range you pick.

Changed in this version

LAN voice used to be a party line where everyone heard everyone at full volume. It is proximity voice now. If you preferred the old way, switch off Proximity voice under Advanced → LAN hosting.

How LAN voice differs from a real server

Paper plugin / server modBuilt-in LAN server
Distance-based volumeYes, with configurable range and fadeYes — set by the host, see Proximity voice
Different worlds/dimensions separatedYesYes (not in party-line mode)
Whisper and shoutIf the server enables themYes, always
Spectators heard only by spectatorsBy default, configurableYes
visible-players-only, per-world ranges, regionsYesNo
Voice groupsIf the server enables themNo
Permission nodes (socketsvc.speak, …)Yes, see PermissionsNo — every connected player may speak, listen and use the soundboard
SoundboardYes, if enabledYes, always enabled
Connected-player list and per-player volumeYesYes
Spatial audio API and speakersYesNo — the integrated server has no plugin support
Admin commands (/ssvc-server …) and a config fileYesNo
Encryptionwss:// via a reverse proxyPlain ws:// only

Trust your network

LAN voice is unencrypted ws:// and the listener is bound to every interface. Treat it like the LAN world itself: fine on a home or LAN-party network, not something to expose to the open internet.

When people leave, and when you close the world

  • A guest quits: their voice connection is closed and any unused token of theirs is revoked, once the server's player list confirms they are really gone.
  • You close the world or stop the server: the voice server shuts down, all pending tokens are discarded and every voice connection closes. Guests lose the Minecraft connection at the same moment anyway.
  • You open to LAN again: a fresh voice server starts, on a new port, with new tokens. Any previous one is stopped first.

Turning it off

Switch off Host voice chat on LAN under Advanced → LAN hosting. It is read at the moment you open a world to LAN, so it applies from the next time you do.

The same settings are stored in the client config file, config/socketsvc.json in your game directory:

FieldDefaultEffect
lanVoiceHostingtrueWhen false, opening a world to LAN does not start the built-in voice server
lanProximityVoicetrueWhen false, everyone hears everyone at full volume (the original party line)
lanHearingRange48Blocks at which a voice falls silent, 8–256
lanFadeStartDistance0Blocks at which it starts fading; must be below the hearing range

Edit the file with the game closed: the client rewrites socketsvc.json whenever a settings screen is closed, which would overwrite your change. See Config file for the rest of that file.

Checking that it worked

The client log (logs/latest.log) records the whole sequence, which is the quickest way to confirm what happened:

World opened to LAN; SocketSVC LAN voice hosting starting
LAN voice: proximity, heard up to 48 blocks, fading from 0
LAN voice server listening on port 54321
Sending LAN voice handshake to Steve -> ws://192.168.1.20:54321

If hosting is switched off you get ... LAN voice hosting disabled (lanVoiceHosting=false) instead. Turn on Advanced → Diagnostics → Verbose logging for the full connection trace, and see Troubleshooting for /ssvc status and the usual audio problems.