ServerProperties.json
Main server config file: config/ServerProperties.json.
Full example
{
"TelemetryEnabled": true,
"TelemetryToken": "replace-with-stable-random-token",
"VoiceCraftConfig": {
"Language": "en-US",
"Port": 9050,
"MaxClients": 100,
"Motd": "VoiceCraft Proximity Chat!",
"PositioningType": 0,
"EnableVisibilityDisplay": true
},
"McWssConfig": {
"Enabled": false,
"LoginToken": "replace-with-secure-guid",
"Hostname": "ws://127.0.0.1:9051/",
"MaxClients": 1,
"MaxTimeoutMs": 10000,
"DataTunnelCommand": "voicecraft:data_tunnel",
"CommandsPerTick": 3,
"MaxByteLengthPerCommand": 300,
"DisabledPacketTypes": []
},
"McHttpConfig": {
"Enabled": true,
"LoginToken": "replace-with-secure-guid",
"Hostname": "http://127.0.0.1:9050/",
"MaxClients": 1,
"MaxTimeoutMs": 10000,
"DisabledPacketTypes": []
},
"McTcpConfig": {
"Enabled": false,
"LoginToken": "replace-with-secure-guid",
"Hostname": "127.0.0.1",
"Port": 9050,
"MaxClients": 1,
"MaxTimeoutMs": 10000,
"DisabledPacketTypes": []
},
"DefaultAudioEffectsConfig": {
"1": { "EffectType": 1 },
"2": { "WetDry": 1, "MinRange": 0, "MaxRange": 30, "EffectType": 2 },
"4": { "WetDry": 1, "Delay": 0.5, "Range": 30, "EffectType": 4 },
"8": { "WetDry": 1, "EffectType": 6 }
}
}
Telemetry
TelemetryEnabled: enables anonymous startup, heartbeat, and crash diagnostics fromVoiceCraft.Server.TelemetryToken: stable pseudonymous fingerprint used to group telemetry events from one server installation.
If you do not want telemetry, set:
{
"TelemetryEnabled": false
}
VoiceCraftConfig
Language: server log language.Port: UDP port for the core VoiceCraft server.MaxClients: maximum VoiceCraft client connections.Motd: text returned by ping / info responses.PositioningType: positioning mode:0 = Server1 = Client
EnableVisibilityDisplay: whether visibility indicators are sent to clients.
McWssConfig
Used for websocket / command-tunnel Bedrock flows.
Enabled: enable or disable McWss.LoginToken: shared auth token, typically used with/voicecraft:vcconnect <token>.Hostname: websocket host such asws://0.0.0.0:9051/.MaxClients: maximum McWss clients.MaxTimeoutMs: inactivity timeout.DataTunnelCommand: command name used for the data tunnel, usuallyvoicecraft:data_tunnel.CommandsPerTick: how many command packets are forwarded per tick.MaxByteLengthPerCommand: payload budget (bytes) per command invocation.DisabledPacketTypes: packet types blocked on this transport.
McHttpConfig
Used for Bedrock Dedicated Server and HTTP-based integrations.
EnabledLoginTokenHostnameMaxClientsMaxTimeoutMsDisabledPacketTypes
Typical BDS binding:
{
"Enabled": true,
"LoginToken": "replace-with-token",
"Hostname": "http://0.0.0.0:9050/",
"MaxClients": 10,
"MaxTimeoutMs": 10000,
"DisabledPacketTypes": []
}
McTcpConfig
Used by Java-side bridges, especially GeyserVoice.
Enabled: enable or disable McTcp.LoginToken: shared auth token for the TCP bridge.Hostname: bind hostname, for example127.0.0.1or0.0.0.0.Port: TCP listen port.MaxClients: maximum transport clients.MaxTimeoutMs: inactivity timeout.DisabledPacketTypes: packet types blocked on this transport.
Important differences compared to McHttp / McWss:
Hostnameis a plain host, not a URIPortis a separate field- this is the transport most relevant to
GeyserVoice
DefaultAudioEffectsConfig
Dictionary key is a ushort bitmask, value is an effect JSON object.
Default matrix:
1:Visibility2:Proximity4:ProximityEcho8:ProximityMuffle
You can override or extend the dictionary to change default effect behavior for new entities.
DisabledPacketTypes
Each transport supports DisabledPacketTypes.
Use this carefully:
- it is intended for debugging, compatibility experiments, or emergency mitigation
- disabling core packets can break login, entity sync, or audio delivery
- do not change this in production unless you understand the packet flow
Practical production patterns
Bedrock Dedicated Server
McHttpConfig.Enabled = trueMcWssConfig.Enabled = falseMcTcpConfig.Enabled = falseunless you also run Java-side bridges
Local world / singleplayer
McWssConfig.Enabled = trueMcHttpConfig.Enabled = falseor optional
GeyserVoice / Java bridge
McTcpConfig.Enabled = trueMcHttpConfig.Enabled = falseor optionalMcWssConfig.Enabled = falseunless also needed elsewhere
Important notes
- always replace generated
LoginTokenvalues - with
Hostname: http://0.0.0.0:9050/, the HTTP listener binds to a wildcard address - with
McTcpConfig.Hostname = 0.0.0.0, the TCP bridge becomes remotely reachable - keep
PositioningTypealigned with the client configuration
See also: