- 版权类型
- 原创
- 插件中文名称
- Blessing Skin 皮肤桥
- 插件英文名称
- BlessingSkinBridge
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- 语言支持
- 中文(简体)
- 前置组件
- Geyser-Spigot: https://github.com/GeyserMC/Geyser
Floodgate: https://github.com/GeyserMC/Floodgate
Blessing Skin / authlib-injector 外置登录环境
- 适配版本(Java)
- 26.x
[MD]
# BlessingSkinBridge
这是一个很小的 Paper 插件,用来补 **Blessing Skin / authlib-injector + Geyser-Spigot + Floodgate** 皮肤和披风不同步的坑。
我最开始遇到的情况是:Java 玩家能看到自己的皮肤,但看不到对方的外置登录皮肤;基岩玩家能进服,但看不到 Java 玩家的皮肤;基岩玩家绑定了 Java 账号后,也看不到自己的 Java 皮肤;Java 端披风正常,基岩端披风默认没有,有些插件只显示高分辨率披风的左上角。
BlessingSkinBridge 做的事情很少:从 Yggdrasil sessionserver 读取 `textures` 属性,然后把皮肤和披风数据分别塞回 Paper 与 Geyser 需要的位置。
## 为什么不用 SkinsRestorer / UseBlessingSkin ?
使用 Paper 26 + authlib-injector + Blessing Skin + Geyser,SkinsRestorer 会进入 degraded state,UseBlessingSkin 目前 Star 数量不多...
## 功能
- 给 Paper 登录档案注入 Blessing Skin 的 `textures` 属性
- 覆盖 Geyser 给基岩端应用的皮肤数据
- 修复基岩端看 Java 玩家皮肤
- 修复基岩端看自己绑定 Java 账号皮肤
- 给基岩端补上 Java 披风
- 把高分辨率披风完整缩放到基岩端可用的 `64x32`,避免只显示左上角
- 基岩玩家飞远再回来、实体重新生成后,会周期性/移动后补刷皮肤和披风
- 支持 `name-overrides`,处理 Geyser 玩家名和 Blessing Skin 角色名不一致的情况
## 要求
目前只在下面这套环境里实测过:
[/MD]
[MD]
插件内部用到了一个 Geyser 的内部类来刷新基岩玩家自己的实体皮肤。这是目前能稳定修好的路径,但也意味着 Geyser 更新内部结构后,插件可能需要跟着改。
## 安装
~~1.打开冰箱门~~
~~2.把大象装进冰箱~~
~~3.关上冰箱门~~
1. 下载 `BlessingSkinBridge-0.1.5.jar`[/COLOR]
2. 把 jar 放进 Paper 服务端的 `plugins` 文件夹
3. 确认 `Geyser-Spigot.jar` 和 Floodgate 已经在同一个服务器上加载
4. 启动一次服务器,让插件生成配置文件
5. 修改 `plugins/BlessingSkinBridge/config.yml` 里的 `yggdrasil-url`
6. 重启服务器
配置示例:
[/MD]
[MD]
## 命令
[/MD]
[MD]
## 已知限制
1.只建议用于 Blessing Skin / authlib-injector 这类外置登录环境
2.目前主要面向 Paper + Geyser-Spigot,目前正在做 Bungee 架构
3.基岩端由于本身限制,无法使用 Java 端高分辨率披风
4.Geyser 内部 API 变化可能导致插件失效
许可证:
MIT License[/MD]
[MD]
- Paper 26.1.2 build 65
- Geyser-Spigot 2.10.0 snapshot
- Floodgate 2.2.5 snapshot
- authlib-injector 1.2.7
- Blessing Skin Yggdrasil endpoint
- Java 25
[/MD]
[MD]
```yaml
yggdrasil-url: "https://example.com/api/yggdrasil"
inject-paper-profiles: true
override-geyser-skins: true
refresh-geyser-viewers: true
refresh-java-viewers: true
debug: false
periodic-geyser-refresh-seconds: 20
movement-refresh-blocks: 48
movement-refresh-cooldown-seconds: 8
```
如果 Geyser 或绑定插件给出的名字不是 Blessing Skin 里的 Java 角色名,可以手动指定:
```yaml
name-overrides:
"Bedrock Display Name": "JavaName"
"Bedrock_User_Name": "JavaName"
```
[/MD]
[MD]
```text
/bsbridge status
/bsbridge reload
/bsbridge refresh
```
`/bsbridge refresh` 会给在线玩家重新排一次皮肤/披风刷新。可以用于测试
[/MD]