feat: 添加 SkinBridge 皮肤兼容并发布 1.7.0

This commit is contained in:
2026-07-21 23:45:19 +08:00
parent 2479192ad3
commit 2aeb8d0340
16 changed files with 979 additions and 6 deletions
+37
View File
@@ -75,6 +75,43 @@ tpa:
# 传送完成时播放的音效。
complete: "entity.enderman.teleport"
skin-bridge:
# 是否启用外置皮肤站桥接。还需要在 modules.yml 启用 skin-bridge 模块。
enabled: false
# 是否输出 Provider 查询和皮肤应用的调试日志。
debug: false
# 是否像 JEI 修复一样向玩家发送检测与同步提示。
send-player-message: true
# 查询 Yggdrasil profile 的超时时间,单位为秒。
profile-request-timeout-seconds: 5
mineskin:
# MineSkin v2 API 地址,一般不需要修改。
endpoint: "https://api.mineskin.org"
# MineSkin API Key。请仅在服务器运行目录中填写,不要提交到公开仓库。
api-key: ""
# 生成结果的可见性:public、unlisted 或 private。默认使用 unlisted。
visibility: "unlisted"
# MineSkin 生成队列的总等待时间,单位为秒。
request-timeout-seconds: 30
# 玩家登录来源与生成皮肤的内存缓存时间,单位为分钟。
cache-minutes: 120
# 玩家加入后延迟多少 tick 再查询,避免登录资料尚未完全稳定。
join-delay-ticks: 20
providers:
# 每个子节点都是一个 Provider,键名可自由命名,并会显示在日志和 /essc skin status 中。
# 建议使用小写英文、数字和连字符;不要使用点号,因为点号会被 Bukkit 视为配置路径分隔符。
littleskin:
# LittleSkin 示例 Provider。键名 littleskin 可按需改名。
enabled: false
priority: 10
# {uuid} 为无连字符 UUID{uuid-dashed} 为标准 UUID。
profile-url: "https://littleskin.cn/api/yggdrasil/sessionserver/session/minecraft/profile/{uuid}?unsigned=false"
my-blessing-skin:
# 自建 Blessing Skin 示例 Provider。my-blessing-skin 可替换为皮肤站名称。
enabled: false
priority: 20
profile-url: "https://skin.example.com/api/yggdrasil/sessionserver/session/minecraft/profile/{uuid}?unsigned=false"
blocks-menu:
# 菜单布局版本,用于后续自动迁移槽位布局
layout-version: 2
+20
View File
@@ -88,6 +88,7 @@ help:
tpaccept: " &f/tpaccept [player] &7- Accept a teleport request"
tpdeny: " &f/tpdeny [player] &7- Deny a teleport request"
tpignore: " &f/tpignore &7- Toggle ignoring teleport requests"
skin: " &f/essc skin <status|refresh> [player] &7- View or refresh SkinBridge status"
admin: " &f/essc admin &7- Toggle admin mode"
tpsbar: " &f/tpsbar [player] &7- Toggle TPS boss bar"
maintenance: " &f/maintenance <on|off|status|reload|add|remove|list> &7- Manage maintenance mode"
@@ -132,6 +133,25 @@ tpa:
tpaall-sent: "&aSent teleport requests to all players."
tpaall-no-targets: "&cThere are no online players who can receive the request."
skin-bridge:
notifications:
detecting: "&6SKIN-FIX&8: &eDetecting your skin source..."
synced: "&6SKIN-FIX&8(&b{provider}&8): &aSkin synchronization completed."
not-external: "&6SKIN-FIX&8: &7No external skin provider matched; your current skin was kept."
failed: "&6SKIN-FIX&8: &cSkin detection or synchronization failed. Please try again later."
messages:
usage: "&cUsage: /essc skin <status|refresh> [player]"
feature-disabled: "&cSkinBridge is disabled in config.yml."
dependency-missing: "&cNo valid MineSkin API key is configured in config.yml."
no-providers: "&cNo valid SkinBridge provider is enabled."
status-external: "&a{player} is identified as an external skin provider player. Provider: &f{provider}"
status-not-external: "&7{player} does not match any configured external skin provider."
status-pending: "&eSkinBridge is still detecting {player}'s login source."
status-unknown: "&7{player} has not been checked by SkinBridge yet."
refresh-queued: "&aSkinBridge is detecting and refreshing {player}'s skin."
refresh-cached: "&7{player} is using a valid skin cache entry."
refresh-running: "&eSkinBridge is already processing {player}."
blocks-menu:
title: "&6&lEssentialsC &8- &e&lShortcut Menu"
items:
+20
View File
@@ -88,6 +88,7 @@ help:
tpaccept: " &f/tpaccept [玩家] &7- 接受传送请求"
tpdeny: " &f/tpdeny [玩家] &7- 拒绝传送请求"
tpignore: " &f/tpignore &7- 切换是否忽略传送请求"
skin: " &f/essc skin <status|refresh> [玩家] &7- 查看或刷新皮肤桥接状态"
admin: " &f/essc admin &7- 切换管理模式"
tpsbar: " &f/tpsbar [玩家] &7- 切换 TPS 状态栏"
maintenance: " &f/maintenance <on|off|status|reload|add|remove|list> &7- 管理维护模式"
@@ -132,6 +133,25 @@ tpa:
tpaall-sent: "&a已向所有玩家发送传送请求。"
tpaall-no-targets: "&c没有可接收请求的在线玩家。"
skin-bridge:
notifications:
detecting: "&6SKIN-FIX&8: &e正在检测皮肤来源..."
synced: "&6SKIN-FIX&8(&b{provider}&8): &a皮肤同步完成。"
not-external: "&6SKIN-FIX&8: &7未匹配外置皮肤站,已保留当前皮肤。"
failed: "&6SKIN-FIX&8: &c皮肤检测或同步失败,请稍后重试。"
messages:
usage: "&c用法:/essc skin <status|refresh> [玩家]"
feature-disabled: "&cSkinBridge 在 config.yml 中未启用。"
dependency-missing: "&c未在 config.yml 中配置有效的 MineSkin API Key。"
no-providers: "&c没有启用有效的 SkinBridge Provider。"
status-external: "&a{player} 已识别为外置皮肤站玩家,Provider&f{provider}"
status-not-external: "&7{player} 未匹配任何已配置的外置皮肤站。"
status-pending: "&e{player} 的皮肤站来源正在检测中。"
status-unknown: "&7{player} 尚未进行 SkinBridge 检测。"
refresh-queued: "&a已开始重新检测并刷新 {player} 的皮肤。"
refresh-cached: "&7{player} 正在使用有效的皮肤缓存。"
refresh-running: "&e{player} 的皮肤检测任务仍在运行。"
blocks-menu:
title: "&6&lEssentialsC &8- &e&l便捷菜单"
items:
+3
View File
@@ -30,3 +30,6 @@ modules:
maintenance:
# 维护模式。开启维护后可替换 MOTD,并阻止无绕过权限的玩家进入。
enabled: true
skin-bridge:
# 查询外置 Yggdrasil profile,并通过 MineSkin 与 Paper Profile API 同步皮肤。
enabled: false
+4
View File
@@ -119,6 +119,9 @@ permissions:
essentialsc.command.maintenance:
description: 允许管理维护模式
default: op
essentialsc.command.skin:
description: 允许管理 SkinBridge 状态与刷新
default: op
essentialsc.maintenance.bypass:
description: 允许在维护模式下进入服务器
default: op
@@ -171,6 +174,7 @@ permissions:
essentialsc.command.tpsbar: true
essentialsc.command.tpsbar.others: true
essentialsc.command.maintenance: true
essentialsc.command.skin: true
essentialsc.maintenance.bypass: true
essentialsc.maintenance.notify: true
essentialsc.shulkerbox.open: true