VoiceCraft
Ecosystem

Integration Recipes

These are practical deployment patterns for different server types.

Integration Recipes

These are practical deployment patterns for different server types.

Stack:

  • VoiceCraft.Server
  • VoiceCraft.Addon.Core.McHttp
  • VoiceCraft clients for players

Steps:

  1. Deploy VoiceCraft.Server.
  2. Keep McHttpConfig.Enabled = true in ServerProperties.json.
  3. Ensure BDS can reach McHttpConfig.Hostname.
  4. Install Core.McHttp packs in BDS.
  5. Run voicecraft:vcconnect <hostname> <token>.
  6. Validate player binding with voicecraft:vcbind <key>.

Scenario B: Local/singleplayer Bedrock world

Stack:

  • local VoiceCraft client (with McWss)
  • VoiceCraft.Addon.Core.McWss

Steps:

  1. Enable McWss in ServerProperties.json.
  2. Ensure DataTunnelCommand = "voicecraft:data_tunnel".
  3. Install Core.McWss in world.
  4. Run voicecraft:vcconnect <token> in world.

Scenario C: Java + Geyser/Floodgate network

Stack:

  • VoiceCraft.Server
  • GeyserVoice on Velocity/Bungee
  • GeyserVoice on backend Paper/Folia

Steps:

  1. Configure host/port/server-key on proxy.
  2. Set server-behind-proxy: true on backend Paper.
  3. Reload plugin with /voice reload.
  4. Validate bind flow and position forwarding.

Minimal production config fragment

{
  "VoiceCraftConfig": {
    "Port": 9050,
    "MaxClients": 250,
    "PositioningType": 0
  },
  "McHttpConfig": {
    "Enabled": true,
    "LoginToken": "replace-with-strong-token",
    "Hostname": "http://0.0.0.0:9050/",
    "MaxClients": 10
  },
  "McWssConfig": {
    "Enabled": false,
    "LoginToken": "replace-with-strong-token",
    "Hostname": "ws://0.0.0.0:9051/",
    "DataTunnelCommand": "voicecraft:data_tunnel"
  }
}

Troubleshooting flow

  1. Verify LoginToken values and vcconnect command arguments.
  2. Validate network path and open ports between nodes.
  3. For proxy networks, verify backend server-behind-proxy.
  4. For unstable McWss, reduce load and check command/payload limits.
  5. As a last resort, temporarily disable specific packet types in DisabledPacketTypes (carefully).
Copyright © 2026