From 4ba858821843d436462c1f18a13b5e921e64d51a Mon Sep 17 00:00:00 2001 From: SerinaNya <34389622+SerinaNya@users.noreply.github.com> Date: Sun, 24 Nov 2024 00:21:51 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20perf(yggdrasil):=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/yggdrasil/authlib-injector.md | 297 +++++++++++++++-------------- docs/yggdrasil/index.md | 156 +++++++-------- docs/yggdrasil/server.md | 58 +++--- 3 files changed, 259 insertions(+), 252 deletions(-) diff --git a/docs/yggdrasil/authlib-injector.md b/docs/yggdrasil/authlib-injector.md index 6abf053..6603cd3 100644 --- a/docs/yggdrasil/authlib-injector.md +++ b/docs/yggdrasil/authlib-injector.md @@ -1,139 +1,158 @@ - - -# authlib-injector - -> authlib-injector 为玩家提供统一的非 Mojang 登录体验。大多数的外置登录都使用 authlib-injector 来实现。 - ---- - - - -## 单服务端 - -1. 将服务器配置文件 `server.properties` 中 `online-mode` 一项的值设为 `true` - - ::: code-group - - ``` properties:line-numbers=23 [server.properties] - online-mode=true - ``` - - ::: - -2. 在你的服务端的启动指令的 `-jar` 参数前添加如下参数 - - ::: code-group - - ``` bash-vue [需要添加的内容] - -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil - ``` - - ``` bash-vue [完整的启动指令示例] - java -Xms4G -Xmx16G -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar paper-1.20.4-409.jar --nogui - ``` - - ::: - - - `authlib-injector-{{ latest }}.jar` 为指向 authlib-injector 的 `jar` 的路径或文件名 - - `https://littleskin.cn/api/yggdrasil` 为 LittleSkin 的 Yggdrasil API 地址 - -## Velocity - -Modern forwarding 是 Velocity 支持的一种独创格式。它以高效的二进制格式转发所有玩家信息。但是,它仅适用于 Minecraft 1.13 或更高版本。 - -> [!TIP] 提示 -> 本文仅会对「为 Velocity modern forwarding 配置 LittleSkin 外置登录」做出说明。 -> -> 本案例使用 Velocity + Paper 作为示例。 -> -> 具体的 Velocity 配置请结合参考 [Velocity 文档](https://docs.papermc.io/velocity/player-information-forwarding#configuring-modern-forwarding)。 - - - -- 对于以上所有 - - **每个**服务端都应该配置 authlib-injector,以便其能正确地处理外置登录。 - - 在**每个**服务端的启动指令的 `-jar` 参数前添加如下参数。 - - ::: code-group - - ``` bash-vue [需要添加的内容] - -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil - ``` - - ``` bash-vue [Velocity 完整的启动指令示例] - java "-Dauthlibinjector.disableHttpd" -Xms512M -Xmx512M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar velocity-3.3.0-SNAPSHOT-351.jar - ``` - - ``` bash-vue [Paper 子服务器 完整的启动指令示例] - java -Xms4G -Xmx16G -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar paper-1.20.4-409.jar --nogui - ``` - - ::: - - - `authlib-injector-{{ latest }}.jar` 为指向 authlib-injector 的 `jar` 的路径或文件名 - - `https://littleskin.cn/api/yggdrasil` 为 LittleSkin 的 Yggdrasil API 地址 - -## Waterfall / BungeeCord - -BungeeCord 和 Waterfall 属于亲兄弟好姐妹,因此,以下配置同时适用于两者。 - -- 对于 Waterfall / BungeeCord - - 检查 `config.yml`,确保 `online-mode` 项的值为 **`true`** :point_left: - - ::: code-group - - ``` yaml:line-numbers=17 [config.yml] - online-mode: true - ``` - - ::: - -- 对于子服务端 - - 检查 `server.properties` 文件,确保 `online-mode` 项的值为 **`false`** :point_left: - - ::: code-group - - ``` properties:line-numbers=23 [server.properties] - online-mode=false - ``` - - ::: - -- 对于以上所有 - - **每个**服务端都应该配置 authlib-injector,以便其能正确地处理外置登录。 - - 在**每个**服务端的启动指令的 `-jar` 参数前添加如下参数。 - - ::: code-group - - ``` bash-vue [需要添加的内容] - -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil - ``` - - ``` bash-vue [Waterfall / BungeeCord 完整的启动指令示例] - java -Xms512M -Xmx512M -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar waterfall-562.jar - ``` - - ``` bash-vue [Paper 子服务器 完整的启动指令示例] - java -Xms4G -Xmx16G -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar paper-1.20.4-409.jar --nogui - ``` - - ::: +--- +outline: [2, 3] +--- + + + + +# authlib-injector + +> authlib-injector 为玩家提供统一的非 Mojang 登录体验。大多数的外置登录都使用 authlib-injector 来实现。 + +> [!WARNING] 这不是插件,也不是 Mod +> authlib-injector 使用方式较为特殊,将其 JAR 文件放入服务端的 `plugins/` 或 `mods/` 目录下不会有任何作用。 + +## 获取 JAR 文件 + + + +下载 `authlib-injector-{{ latest }}.jar` 文件后,将其放入 **服务端启动脚本** 或 **服务端文件** 所在的文件夹中。 + +## 配置各类服务端 + +> [!TIP] 🤗 在面板服上配置 authlib-injector +> 配置 authlib-injector 时不可避免地需要修改服务端启动命令/参数。 +> +> 部分 Minecraft 服务器租赁商可能会使用 [MCSManager](https://mcsmanager.com/) 或 [Pterodactyl® Panel 翼龙面板](https://pterodactyl.io/) 等 Minecraft 服务器管理面板以便销售和管理服务器实例。 +> +> 有些用户可能无法自行修改服务端启动命令/参数。**请与服务器租赁商沟通,让其帮助你配置。** + +### 单服务端(非群组服) + +1. 将服务器配置文件 `server.properties` 中 `online-mode` 一项的值设为 `true` + + ::: code-group + + ``` properties:line-numbers=23 [server.properties] + online-mode=true + ``` + + ::: + +2. 在你的服务端的启动指令的 `-jar` 参数前添加如下参数 + + ::: code-group + + ``` bash-vue [需要添加的内容] + -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil + ``` + + ``` bash-vue [完整的启动指令示例] + java -Xms4G -Xmx16G -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar paper-1.20.4-409.jar --nogui + ``` + + ::: + + - `authlib-injector-{{ latest }}.jar` 为指向 authlib-injector 的 `jar` 的路径或文件名 + - `https://littleskin.cn/api/yggdrasil` 为 LittleSkin 的 Yggdrasil API 地址 + +### Velocity + +Modern forwarding 是 Velocity 支持的一种独创格式。它以高效的二进制格式转发所有玩家信息。但是,它仅适用于 Minecraft 1.13 或更高版本。 + +> [!TIP] 提示 +> 本文仅会对「为 Velocity modern forwarding 配置 LittleSkin 外置登录」做出说明。 +> +> 本案例使用 Velocity + Paper 作为示例。 +> +> 具体的 Velocity 配置请结合参考 [Velocity 文档](https://docs.papermc.io/velocity/player-information-forwarding#configuring-modern-forwarding)。 + + + +- 对于以上所有 + + **每个**服务端都应该配置 authlib-injector,以便其能正确地处理外置登录。 + + 在**每个**服务端的启动指令的 `-jar` 参数前添加如下参数。 + + ::: code-group + + ``` bash-vue [需要添加的内容] + -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil + ``` + + ``` bash-vue [Velocity 完整的启动指令示例] + java "-Dauthlibinjector.disableHttpd" -Xms512M -Xmx512M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar velocity-3.3.0-SNAPSHOT-351.jar + ``` + + ``` bash-vue [Paper 子服务器 完整的启动指令示例] + java -Xms4G -Xmx16G -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar paper-1.20.4-409.jar --nogui + ``` + + ::: + + - `authlib-injector-{{ latest }}.jar` 为指向 authlib-injector 的 `jar` 的路径或文件名 + - `https://littleskin.cn/api/yggdrasil` 为 LittleSkin 的 Yggdrasil API 地址 + +### Waterfall / BungeeCord + +BungeeCord 和 Waterfall 属于亲兄弟好姐妹,因此,以下配置同时适用于两者。 + +- 对于 Waterfall / BungeeCord + + 检查 `config.yml`,确保 `online-mode` 项的值为 **`true`** :point_left: + + ::: code-group + + ``` yaml:line-numbers=17 [config.yml] + online-mode: true + ``` + + ::: + +- 对于子服务端 + + 检查 `server.properties` 文件,确保 `online-mode` 项的值为 **`false`** :point_left: + + ::: code-group + + ``` properties:line-numbers=23 [server.properties] + online-mode=false + ``` + + ::: + +- 对于以上所有 + + **每个**服务端都应该配置 authlib-injector,以便其能正确地处理外置登录。 + + 在**每个**服务端的启动指令的 `-jar` 参数前添加如下参数。 + + ::: code-group + + ``` bash-vue [需要添加的内容] + -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil + ``` + + ``` bash-vue [Waterfall / BungeeCord 完整的启动指令示例] + java -Xms512M -Xmx512M -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar waterfall-562.jar + ``` + + ``` bash-vue [Paper 子服务器 完整的启动指令示例] + java -Xms4G -Xmx16G -javaagent:authlib-injector-{{ latest }}.jar=https://littleskin.cn/api/yggdrasil -jar paper-1.20.4-409.jar --nogui + ``` + + ::: diff --git a/docs/yggdrasil/index.md b/docs/yggdrasil/index.md index 1778847..f1bbc2b 100644 --- a/docs/yggdrasil/index.md +++ b/docs/yggdrasil/index.md @@ -1,85 +1,71 @@ -# Yggdrasil 外置登录 - -LittleSkin 提供 Yggdrasil 验证鉴权服务。 - -外置登录需要配合其他技术一起实现。外置登录可以为玩家提供统一的非 Mojang 游戏外登录体验,并在不安装皮肤 Mod 的情况下加载来自 LittleSkin 的材质。 - -## Yggdrasil API 地址 - -LittleSkin 的 Yggdrasil API 的地址是: - -``` http -https://littleskin.cn/api/yggdrasil -``` - -::: tip API 地址指示 - -LittleSkin 已在全站启用 authlib-injector 的 API 地址指示(ALI)功能。 - -因此,在支持此功能的启动器上,直接输入 `littlesk.in` 即可被识别。一下子就简单了很多 :tada: - -::: - ---- - - -在 Minecraft 游戏中使用 Yggdrasil 外置登录,进行多人游戏鉴权和材质加载 - - -为各类 Minecraft 服务端配置 Yggdrasil 外置登录 - - ---- - -::: warning 有点高级 -以下部分是面向开发者和多人游戏服务器管理员的,普通用户可能无法理解。 - -如果你看不懂下面在说些什么,直接忽略这部分内容即可,这并不会影响你正常使用 LittleSkin 的基础功能。 -::: - -## 什么是外置登录? - -没有正版 Minecraft 账户的玩家通常都会使用 **离线登录** 来启动游戏,Minecraft 服务端提供了启用离线模式的选项。 - -- 🏴‍☠️ 玩家只需要用户名即可进入服务端,服务端并不会验证进服玩家身份的合法性; -- 😕 玩家在游戏中的样貌只能是 Steve 或 Alex 之类的默认皮肤,而不能是自定义的材质。 - -为了让玩家在游戏中能欣赏到各自的皮肤,CustomSkinLoader 和 SkinsRestorer 等 Mod 或插件被广泛使用。 - -但离线登录的鉴权机制给予了恶意玩家们极大的发挥空间。他们会冒充其他玩家进入服务器行偷鸡摸狗之事,零成本的批量账号更是轰炸小型服务器的绝妙武器。 - -因此而头疼的服务器管理员们会为服务器安装诸如 AuthMe 之类的登录插件,以尽可能杜绝上述事项。然而,对服务器管理员来说,登录插件的配置过程称不上简单;对于玩家来说,改名、忘记密码等操作更是繁琐。 - ---- - -上述现象都是离线登录机制导致的。如果使用正版登录,基本不用为之操劳。 - -而 **外置登录**,如同正版登录一样,可以避开上述问题。 - -> 其实,在游戏内部,外置登录的工作方式几乎如正版登录一模一样。 - -如果将正版登录理解为游戏中官方的纯正的「内置登录」的话,那么「外置登录」的意思就很好理解了: - -**将 Minecraft 官方的登录鉴权服务器地址,通过一些手段,替换为第三方的登录鉴权服务器地址。** - -- 🔐 可控的鉴权 -- 👔 自定义皮肤 / 披风 -- 👍️ 极强的兼容性 - -只有玩家和服务器两端都正确配置后,外置登录才能正常工作。因此外置登录并不能用来登录至采用正版登录的服务器。 - -如果仅仅是单人游戏,无需借助 Mod 即可在游戏内欣赏到自定义的皮肤也是一个不小的亮点。 - -## authlib-injector - -> authlib-injector 为玩家提供统一的非 Mojang 登录体验。大多数的外置登录都使用 authlib-injector 来实现。 - -你可以在 下载到最新版本的 authlib-injector。 - -开发者文档:[GitHub / authlib-injector / wiki](https://github.com/yushijinhun/authlib-injector/wiki) - -## MultiLogin - -> MultiLogin 是一款服务端插件, 功能是让您的服务器支持正版与多种外置登录共存, 用来连接两个或多个外置验证服务器下的玩家,让他们能在一起玩。 - -此插件专为服务端设计。服务器管理员可参考此文档:[GitHub / MultiLogin / wiki](https://github.com/CaaMoe/MultiLogin/wiki) +# Yggdrasil 外置登录 + +LittleSkin 提供 Yggdrasil 验证鉴权服务,也被简单地称为外置登录。 + +外置登录可以为玩家提供统一的非 Mojang 游戏外登录体验,并在不安装皮肤 Mod 的情况下加载来自 LittleSkin 的材质。 + +> [!WARNING] 外置登录不是联机服务 +> LittleSkin 可以在联机时提供皮肤和鉴权服务,但不提供联机服务本身。 + +## Yggdrasil API 地址 + +LittleSkin 的 Yggdrasil API 的地址是: + +```plain +https://littleskin.cn/api/yggdrasil +``` + +> [!NOTE] 😎 简化冗长的地址 +> LittleSkin 已在全站启用 authlib-injector 的 API 地址指示(ALI)功能。 +> +> 在支持此功能的启动器上,直接输入 `littlesk.in` 即可被识别并自动转化为完整地址。 + +--- + + +在 Minecraft 游戏中使用 Yggdrasil 外置登录,进行多人游戏鉴权和材质加载 + + +为各类 Minecraft 服务端配置 Yggdrasil 外置登录 + + +--- + +> [!WARNING] 有点高级 +> 以下部分是面向开发者和多人游戏服务器管理员的,普通用户可能无法理解。 +> +> 如果你看不懂下面在说些什么,直接忽略这部分内容即可,这并不会影响你正常使用 LittleSkin 的基础功能。 + + +## 什么是外置登录? + +没有正版 Minecraft 账户的玩家通常都会使用 **离线登录** 来启动游戏,Minecraft 服务端提供了启用离线模式的选项。 + +- 🏴‍☠️ 玩家只需要用户名即可进入服务端,服务端并不会验证进服玩家身份的合法性; +- 😕 玩家在游戏中的样貌只能是 Steve 或 Alex 之类的默认皮肤,而不能是自定义的材质。 + +为了让玩家在游戏中能欣赏到各自的皮肤,CustomSkinLoader 和 SkinsRestorer 等 Mod 或插件被广泛使用。 + +但离线登录的鉴权机制给予了恶意玩家们极大的发挥空间。他们会冒充其他玩家进入服务器行偷鸡摸狗之事,零成本的批量账号更是轰炸小型服务器的绝妙武器。 + +因此而头疼的服务器管理员们会为服务器安装诸如 AuthMe 之类的登录插件,以尽可能杜绝上述事项。然而,对服务器管理员来说,登录插件的配置过程称不上简单;对于玩家来说,改名、忘记密码等操作更是繁琐。 + +--- + +上述现象都是离线登录机制导致的。如果使用正版登录,基本不用为之操劳。 + +而 **外置登录**,如同正版登录一样,可以避开上述问题。 + +> 其实,在游戏内部,外置登录的工作方式几乎如正版登录一模一样。 + +如果将正版登录理解为游戏中官方的纯正的「内置登录」的话,那么「外置登录」的意思就很好理解了: + +**将 Minecraft 官方的登录鉴权服务器地址,通过一些手段,替换为第三方的登录鉴权服务器地址。** + +- 🔐 可控的鉴权 +- 👔 自定义皮肤 / 披风 +- 👍️ 极强的兼容性 + +只有玩家和服务器两端都正确配置后,外置登录才能正常工作。因此外置登录并不能用来登录至采用正版登录的服务器。 + +如果仅仅是单人游戏,无需借助 Mod 即可在游戏内欣赏到自定义的皮肤也是一个不小的亮点。 diff --git a/docs/yggdrasil/server.md b/docs/yggdrasil/server.md index efe1cec..f74af3f 100644 --- a/docs/yggdrasil/server.md +++ b/docs/yggdrasil/server.md @@ -1,28 +1,30 @@ ---- -outline: false ---- - - - -# 在服务端配置 Yggdrasil 外置登录 - ---- - -

- - -了解如何通过 authlib-injector 配置 Yggdrasil 外置登录。 - - -了解如何通过 MultiLogin 配置 Yggdrasil 外置登录。 - - -## 什么?太复杂了?或是没看明白? - -

- - -通过 💰赞助支持 来获取高质量的一对一技术支持服务 - +--- +outline: false +--- + + + +# 在服务端配置 Yggdrasil 外置登录 + +在 Minecraft 服务端侧,存在多种配置外置登录的方式。 + +--- + +

+ + +可设置单一的 Yggdrasil 外置登录服务,适合绝大多数场景 + + +可配置多个 Yggdrasil 外置登录服务,以实现 正版+外置 共存 + + +## 什么?太复杂了?或是没看明白? + +

+ + +通过 💰赞助支持 来获取高质量的一对一技术支持服务 +