Skip to content

Releases: Longi94/JavaSteam

1.6.0

05 Feb 04:14
c44c708
Compare
Choose a tag to compare

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 and readByte instead of just write and read.

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 with GetCMListForConnect 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 CMClient
  • ClientCMList 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

1.5.1

04 Sep 00:10
4a540f4
Compare
Choose a tag to compare

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

31 Aug 23:47
0525249
Compare
Choose a tag to compare

Breaking

  • Move ClientMsgHandler to in.dragonbra.javasteam.steam.handlers.ClientMsgHandler

Added

  • EUIMode and ChatMode options for LogOnDetails
  • isSteamDeck field for LogOnDetails
  • Added FriendCache system for SteamFriends

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 cliendID with itself.
  • AuthPollResult#newGuardData to 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, and SteamConfiguration ported to Kotlin
  • Samples updated
  • SteamClient
    • Use kotlin Channels for callbackQueue
    • Remove freeLastCallback and getAllCallbacks.
    • Calling getCallback and waitForCallback now always removes a callback, there is no more peek and freelast.
    • Add SteamAuthentication to SteamClient, also SteamAuthentication will get its own instance of UnifiedMessages.

1.4.0

03 May 17:48
e15a1bf
Compare
Choose a tag to compare

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.steamclient protobufs

Fixes:

  • Fix setter typo in JavaGen.writeSetterGetter()
  • Fix potential NPE when using Web Socket connection
  • CallbackManager runWaitAllCallbacks() takes a Long instead of an Int
  • Fix wrong import in JavaGen when 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

31 Jul 20:25
2eff456
Compare
Choose a tag to compare

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

24 Mar 16:28
2163b97
Compare
Choose a tag to compare
1.3.0-beta01 Pre-release
Pre-release

Added:

  • Support for new Steam Authentication with samples
  • AsyncTaskSingle/AsyncTaskMultiple
  • Expose CMsgProtoBufHeader and PacketClientMsgProtobuf ServiceMethodResponse
  • Expose CMsgProtoBufHeader and ClientMsgProtobuf in ServiceMethodNotification
  • Add rtime32ServerTimestamp for 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

31 Jan 17:13
717a551
Compare
Choose a tag to compare
  • 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

31 Jan 22:16
b42b3dd
Compare
Choose a tag to compare
  • 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)

1.0.0

23 Oct 16:39
Compare
Choose a tag to compare

Initial release