mcrenderskin的fork,基于`skinView3D.js` 渲染Minecraft Java玩家的 皮肤和披风 3D图片 ✨

koishi-plugin-mcrenderskin-vincentzyu-fork

npm
npm-downloads

GitHub
Gitee

Koishi Forum
QQ群

:pray: 特别感谢

本插件基于 upstream 项目 koishi-plugin-mcrenderskin-custplugin 进行二次开发与功能增强。感谢上游作者的开源贡献。

Koishi

本插件的 3D 皮肤渲染能力基于 bs-community/skinview3d 项目。感谢 skinview3d 提供优秀的 Minecraft 皮肤渲染能力;本插件使用其 TypeScript 源码生态与本地 bundle JS 资源进行 Koishi 侧封装。

skinview3d TypeScript Source

skinview3d Bundle JS

💬 插件使用问题 / 🐛 Bug反馈 / 👨‍💻 插件开发交流,欢迎加入QQ群:259248174 🎉(这个群G了)

💬 插件使用问题 / 🐛 Bug反馈 / 👨‍💻 插件开发交流,欢迎加入新QQ群:1085190201 🎉

💡 在群里直接艾特我,回复的更快哦~ ✨

:video_game: 基于skinView3D.js 渲染Minecraft Java玩家的 皮肤和披风 3D图片 :sparkles:

:framed_picture: 效果预览



:sparkles: 功能

  • :person_standing: 渲染 Minecraft 玩家 3D 皮肤

  • :coat: 支持披风渲染与兜底获取

  • :framed_picture: 支持自定义背景图、字体路径、bundle 路径

  • :globe_with_meridians: 支持通过 ctx.http 下载 skin / cape 并转为 base64

  • :lady_beetle: 支持调试日志,方便排查下载与 Puppeteer 渲染问题


:package: 安装

cd /path/to/koishi-app
ls
# 能看到koishi.yml, package.json, data文件夹 就说明路径对了
npm install koishi-plugin-mcrenderskin-vincentzyu-fork
# or use yarn
yarn add koishi-plugin-mcrenderskin-vincentzyu-fork

或者 在 Koishi 控制台插件市场中搜索 mcrenderskin-vincentzyu-fork 也可以安装。


:gear: 配置说明

:dart: 指令设置

配置项 类型 默认值 说明
mcrCommandName string "mcrs" Minecraft 皮肤渲染指令名

:speech_balloon: 消息设置

配置项 类型 默认值 说明
enableQuote boolean true 是否自动引用回复触发指令的消息
enableWaitingHint boolean true 是否显示「正在渲染,请稍候」等待提示

:bust_in_silhouette: 玩家设置

配置项 类型 默认值 说明
initName string "VincentZyu" 渲染指令的默认玩家名称
renderSize "360P" | "720P" | "1440P" | "2200P" "720P" 渲染分辨率,数值越高越清晰但越耗时

:globe_with_meridians: 下载设置

配置项 类型 默认值 说明
trySkinBase64 boolean false 尝试使用 Koishi 的 ctx.http 下载皮肤,而非走 Puppeteer
tryCapeBase64 boolean false 尝试使用 Koishi 的 ctx.http 下载披风,而非走 Puppeteer

:framed_picture: 背景图设置

配置项 类型 默认值 说明
wallPaper "Default" | URL | Base64 | Path "Default" 自定义背景图;Default 为内置默认背景

:stopwatch: 运行控制

配置项 类型 默认值 说明
renderTimeOut number 5000 Puppeteer 渲染超时阈值,单位 ms

:file_folder: 资源路径

配置项 类型 默认值 说明
skinview3dBundlePath string cwd/data/assets/.../skinview3d.bundle.js skinview3d bundle 路径,运行时自动使用 ctx.baseDir/data/assets/...
fontPath string cwd/data/assets/.../MinecraftAE.sub.ttf Minecraft 字体路径,运行时自动使用 ctx.baseDir/data/assets/...
defaultWallPath string cwd/data/assets/.../default-wall.jpg 默认背景图路径,运行时自动使用 ctx.baseDir/data/assets/...

:file_cabinet: 缓存设置

配置项 类型 默认值 说明
enableUuidCache boolean true 是否启用玩家 UUID 数据库缓存,需要 database 服务
uuidCacheDays number 30 UUID 缓存有效期,单位:天
enableProfileCache boolean true 是否启用 Mojang profile 数据库缓存,需要 database 服务
profileCacheMinutes number 10 Mojang profile 缓存有效期,单位:分钟

:robot: QQ 官方 Bot 平台设置

配置项 类型 默认值 说明
enableQQMarkdown boolean true 在 QQ 官方 Bot 平台发送渲染图后附带 Markdown + 按钮消息
enableQQMarkdownRenderInfo boolean true 是否在 QQ Markdown 中展示网络请求、Puppeteer 渲染和总耗时
qqMarkdownKeyboardJson string 默认键盘 JSON QQ Markdown 按钮 JSON 配置,支持变量 ${mcrCommandName} ${playerName} ${userId}

:bar_chart: 渲染信息

配置项 类型 默认值 说明
showRenderInfo boolean true 是否在图片消息后追加网络请求、Puppeteer 渲染和总耗时信息

:mag_right: 调试输出

配置项 类型 默认值 说明
debugLog boolean false 开启详细调试日志,便于排查下载与渲染问题

:warning: 常见问题

只显示背景,没有玩家

[!important]

Puppeteer 必须添加以下三个参数才能正常渲染皮肤:

  • --use-gl=angle
  • --use-angle=swiftshader
  • --use-vulkan=swiftshader

缺少这些参数可能导致只显示背景、没有玩家模型,或在 Docker / 无头环境下渲染失败。

  • 检查 puppeteerargs 配置是否包含上述三个参数

  • 检查 assets/vendor/skinview3d.bundle.js 是否能读到

  • 检查字体和背景图路径是否正确

  • Docker 环境下可尝试将 chromium 替换为 chromium-swiftshader

1 个赞

正在考虑换别的渲染,比如有人做了 skinView3D.js.node文件 版本,我也在考虑要不要用AssemlyScript 或者其他方式 搞一个wasm版本,或者还有人说用canvas / takumi生图,总之在考虑脱离浏览器环境,进行重构,这样 应该会少不少问题:thinking: