OneLiteFeatherNET / OneLiteFeatherNET/Voyager

Rejoin detection: link reconnecting player to existing session

Open
#122 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

alpha gameplay P1
Dominant language
Java
Stars
0
Forks
0
Avg merge
2d 21h
Merged PRs (30d)
12

Description

Description

If a player disconnects mid-race (crash, network drop) and rejoins within a grace period, they should be re-linked to their existing ECS entity with their score and ring progress intact — not start fresh or be blocked from rejoining.

Acceptance Criteria

  • On player join: check if an active SessionComponent exists for that UUID in the current game instance
  • If found and race is still active: restore player to their entity, respawn at last known position, restore HUD state
  • Grace period: 60 seconds (configurable in map config) before the slot is freed
  • If grace period has expired: player joins as spectator or new lobby participant
  • If no active session: normal first-join flow
  • Unit test covers: disconnect during game → rejoin within grace period → state restored correctly

Technical Details

  • SessionComponent must store last-known position and disconnect timestamp
  • Rejoin logic hooks into the Minestom player-join event handler in server
  • Must not conflict with PlayerPhaseSystem creating a duplicate entity

Dependencies

  • "Persist player profiles on first join" should be done first

Estimate

M

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in the server's Minestom player-join event handler and inspect SessionComponent and PlayerPhaseSystem to understand the existing join and entity-creation flow. Confirm that persisted player profiles are available first, then implement the rejoin path with configurable grace-period state. Done means rejoining restores the existing entity, position, score, ring progress, and HUD without duplication, with a unit test covering disconnect and rejoin.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
game-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.