GeyserVoice (Java / Geyser Bridge)
Repository: AvionBlock/GeyserVoice
GeyserVoice connects Java-side infrastructure to VoiceCraft.Server through the McTcp transport.
It supports:
- direct Paper / Folia deployment
- Velocity proxy deployment
- BungeeCord proxy deployment
- mixed proxy + backend topologies
What GeyserVoice does
GeyserVoice bridges player state from Java-side servers into VoiceCraft:
- player lifecycle
- position / world snapshots
- bind flow
- proxy relaying for multi-server networks
It is not just a simple packet forwarder. In direct Paper mode it can also manage a local VoiceCraft runtime.
Very important: GeyserVoice can run VoiceCraft under the hood
On direct Paper installations, the plugin can automatically:
- download the VoiceCraft runtime
- install it into a configured directory
- start the process
- wait until it becomes ready
- optionally stop it when the plugin disables
This behavior is controlled through the config.voicecraft.* block.
That makes GeyserVoice suitable both for:
- using an already-managed external
VoiceCraft.Server - letting the plugin bootstrap and run VoiceCraft for you
Supported plugin platforms
From current source code:
- Paper / Folia
- Velocity
- BungeeCord
Runtime paths
Current supported paths:
Paper -> McTcp -> VoiceCraftPaper -> Proxy relay -> McTcp -> VoiceCraft
config.yml layout
Current Paper config structure:
config.debug
Enable plugin debug mode.
config.lang
Plugin language, for example system.
config.auto-reconnect
Whether the plugin should reconnect automatically.
config.proxy.enabled
Whether the current Paper-side node is operating behind a proxy-managed relay.
config.voicecraft.*
Connection and runtime-management block:
hostportlogin-tokenauto-startshutdown-on-disableready-timeout-msinstall-directory
Meaning:
host/port/login-tokentargetVoiceCraft.Server/McTcpauto-startlet the plugin start the VoiceCraft runtime automaticallyshutdown-on-disablestop the managed runtime when the plugin unloadsready-timeout-mshow long the plugin waits for the runtime to become readyinstall-directorywhere the managed runtime is installed
config.voice.*
Player-facing behavior:
proximity-distanceproximity-togglevoice-effectsnot-in-voice-symbolin-voice-symbolsend-bind-messagesend-disconnect-messagesend-voicecraft-disconnect-messagesend-connection-lost-messageposition-update-interval-ticks
config.players
Stored autobind / player-side cache data.
config.player-links
Additional link/cache structure used by the plugin.
Commands
From BaseVoiceCommand:
connect <host> <port> <key>reconnect [true|false]disconnectsettingsbind <key>bindfake <key> <name>updatefake <key>clearautobindreload
Permissions
Typical permissions:
voice.cmdvoice.connectvoice.reconnectvoice.disconnectvoice.settingsvoice.bindvoice.bindfakevoice.reload
Direct Paper mode
Best when:
- you run one Paper server
- you want the simplest Java-side setup
- you want GeyserVoice to manage VoiceCraft runtime for you
See Direct Paper Guide.
Proxy mode
Best when:
- you run Velocity or BungeeCord
- you have several backend Paper servers
- you want one central VoiceCraft connection on the proxy
See Proxy Guide.
Technical notes
- plugin messaging channel:
geyservoice:main - in proxy mode, world IDs can be namespaced with backend identity
- the plugin currently uses
McTcpas the VoiceCraft-facing bridge
Current code limitations
updatefakeis still a placeholdersettingsexists but currently has minimal practical logic
Production checklist
- Decide whether Paper should manage VoiceCraft runtime itself.
- If yes, configure
auto-start,install-directory, andready-timeout-ms. - If no, point
host,port, andlogin-tokenat an external VoiceCraft server. - Restrict staff-only commands.
- Test bind flow and position updates before opening to players.