Skip to content

Releases: Alex1304/jdash

JDash 5.0.2

10 May 18:00
Compare
Choose a tag to compare

🐞 Bug fixes

📦 jdash-client

  • Fixed LDM field being incorrectly parsed, resulting in GDLevel#isLDMAvailable() returning always false

⭐ New features

📦 jdash-common

  • New fields in GDLevel: isTwoPlayer and isGauntlet

🗒️ Full Changelog

v5.0.1...v5.0.2

JDash 5.0.1

09 May 16:22
Compare
Choose a tag to compare

🐞 Bug fixes

📦 jdash-client

  • Fixed a bug that would cause requests to hang indefinitely when a RequestLimiter is set in the default router.

📦 jdash-common

  • Fixed GDSong#isFromNewgrounds() and GDSong#isFromMusicLibrary() returning improper results when the song is from music library. It now only checks if it is not an official song and whether ID is above or below 10,000,000.

⭐ New features

📦 jdash-common

  • Added editorTime and editorTimeCopies fields to GDLevelDownload.
  • Added creatorAccountId to GDLevel.

📦 jdash-events

  • Introduce a PagesComparator interface to conveniently implement producers that emit events based on changes detected on pages of results. Pass implementations to GDEventProducer#comparingPages(PagesComparator) to obtain the corresponding GDEventProducer.

🗒️ Full Changelog

v5.0.0...v5.0.1

JDash 5.0.0

06 May 20:07
Compare
Choose a tag to compare

🎉 Support for Geometry Dash update 2.2 is finally here!

JDash v5.0.0 is a major version release that adds new features introduced in Geometry Dash 2.2, such as level lists, extra profile information, new rating types for levels, Platformer levels and a lot of new icons.

Documentation website as well as Javadoc have been updated accordingly:

💥 Breaking changes

Here is a list of breaking changes that you must consider in order to upgrade from v4:

  • JDash now requires JDK 17 or above
  • All entities in jdash-common have been converted from org.immutables to Java Records
  • As a consequence, there is no longer inheritance between types as it was the case for GDUser and GDUserStats for example. Inheritance has been replaced with composition, meaning that in order to access the account ID from a GDUserStats instance, stats.accountId() becomes stats.user().accountId().
  • The jdash-graphics module has been completely rewritten, it is now only made of 4 public classes: IconRenderer, IconSetFactory, ColorSelection and DifficultyRenderer
  • In jdash-events, AwardedAdd was renamed to AwardedLevelAdd in order to lift ambiguity introduced by level lists. Same happened to AwardedRemove and AwardedUpdate
  • The wording of some methods has been improved. As such, AccessPolicy was renamed to PrivacySetting, browseLevels became searchLevels, and the word "Timely" used to refer to both Daily and Weekly has been dropped in favor of just Daily.

⭐ New features

  • jdash-common: Introduce a new type: GDList
  • jdash-common: Introduce QualityRating enum that includes the new Legendary and Mythic ratings
  • jdash-common: Add new fields to GDLevel/GDLevelDownload to support Platformer mode and multi-song/SFX
  • jdash-common: Add moons and completed level counters on user profiles
  • jdash-graphics: It is now possible to generate level difficulty icons via the DifficultyRenderer class
  • jdash-client: Add methods to fetch lists from servers
  • jdash-client: Add extra search options (Sent tab, Daily/Weekly history...)
  • jdash-events: Add an event producer that emits events when new lists are rated

🗒️ Full Changelog

v4.0.5...v5.0.0

JDash 4.0.5

28 Dec 16:45
Compare
Choose a tag to compare

Fix creator info string getting skipped when one of the creators' username contained a space.

JDash 4.0.4

24 Oct 22:27
Compare
Choose a tag to compare
  • Patched some response deserialization failures when used with a cvolton-based GDPS
  • Improvements in the implementation of GDRouter, added some logging

JDash 4.0.3

08 Jun 12:49
Compare
Choose a tag to compare

The jdash-events module was not exporting any package, making it completely unusable... whoops

JDash 4.0.2

07 Jun 14:56
Compare
Choose a tag to compare
  • Add write-only cache

I wanted to include this small but important feature in 4.0.1 but forgot, sorry for the double release 😅

JDash 4.0.1

07 Jun 14:25
Compare
Choose a tag to compare
  • downloadPrivateMessage now properly accepts a long instead of an int #20
  • It is now possible to access authentication details via GDClient#getAuthenticationInfo() #21

JDash 4.0.0

20 May 01:55
Compare
Choose a tag to compare

This is a new major release for the JDash libary.

This release rewrites the library from scratch, the API should be now a lot more consistent, more intuitive, less prone to bugs and of better quality overall.

Here are the most notable changes of version 4.0.0 as compared to 3.x:

  • JDK 11 or above is now required.
  • The library is split into multiple modules so you include only what you need, and it is more clear as to which part of the library does what. Feels more organized.
  • The client is now unified into one GDClient immutable class. No more complicated builder, no more distinction between anonymous and authenticated client with weird inheritance relationship between both.
  • The way the client interacts with the server is now abstracted via the GDRouter API. The requests are queued before being processed, with the ability to set a timeout for each request and to set a limit on the number of requests that can be processed within a certain timeframe. Excessive requests would stay queued until timeout instead of causing exceptions immediately.
  • You now have full control over how request responses are cached with the new GDCache API.
  • Exceptions emitted by failed requests are more consistent.
  • The different GD entities (users, levels...) are now pure immutable value objects. They no longer embed the client to perform requests linked to the object. Those value objects use the Immutables library to guarantee immutability.
  • The GD entities also have a better design in terms of fields and inheritance. For example, GDUser only contains basic info on a user (ID, name, role, colors, main icon), GDUserStats extends it with player stats (stars, demons, user coins...), and GDUserProfile extends it again with detailed icon information, global rank, social links, etc.
  • Pagination support has been dropped, seeing as they are often inaccurate and complicates the API more than it solves problems. That means the GDPaginator class has been removed and now requests returning multiple results return a simple Flux.
  • Support for GDPS using HTTPS (the URL can now include the protocol in front of the demain name)
  • The old JDash Events repository has been archived and is now a module of this repository.
  • Unit tests to ensure quality.
  • New documentation website at https://jdash.alex1304.com

The v3.x branch will only be maintained for major bug fixes, otherwise it won't be actively maintained. Issues and pull requests will only be accepted for 4.x versions.

Also please note that I am NOT providing downloadable JARs for v4.x. You are expected to be using a dependency management tool in your project such as Maven or Gradle.

JDash 3.3.8

25 May 13:57
Compare
Choose a tag to compare
  • Sets the User-Agent to an empty string to circumvent server-side blocking
  • Fixes BadResponseException toString
  • Bump dependencies