What’s New
Command: /service command <service> <raw...>
- Execute any console command inside a running service process, as if you typed it in that server’s console.
- Example: /service command Lobby op Notch
- Permission: service.command.command
Command: /service see <service>
- Toggle live viewing of a service’s console output directly in Bungee chat.
- Sends recent backlog (up to 500 lines) and then streams new lines in real time.
- Multiple viewers are supported; run the command again to stop viewing.
- Permission: service.command.see
Live Console Stream (Implementation)
- Output is no longer only redirected to file; it is “teed”:
- Written to services/<name>/console.log
- Buffered in-memory (rolling 500 lines)
- Broadcast to all active watchers of that service
Restart Experience Fix
- During /service restart <name>, players are not told the lobby is “disabled” while it is actually starting.
- If a whitelisted fallback (lobby, lobby-1, lobby1, hub, fallback) is already starting (process alive) but not yet registered, joining users see:
- “The lobby is starting up. Please try again in a few seconds.”
- Once the service is registered, normal routing applies.
Join Reason Check
- First-join detection fixed to handle both JOIN and JOIN_PROXY correctly.
Updated Permissions
permissions:
service.command.command:
description: Execute raw console commands inside a service process
default: false
service.command.see:
description: View live console output of a service
default: false
(Master permission service.command.all still grants everything.)
Updated Help Entries
/service command <service> <raw...> (perm: service.command.command)
/service see <service> (perm: service.command.see)
Usage Examples
/service command Lobby op Notch
/service command Lobby say Maintenance in 5 minutes.
/service see Lobby
/service see Lobby # run again to stop viewing
Notes and Limitations
- /service command requires the target service to be RUNNING; otherwise you’ll get “Service is not running.”
- /service see starts streaming only after the process is running. Existing backlog (up to 500 lines) is sent immediately.
- On stop or crash, all watchers are notified and detached.
- Streaming is per service and uses a dedicated non-blocking reader thread. Output is flushed to file and watchers line-by-line.