{"id":39604840,"url":"https://github.com/scrayosnet/xenos-client-kotlin","last_synced_at":"2026-05-25T11:01:13.053Z","repository":{"id":227176699,"uuid":"761845512","full_name":"scrayosnet/xenos-client-kotlin","owner":"scrayosnet","description":"Xenos Client (Kotlin/Java)","archived":false,"fork":false,"pushed_at":"2026-05-25T09:44:39.000Z","size":170,"stargazers_count":3,"open_issues_count":14,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-25T10:10:35.171Z","etag":null,"topics":["api","client","games","grpc","java","kotlin","minecraft","mojang-api","network","protobuf","wrapper","xenos"],"latest_commit_sha":null,"homepage":"https://scrayosnet.github.io/xenos-client-kotlin/","language":"Kotlin","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/scrayosnet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-22T15:44:03.000Z","updated_at":"2026-05-25T09:44:44.000Z","dependencies_parsed_at":"2024-03-22T14:53:17.008Z","dependency_job_id":"0d9868e4-16cc-495a-a2b5-d900b1d484f8","html_url":"https://github.com/scrayosnet/xenos-client-kotlin","commit_stats":null,"previous_names":["scrayosnet/xenos-client-kotlin"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/scrayosnet/xenos-client-kotlin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fxenos-client-kotlin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fxenos-client-kotlin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fxenos-client-kotlin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fxenos-client-kotlin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scrayosnet","download_url":"https://codeload.github.com/scrayosnet/xenos-client-kotlin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrayosnet%2Fxenos-client-kotlin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33471530,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T06:32:55.349Z","status":"ssl_error","status_checked_at":"2026-05-25T06:32:35.322Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api","client","games","grpc","java","kotlin","minecraft","mojang-api","network","protobuf","wrapper","xenos"],"created_at":"2026-01-18T07:58:51.497Z","updated_at":"2026-05-25T11:01:13.045Z","avatar_url":"https://github.com/scrayosnet.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"![The official Logo of Xenos Client](.github/images/logo.png \"Xenos Client\")\n\n![A visual badge for the latest release](https://img.shields.io/github/v/release/scrayosnet/xenos-client-kotlin \"Latest Release\")\n![A visual badge for the workflow status](https://img.shields.io/github/actions/workflow/status/scrayosnet/xenos-client-kotlin/gradle.yml \"Workflow Status\")\n![A visual badge for the license](https://img.shields.io/github/license/scrayosnet/xenos \"License\")\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=scrayosnet_xenos-client-kotlin\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=scrayosnet_xenos-client-kotlin \"Coverage\")\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=scrayosnet_xenos-client-kotlin\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=scrayosnet_xenos-client-kotlin \"Reliability\")\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=scrayosnet_xenos-client-kotlin\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=scrayosnet_xenos-client-kotlin \"Maintainability\")\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=scrayosnet_xenos-client-kotlin\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=scrayosnet_xenos-client-kotlin \"Security\")\n[![Discord Community](https://shields.io/discord/1351591265887719508?label=discord)](https://discord.gg/xZ4wbuuKZf \"Discord Community\")\n\nXenos Client for Kotlin is a [gRPC][grpc-docs] client/binding that wraps the raw protobuf stubs and communication with\n[Xenos][xenos-project] in an easy-to-use, polished API. It is possible to add the client as a dependency in Maven and\nGradle, simplifying the process of supporting [Xenos][xenos-project] within projects.\n\nThe bindings are automatically created and then documented and equipped with sane defaults to assist developers in\nquickly adapting the API and removing the need to understand the inner workings of Protobuf and [gRPC][grpc-docs].\n\n## Motivation\n\nFor the original motivation regarding the development of Xenos, visit the original project [here][xenos-project]. Xenos\nClient for Kotlin was developed to simplify the embedding into existing Minecraft infrastructure while still enabling\nadvances syntax sugar for Kotlin based setups. While we do our best to support plain Java projects, this client is\ndeveloped with a \"Kotlin first\" approach.\n\nThis is reflected in the heavy use of suspended functions. They are the ideal language feature to reflect asynchronous\ncommunication with a service, so they had to be included into our client. While they are strongly embedded into the\nfoundation of Kotlin, and the use within plain Java projects is, admittedly, a little cumbersome, there are still a few\n[options to invoke them][suspend-from-java] from within Java code. But we recommend calling the API from Kotlin instead\nand switching to a hybrid project.\n\nWe strive to optimize this client with efficient defaults and still allow users to tweak the client to their liking or\ninfrastructural needs. This way, new developers don't need to meddle with things like gRPC pipeline configuration or\nthe decision of which stub to use, but can focus on developing their applications instead.\n\n## Major Features\n\n* Communicate with your local or remote [Xenos][xenos-project] instance through [gRPC][grpc-docs] with blazing fast\n  response times.\n* Treat the request of Minecraft profile information like local data and never think about rate limits or performance\n  impact ever again.\n* Get cached responses if the Mojang API is currently unavailable to continue working even while there is an outage.\n* Use pooled connections to [Xenos][xenos-project] to benefit from the HA capabilities.\n* Ignore the inner workings of the protocol transfer and just think about the data. Xenos-Client will handle the rest\n  for you!\n* Invoke simplified methods to retrieve the data that you really care about, without any boilerplate code on your end.\n\n## Getting started\n\nIn order to use this client, your application needs to have access to some instance of [Xenos][xenos-project] and this\ninstance needs to have [gRPC][grpc-docs] enabled. For information on how to deploy your own instance and preparing it\nfor connections from your clients, visit [this documentation][xenos-project].\n\n### Dependency\n\nAfter your instance is up and running, you have to add Xenos Client for Kotlin to your dependencies:\n\n```kotlin\ndependencies {\n    // make sure to specify the latest version\n    api(\"net.scrayos\", \"xenos-client\", \"2.0.0\")\n\n    // choose your own gRPC runtime or use an existing one\n    runtimeOnly(\"io.grpc\", \"grpc-netty\", \"1.81.0\")\n}\n```\n\nInstead of `grpc-netty` you may also use `grpc-netty-shaded` (which hides the transitive Netty dependency) or any other\ncompatible gRPC runtime. We recommend sticking with the default runtime but in theory, Xenos Client should be compatible\nwith either runtime.\n\nSince Xenos Client is deployed to the official Maven Central repository, you don't need to include any special repositories:\n\n```kotlin\nrepositories {\n    mavenCentral()\n}\n```\n\nAfter reloading your Gradle project, you should now be able to retrieve all related classes.\n\n### Usage\n\nBelow you can find a guide on obtaining a `XenosClient`, the central interface to perform lookups through\n[Xenos][xenos-project]. Please use the version, appropriate for your language (Java/Kotlin).\n\n#### Kotlin\n\n```kotlin\n// host and port could be supplied by an environment variable or flag\nval client = GrpcXenosClient(\"127.0.0.1\", 50051)\n\n// any request can be performed on the client while it is open\nval profile = client.getProfile(UUID.randomUUID())\n```\n\n#### Java\n\n```java\n// host and port could be supplied by an environment variable or flag\nXenosClient client = new GrpcXenosClient(\"127.0.0.1\", 50051);\n\n// any request can be performed on the client while it is open\nProfileResult profile = client.getProfile(UUID.randomUUID());\n```\n\n## Reporting Security Issues\n\nTo report a security issue for this project, please note our [Security Policy][security-policy].\n\n## Code of Conduct\n\nParticipation in this project comes under the [Contributor Covenant Code of Conduct][code-of-conduct].\n\n## How to contribute\n\nThanks for considering contributing to this project! In order to submit a Pull Request, please read\nour [contributing][contributing-guide] guide. This project is in active development, and we're always happy to receive\nnew contributions!\n\n## License\n\nThis project is developed and distributed under the MIT License. See [this explanation][mit-license-doc] for a rundown\non what that means.\n\n[xenos-project]: https://github.com/scrayosnet/xenos\n\n[grpc-docs]: https://grpc.io/\n\n[suspend-from-java]: https://www.baeldung.com/kotlin/suspend-functions-from-java\n\n[semver-docs]: https://semver.org/lang/de/\n\n[security-policy]: SECURITY.md\n\n[code-of-conduct]: CODE_OF_CONDUCT.md\n\n[contributing-guide]: CONTRIBUTING.md\n\n[mit-license-doc]: https://choosealicense.com/licenses/mit/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscrayosnet%2Fxenos-client-kotlin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscrayosnet%2Fxenos-client-kotlin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscrayosnet%2Fxenos-client-kotlin/lists"}