started docs migration to docusaurus

This commit is contained in:
McModder
2025-02-05 16:49:22 +03:00
parent 64fdb01e11
commit ea1227cdf9
59 changed files with 20257 additions and 3323 deletions

313
i18n/en/code.json Normal file
View File

@@ -0,0 +1,313 @@
{
"theme.ErrorPageContent.title": {
"message": "This page crashed.",
"description": "The title of the fallback page when the page crashed"
},
"theme.blog.archive.title": {
"message": "Archive",
"description": "The page & hero title of the blog archive page"
},
"theme.blog.archive.description": {
"message": "Archive",
"description": "The page & hero description of the blog archive page"
},
"theme.BackToTopButton.buttonAriaLabel": {
"message": "Scroll back to top",
"description": "The ARIA label for the back to top button"
},
"theme.blog.paginator.navAriaLabel": {
"message": "Blog list page navigation",
"description": "The ARIA label for the blog pagination"
},
"theme.blog.paginator.newerEntries": {
"message": "Newer entries",
"description": "The label used to navigate to the newer blog posts page (previous page)"
},
"theme.blog.paginator.olderEntries": {
"message": "Older entries",
"description": "The label used to navigate to the older blog posts page (next page)"
},
"theme.blog.post.paginator.navAriaLabel": {
"message": "Blog post page navigation",
"description": "The ARIA label for the blog posts pagination"
},
"theme.blog.post.paginator.newerPost": {
"message": "Newer post",
"description": "The blog post button label to navigate to the newer/previous post"
},
"theme.blog.post.paginator.olderPost": {
"message": "Older post",
"description": "The blog post button label to navigate to the older/next post"
},
"theme.tags.tagsPageLink": {
"message": "View all tags",
"description": "The label of the link targeting the tag list page"
},
"theme.colorToggle.ariaLabel": {
"message": "Switch between dark and light mode (currently {mode})",
"description": "The ARIA label for the navbar color mode toggle"
},
"theme.colorToggle.ariaLabel.mode.dark": {
"message": "dark mode",
"description": "The name for the dark color mode"
},
"theme.colorToggle.ariaLabel.mode.light": {
"message": "light mode",
"description": "The name for the light color mode"
},
"theme.docs.breadcrumbs.navAriaLabel": {
"message": "Breadcrumbs",
"description": "The ARIA label for the breadcrumbs"
},
"theme.docs.DocCard.categoryDescription.plurals": {
"message": "1 item|{count} items",
"description": "The default description for a category card in the generated index about how many items this category includes"
},
"theme.docs.paginator.navAriaLabel": {
"message": "Docs pages",
"description": "The ARIA label for the docs pagination"
},
"theme.docs.paginator.previous": {
"message": "Previous",
"description": "The label used to navigate to the previous doc"
},
"theme.docs.paginator.next": {
"message": "Next",
"description": "The label used to navigate to the next doc"
},
"theme.docs.tagDocListPageTitle.nDocsTagged": {
"message": "One doc tagged|{count} docs tagged",
"description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.docs.tagDocListPageTitle": {
"message": "{nDocsTagged} with \"{tagName}\"",
"description": "The title of the page for a docs tag"
},
"theme.docs.versionBadge.label": {
"message": "Version: {versionLabel}"
},
"theme.docs.versions.unreleasedVersionLabel": {
"message": "This is unreleased documentation for {siteTitle} {versionLabel} version.",
"description": "The label used to tell the user that he's browsing an unreleased doc version"
},
"theme.docs.versions.unmaintainedVersionLabel": {
"message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.",
"description": "The label used to tell the user that he's browsing an unmaintained doc version"
},
"theme.docs.versions.latestVersionSuggestionLabel": {
"message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).",
"description": "The label used to tell the user to check the latest version"
},
"theme.docs.versions.latestVersionLinkLabel": {
"message": "latest version",
"description": "The label used for the latest version suggestion link label"
},
"theme.common.editThisPage": {
"message": "Edit this page",
"description": "The link label to edit the current page"
},
"theme.common.headingLinkTitle": {
"message": "Direct link to {heading}",
"description": "Title for link to heading"
},
"theme.lastUpdated.atDate": {
"message": " on {date}",
"description": "The words used to describe on which date a page has been last updated"
},
"theme.lastUpdated.byUser": {
"message": " by {user}",
"description": "The words used to describe by who the page has been last updated"
},
"theme.lastUpdated.lastUpdatedAtBy": {
"message": "Last updated{atDate}{byUser}",
"description": "The sentence used to display when a page has been last updated, and by who"
},
"theme.navbar.mobileVersionsDropdown.label": {
"message": "Versions",
"description": "The label for the navbar versions dropdown on mobile view"
},
"theme.NotFound.title": {
"message": "Page Not Found",
"description": "The title of the 404 page"
},
"theme.tags.tagsListLabel": {
"message": "Tags:",
"description": "The label alongside a tag list"
},
"theme.admonition.caution": {
"message": "caution",
"description": "The default label used for the Caution admonition (:::caution)"
},
"theme.admonition.danger": {
"message": "danger",
"description": "The default label used for the Danger admonition (:::danger)"
},
"theme.admonition.info": {
"message": "info",
"description": "The default label used for the Info admonition (:::info)"
},
"theme.admonition.note": {
"message": "note",
"description": "The default label used for the Note admonition (:::note)"
},
"theme.admonition.tip": {
"message": "tip",
"description": "The default label used for the Tip admonition (:::tip)"
},
"theme.admonition.warning": {
"message": "warning",
"description": "The default label used for the Warning admonition (:::warning)"
},
"theme.AnnouncementBar.closeButtonAriaLabel": {
"message": "Close",
"description": "The ARIA label for close button of announcement bar"
},
"theme.blog.sidebar.navAriaLabel": {
"message": "Blog recent posts navigation",
"description": "The ARIA label for recent posts in the blog sidebar"
},
"theme.CodeBlock.copied": {
"message": "Copied",
"description": "The copied button label on code blocks"
},
"theme.CodeBlock.copyButtonAriaLabel": {
"message": "Copy code to clipboard",
"description": "The ARIA label for copy code blocks button"
},
"theme.CodeBlock.copy": {
"message": "Copy",
"description": "The copy button label on code blocks"
},
"theme.CodeBlock.wordWrapToggle": {
"message": "Toggle word wrap",
"description": "The title attribute for toggle word wrapping button of code block lines"
},
"theme.DocSidebarItem.expandCategoryAriaLabel": {
"message": "Expand sidebar category '{label}'",
"description": "The ARIA label to expand the sidebar category"
},
"theme.DocSidebarItem.collapseCategoryAriaLabel": {
"message": "Collapse sidebar category '{label}'",
"description": "The ARIA label to collapse the sidebar category"
},
"theme.NavBar.navAriaLabel": {
"message": "Main",
"description": "The ARIA label for the main navigation"
},
"theme.navbar.mobileLanguageDropdown.label": {
"message": "Languages",
"description": "The label for the mobile language switcher dropdown"
},
"theme.NotFound.p1": {
"message": "We could not find what you were looking for.",
"description": "The first paragraph of the 404 page"
},
"theme.NotFound.p2": {
"message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.",
"description": "The 2nd paragraph of the 404 page"
},
"theme.TOCCollapsible.toggleButtonLabel": {
"message": "On this page",
"description": "The label used by the button on the collapsible TOC component"
},
"theme.blog.post.readMore": {
"message": "Read more",
"description": "The label used in blog post item excerpts to link to full blog posts"
},
"theme.blog.post.readMoreLabel": {
"message": "Read more about {title}",
"description": "The ARIA label for the link to full blog posts from excerpts"
},
"theme.blog.post.readingTime.plurals": {
"message": "One min read|{readingTime} min read",
"description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.docs.breadcrumbs.home": {
"message": "Home page",
"description": "The ARIA label for the home page in the breadcrumbs"
},
"theme.docs.sidebar.collapseButtonTitle": {
"message": "Collapse sidebar",
"description": "The title attribute for collapse button of doc sidebar"
},
"theme.docs.sidebar.collapseButtonAriaLabel": {
"message": "Collapse sidebar",
"description": "The title attribute for collapse button of doc sidebar"
},
"theme.docs.sidebar.navAriaLabel": {
"message": "Docs sidebar",
"description": "The ARIA label for the sidebar navigation"
},
"theme.docs.sidebar.closeSidebarButtonAriaLabel": {
"message": "Close navigation bar",
"description": "The ARIA label for close button of mobile sidebar"
},
"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
"message": "← Back to main menu",
"description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
},
"theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
"message": "Toggle navigation bar",
"description": "The ARIA label for hamburger menu button of mobile navigation"
},
"theme.docs.sidebar.expandButtonTitle": {
"message": "Expand sidebar",
"description": "The ARIA label and title attribute for expand button of doc sidebar"
},
"theme.docs.sidebar.expandButtonAriaLabel": {
"message": "Expand sidebar",
"description": "The ARIA label and title attribute for expand button of doc sidebar"
},
"theme.blog.post.plurals": {
"message": "One post|{count} posts",
"description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.blog.tagTitle": {
"message": "{nPosts} tagged with \"{tagName}\"",
"description": "The title of the page for a blog tag"
},
"theme.blog.author.pageTitle": {
"message": "{authorName} - {nPosts}",
"description": "The title of the page for a blog author"
},
"theme.blog.authorsList.pageTitle": {
"message": "Authors",
"description": "The title of the authors page"
},
"theme.blog.authorsList.viewAll": {
"message": "View all authors",
"description": "The label of the link targeting the blog authors page"
},
"theme.blog.author.noPosts": {
"message": "This author has not written any posts yet.",
"description": "The text for authors with 0 blog post"
},
"theme.contentVisibility.unlistedBanner.title": {
"message": "Unlisted page",
"description": "The unlisted content banner title"
},
"theme.contentVisibility.unlistedBanner.message": {
"message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.",
"description": "The unlisted content banner message"
},
"theme.contentVisibility.draftBanner.title": {
"message": "Draft page",
"description": "The draft content banner title"
},
"theme.contentVisibility.draftBanner.message": {
"message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
"description": "The draft content banner message"
},
"theme.ErrorPageContent.tryAgain": {
"message": "Try again",
"description": "The label of the button to try again rendering when the React error boundary captures an error"
},
"theme.common.skipToMainContent": {
"message": "Skip to main content",
"description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
},
"theme.tags.tagsPageTitle": {
"message": "Tags",
"description": "The title of the tag list page"
}
}

View File

@@ -0,0 +1,6 @@
{
"version.label": {
"message": "Next",
"description": "The label for version current"
}
}

View File

@@ -0,0 +1,107 @@
# Ely.by API (Mojang API simulation)
This article contains information about the API compatible with the [Mojang API](http://wiki.vg/Mojang_API) functionality. Please note that this is not a full-fledged API of Ely.by, but only a set of additional requests implemented based on our `[authorization server](./minecraft-auth.md)`.
## Requests
:::note
The API has no rate limit. We just have a configured fail2ban that will ban especially annoying clients. Thats the way.
:::
This section will describe the requests and their corresponding variants for Mojang API. Base URL for requests is `https://authserver.ely.by`.
### UUID by username at a time {#uuid-by-username}
This request allows you to find out the UUID of a user by their username at a specified point in time. The time is specified via GET parameter at as a Unix timestamp.
> **GET /api/users/profiles/minecraft/\{username\}**
>
> Where `{username}` is the searched username. It can be passed in any case (in the Mojang API, only strict match).
> Note that the legacy and demo params will never be returned, as these parameters have no alternative in Ely and are specific only for Mojang services.
In case of a successful request you will receive the following response:
```json
{
"id": "ffc8fdc95824509e8a57c99b940fb996",
"name": "ErickSkrauch"
}
```
When the passed username isnt found, you will receive a response with `204` status code and an empty body.
### Username by UUID + history of changes {#username-by-uuid}
This request allows you to find out all usernames used by a user by their UUID.
> **GET /api/user/profiles/\{uuid\}/names**
>
> Where `{uuid}` is a valid UUID. UUID might be written with or without hyphens. If an invalid string is passed, [IllegalArgumentException](#illegal-argument-exception) will be returned with the message `"Invalid uuid format."`.
In case of a successful request you will receive the following response:
```json
[
{
"name": "Admin"
},
{
"name": "ErickSkrauch",
"changedToAt": 1440707723000
}
]
```
:::note
Since Ely.by doesnt store the moment of username change only 1 username will always be returned. We may add full support for remembering when a username was changed in the future.
:::
When the passed UUID isnt found, you will receive a response with `204` status code and an empty body.
### Usernames list to their UUIDs {#usernames-to-uuids}
This request allows you to query a list of users UUIDs by their usernames.
> **POST /api/profiles/minecraft**
>
> In the request body or POST parameters you need to pass a valid JSON array of the searched usernames.
>
> The array must contain no more than 100 usernames, otherwise [IllegalArgumentException](#illegal-argument-exception) will be returned with the message `"Not more than that 100 profile names per call is allowed."`. In case the passed string is an invalid JSON object, the same exception will be returned, but with the text `"Passed array of profile names is an invalid JSON string."`.
>
> Example of a request body:
> ```json
> ["ErickSkrauch", "EnoTiK", "KmotherfuckerF"]
> ```
In case of a successful request you will receive the following response:
```json
[
{
"id": "ffc8fdc95824509e8a57c99b940fb996",
"name": "ErickSkrauch"
},
{
"id": "b8407ae8218658ef96bb0cb3813acdfd",
"name": "EnoTiK"
},
{
"id": "39f42ba723de56d98867eabafc5e8e91",
"name": "KmotherfuckerF"
}
]
```
The data is returned in the same order they were requested.
If one of the passed usernames isnt found in the database, no value will be returned for it (it will be skipped). Keep this in mind when parsing the response.
### Profile info by UUID {#profile-by-uuid}
See the `[profile request for the authorization server](./minecraft-auth.md#profile-request)`.
## Possible errors {#possible-errors}
### IllegalArgumentException {#illegal-argument-exception}
This error occurs when attempting to send data to the server in an incorrect format.
An error example:
```json
{
"error": "IllegalArgumentException",
"errorMessage": "Invalid uuid format."
}
```
The `errorMessage` is not always matches Mojangs strings, but the differences are only apparent to Ely-specific errors. The original requests and the errors expected from them repeat Mojang texts.

View File

@@ -0,0 +1,59 @@
# Authlib-Injector
**authlib-injector** is a library that allows you to spoof authorization and session server addresses in the Authlib without modifying the library itself. Its designed as an javaagent.
This library significantly simplifies the installation of an alternative authorization service in the game client and server, since transformation occurs during application bootstrap process.
You can download the latest version from the [releases page on GitHub](https://github.com/yushijinhun/authlib-injector/releases/latest).
Here is the documentation of the key aspects of installing and using the library. For more information, see the [original documentation in Chinese](https://github.com/yushijinhun/authlib-injector/wiki).
## Installing in a game client {#client}
:::warning
This section describes how to install the **authlib-injector** into the game. The game launcher still needs to implement the authorization flow itself in order to pass the `accessToken` to the game.
:::
To install the library, you need to specify it as a javaagent for the game. You can do this by prepending the line `-javaagent:/path/to/file/authlib-injector.jar=ely.by` as a game launching param. As the result, the launch command should look like this:
```bash
java -javaagent:/path/to/authlib-injector.jar=ely.by -jar minecraft.jar
```
If you run the game via launcher, then in “settings” you need to find a field for specifying additional JVM arguments, where you need to insert the line above.
![Minecraft Launcher settings with -javaagent... argument in the JVM Arguments field](/img/launcher-jvm-options.png)
## Installing on a server {#server}
Just as in the case with the game client, the library must be specified as javaagent. [Download the library](https://github.com/yushijinhun/authlib-injector/releases/latest) and put in the servers directory. Then add the javaagent call to the server launch command:
```bash
# Before
java -jar minecraft_server.jar
# After
java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar
```
During server startup you should see a message about the activation of the authlib-injector:
![Authlib-injector log strings at the server startup](/img/server-startup-messages.png)
### BungeeCord {#bungeecord}
The authlib-injector must be installed directly on the BungeeCord itself, as well as **on all backends** behind it. Note the configuration of the online-mode parameter:
* The BungeeCords configuration (`config.yml`) should contain `online_mode=true`.
* The servers behind the proxy must contain in their configuration (`server.properties`) the value `online-mode=false`.
Using such configuration authorization will work for all logging in players and the internal servers will correctly display player skins.
### LaunchHelper {#launchhelper}
Not all game hostings allow direct modifications of launch arguments. To get around this limitation, you can use a special server that runs the game server by mixing authlib-injector into it. To install, follow these instructions:
1. Download the corresponding LaunchHelper for your operating system from the [releases page](https://github.com/Codex-in-somnio/LaunchHelper/releases/latest).
1. Upload this file and the `authlib-injector.jar` file to the server folder on your hosting site.
1. Also create a `launchhelper.properties` file and put the following contents into it:
```properties
javaAgentJarPath=authlib-injector.jar
javaAgentOptions=ely.by
execJarPath=minecraft_server.jar
```
Where `javaAgentJarPath` contains the path to the `authlib-injector.jar` file and `execJarPath` contains the name of the server file.
1. In the hosting control panel, specify the `LaunchHelper.jar` as the server file.
If you cant change the executable file, you should rename the `LaunchHelper.jar` file to match your hosting requirements (usually, `server.jar`). In this case, you should have the following file structure:
* `server.jar` - the LaunchHelper file.
* `minecraft_server.jar` - your server core.
* `authlib-injector.jar` - the authlib-injector file.
* `launchhelper.properties` - the configuration file for the LaunchHelper.

View File

@@ -0,0 +1,8 @@
---
slug: /
---
# Welcome to the Ely.by documentation! {#welcome}
In this documentation you will find information about the public services of the Ely.by project, using which youll be able to integrate your projects with the Ely.by services.
You are free to improve this documentation in the documentations repository.

View File

@@ -0,0 +1,42 @@
{
"link.title.Проекты": {
"message": "Projects",
"description": "The title of the footer links column with title=Проекты in the footer"
},
"link.title.Сообщество": {
"message": "Community",
"description": "The title of the footer links column with title=Сообщество in the footer"
},
"link.item.label.Система скинов Ely.by": {
"message": "Ely.by Skin System",
"description": "The label of footer link with label=Система скинов Ely.by linking to https://ely.by"
},
"link.item.label.Аккаунты Ely.by": {
"message": "Ely.by Accounts",
"description": "The label of footer link with label=Аккаунты Ely.by linking to https://account.ely.by"
},
"link.item.label.X (Twitter)": {
"message": "X (Twitter)",
"description": "The label of footer link with label=X (Twitter) linking to https://x.com/erickskrauch"
},
"link.item.label.YouTube": {
"message": "YouTube",
"description": "The label of footer link with label=YouTube linking to https://www.youtube.com/c/ElyByOfficial"
},
"link.item.label.VK": {
"message": "VK",
"description": "The label of footer link with label=VK linking to https://vk.com/elyby"
},
"link.item.label.Discord": {
"message": "Discord",
"description": "The label of footer link with label=Discord linking to https://ely.by"
},
"link.item.label.GitHub": {
"message": "GitHub",
"description": "The label of footer link with label=GitHub linking to https://github.com/elyby"
},
"copyright": {
"message": "Copyright © 2024 Ely.by. Built with Docusaurus.",
"description": "The footer copyright"
}
}

View File

@@ -0,0 +1,10 @@
{
"title": {
"message": "Документация Ely.by",
"description": "The title in the navbar"
},
"logo.alt": {
"message": "Логотип Ely.by",
"description": "The alt text of navbar logo"
}
}