Skip to content

feat(navigator): show the build server destination to the team - #322

Merged
TheMeinerLP merged 9 commits into
mainfrom
feat/navigator-build-destination
Sep 29, 2026
Merged

TheMeinerLP merged 9 commits into
mainfrom
feat/navigator-build-destination

Conversation

@TheMeinerLP

Copy link
Copy Markdown
Contributor

Summary

  • New fixed navigator destination Build (slot 7, Material.SCAFFOLDING) that sends the player to the CloudNet task Build. This is separate from MemberBuild, which sits behind Creative.
  • It is visible only with the permission titan.navigator.buildserver, checked through PermissionService. ALLOWED shows it; NOT_SET and DENIED hide it.
  • In the local variant (no permission platform) nobody sees it.

How

  • Two shared Aves inventories: the public one (unchanged) and a team one (public destinations plus Build). Each is registered once in the module lifecycle and unregistered on shutdown.
  • Each inventory is wrapped in a SharedNavigator with its own layout state and lock.
  • On open, the permission decides which inventory the player gets.
  • A click on Build re-checks the permission. If it was revoked, nothing is delivered and the inventory closes.
  • The navigator column now requires PermissionService.

Why this shape

This supersedes #219. That PR listed each running build server through CloudNet service discovery in the :bridge extension, and it depended on FeatureGate/FeatureAudience from #216, which never reached main. One fixed destination keeps destinations in code, as the navigator spec requires. CloudNet's task routing already sends players only to running servers.

Tests

  • NavigatorBuildDestinationTest (10 tests)
  • AvesSharedInventoriesTest
  • NavigatorDestinationTest
  • NavigatorModuleLeakTest (both inventories, alternating permissions)
  • Existing navigator tests
  • ./gradlew build is green.

Known gap: "no chat message" on a revoked click is not asserted, because the fixture cannot capture chat. The code sends none.

Operations

  • Create the CloudNet task Build if it is missing.
  • Grant titan.navigator.buildserver to the team group in LuckPerms.

OpenSpec

openspec/changes/navigator-build-destination

https://claude.ai/code/session_01A7aAe2E6wAEbi6jjnyPTWH

@github-actions

Copy link
Copy Markdown
Contributor

Test results

  261 files    261 suites   16m 48s ⏱️
  440 tests   439 ✅ 1 💤 0 ❌
1 320 runs  1 317 ✅ 3 💤 0 ❌

Results for commit 7ea6937.

@TheMeinerLP
TheMeinerLP merged commit 15932c9 into main Sep 29, 2026
8 checks passed
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.

1 participant