Releases: Alex1304/jdash
JDash 5.0.2
🐞 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
andisGauntlet
🗒️ Full Changelog
JDash 5.0.1
🐞 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()
andGDSong#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
andeditorTimeCopies
fields toGDLevelDownload
. - Added
creatorAccountId
toGDLevel
.
📦 jdash-events
- Introduce a
PagesComparator
interface to conveniently implement producers that emit events based on changes detected on pages of results. Pass implementations toGDEventProducer#comparingPages(PagesComparator)
to obtain the correspondingGDEventProducer
.
🗒️ Full Changelog
JDash 5.0.0
🎉 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 fromorg.immutables
to Java Records - As a consequence, there is no longer inheritance between types as it was the case for
GDUser
andGDUserStats
for example. Inheritance has been replaced with composition, meaning that in order to access the account ID from aGDUserStats
instance,stats.accountId()
becomesstats.user().accountId()
. - The
jdash-graphics
module has been completely rewritten, it is now only made of 4 public classes:IconRenderer
,IconSetFactory
,ColorSelection
andDifficultyRenderer
- In
jdash-events
,AwardedAdd
was renamed toAwardedLevelAdd
in order to lift ambiguity introduced by level lists. Same happened toAwardedRemove
andAwardedUpdate
- The wording of some methods has been improved. As such,
AccessPolicy
was renamed toPrivacySetting
,browseLevels
becamesearchLevels
, 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
: IntroduceQualityRating
enum that includes the new Legendary and Mythic ratingsjdash-common
: Add new fields toGDLevel
/GDLevelDownload
to support Platformer mode and multi-song/SFXjdash-common
: Add moons and completed level counters on user profilesjdash-graphics
: It is now possible to generate level difficulty icons via theDifficultyRenderer
classjdash-client
: Add methods to fetch lists from serversjdash-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
JDash 4.0.5
Fix creator info string getting skipped when one of the creators' username contained a space.
JDash 4.0.4
- 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
The jdash-events module was not exporting any package, making it completely unusable... whoops
JDash 4.0.2
- 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
JDash 4.0.0
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...), andGDUserProfile
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 simpleFlux
. - 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
- Sets the User-Agent to an empty string to circumvent server-side blocking
- Fixes
BadResponseException
toString - Bump dependencies