Skip to content

Releases: Longi94/JavaSteam

1.8.0

Choose a tag to compare

@LossyDragon LossyDragon released this 24 Dec 16:12
7ead3b7

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

Choose a tag to compare

@LossyDragon LossyDragon released this 02 Sep 04:43
e72fc8f

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

Choose a tag to compare

@LossyDragon LossyDragon released this 05 Feb 04:14
c44c708

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

Choose a tag to compare

@LossyDragon LossyDragon released this 04 Sep 00:10
4a540f4

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

Choose a tag to compare

@LossyDragon LossyDragon released this 31 Aug 23:47
0525249

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

Choose a tag to compare

@LossyDragon LossyDragon released this 03 May 17:48
e15a1bf

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

Choose a tag to compare

@LossyDragon LossyDragon released this 31 Jul 20:25
2eff456

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

1.3.0-beta01 Pre-release
Pre-release

Choose a tag to compare

@LossyDragon LossyDragon released this 24 Mar 16:28
2163b97

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

Choose a tag to compare

@LossyDragon LossyDragon released this 31 Jan 17:13
717a551
  • 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

Choose a tag to compare

@Longi94 Longi94 released this 31 Jan 22:16
b42b3dd
  • 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)