This release is quite the change since last version.
Some notable changes that are considered breaking:
- SteamAuthentication methods use
CompletableFuture
. Java users can use.get()
if not using async. Kotlin users can.await()
in a suspending function. - AbstractMsgBase write methods are type specific. Example:
writeByte
andreadByte
instead of justwrite
andread
.
Add:
- CSGO/CS2 protobufs as a library (no Maven package yet).
- Handle
ClientServerUnavailable
response. - KV alternate end
- More logging for connection and disconnection events.
- macOS15 for Utils.getEOStype().
- MemoryStream with ByteString constructor.
- Functionality for server list to refresh itself.
- Content Downloader. Thanks @oxters168
- CDN support. Thanks @oxters168
- CMClient.isDisconnected(), which also checks the connection object too. Thanks @Srdjan-V
- Allow custom Unified Services.
- Addtional SteamCloud related functions. Thanks @oxters168
- Addtional Util related functions. Thanks @oxters168
- Addtional SteamApps related functions. Thanks @oxters168
- SampleDownloadUserFiles sample app. Thanks @oxters168
- SampleDownloadApp sample app. Thanks @oxters168
- Lan cache support.
- BouncyCastle support for Android.
- Kotlin inline function for SteamClient.getHandler().
- Implement setFromUInt64String in SteamID. Thanks @Srdjan-V
Fixes:
- ChatMode.NEW_STEAM_CHAT value.
- Reuse the same string builder in readToken.
- Disconnections should know if it was
user initiated
or not. - Create a connection based on the next server candidate and not on configuration.
- Encoding issues with PICSProductInfo (again). Thanks @rakosi2
- LegacyGameKeyCallback uses US_ACII encoding.
- Fix expression comparing itself in UDP receiving.
- Various stream closures, fixing reported and potential memory leaks. With help from @oxters168
- Refactor content service initialization to use lazy delegation. Thanks @asLody
- Implement own BinaryReader.toString() to fix NoSuchMethodError.
- Implement own InputStream.readNBytes() to fix NoSuchMethodError.
- (Breaking) SteamAuthentication methods use Futures.
- Handle null handler values.
Changes:
- Bring back logging in SmartCMServerList.tryMark().
- Allow WebSocket as a default protocol (TCP and WEB_SOCKET).
- Replace
GetCMList
withGetCMListForConnect
for CM servers. - Make AbstractMsgBase write methods type specific. Thanks @Srdjan-V
- Make UTF8 the standard charset for messages.
- KVTextReader now extends InputStream instead of PushbackInputStream.
- KVTextReader should throw exceptions
- NetHelpers improvements, including ipv6 support.
- Cleanup callback manager internals (Subscription is just a pointless wrapper around CallbackBase which is Closeable by itself).
- Rework Unified Messaging to use less reflection.
- Use Ktor instead of Okhttp for web socket connections. Thanks @rakosi2 for testing this fix so many times!
Removed:
serverMap
private variable in CMClientClientCMList
response.- EResultDeserializer.java
- ICallbackMsg.kt
- SteamApps.getCDNAuthToken() and
ClientGetCDNAuthTokenResponse
. Thanks @oxters168 - Useless "heartbeat" println in AsyncJob.
Misc:
- Update and add more Tests.
- Update README.
- Update GitHub workflows.
- Update protobuf and steamd files.
- Update library dependencies.
- Update sample apps.
- Update lint rules.
- Update kdoc
- Label TODO's that are also in SteamKit