OneLiteFeatherNET / OneLiteFeatherNET/Voyager
feat(race): synchronized countdown start and live position/timer HUD
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 0
- Forks
- 0
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 12
Description
Description
All players in a Race Mode session must start simultaneously via a shared 3-2-1-GO countdown. Movement and ring collision are suppressed before the GO signal. The HUD gains a live elapsed-timer action bar and a race position display.
Acceptance Criteria
- A 3-2-1-GO countdown is broadcast to all players in the lobby phase before map start
- Player movement and elytra launch are blocked until the GO signal fires
- Ring collision events are ignored until the GO signal fires
- After GO, an elapsed timer displays in the action bar (format: `MM:SS.ms` or `SS.ms`)
- A race position display shows each player's current place (e.g. `1 / 4`) and gap to the leader
- `HudComponent` is extended to carry timer and position state
- Countdown is implemented in `MinestomLobbyPhase` or a dedicated `CountdownPhase`
- Timer starts at the exact tick the GO signal fires (consistent across all players)
- Unit tests cover countdown sequence and freeze/unfreeze transitions
- Minestom testing framework used for phase-level tests
Technical Details
- The freeze mechanic must not interfere with camera movement (look direction remains free)
- Position ranking is recomputed every tick based on rings completed, then elapsed time as tiebreaker
- `HudComponent` is a Java record; use a builder or `with*()` pattern for updates
- The GO signal is a server-side event dispatched via the phase system, not a client packet race
Dependencies
- #168 (time-bracket scoring — timer must align with the same start tick used for scoring)
Estimate
M
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with MinestomLobbyPhase, the possible dedicated CountdownPhase, and the HudComponent record; review dependency #168 to align the shared start tick. Use the Minestom testing framework for phase-level tests covering the countdown and freeze/unfreeze transitions, and verify the timer, position, gap, and movement behavior against the acceptance criteria.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100