feat: compact tab ranks and mark Bedrock players - #58
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e2ef381e4e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| @Subscribe | ||
| fun onLogin(event: PostLoginEvent) { | ||
| bedrockRoster?.refresh() |
There was a problem hiding this comment.
Avoid publishing the full roster on every login
When many players reconnect after a proxy restart, every PostLoginEvent calls refresh(), which rescans all connected players, serializes the entire roster, and publishes it to every proxy. A burst of n logins therefore sends O(n²) entries—at the supported 10,000-player limit, roughly 50 million UUID entries before NATS fan-out—and also performs the work on each login path. Update local state without publishing here, or debounce broadcasts and rely on the existing five-second refresh.
Useful? React with 👍 / 👎.
Tab ranks now show compact labels such as ADMIN, DEV, MOD and USER. A matching five-pixel resource-pack font leaves a pixel above and below the letters inside each badge, with label shadows disabled to preserve that spacing.
Bedrock players receive a bedrock-block icon immediately before their name. Local Floodgate detection includes linked Java accounts; environment-scoped NATS snapshots share edition flags across proxies and expire after 30 seconds. Unlinked Floodgate UUIDs remain detectable before snapshots arrive. Deploy the matching resource pack first and set GROUNDS_ENVIRONMENT on all proxies.
Validation: full Gradle build, including tests for rank aliases, glyph widths, decoration isolation, icon positioning, linked accounts, cross-proxy snapshots, expiry and proxy changes.