forked from SteamWar/SteamWar
0ef702da9efa7b1e7c766df0e132388eaa1bd373
Hull kept a set of affected players that was only filled by a join listener active in the Schem states, so spectators joining earlier were never hidden from the hull. The set was also a plain HashSet read on netty threads, where a racing lookup meant "not hidden". Invert it into a concurrent set of viewers (referees, own team, boarded players); everyone else is hidden by default. - Hull: viewer UUID set with addViewer/removeViewer/forgetViewer, a null player counts as hidden - Hull: entities are hidden/shown when they enter/leave the hull for all non-viewer online players; uncovered blocks go to non-viewers - HullHider: join/quit handled in a listener active in every state; quit clears the viewer entry - HullHider: TeamDeathEvent re-hides the enemy hull and resends its chunks - FightPlayer: stop the enter countdown before firing TeamDeathEvent so listeners see canEntern() == false
SteamWar
Languages
Java
91.5%
Kotlin
8.1%
Lua
0.3%