基于 authlib-injector 的多 Yggdrasil 认证源注入器,支持 Minecraft 服务端和 Velocity 代理。
- 支持多个 Yggdrasil 认证源(官方、BlessingSkin 皮肤站等)
- 跨源皮肤可见:通过 MineSkin API 自动转换非 Mojang 皮肤为官方 CDN URL
- 双模式部署:Java Agent(独立服 / Velocity)或 Velocity 辅助插件
- 同一 jar 既是 agent 也是 plugin
- 优先级排序机制(ordinal 越小越优先)
- 自动生成示例配置文件
Java Agent / Velocity Plugin
↓
URLFilter 链(HTTP 代理层) TransformUnit 链(字节码层)
├─ MultiSourceSessionFilter (hasJoined) ├─ ConstantURLTransformUnit (URL 重写)
├─ MultiSourceQueryProfileFilter ├─ UnpackTexturesTransformUnit (域名检查绕过)
├─ MultiSourceQueryUUIDsFilter ├─ YggdrasilKeyTransformUnit (公钥注入)
├─ * (来自 authlib-injector) └─ * (来自 authlib-injector)
└─ DefaultURLRedirector
↓
MineSkinRestorer (皮肤 URL → textures.minecraft.net)
| 组件 | 说明 |
|---|---|
MultiYggdrasilInjector |
Agent 入口,初始化 Filter + TransformUnit |
MultiSourceSessionFilter |
hasJoined/join 跨源路由,皮肤签名剥离 + MineSkin 转换 |
MultiSourceQueryProfileFilter |
Profile 查询聚合 |
MultiSourceQueryUUIDsFilter |
UUID 查询聚合 |
UnpackTexturesTransformUnit |
字节码绕过 isAllowedTextureDomain |
YggdrasilKeyTransformUnit |
注入多源公钥(复用 authlib-injector) |
MineSkinRestorer |
调用 MineSkin API,缓存结果 |
ConfigAgent / YggdrasilConfig |
配置文件解析 |
MultiYggdrasilVelocityPlugin |
Velocity Plugin 入口 |
./gradlew shadowJar产物:build/libs/MultiYggdrasilInjector-1.0.2.jar
在服务端目录的 config/multi-yggdrasil.ini(首次运行自动生成):
[MojangOfficial]
type = OFFICIAL
sessionHost = https://sessionserver.mojang.com
servicesHost = https://api.minecraftservices.com
profilesHost = https://api.mojang.com
ordinal = 0
[LittleSkin]
type = BLESSING_SKIN
apiRoot = https://littleskin.cn/api/yggdrasil/
ordinal = 1独立服(Forge / Fabric / Spigot / Paper):
java -javaagent:MultiYggdrasilInjector-1.0.2.jar -jar server.jar nogui服务端需保持 online-mode=true。
Velocity 代理:
必须同时使用 javaagent 和 plugin。同一 jar 两种用途:
- 将 jar 放入 Velocity 的
plugins/目录(配置管理 + 日志集成) - 在 Velocity 启动参数中添加
-javaagent(字节码转换 + 多源认证)
java -javaagent:plugins/MultiYggdrasilInjector-1.0.2.jar -jar velocity.jar配置文件放在 Velocity 根目录的 config/multi-yggdrasil.ini(首次运行自动生成)。
子服需设为 online-mode=false。
| 类型 | 说明 | 必需字段 |
|---|---|---|
BLESSING_SKIN |
BlessingSkin 皮肤站(LittleSkin、MUA 等) | apiRoot |
OFFICIAL |
Mojang 官方或镜像 | sessionHost, servicesHost, profilesHost |
ordinal 值越小优先级越高。登录时按 ordinal 顺序尝试各源,首个成功即返回。
非 Mojang 域名的皮肤纹理(如 littleskin.cn)会被自动提交至 MineSkin API,返回 textures.minecraft.net 的 Mojang 签名版本。客户端域名检查自然通过,无需额外配置。
同一皮肤 URL 的结果会被缓存,后续登录零延迟。
MIT License