feat(setup): create lobby portals from in-game commands - #329
Merged
Merged
Conversation
Contributor
Test results 345 files 345 suites 21m 10s ⏱️ Results for commit 19f7bb9. ♻️ This comment has been updated with latest results. |
Contributor
Author
|
Manual in-game test passed (local setup server + local lobby, offline mode):
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The setup server gets
/setup portalso the build team can create the lobby portals from #326 in-game instead of writing JSON by hand.save.canceldiscards a draft,removedeletes a saved portal.listshows saved portals and, separately, the player's open drafts.showdraws the outlines as particles, only for the executing player.pos1/pos2, block-inclusive). Ring from eye position and look direction (centre rounded to 0.5, normal snapped to an axis within 5 degrees) plus a radius. Every portal has a task and an optional permission./setup portal create <id>with clickable buttons. Each button runs an existing sub-command, so the flow is a thin layer over the commands and not a second code path. Buttons are built with the Adventure API, never with MiniMessage click tags around player text.none.PortalValidator.problems(...), the same rules that abort the lobby's startup, so an invalid portal is never written. Saving keeps spawn, name, authors and the other portals.Notes
MapCommandstyle (the repository has no i18n infrastructure)./setuphas no permission check yet (follow-up).Tests
New test classes under
setup/src/test:DiscPlacementTest,PortalEditorTest,PortalEditorValidatorParityTest,PortalMessagesTest,PortalEditorLoggingTest,PortalOutlineTest,DraftOutlineTest,MapProviderPortalStoreTest,DraftPointsTest,PortalShowTest,DraftPreviewTest,PortalCommandTest,PortalFlowTest,PortalCompletionsTest../gradlew buildis green. The manual in-game check (clickable buttons, tab completion in the real client) is still pending and will be done before merge.OpenSpec
openspec/changes/setup-portal-commandhttps://claude.ai/code/session_01A7aAe2E6wAEbi6jjnyPTWH