5 releases, newest first.
whitelist-probe-seconds) goes to the next player in the queue instead of always the first one, so whitelisted players further back get in. Nobody loses their place.retry-delay-seconds before the next try, doubled per failure up to retry-delay-max-seconds, while keeping their place; the players behind them are sent meanwhile. max-attempts and moving to the back work as before, and nobody is ever removed from a queue.auto-reconnect.max-per-player times within auto-reconnect.window-seconds (a crash-looping server) stays where they landed and sees queue.auto-reconnect-limit.queue.yml: retry-delay-seconds (2), retry-delay-max-seconds (30), auto-reconnect.max-per-player (3), auto-reconnect.window-seconds (600).messages.yml: queue.auto-reconnect-limit./msg <player> <message>, /tell, /me...) or any typed command of a 1.19.1/1.19.2 client with secure chat. With an up-to-date tab list the client does not know a blocked command and sends it unsigned, so it is blocked normally; the gap only opens while a player's command tree is stale (after /snproxy reload or a group change, until their next server switch or relog) and for 1.19.1/1.19.2 clients. Block those commands on the backend too to close it.Adds a public developer API for other Velocity plugins (API_VERSION 1.0.0), in the com.sn.proxyutility.api package of this jar.
SnProxyUtilityProvider.get() returns the read-only SnProxyUtilityAPI facade: module state, queued servers, queue snapshots (QueueView), a player's queue position (QueuePositionView) and the next restart instant.QueueJoinEvent (Velocity ResultedEvent): fired before a queue join, a denied result keeps the player out of the queue.QueueLeaveEvent: notification after a player left a queue with /leavequeue.config.yml key api-events.enabled (default true, merged automatically) turns event dispatch off.No change for servers that do not use the API: with no listener a queue join behaves exactly as in 1.0.0.
First stable release of SnProxyUtility: a Velocity utility suite (scheduled restarts, MOTD, command blocker, lane-based server queue) built on SnLib.
Audit: FULL /sn-audit gate PASSED (6 criticals found and verified fixed, 1 of them contained, 0 accepted risks, close pass with 0 new criticals).
SnvConfig rewrites a managed yml that failed to parse and writes it in place (X1/X2, upstream). A local guard keeps the previous text as <file>.bak, .bak.1, ...; config.yml is not covered by that backup, and the backup is written after the rewrite..bak cleared, the replaced text is no longer saved (console warning).queues.yml whose servers: key is null, a list or a scalar drops every queue with no console line (W40).