Fix world closing in client gametests #4327
Merged
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.
There was an issue where the assertion that the game is on the title screen would fail when ending a test by closing a singleplayer world (via a try-with-resources close of
TestSingleplayerContext
).This was caused by the threading system deferring the
client.disconnect
call until after the client thread task wait loop (i.e. until the gametest thread waits a tick). Therefore, the order of operations insideGameMenuScreen.disconnect
was reversed and the title screen was shown first before disconnecting. Moreover, the title screen was visible to the gametest thread until ticks were waited, which allowedcontext.waitForScreen(TitleScreen.class)
to return immediately after waiting 0 ticks.Rather than relying on navigating the game menu which may have been changed by mods, I thought it was better to refactor the code to disconnect directly, and I've written it in a way which waits for the
world
to benull
directly after callingclient.disconnect
, which allows for the deferred call to run.