The project is upgraded to the latest Java LTS version, Java 21. Features added since Java 17 include things like pattern matching, unnamed variables, and UTF-8 as the charset.
An integration test with a mocked client was added to the server to verify it's working as expected. This will be useful later when upgrading the server to Netty 4.1 to avoid breaking anything.
The testing revealed that previously messages sent from the server non-deterministic, i.e. sometimes TrackSets and Tracks were sent in one order and sometimes in another. Now these are sorted in the server to ensure the same message is sent every time and tests pass. This also fixes a bug where championship games did not run in the intended order and the games could start with the hardest tracks in the championship first.
The server Docker image was fixed and is now built in CI to ensure it won't break again. I accidentally broke it when upgrading the project to Java 17 earlier.
A bunch of dependencies were upgraded and warnings fixed to make build logs more readable.
This PR is a collection of smaller changes: