diff --git a/source/_static/authlib-injector/launcher-jvm-options.png b/source/_static/authlib-injector/launcher-jvm-options.png new file mode 100644 index 0000000..e0f6c51 Binary files /dev/null and b/source/_static/authlib-injector/launcher-jvm-options.png differ diff --git a/source/_static/authlib-injector/server-startup-messages.png b/source/_static/authlib-injector/server-startup-messages.png new file mode 100644 index 0000000..d34bc6d Binary files /dev/null and b/source/_static/authlib-injector/server-startup-messages.png differ diff --git a/source/ru/_static/minecraft-auth/authlib-install.png b/source/_static/minecraft-auth/authlib-install.png similarity index 100% rename from source/ru/_static/minecraft-auth/authlib-install.png rename to source/_static/minecraft-auth/authlib-install.png diff --git a/source/ru/_static/minecraft-auth/authlib/authlib-1.3.1.jar b/source/_static/minecraft-auth/authlib/authlib-1.3.1.jar similarity index 100% rename from source/ru/_static/minecraft-auth/authlib/authlib-1.3.1.jar rename to source/_static/minecraft-auth/authlib/authlib-1.3.1.jar diff --git a/source/ru/_static/minecraft-auth/authlib/authlib-1.3.jar b/source/_static/minecraft-auth/authlib/authlib-1.3.jar similarity index 100% rename from source/ru/_static/minecraft-auth/authlib/authlib-1.3.jar rename to source/_static/minecraft-auth/authlib/authlib-1.3.jar diff --git a/source/ru/_static/minecraft-auth/bungeecord_inclasstranslator.png b/source/_static/minecraft-auth/bungeecord_inclasstranslator.png similarity index 100% rename from source/ru/_static/minecraft-auth/bungeecord_inclasstranslator.png rename to source/_static/minecraft-auth/bungeecord_inclasstranslator.png diff --git a/source/ru/_static/minecraft-auth/bungeecord_move.png b/source/_static/minecraft-auth/bungeecord_move.png similarity index 100% rename from source/ru/_static/minecraft-auth/bungeecord_move.png rename to source/_static/minecraft-auth/bungeecord_move.png diff --git a/source/ru/_static/minecraft-auth/installing_by_inclasstranslator.png b/source/_static/minecraft-auth/installing_by_inclasstranslator.png similarity index 100% rename from source/ru/_static/minecraft-auth/installing_by_inclasstranslator.png rename to source/_static/minecraft-auth/installing_by_inclasstranslator.png diff --git a/source/en/authlib-injector.rst b/source/en/authlib-injector.rst new file mode 100644 index 0000000..566c847 --- /dev/null +++ b/source/en/authlib-injector.rst @@ -0,0 +1,83 @@ +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. It's 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 `_. + +Here is the documentation of the key aspects of installing and using the library. For more information, see the `original documentation in Chinese `_. + +.. _client: + +Installing in a game client +=========================== + +.. attention:: 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: + +.. code-block:: + + java -javaagent:/path/to/file/authlib-injector.jar=ely.by -jar minecraft.jar + +If you run the game through a launcher, then in its settings you need to find a field for specifying additional JVM arguments, in which you need to insert the line above at the beginning. + +.. figure:: ../_static/authlib-injector/launcher-jvm-options.png + :align: center + :alt: Editing JVM arguments + +.. _server: + +Installing on a server +====================== + +Just as in the case with the game client, the library must be specified as javaagent. `Download the library `_ and put in the server's directory. Then add the javaagent call to the server launch command: + +| 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: + +.. figure:: ../_static/authlib-injector/server-startup-messages.png + :align: center + :alt: Message at server startup + +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 BungeeCord's 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 +~~~~~~~~~~~~ + +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: + +#. Download the corresponding LaunchHelper for your operating system from the `releases page `_. + +#. Upload this file and the ``authlib-injector.jar`` file to the server folder on your hosting site. + +#. Also create a ``launchhelper.properties`` file and put the following contents into it: + + .. code-block:: + + 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. + +#. In the hosting control panel, specify the ``LaunchHelper.jar`` as the server file. + + If you can't 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. diff --git a/source/ru/authlib-injector.rst b/source/ru/authlib-injector.rst new file mode 100644 index 0000000..31293b2 --- /dev/null +++ b/source/ru/authlib-injector.rst @@ -0,0 +1,83 @@ +Authlib-injector +---------------- + +**authlib-injector** — это библиотека, позволяющая подменить адреса серверов авторизации и сессии в Authlib, не модифицируя непосредственно саму библиотеку. Выполнена как javaagent. + +Данная библиотека значительно упрощает установку альтернативных сервисов авторизации в игровой клиент и сервер, поскольку она универсально применяет трансформацию в процессе работы программы. + +Скачать последнюю версию можно со `страницы релизов на GitHub `_. + +Здесь приведена документация к ключевым аспектам установки и использования библиотеки. Для более подробной информации обратитесь к `оригинальной документации на китайском языке `_. + +.. _client: + +Установка в игровой клиент +========================== + +.. attention:: Обратите внимание, что этот раздел описывает установку authlib-injector в игру. Игровой лаунчер по-прежнему должен самостоятельно реализовать процесс авторизации, чтобы после передать ``accessToken`` в игру. + +Для применения библиотеки, необходимо указать её в качестве javaagent для игры. Сделать это можно, добавив в начало команды запуска игры строку ``-javaagent:/путь/до/файла/authlib-injector.jar=ely.by``. В результате изменений строка запуска игры должна выглядеть следующим образом: + +.. code-block:: + + java -javaagent:/путь/до/файла/authlib-injector.jar=ely.by -jar minecraft.jar + +Если вы запускаете игру через лаунчер, то в его настройках необходимо найти поле для указания дополнительных аргументов JVM, куда необходимо в самое начало вставить строку, приведённую выше. + +.. figure:: ../_static/authlib-injector/launcher-jvm-options.png + :align: center + :alt: Редактирование аргументов JVM + +.. _server: + +Установка на сервер +=================== + +Также как и в случае с игровым клиентом, библиотеку необходимо указать в качестве javaagent. `Скачайте библиотеку `_ и поместите её в директорию с сервером. После этого добавьте вызов javaagent в команду запуска сервера: + +| До: ``java -jar minecraft_server.jar`` +| После: ``java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar`` + +При запуске сервера вы должны увидеть сообщение об активации authlib-injector: + +.. figure:: ../_static/authlib-injector/server-startup-messages.png + :align: center + :alt: Сообщение при запуске сервера + +BungeeCord +~~~~~~~~~~ + +authlib-injector должен быть установлен непосредственно на сам BungeeCord, а также **на все сервера** позади него. Обратите внимание на конфигурацию параметра online‑mode: + +* В конфигурации BungeeCord (``config.yml``) должно стоять значение ``online_mode=true``. +* В конфигурации всех серверов позади прокси (``server.properties``) должно быть указано значение ``online-mode=false``. + +Благодаря такой конфигурации установки, авторизация будет работать для всех входящих игроков, а на внутренних серверах будут корректно отображаться скины игроков. + +LaunchHelper +~~~~~~~~~~~~ + +Не все игровые хостинги позволяют напрямую модифицировать аргументы, с которыми запускается сервер. Чтобы обойти это ограничение, можно использовать специальный сервер, который запускает игровой сервер, подмешивая туда authlib-injector. Для установки следуйте инструкции: + +#. Скачайте версию LaunchHelper для вашей операционной системы со `страницы загрузок `_. + +#. Загрузите скачанный файл и файл ``authlib-injector.jar`` в папку сервера на вашем хостинге. + +#. Там же создайте файл ``launchhelper.properties`` и поместите в него следующее содержимое: + + .. code-block:: + + javaAgentJarPath=authlib-injector.jar + javaAgentOptions=ely.by + execJarPath=minecraft_server.jar + + Где ``javaAgentJarPath`` содержит путь до файла authlib-injector.jar, а ``execJarPath`` содержит имя файла сервера. + +#. В панели управления хостингом укажите ``LaunchHelper.jar`` в качестве запускаемого файла сервера. + + Если возможности указать исполнимый файл явно нет, то следует переименовать файл ``LaunchHelper.jar`` в соответствие с требованиями вашего хостинга (обычно, это ``server.jar``). В этом случае у вас должна получиться следующая структура файлов: + + * ``server.jar`` - файл LaunchHelper. + * ``minecraft_server.jar`` - предпочитаемое ядро сервера. + * ``authlib-injector.jar`` - файл authlib-injector. + * ``launchhelper.properties`` - файл конфигурации для LaunchHelper. diff --git a/source/ru/minecraft-auth.rst b/source/ru/minecraft-auth.rst index 4012781..8dcd9bd 100644 --- a/source/ru/minecraft-auth.rst +++ b/source/ru/minecraft-auth.rst @@ -261,6 +261,8 @@ accessToken. Вам остаётся только заменить пути вн Готовые библиотеки authlib ========================== +.. attention:: Ely.by поддрживает библиотеку authlib-injector. Это наиболее простой и универсальный способ установки системы авторизации в игру и игровые сервера. За подробностями обратитесь в :doc:`соответствующий раздел документации `. + Поскольку самостоятельная реализация связана с трудностями поиска исходников, подключения зависимостей и в конце-концов с процессом компиляции, на `странице загрузок нашей системы скинов `_ вы можете загрузить уже готовые библиотеки со всеми необходимыми изменениями. Выберите в выпадающем списке необходимую версию и следуйте @@ -269,9 +271,9 @@ accessToken. Вам остаётся только заменить пути вн В более ранних версиях игры система скинов находилась внутри игрового клиента, так что библиотеки ниже обеспечивают лишь авторизацию: -* Minecraft 1.7.5 - :download:`authlib 1.3.1 <_static/minecraft-auth/authlib/authlib-1.3.1.jar>` +* Minecraft 1.7.5 - :download:`authlib 1.3.1 <../_static/minecraft-auth/authlib/authlib-1.3.1.jar>` -* Minecraft 1.7.2 - :download:`authlib 1.3 <_static/minecraft-auth/authlib/authlib-1.3.jar>` +* Minecraft 1.7.2 - :download:`authlib 1.3 <../_static/minecraft-auth/authlib/authlib-1.3.jar>` Для установки вам необходимо заменить оригинальную библиотеку, располагающуюся по пути ``<директория установки minecraft>/libraries/com/mojang/authlib/``. Убедитесь в том, что версии скачанного и заменяемого @@ -298,9 +300,9 @@ authlib для соответствующей версии сервера. Пе Вам необходимо "перетащить" из архива с authlib все файлы и папки, **за исключением директории META-INF**, и подтвердить замену. -.. figure:: _static/minecraft-auth/authlib-install.png +.. figure:: ../_static/minecraft-auth/authlib-install.png :align: center - :alt: Процесс установки authlib. + :alt: Процесс установки Authlib Обратите внимание: "перетягивать" содержимое нужно ниже папок сервера (в область файлов .class). @@ -338,6 +340,8 @@ Paper (PaperSpigot) BungeeCord ========== +.. hint:: Вы можете воспользоваться библиотекой :doc:`authlib-injector ` для установки системы авторизации без модификации внутренностей сервера. + Хотя BungeeCord и является проксирующим сервером, авторизацию игроков он выполняет самостоятельно. К сожалению, BungeeCord не опирается на использование Authlib, а реализует процесс авторизации самостоятельно, поэтому для установки системы авторизации Ely.by вам понадобится модифицировать скомпилированные ``.class`` файлы. Для установки следуйте инструкции ниже: @@ -352,13 +356,13 @@ BungeeCord #. Откройте распакованный файл в программе InClassTranslator и замените в нём строку ``https://sessionserver.mojang.com/session/minecraft/hasJoined?username=`` на ``https://authserver.ely.by/session/hasJoined?username=``, как показано на рисунке ниже: - .. figure:: _static/minecraft-auth/bungeecord_inclasstranslator.png + .. figure:: ../_static/minecraft-auth/bungeecord_inclasstranslator.png :align: center :alt: Редактирование в InClassTranslator #. Сохраните изменения и перетащите измененный файл обратно в архив сервера. Подтвердите замену. - .. figure:: _static/minecraft-auth/bungeecord_move.png + .. figure:: ../_static/minecraft-auth/bungeecord_move.png :align: center :alt: Перетаскивание отредактированного файла назад в архив @@ -404,7 +408,7 @@ Minecraft. Переписывать его сюда не имеет смысла Дальше запустите InClassTranslator и в нём откройте этот класс. Слева будет список найденных в файле строк, которые вы можете изменить. Нужно заменить только строку, отвечающую за запрос на подключение к серверу: -.. figure:: _static/minecraft-auth/installing_by_inclasstranslator.png +.. figure:: ../_static/minecraft-auth/installing_by_inclasstranslator.png :align: center :alt: Порядок редактирования: выбрать нужную строку, изменить, сохранить.