{"id":13496855,"url":"https://github.com/Alex1304/jdash","last_synced_at":"2025-03-28T21:31:48.548Z","repository":{"id":32666044,"uuid":"128254627","full_name":"Alex1304/jdash","owner":"Alex1304","description":"Geometry Dash API for Java developers","archived":false,"fork":false,"pushed_at":"2024-04-23T22:59:44.000Z","size":23517,"stargazers_count":19,"open_issues_count":18,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-24T12:07:38.633Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Alex1304.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-04-05T19:30:24.000Z","updated_at":"2024-04-26T00:24:05.255Z","dependencies_parsed_at":"2024-01-16T09:53:10.741Z","dependency_job_id":"9dd9eba6-b02e-47fe-b20b-6b5eadb2f966","html_url":"https://github.com/Alex1304/jdash","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex1304%2Fjdash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex1304%2Fjdash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex1304%2Fjdash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex1304%2Fjdash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alex1304","download_url":"https://codeload.github.com/Alex1304/jdash/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222418043,"owners_count":16981259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T20:00:15.801Z","updated_at":"2024-10-31T13:31:04.603Z","avatar_url":"https://github.com/Alex1304.png","language":"Java","funding_links":[],"categories":["Libraries"],"sub_categories":[],"readme":"# JDash\n\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/Alex1304/jdash?sort=semver)\n[![Maven Central](https://img.shields.io/maven-central/v/com.alex1304.jdash/jdash.svg?label=Maven%20Central)](https://central.sonatype.com/namespace/com.alex1304.jdash)\n![License](https://img.shields.io/github/license/Alex1304/jdash)\n[![javadoc](https://javadoc.io/badge2/com.alex1304.jdash/jdash-client/javadoc.svg)](https://javadoc.io/doc/com.alex1304.jdash/jdash-client)\n\nA reactive Geometry Dash API wrapper for Java.\n\n## Overview\n\nJDash is a multi-module library **requiring [JDK 17](https://adoptium.net) or above since version 5.0**. There are currently 4 modules.\n\n### JDash Client module\n\nProvides a high-level client to request data from Geometry Dash servers. It is powered by [Project Reactor](https://projectreactor.io) which allows to make requests in an efficient and non-blocking manner with backpressure handling (requests are queued internally and processed when resources are available, allowing requests to fail-fast in case the queue is full).\n\n```java\nGDClient client = GDClient.create();\n\n// Block until request completes\nGDLevel level = client.findLevelById(10565740).block();\nSystem.out.println(level);\n\n// But we can also choose to make it asychronous and non-blocking\nclient.getUserProfile(98006).subscribe(System.out::println); // will not block\n```\n\nMaven dependency:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.alex1304.jdash\u003c/groupId\u003e\n    \u003cartifactId\u003ejdash-client\u003c/artifactId\u003e\n    \u003cversion\u003e${version}\u003c/version\u003e \u003c!-- replace with latest version --\u003e\n\u003c/dependency\u003e\n```\n\n### JDash Events module\n\nProvides an event loop that can be subscribed to in order to periodically send requests with a `GDClient` and emit events when changes are detected on the server. It comes with default implementations that can detect when new levels or lists get rated, and when the Daily level or Weekly demon changes. You may also implement your own events with the `GDEventProducer` interface.\n\n```java\nGDClient client = GDClient.create();\nGDEventLoop eventLoop = GDEventLoop.startWithDefaults(client);\n\neventLoop.on(AwardedLevelAdd.class)\n        .subscribe(event -\u003e System.out.println(\"New level rated: \"\n                + event.addedLevel().name()));\n\neventLoop.on(DailyLevelChange.class)\n        .subscribe(event -\u003e System.out.println(\"New Daily level: \"\n                + event.after().name()));\n```\n\nMaven dependency:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.alex1304.jdash\u003c/groupId\u003e\n    \u003cartifactId\u003ejdash-events\u003c/artifactId\u003e\n    \u003cversion\u003e${version}\u003c/version\u003e \u003c!-- replace with latest version --\u003e\n\u003c/dependency\u003e\n```\n\n### JDash Graphics module\n\nAllows to generate player icons and level difficulty icons from game assets.\n\n#### Example 1: Generate an arbitrary player icon\n\n```java\nIconRenderer renderer = IconRenderer.load(IconType.SPIDER, 15);\nColorSelection color = new ColorSelection(12, 9, OptionalInt.of(9));\nBufferedImage output = renderer.render(color);\n```\n\n![icon](website/docs/assets/spider-15.png)\n\n#### Example 2: Generate the full icon set of a `GDUserProfile`\n\n```java\nGDClient client = GDClient.create();\nGDUserProfile user = client.getUserProfile(98006).block();\nIconSetFactory factory = IconSetFactory.forUser(user);\nBufferedImage output = factory.createIconSet();\n```\n\n![icon](website/docs/assets/iconSet.png)\n\n#### Example 3: Generate an arbitrary difficulty icon\n\n```java\nBufferedImage image = DifficultyRenderer.create(DemonDifficulty.EASY)\n        .withMoons(10)\n        .withQualityRating(QualityRating.LEGENDARY)\n        .render();\n```\n\n![icon](website/docs/assets/demon-easy-10-stars-legendary.png)\n\n#### Example 4: Generate the difficulty icon of a `GDLevel`\n\n```java\nGDClient client = GDClient.create();\nGDLevel level = client.findLevelById(10565740).block();\nBufferedImage image = DifficultyRenderer.forLevel(level).render();\n```\n![icon](website/docs/assets/level.png)\n\n\nMaven dependency:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.alex1304.jdash\u003c/groupId\u003e\n    \u003cartifactId\u003ejdash-graphics\u003c/artifactId\u003e\n    \u003cversion\u003e${version}\u003c/version\u003e \u003c!-- replace with latest version --\u003e\n\u003c/dependency\u003e\n```\n\n### JDash Common module\n\nContains utility classes and data types to encode the different entities of Geometry Dash (levels, users...) required by all other modules.\n\n**If you are already using one of the other modules, you don't need to add this dependency as other modules transitively require it.**\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.alex1304.jdash\u003c/groupId\u003e\n    \u003cartifactId\u003ejdash-common\u003c/artifactId\u003e\n    \u003cversion\u003e${version}\u003c/version\u003e \u003c!-- replace with latest version --\u003e\n\u003c/dependency\u003e\n```\n\n## Documentation\n\nThe full documentation is available at: https://jdash.alex1304.com\n\nJavadoc:\n* For the common module: https://javadoc.io/doc/com.alex1304.jdash/jdash-common\n* For the client module: https://javadoc.io/doc/com.alex1304.jdash/jdash-client\n* For the events module: https://javadoc.io/doc/com.alex1304.jdash/jdash-events\n* For the graphics module: https://javadoc.io/doc/com.alex1304.jdash/jdash-graphics\n\n## License\n\nThis project is licensed under the MIT licence.\n\n## Contribute\n\nHave a feature to suggest or a bug to report ? Issues and pull requests are more than welcome! Make sure to follow the template and share your ideas.\n\n## Contact\n\nE-mail: mirandaa1304@gmail.com\n\nDiscord: Alex1304#9704\n\nTwitter: @gd_alex1304\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlex1304%2Fjdash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAlex1304%2Fjdash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlex1304%2Fjdash/lists"}