我的世界皮肤站 Yggdrasil API 配合 authlib injector 使用

本插件只是基于 Blessing Skin 皮肤站原有的用户系统,完整实现了一套符合 Yggdrasil API 规范的 API(这一套规范就是 Mojang 官方用于 Minecraft 正版登录鉴权的 API)。

而我们必须使用 authlib-injector 这个程序,以在运行时将游戏内的【Mojang 正版登录的 API 地址】替换成【皮肤站提供的 Yggdrasil API 地址】,从而实现外置登录系统。

配置启动器:

目前已知的直接支持 authlib-injector 的启动器有:

[推荐] HMCL3

这些启动器可以直接设定登录时使用的 Yggdrasil API 地址。如果你知道其他更多支持此功能的启动器,可以联系我添加到此列表中。

以 HMCL3 为例:

添加认证服务器:https://skin.secretmine.net/api/yggdrasil

为游戏服务端加载 authlib-injector:

注意:

使用本外置登录方案,你必须在 server.properties 中将 online-mode 设置为 true。

如果你正在使用 BungeeCord,那么在所有服务端上都需要加载 authlib-injector,但应只有 BungeeCord 打开 online-mode,其它服务端应关闭 online-mode。

如何修改服务器启动参数请参照:Wiki – 在 Minecraft 服务端使用 authlib-injector

举个例子:

用于启动 Minecraft 服务端的脚本一般来说是长这样的(使用 .bat 文件的用户请使用文本编辑器打开修改。你的启动命令可能与示例有些不同,这是正常的。在你自己的启动命令中能找到类似 -jar xxx.jar 的部分即可):

java -Xmx1024M -Xms1024M -jar minecraft_server.1.12.2.jar nogui

接下来请在启动命令中正确的位置-jar xxx.jar 之前)插入 -javaagent 参数。

假设:

  • 你下载到了文件名为 authlib-injector-1.1.18-daa6fb4.jar 的文件
  • 并将其放到了与服务端核心 minecraft_server.1.12.2.jar 相同的目录下
  • 你的 Yggdrasil 服务器 API Root 为 https://example.com/api/yggdrasil

那么你应该将上面的示例启动命令修改为这样:

java -Xmx1024M -Xms1024M -javaagent:authlib-injector-1.1.18-daa6fb4.jar=https://example.com/api/yggdrasil -jar minecraft_server.1.12.2.jar nogui

正确加载 authlib-injector:

需要注意的是,authlib-injector 是通过 JVM 的 -javaagent 参数来实现运行时字节码替换的,所以你必须保证:

  • 启动器支持使用自定义 Yggdrasil API 进行认证
  • Minecraft 游戏本体正确加载了 authlib-injector
    • 如果你使用的是 HMCL3,此项工作已由启动器自动完成
  • Minecraft 服务端加载了 authlib-injector(必须 online-mode=true

以上三者必须使用同一个 Yggdrasil API。

否则会出现:

  • 无法登录
  • 不显示皮肤或显示错乱
  • 无法进入服务器

等情况,敬请知悉。

恭喜!

如果命运的齿轮没有出差错,你应该已经可以 正常登录、正常进入服务器并看到自己的皮肤 了。

如果没有,那很遗憾,请参阅 0x04 常见错误 Troubleshooting 来排除可能的错误原因。


发表评论

邮箱地址不会被公开。 必填项已用*标注