|
| 1 | +# GeyserVoice (Java/Geyser Bridge) |
| 2 | + |
| 3 | +Repository: [AvionBlock/GeyserVoice](https://github.com/AvionBlock/GeyserVoice) |
| 4 | + |
| 5 | +`GeyserVoice` links Java server infrastructure (Paper/Folia + proxy) to `VoiceCraft.Server`. |
| 6 | + |
| 7 | +## Supported plugin platforms |
| 8 | + |
| 9 | +From source code: |
| 10 | + |
| 11 | +- Paper/Folia (`io.greitan.avion.paper.GeyserVoice`) |
| 12 | +- Velocity (`io.greitan.avion.velocity.GeyserVoice`) |
| 13 | +- Bungeecord (`io.greitan.avion.bungeecord.GeyserVoice`) |
| 14 | + |
| 15 | +## Installation |
| 16 | + |
| 17 | +1. Download plugin `.jar`. |
| 18 | +2. Put it into `plugins/`: |
| 19 | + - standalone Paper, |
| 20 | + - or proxy + backend Paper servers. |
| 21 | +3. Start server once to generate `plugins/GeyserVoice/config.yml`. |
| 22 | +4. Edit `config.yml`. |
| 23 | +5. Run `/voice reload`. |
| 24 | + |
| 25 | +## `config.yml` reference |
| 26 | + |
| 27 | +`config` block: |
| 28 | + |
| 29 | +- `debug` — plugin debug mode. |
| 30 | +- `lang` — plugin message language. |
| 31 | +- `host` — `VoiceCraft.Server` host. |
| 32 | +- `port` — `VoiceCraft.Server` port. |
| 33 | +- `server-key` — server auth key used by plugin. |
| 34 | +- `auto-reconnect` — reconnect when transport is lost. |
| 35 | +- `server-behind-proxy` — required for Paper behind Velocity/Bungee. |
| 36 | + |
| 37 | +`voice` block: |
| 38 | + |
| 39 | +- `proximity-distance` — proximity logic distance. |
| 40 | +- `proximity-toggle` — enable/disable proximity mode. |
| 41 | +- `voice-effects` — enable/disable voice effects. |
| 42 | +- `not-in-voice-symbol` / `in-voice-symbol` — status symbols. |
| 43 | +- `send-binded-message` — show message on bind. |
| 44 | +- `send-disconnect-message` — show message on disconnect. |
| 45 | +- `send-voip-disconnect-message` — show message when VoIP transport closes. |
| 46 | +- `send-connection-lost-message` — show message when connection is lost. |
| 47 | +- `position-task-interval` — position update interval in ticks. |
| 48 | + |
| 49 | +`players` block is internal cache/autobind data. |
| 50 | + |
| 51 | +## `/voice` commands |
| 52 | + |
| 53 | +From `BaseVoiceCommand`: |
| 54 | + |
| 55 | +- `connect <host> <port> <key>` |
| 56 | +- `reconnect [true|false]` |
| 57 | +- `disconnect` |
| 58 | +- `settings` |
| 59 | +- `bind <key>` |
| 60 | +- `bindfake <key> <name>` |
| 61 | +- `updatefake <key>` |
| 62 | +- `clearautobind` |
| 63 | +- `reload` |
| 64 | + |
| 65 | +## Permissions |
| 66 | + |
| 67 | +From `plugin.yml` and `bungee.yml`: |
| 68 | + |
| 69 | +- `voice.cmd` (default: true) |
| 70 | +- `voice.connect` (op) |
| 71 | +- `voice.reconnect` (op) |
| 72 | +- `voice.disconnect` (op) |
| 73 | +- `voice.settings` (op) |
| 74 | +- `voice.bind` (true) |
| 75 | +- `voice.bindfake` (op) |
| 76 | +- `voice.reload` (op) |
| 77 | + |
| 78 | +## Proxy mode (important) |
| 79 | + |
| 80 | +If backend Paper is behind Velocity/Bungee and plugin is present on proxy: |
| 81 | + |
| 82 | +1. Set `server-behind-proxy: true` on backend Paper. |
| 83 | +2. Do not set backend `host/port/key` as source of truth. |
| 84 | +3. Keep valid `host/port/server-key` on proxy. |
| 85 | + |
| 86 | +In Paper code, reconnect is intentionally skipped when `server-behind-proxy: true`. |
| 87 | + |
| 88 | +## Integration internals |
| 89 | + |
| 90 | +- Plugin messaging channel: `geyservoice:main`. |
| 91 | +- In proxy mode, dimensions/world IDs are namespaced with backend server name. |
| 92 | +- HTTP transport calls to `VoiceCraft.Server` use a 5-second timeout. |
| 93 | + |
| 94 | +## Current code limitations |
| 95 | + |
| 96 | +- `updatefake` is currently a placeholder. |
| 97 | +- `settings` command exists but currently has minimal practical logic. |
| 98 | + |
| 99 | +## Production checklist |
| 100 | + |
| 101 | +1. Restrict `/voice connect|reload` to staff roles. |
| 102 | +2. Use `server-behind-proxy` only on real proxy-backed backends. |
| 103 | +3. Ensure stable proxy routing to `VoiceCraft.Server`. |
| 104 | +4. Configure process supervision (systemd/panel/screen). |
0 commit comments