Cross System Bridge - SocketSVC Docs
SocketSVC Docs

Cross System Bridge

Let Simple Voice Chat and SocketSVC players on one Paper server hear each other in proximity voice

Without the bridge, a server with both voice mods is two rooms: Simple Voice Chat players hear each other, SocketSVC players hear each other, and neither hears the other. The bridge is a separate Paper plugin that joins the two for proximity voice — a player on either mod hears a player on the other at the right place, with the right distance falloff, under the same rules that already apply to everybody else.

Experimental: this can cause problems on your server

The bridge is new and has not yet been run on a live server. It joins two voice systems that were never designed to work together, so expect rough edges: missing or doubled audio, players heard in the wrong place, or trouble in Simple Voice Chat itself while it is installed. Try it on a test server before your main one.

If something goes wrong, report it on the SocketSVC Discord, not to Simple Voice Chat or any other project. Remove the bridge jar first and check whether the problem goes away; if it does, it is ours to fix, and nobody else's support can help with it.

What it carries, and what it does not

Bridged
Proximity voice, both directionsYes
Simple Voice Chat whisperingYes, at a shorter range (see whisper-scale)
Voice groups, on either sideNo — a player in a group is not bridged, unless it is an open group
Soundboard and instrument audioNo
Plasmo VoiceNot yet; it is the next phase
Fabric, NeoForge and Forge serversNo — the bridge is a Paper plugin, and Simple Voice Chat's server API is Paper-shaped
Across backends behind a proxyNo — like proximity voice itself, the bridge works within one server

A player who runs both mods is never bridged, in either direction. They would otherwise be heard twice by everybody around them. The bridge names them once in the server log so you know why.

Installing

You need Paper (or Purpur or Folia) with SocketSVC and Simple Voice Chat already installed.

  1. Put socketsvc-bridge-paper-<version>.jar in plugins/, next to the SocketSVC jar. Use the same version as SocketSVC.

  2. To bridge both ways, turn on the microphone tap in SocketSVC's config:

    plugins/SocketSVC/config.yml
    microphone-tap:
      enabled: true
  3. Restart the server.

The log says which way the bridge is running:

[SocketSVCBridge] Bridging both ways: Simple Voice Chat <-> SocketSVC

Why the tap switch

Simple Voice Chat → SocketSVC needs nothing but the bridge. SocketSVC → Simple Voice Chat hands SocketSVC players' voices to another plugin, which is exactly what the microphone tap switch exists to keep off until you decide otherwise. With the switch off the bridge still starts, runs one way only, and says so in the log.

If Simple Voice Chat is not installed, the bridge logs a warning and disables itself; it changes nothing about SocketSVC.

Who is heard

Everything that decides who hears whom on SocketSVC's side applies to a bridged player too — the bridge must not become the way around it.

RuleApplies to the bridge as
socketsvc.bridgeWhose voice may cross, for players on either mod. A Simple Voice Chat player holds no SocketSVC session for socketsvc.speak to be checked against, so this node governs them instead
MutesA player muted in SocketSVC is not bridged — including a Simple Voice Chat player you muted with /ssvc-server mute
hearing-range and fade-start-distanceHow far a Simple Voice Chat talker carries for SocketSVC listeners
spectator-interactionSpectators reach non-spectators across the bridge only when this is on
visible-players-onlyOnly listeners who can see the talker hear them
Voice groupsA SocketSVC player in an isolated group hears nobody across the bridge; one in a normal or isolated group is not heard across it

These are read from SocketSVC's own config, so /ssvc-server reload changes the bridge too.

Simple Voice Chat players hear bridged SocketSVC players at Simple Voice Chat's own voice distance, positioned on the talker's player like any Simple Voice Chat voice, and under a separate SocketSVC volume slider in Simple Voice Chat's settings.

SocketSVC players find each bridged Simple Voice Chat player as a named speaker at the top of the volume page. The volume they set is kept per player, like any speaker's.

Configuration

plugins/SocketSVCBridge/config.yml
max-channels: 16
idle-close-seconds: 10
whisper-scale: 0.5
KeyDefaultMeaning
max-channels16Simple Voice Chat players heard by SocketSVC at the same time, 1–32. Each is one spatial channel, and SocketSVC allows 32 across every plugin — leave room for the others
idle-close-seconds10A Simple Voice Chat talker's channel closes after this long without speaking, 1–600
whisper-scale0.5A Simple Voice Chat whisper carries this fraction of hearing-range, above 0 and at most 1

An out-of-range value is replaced by its default with a warning in the log. The bridge reads this file at startup; restart it to apply a change.

Limits worth knowing

  • One range per talker. Per-world and per-region range overrides and SocketSVC's whisper and shout do not change how far a bridged voice carries.
  • The first moment is lost. When a Simple Voice Chat player starts talking after being quiet for idle-close-seconds, the first tick — one or two 20 ms frames — is dropped while their channel opens.
  • More talkers than max-channels are not heard by SocketSVC players until one of the others falls quiet. The bridge warns in the log, at most once a minute.
  • Each player should use one voice mod here. A player with both client mods connects with both on a bridge server, is never bridged (see above), and has both mods reacting to the same keys; see Running alongside another voice chat mod. The bridge is server-side: each player installs one voice mod.