Releases: Longi94/JavaSteam
Releases · Longi94/JavaSteam
1.8.0
Breaking:
ContentDownloader has been removed and remade from scratch now called DepotDownloader as a separate maven package (:javasteam-depotdownloader).
DepotDownloader mostly follows SteamRE/DepotDownloader internally.
See sample 023 on how to use the new way of downloading SteamApps. There is no migration path between ContentDownloader and DepotDownloader.
Thanks to all the contributors and users from GameNative for the countless bug hunting and testing!
Additions:
- Revamped depot downloader implementation with Android optimization. Thanks @joshuatam and @utkarshdalal
- Add SteamOS and LegionGoS enums to
EGamingDeviceType - Add protobufs for Deadlock, Dota, and Counter-Strike 2.
- Add steammessages_publishedfile protobuf. Thanks @asLody
- Add Kotlin reified methods for Logger.getLogger(), SteamClient.addHandler(), and SteamClient.removeHandler().
- Add Steam achievements support with expanded metadata parsing. See sample 032. Thanks @phobos665
- Add
EncryptedAppTicketCallbackfor SteamApps. Thanks @utkarshdalal - Add
SteamClientCommunicationfor remote client control.
Fixes:
DepotManifest: Decrypt LinkTarget.MessageObject: default KV name from "MessagObject" to "MessageObject".ChatMemberInfoincorrect permissions value lookup.GameID: Fix hashCode() value.MemoryStream: read() to return -1 at end of stream. Thanks @asLodyCMClient: Optimize handleMulti() and getPacketMsg().Adler32: Optimize checksum by unrolling.- Expose all
CMsgClientPersonaState.Friendvalues inPersonaStateCallback. - Various performance optimizations in
MemoryStream,BinaryReader,KeyValue,Utils,VZipUtil,VZstdUtil,ZipUtil, andDepotManifest.
Misc:
- Partial implementation of peer to peer methods in
SteamContent. - Port remaining classes in
.types.,.log., and.base.to Kotlin. - Update: Protobufs, steamd, and enums.
- Update: dependencies and gradle.
- Add
@JavaSteamAnnotationannotation for classes, values, and methods added outside of SteamKit's implementation.
1.7.0
What's Changed
- Add tests for DepotChunk, validate PK zip magic. by @LossyDragon in #320
- Add Family Group protos. by @LossyDragon in #321
- Add familyGroupId LoggedOnCallback. by @LossyDragon in #321
- Add type to AsyncJobMultiple Result. @LossyDragon in #321
- Consolidate getting machine-name/friendly-name to HardwareUtils. by @LossyDragon in #321
- Fix PersonaStateCallback.StatusFlags. @LossyDragon in #321
- Make deviceFriendlyName a JVMField. @LossyDragon in #321
- Replace null getters with a fallback value. by @LossyDragon in #322
- Fix parsing v4 depot manifests with added tests. by @LossyDragon in #323
- AsyncJob fail when client disconnected. by @LossyDragon in #326
- Ossrh sunset migration. by @LossyDragon in #327
- Make ip methods in CMClient return null instead of throwing a npe. by @Srdjan-V in #328
- Update workflows. by @LossyDragon in #329
- Fix build src tasks caching. by @Srdjan-V in #330
- Add SteamApps#picsGetPrivateBeta. by @LossyDragon in #331
- Fix picsGetPrivateBeta. by @LossyDragon in #333
- Add support for zstd compressed depot chunks. by @LossyDragon in #335
- Implement
IConnectionFactory. by @Srdjan-V in #332 - Implement SteamMatchMaking. by @LossyDragon in #336
- Explicitly set Kotlin JVM target. by @vpzomtrrfrt in #340
- Remove generated file. by @vpzomtrrfrt in #341
- Implement SteamAuthTicket. by @LossyDragon in #337
- Post client disconnection callback before cancelling jobs. by @LossyDragon in #342
- Add getUserStats to SteamUserStats. by @LossyDragon in #343
- Fix Hyperlink. by @lunatic-gh in #344
- Update cs protos. by @LossyDragon in #347
- Update dependencies. by @LossyDragon in #345
- Cleanup test dependencies. by @LossyDragon in #345
- Fix up api changes in tests. by @LossyDragon in #345
- Add basic jpms support. by @LossyDragon in #345
- Fix parsing of KeyValues found in
<steam>\appcache\stats. by @LossyDragon in #345 - Update protobufs. by @LossyDragon in #348
- Update SteamLanguage. by @LossyDragon in #348
- Update protocol version to 65581. by @LossyDragon in #348
- Add EGamingDeviceType. by @LossyDragon in #348
- Add Deadlock Protos. by @LossyDragon in #348
New Contributors
- @vpzomtrrfrt made their first contribution in #340
- @lunatic-gh made their first contribution in #344
Full Changelog: 1.6.0...1.7.0
1.6.0
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:
writeByteandreadByteinstead of justwriteandread.
Add:
- CSGO/CS2 protobufs as a library (no Maven package yet).
- Handle
ClientServerUnavailableresponse. - 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 initiatedor 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
GetCMListwithGetCMListForConnectfor 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:
serverMapprivate variable in CMClientClientCMListresponse.- 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
1.5.1
Fixes
- [SteamGameCoordinator] Wrong Emsg when handling message.
- [SteamFriends] Possible NPE when caching local user
Misc:
- Update dependencies, now using kotlin 2.0.20
- Lint formatting
- kdoc fixes
1.5.0
Breaking
- Move
ClientMsgHandlertoin.dragonbra.javasteam.steam.handlers.ClientMsgHandler
Added
EUIModeandChatModeoptions forLogOnDetailsisSteamDeckfield forLogOnDetails- Added
FriendCachesystem forSteamFriends
Removed
- Removed
SteamTrading
Fixes
- Dokka (Java/Kotlin) docs uploaded with maven
- Add security provider for
SteamAuthentication#beginAuthSessionViaCredentials() - Null EFriendRelationship in
Friend - Sending steam guard code from assigning
cliendIDwith itself. AuthPollResult#newGuardDatato be nullable
Misc
- Samples folder restructured
- Simplify callback dispatching for all handlers
- Java/Kotlin documentation and sample comments; added and revised.
- Add / Remove / Update tests.
- All callbacks and handlers ported to Kotlin
SteamClient,CallbackManager, andSteamConfigurationported to Kotlin- Samples updated
SteamClient- Use kotlin Channels for callbackQueue
- Remove
freeLastCallbackandgetAllCallbacks. - Calling
getCallbackandwaitForCallbacknow always removes a callback, there is no morepeekandfreelast. - Add
SteamAuthenticationtoSteamClient, also SteamAuthentication will get its own instance of UnifiedMessages.
1.4.0
Breaking:
- Requires Java 11
- Removed old methods and classes using the old login system. Steam no longer sends Sentry related files. Use the new LoginFlow as shown in Sample 1
- GeneratedMessageV3 is now GeneratedMessage for protobufs
New:
- Added BalanceDelayed and LongBalanceDelayed in
WalletInfoCallback - Added generateAccessTokenForApp() in
SteamAuthentication - Update Enums, Results, and Msg
- Update Protos
- Update Dependencies
- Add WebCooke sample
- Add machineName to
LogOnDetails - Unified interfaces are generated automatically
- Add
steammessages_inventory.steamclientprotobufs
Fixes:
- Fix setter typo in
JavaGen.writeSetterGetter() - Fix potential NPE when using Web Socket connection
CallbackManagerrunWaitAllCallbacks() takes a Long instead of an Int- Fix wrong import in
JavaGenwhen building from source manually. - Add missing OSX versions in
getOSType() - Remove the need for kotlin-stdlib dependency for a Java project
- OnChallengeUrlChanged is now IChallengeUrlChanged
Other:
- Project uses Gradle Versions Catalog for dependencies.
- Update node packages in Unused PR bot. (Clears out some Security issues on the repo)
- Show tests passing, skipped, or failing
- Update GH Action workflows
- GH Action push workflow uploads artifacts
- Migrated to Kotlin Gradle DSL
- Use Dokka for Java/Kotlin documentation
- Readme updates
- Port generators to Kotlin
- Supressed unused methods.
- Various code cleanup and readability improvements.
1.3.0
Added:
- Kotlin login examples
- UserAccount proto and RPC interface
Changes:
- Add warning message to Sample 1 (Sample Login) about changes in login flow
- Allow DuplicateRequest in SendSteamGuardCode
- Add exceptions with new login flow
- Fix polling cancellation and example
- Fix wrong package name in RPC methods (Unified Messages)
Misc:
- Update dependencies
- Update Kotlin and Gradle
- Bumped jvm memory to 1gb
1.3.0-beta01
Added:
- Support for new Steam Authentication with samples
- AsyncTaskSingle/AsyncTaskMultiple
- Expose CMsgProtoBufHeader and PacketClientMsgProtobuf ServiceMethodResponse
- Expose CMsgProtoBufHeader and ClientMsgProtobuf in ServiceMethodNotification
- Add
rtime32ServerTimestampfor FriendMsgEchoCallback - Add SteamNetworking and NetworkingCertificateCallback
Fixes:
- Sending a Unified Message failing to send it's Job Name when library is running in another thread
- MachineAuthDetails EResult accessor/setter now Kotlin access syntax compatible
- Update SampleSteamGuardRememberMe sample
Other:
- Repackaged RPC interfaces
- Dependency updates
- Gradle 8
- Introduce Kotlin + Coroutines
1.2.0
- Add SteamApps.GetLegacyGameKey (#203)
- Add PlayingSessionStateCallback (#204)
- Remove sent/recv debug messages (#208)
- Fix websocket servers not being marked as bad by the server list (#209)
- Remove only_public from pics requests (#212)
- Update picsGetProductInfo (#212)
- Support UTF-8 encoding in PICSProductInfo (#213)
- Fix displaying newsitems child in SampleWebApi (#214)
- Target Java 8 and Gradle 7.6 (#216)
- Update protobufs and steamd (#217)
- Upload rpc methods as an interface (#217)
- Add error method to logger (#217)
- Allow the body to be set in ClientMsgProtobuf (#217)
- Allow MsgHdrProtoBuf to be visible, minor cleanup (#217)
- Add Support for SteamUnifiedMessages (#217)
- Implement Auth (for the new Steam login flow) (#217)
- Send client hello on connect (#222)
- Fix KeyValue.loadFromFile from crashing when loading a file (#224)
1.1.0
- Updated Readme (#188)
- Fixed broken Sample 2 (#190)
- Assign something to HardwareUtils SerialNumber if it returned null (#189)
- Set JavaSteam as default User Agent (#191)
- Add ServerRecord.TryCreateSocketServer (#192)
- SteamConfiguration.getCellID is not used in login (#193)
- Create obfuscated_private_ip object when LoginID is provided (#194)
- Create default MemoryServerListProvider (#195)
- Write empty values (null and no children) as an object when saving to binary (#196)
- Add PurchaseResponseCallback and RedeemGuestPassResponseCallback (#197)
- Note some methods that are added beyond SteamKit parity (#198)
- Dependency updates (#200)
- Updated Protos (#201)