Repository navigation
fix(spawn): clear game server resource packs on join - #361
Merged
Merged
Conversation
Contributor
Test results 939 files 939 suites 1h 2m 25s ⏱️ Results for commit dcef1ba. ♻️ This comment has been updated with latest results. |
Merged
5 of 9 tasks
TheMeinerLP
force-pushed
the
fix/clear-foreign-resource-packs
branch
from
October 17, 2026 16:28
baa7a63 to
dcef1ba
Compare
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.
What players saw
After leaving a game server such as Cygnus (kick, or switching themselves with
/hub), the game's required resource pack stayed applied in the lobby.Cause
Game servers push a required pack. The pop on kick cannot cover a player-initiated proxy switch: that closes the game server's connection without a chance to send anything, and the pop is unreliable through the proxy anyway.
Fix
The lobby cleans up.
ResourcePackClearListenercallsplayer.clearResourcePacks()(aResourcePackPopPacketwithout id, i.e. remove all) inAsyncPlayerConfigurationEvent, registered by the spawn column. The configuration phase is used because the client reloads resources there anyway, and in Minestom 2026.08.28-26.2ResourcePackPopPacketimplementsServerPacket.Configuration, so it is valid in that state. Titan pushes no resource pack of its own (no ResourcePack usage in the code).Note: this would also remove a pack pushed by the proxy itself. I found no hint of one in this repo; worth checking the proxy/infra config.
Tests
ResourcePackClearListenerTest: a configuring player receives aResourcePackPopPacketwith a null id; afterSpawnModule.stop()none is sent. Red before the wiring, green after../gradlew buildis green (spotless included);:features:spawn:testran 38 tests, 0 failures.