Skip to content

Releases: Longi94/JavaSteam

1.8.0

24 Dec 16:12
7ead3b7

Choose a tag to compare

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 EncryptedAppTicketCallback for SteamApps. Thanks @utkarshdalal
  • Add SteamClientCommunication for remote client control.

Fixes:

  • DepotManifest: Decrypt LinkTarget.
  • MessageObject: default KV name from "MessagObject" to "MessageObject".
  • ChatMemberInfo incorrect permissions value lookup.
  • GameID: Fix hashCode() value.
  • MemoryStream: read() to return -1 at end of stream. Thanks @asLody
  • CMClient: Optimize handleMulti() and getPacketMsg().
  • Adler32: Optimize checksum by unrolling.
  • Expose all CMsgClientPersonaState.Friend values in PersonaStateCallback.
  • Various performance optimizations in MemoryStream, BinaryReader, KeyValue, Utils, VZipUtil, VZstdUtil, ZipUtil, and DepotManifest.

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 @JavaSteamAnnotation annotation for classes, values, and methods added outside of SteamKit's implementation.

1.7.0

02 Sep 04:43
e72fc8f

Choose a tag to compare

What's Changed

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

05 Feb 04:14
c44c708

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

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

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

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

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

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

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

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)