Skip to content

feat: promoted and user-pinned servers on vanilla multiplayer - #7

Merged
cursor[bot] merged 2 commits into
masterfrom
cursor/nova-promoted-pinned-servers-2b12
Aug 30, 2026
Merged

cursor[bot] merged 2 commits into
masterfrom
cursor/nova-promoted-pinned-servers-2b12

Conversation

@gaoyu06

@gaoyu06 gaoyu06 commented Aug 30, 2026

Copy link
Copy Markdown
Member

改动范围

  • Nova 用 mixin 改 vanilla JoinMultiplayerScreen:拉取 GET /api/v1/launcher/servers 作推荐置顶;删除后本地隐藏;用户可置顶自建服。
  • 业务在版本无关 ServerBrowser;推荐 ServerData 不写入 servers.dat。
  • 样式:推荐行金色 Featured/推荐,置顶行青色 Pinned/已置顶。
  • 明确不做:不抽共享屏、不用 Fabric API 事件、不改 prism/edge/backend/website、不新增端点。

是否可直接上线

否。阻塞:GUI 真机只覆盖 1.21.11;其余五版仅编译 + 注入点核对。须等已锁定的功能级单次验收。

上线前是否需要 review

是。触发:公共多人界面与跨版本 mixin。前置:与 Edge 视觉、backend 文档、官网 UI 一并一次验收,不另开 Nova-only reviewer。

已跑验证

  • 六版本 ./gradlew :*:classes 与 :*:build --continue:BUILD SUCCESSFUL
  • 1.21.11 Xvfb 真机:置顶/隐藏持久化、去重、Delete 不碰 servers.dat、后端挂掉列表仍可用

真实对象证据

入口为主菜单 Multiplayer → JoinMultiplayerScreen。持久化 fpsmaster/server_browser.json。

依赖

不依赖 backend 新字段或其他 PR。无迁移。

回滚

git revert a588d1f e6d2afe;删除 fpsmaster/server_browser.json 即恢复推荐位,不影响 servers.dat。

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 30, 2026 05:05
…erScreen

- ServerBrowser (version-independent Kotlin): async fetch of GET /api/v1/launcher/servers,
  ordering (user-pinned -> promoted -> rest), address dedup, hide/pin decisions
- ServerBrowserPrefs: persistent hidden-promoted ids + pinned addresses (fpsmaster/server_browser.json)
- MixinServerSelectionList: swaps the updateOnlineServers data source for the arranged order;
  promoted rows are real OnlineServerEntry objects and never enter servers.dat
- MixinJoinMultiplayerScreen: async refresh on init, Pin/Unpin button for player servers,
  delete on a promoted row hides it locally, edit disabled on promoted rows
- MixinServerSelectionListEntry: gold Featured / aqua Pinned row badges
- registered in all six mixin configs; lang entries en_us/zh_cn

Co-authored-by: Gao Yu <gaoyu06@users.noreply.github.com>
- cast badge coordinates through the public ServerSelectionList.Entry (AbstractSelectionList.Entry
  is a protected nested class on 1.21.11+)
- Smoke.mixin/feature evidence on screen init, list arrange and badge draw (repo smoke pattern)

Co-authored-by: Gao Yu <gaoyu06@users.noreply.github.com>
@cursor
cursor Bot marked this pull request as ready for review August 30, 2026 06:58
@cursor
cursor Bot merged commit db61fd7 into master Aug 30, 2026
8 checks passed
@cursor
cursor Bot deleted the cursor/nova-promoted-pinned-servers-2b12 branch August 30, 2026 06:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants