mctool-plugin
MC工具箱插件🎮
基于 Yunzai-Bot v3 的 Minecraft 服务器管理插件,支持服务器状态查询、玩家绑定、进群验证等功能。
提醒事项
当前存在api问题而导致服务器状态被反复推送,不建议开启服务器状态推送,玩家上下线无关
后续考虑给出自建api的解决方案(待办ing)
当前已启用云端数据库,本地仅存该机器人的数据,如果有被他人绑定的账号,请联系插件开发者处理(进群:303104111)
因学业和开发压力,短时间不能恢复mctool的开发,如有bug,请提交issue
功能介绍
- [x] 群服务器列表管理
- 添加/删除服务器
- 支持多服务器配置
- 数据本地持久化存储
- 查询服务器MOTD
- [x] 推送功能
- 实时服务器状态
- 在线玩家统计
- 服务器状态推送
- 玩家上下线推送
- 新玩家提醒
- [x] 玩家功能
- 云端数据功能,本地仅存该机器人的数据,自动向上同步
- 绑定正版用户名
- 绑定LittleSkin用户名
- 解绑正版用户名
- 解绑LittleSkin用户名
- 查看已绑定正版用户名
- 查看已绑定LittleSkin用户名
- 查询玩家UUID
- 渲染玩家头像
- 渲染玩家3D皮肤
- [x] 进群验证
- 正版账户入群验证
- 分群配置
- 验证记录管理
- [x] MCManager管理功能
- 绑定/解绑服务器相关配置
- 用户以及权限管理
- 实例以及命令、终端管理
- [x] 其他功能
- Mod搜索、下载
安装方法
- 在 Yunzai-Bot 根目录下执行:
- 使用 Github
git clone https://github.com/Dnyo666/mctool-plugin.git ./plugins/mctool-plugin/- 使用 Gitee
git clone https://gitee.com/Dnyo666/mctool-plugin.git ./plugins/mctool-plugin/- 进入插件目录
cd ./plugins/mctool-plugin- 在插件目录下执行
pnpm install- 重启 Yunzai-Bot
使用说明
基础指令
#mc帮助- 显示帮助信息#mc列表- 查看服务器列表#mc在线- 查看在线服务器及玩家列表#mc状态- 查看服务器状态#mcmotd <服务器地址[:端口]>- 查询指定服务器MOTD
玩家相关
#mc绑定 mojang 用户名- 绑定MC玩家名#mc绑定 littleskin- 绑定LittleSkin#mc解绑 mojang/littleskin <玩家名>- 解除指定玩家名的绑定#mcuid-查看所有已绑定的uuid#mc信息- 查看绑定信息#mc头像 [全身|半身|头部] [玩家名](可选)- 生成玩家头像,不指定玩家名时生成所有绑定账号的头像#mcuuid <玩家名>(可选)- 查询玩家绑定的UUID,默认查询绑定账号#mc皮肤渲染- 使用行走视图渲染已绑定账号的皮肤,生成高清3D渲染图
皮肤渲染预览
行走视图渲染
站立视图渲染
管理指令
#mc添加 <名称> <IP:端口> [描述]- 添加服务器#mc删除 <ID>- 删除指定服务器
推送设置
#mc推送- 查看当前推送配置#mc开启推送 <ID>- 开启指定服务器的推送#mc关闭推送 <ID>- 关闭指定服务器的推送#mc开启状态推送 <ID>- 开启服务器状态推送#mc关闭状态推送 <ID>- 关闭服务器状态推送#mc推送玩家 <ID> <玩家名/all>- 添加玩家推送#mc取消推送玩家 <ID> <玩家名/all>- 取消玩家推送#mc开启新人推送 <ID>- 开启新玩家提醒#mc关闭新人推送 <ID>- 关闭新玩家提醒
验证设置
#mc验证- 查看当前验证配置#mc验证开启- 开启验证功能#mc验证关闭- 关闭验证功能#mc验证重复使用开启- 允许重复使用玩家名#mc验证重复使用关闭- 禁止重复使用玩家名#mc验证拒绝开启- 开启自动拒绝重复用户名#mc验证拒绝关闭- 关闭自动拒绝重复用户名#mc验证列表- 查看已验证用户#mc验证删除 <玩家名>- 删除验证记录
工具类
#mc服务状态- 查看公共服务状态
Mod功能
#mcmod帮助- 显示MCTool Mod帮助信息#mcmod搜索 <关键词>- 搜索指定关键词的Mod#mcmod版本 <序号/modid> [版本号] [加载器]- 搜索指定关键词的Mod版本#mcmod下载 <序号/modid> [版本号] [加载器]- 下载指定版本的Mod#mcmod下载 <版本序号>- 下载版本列表中指定版本的Mod
MCSManager功能
如果仅需要mcsm功能,可前往https://github.com/A1Panda/mcsmanager-plugin
#mcs绑定 <URL> <Api_key>- 绑定Mcs#mcs解绑- 解除绑定Mcs#mcs绑定信息- 查看自己账号的绑定信息#mcs同步实例- 更新自己管理的实例#mcs概览- 查看自己绑定的Mcs所有信息#mcs用户列表 [页码]- 查看所有用户信息#mcs实例列表- 查看归自己管理的所有实例 用于获取ID方便后续操作#mcs实例信息 <ID> [页码]- 查看这个ID实例的详细信息#mcs启动/停止/重启/强制结束 <ID>- 对这个ID的实例进行操作#mcs日志 <ID> <数据量KB>-查看指定数据量的日志信息#mcs命令 <ID>- 向这个ID的实例发送命令#mcs创建用户 <ID> <密码> <权限等级>- 创建一个用户#mcs删除用户 <ID>- 删除一个用户#mcs修改权限 <ID>- 修改一个用户的权限#mcs重置密码 <ID>- 重置一个用户的密码#mcs节点列表- 查看节点列表#mcs添加节点 <IP> <端口> <API密钥> [备注]- 添加一个节点#mcs删除节点 <ID>- 删除一个节点#mcs连接节点 <ID>- 连接一个节点
配置说明
推荐使用锅巴面板进行可视化配置,更加直观和便捷。
配置文件位于 plugins/mctool-plugin/config/config.yaml,包含以下配置项:
API配置
apis:
- name: mcsrvstat
url: https://api.mcsrvstat.us/3/{host}:{port}
timeout: 30
maxRetries: 3
retryDelay: 1000
parser:
online: online
players:
online: players.online
max: players.max
list: players.list[].name
version: version.name_clean
motd: motd.clean[]
- name: mcstatus
url: https://api.mcstatus.io/v2/status/java/{host}:{port}
timeout: 30
maxRetries: 3
retryDelay: 1000
parser:
online: online
players:
online: players.online
max: players.max
list: players.list[].name_clean
version: version.name_clean
motd: motd.clean[]定时任务配置
schedule:
cron: "30 * * * * *" # 每分钟的第30秒执行
startupNotify: true # 是否在机器人启动时发送服务器状态推送
retryDelay: 5000 # 重试等待时间(毫秒)数据存储配置
dataPath: data/mctool # 数据存储路径默认群组配置
defaultGroup:
enabled: false # 是否默认开启功能
serverStatusPush: false # 是否默认开启服务器状态推送
newPlayerAlert: false # 是否默认开启新玩家提醒验证配置
verification:
enabled: false # 是否默认开启验证
expireTime: 86400 # 验证请求过期时间(秒)
maxRequests: 5 # 最大验证请求数皮肤渲染配置
skin:
use3D: true # 是否使用3D渲染
renderType: 1 # 渲染方案选择 (1: 行走视图, 2: 站立视图)
# 渲染方案一配置(行走视图)
render1:
server: 'https://skin2.ixiaojiu.love' # 渲染服务器地址
definition: 1.5 # 图片清晰度
transparent: true # 是否透明背景
# 渲染方案二配置(站立视图)
render2:
server: 'http://skin.ixiaojiu.love' # 渲染服务器地址
endpoint: '/render' # 渲染接口路径
width: 300 # 渲染宽度
height: 600 # 渲染高度Mod搜索配置
mod:
# 是否启用mod下载功能,不影响搜索和版本查询
enableDownload: true
# 默认mod源 (可选值: modrinth, curseforge)
defaultSource: 'curseforge'3D渲染接口部署
3D渲染原项目(行走&站立视角)(不支持api):https://github.com/bs-community/skinview3d
一、站立视角API项目地址:https://github.com/Dnyo666/skinview3d-api
注意:
- 目前只测试了Windows环境,其他环境未测试
- 部署时需要修改config.yaml中的server和endpoint
- 默认端口为3006,可根据项目内文档进行更改,同时请注意插件内配置
公用API:http://skin.ixiaojiu.love 由九九系只喵提供(3500039980)
二、行走视角API项目地址:https://github.com/SerinaNya/SkinRenderMC
注意:
- 行走视角API项目可自行部署,且需要修改config.yaml中的server
- 部署方法详见项目页,使用docker快速部署
- 浅巷墨黎提供公用API:http://skin2.qxml.ltd
公用API: http://skin2.ixiaojiu.love
注意事项
- 服务器状态查询使用了 mcsrvstat 和 mcstatus 两个API,确保网络能够正常访问。
- 进群验证功能需要群管理员权限。
- 推送功能会定期检查服务器状态,请合理设置检查间隔。
- 玩家名绑定会通过 PlayerDB API 验证玩家名的有效性。
- MCManager相关功能必须使用管理账户的apiKay,而且管理账户也需要单独设置授权管理的实例
TODO
- 优化:
- [ ] 优化定时任务
- [x] 改为debug模式
- [ ] 添加超时重试机制
- [ ] 优化错误处理
- [x] 数据自动迁移同步
- 功能:
- [x] littleskin绑定
- [ ] MUA高校联合绑定(咕咕咕)
- [ ] 附魔计算器
- [ ] 百科查询
- [ ] 指令备忘录
- [ ] 玩家在线状态查询
- [ ] 投影功能
- [ ] 投影上传保存,分类收藏
- [ ] 投影3D渲染预览,材料预览
- [x] 玩家绑定信息云端
- [x] 3D渲染皮肤(#mc信息)
- [x] mc头像渲染(感谢Natsusomekeishi/MCCAG)
- [x] 服务状态查询
- [x] mod搜索下载
- 文档:
- [ ] 添加详细的配置说明
- [ ] 添加常见问题解答
- [ ] 编写开发者文档
联系方式
QQ群: 303104111
如有BUG,请务必提交issue,浅巷墨黎后续恢复开发后将逐一修复
贡献者
🌟 感谢所有为 MCTool-Plugin 做出贡献的人!
其他
如果觉得此插件对你有帮助的话,可以点一个 star,你的支持就是我们不断更新的动力~
许可证
项目采用 GPL-3.0 许可证,这意味着:
- 您可以自由使用、修改和分发本软件
- 如果您分发修改后的版本,必须同样遵循 GPL-3.0 协议
- 您必须公开源代码
- 您必须保留原作者的版权声明
指令列表
MCTool-用户
- 描述:Minecraft用户管理
- 事件:
message - 优先级:-5000
| 正则表达式 | 处理函数 |
|---|---|
^#?\[Mm\]\[Cc\]绑定\\s+mojang\\s+(.+)$ | bindUser |
^#?\[Mm\]\[Cc\]解绑\\s+(mojang|littleskin)\\s+(.+)$ | unbindUser |
^#?\[Mm\]\[Cc\]信息$ | getUserInfo |
^#?\[Mm\]\[Cc\]查询绑定\\s+(mojang|littleskin)\\s+(.+)$ | queryBinding |
^#?\[Mm\]\[Cc\]头像\\s\*(全身|半身|头部)?\\s\*(.+)?$ | generateAvatar |
^#?\[Mm\]\[Cc\](?:uuid|uid|id)(?:\\s+(.+))?$ | queryUUID |
^#mc皮肤渲染$ | renderSkin |
^#?\[Mm\]\[Cc\]绑定\\s+littleskin$ | bindLittleSkin |
^#?\[Mm\]\[Cc\]切换绑定\\s\*(全部|mojang|littleskin)$ | switchDisplayMode |
MCTool_更新
- 描述:调用Yunzai自带更新模块进行插件更新
- 事件:
message - 优先级:2000
| 正则表达式 | 处理函数 |
|---|---|
^#?(mc工具|mctool)(插件)?(强制)?更新$ | update |
^#?(mc工具|mctool)(插件)?更新(日志|记录)$ | update_log |
MCTool-服务器
- 描述:Minecraft服务器管理
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?\[Mm\]\[Cc\](添加|add)\\s+\\S+\\s+\\S+\\s\*.\*$ | addServer |
^#?\[Mm\]\[Cc\](删除|del)\\s+\\d+$ | deleteServer |
^#?\[Mm\]\[Cc\](状态|status|列表|list)$ | getServerList |
^#?\[Mm\]\[Cc\](在线|online)$ | getOnlinePlayers |
^#?\[Mm\]\[Cc\]motd(?:\\s+\\S+(?::\\d+)?)?$ | queryMotd |
MCTool-验证
- 描述:Minecraft玩家验证配置
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?\[Mm\]\[Cc\]验证\\s\*$ | getVerificationStatus |
^#?\[Mm\]\[Cc\]验证\\s+(开启|关闭)$ | toggleVerification |
^#?\[Mm\]\[Cc\]验证重复使用\\s+(开启|关闭)$ | toggleDuplicateNames |
^#?\[Mm\]\[Cc\]验证拒绝\\s+(开启|关闭)$ | toggleAutoReject |
^#?\[Mm\]\[Cc\]验证列表$ | listVerifiedUsers |
^#?\[Mm\]\[Cc\]验证删除\\s+(.+)$ | deleteVerification |
MCTool-验证请求
- 描述:Minecraft玩家验证请求处理
- 事件:
request.group.add - 优先级:5000
MCTool-推送命令
- 描述:Minecraft服务器推送命令
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?\[Mm\]\[Cc\](开启|关闭)推送\\s\*(\\d+)?$ | togglePush |
^#?\[Mm\]\[Cc\](开启|关闭)新人推送\\s\*(\\d+)?$ | toggleNewPlayerAlert |
^#?\[Mm\]\[Cc\](开启|关闭)状态推送\\s\*(\\d+)?$ | toggleServerStatusPush |
^#?\[Mm\]\[Cc\]推送玩家\\s+(\\d+)\\s+(\\S+)$ | configurePlayerPush |
^#?\[Mm\]\[Cc\]取消推送玩家\\s+(\\d+)\\s+(\\S+)$ | cancelPlayerPush |
^#?\[Mm\]\[Cc\]推送\\s\*$ | getPushConfig |
MCTool-帮助
- 描述:显示帮助信息
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?\[Mm\]\[Cc\](tool|工具)?(help|帮助|菜单)$ | help |
^#?\[Mm\]\[Cc\]mod帮助$ | mcmodHelp |
MCTool-Mod
- 描述:Minecraft Mod搜索
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?\[Mm\]\[Cc\]mod(?:搜索|查找|查询)\\s+(.+)$ | searchModDefault |
^#?\[Mm\]\[Cc\]modrinth(?:搜索|查找|查询)\\s+(.+)$ | searchModrinthMod |
^#?\[Mm\]\[Cc\]modcurse(?:搜索|查找|查询)\\s+(.+)$ | searchCurseforgeMod |
^#?\[Mm\]\[Cc\]mod翻页$ | nextPage |
^#?\[Mm\]\[Cc\]mod信息\\s+(\\S+)$ | getModInfo |
^#?\[Mm\]\[Cc\]modrinth信息\\s+(\\d+)$ | getModrinthInfo |
^#?\[Mm\]\[Cc\]modcurse信息\\s+(\\d+)$ | getCurseforgeInfo |
^#?\[Mm\]\[Cc\]mod版本\\s+(\\S+)(?:\\s+(\[^\\s\]+))?(?:\\s+(\[^\\s\]+))?$ | getModVersions |
^#?\[Mm\]\[Cc\]modrinth版本\\s+(\\d+)(?:\\s+(\[^\\s\]+))?(?:\\s+(\[^\\s\]+))?$ | getModrinthVersions |
^#?\[Mm\]\[Cc\]modcurse版本\\s+(\\d+)(?:\\s+(\[^\\s\]+))?(?:\\s+(\[^\\s\]+))?$ | getCurseforgeVersions |
^#?\[Mm\]\[Cc\]mod版本翻页$ | nextVersionPage |
^#?\[Mm\]\[Cc\]mod下载\\s+(\\S+)(?:\\s+(\[\\S\]+))?(?:\\s+(\[\\S\]+))?$ | getModVersion |
MCTool-工具
- 描述:Minecraft工具集
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?\[Mm\]\[Cc\]服务状态$ | checkServiceStatus |
MCSManager-绑定
- 描述:绑定MCSManager实例
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?(mcs|MCS)\\s\*(绑定信息|bindinfo)$ | info |
^#?(mcs|MCS)\\s\*(解绑|unbind)$ | unbind |
^#?(mcs|MCS)\\s\*(同步实例|syncinstances)$ | syncInstances |
^#?(mcs|MCS)\\s\*(绑定|bind)\\s\*.\*$ | bind |
MCSManager-守护进程
- 描述:MCSManager 守护进程管理指令
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?(mcs|MCS)\\s\*(添加节点|add-node)(?:\\s+(\[\\s\\S\]+))?$ | addNode |
^#?(mcs|MCS)\\s\*(删除节点|del-node)\\s\*(\[\\d\]+)$ | deleteNode |
^#?(mcs|MCS)\\s\*(连接节点|link-node)\\s\*(\[\\d\]+)$ | linkNode |
^#?(mcs|MCS)\\s\*(节点列表|nodes)$ | listNodes |
MCSManager-文件
- 描述:MCSManager 文件管理
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?(mcs|MCS)\\s\*(文件列表|files)\\s\*(\\d+)(?:\\s+(\\d+))?(?:\\s+(\[^\\s\]+))?$ | listFiles |
^#?(mcs|MCS)\\s\*(下载文件|download)\\s\*(\\d+)\\s+(.+)$ | downloadFile |
MCSManager-帮助
- 描述:显示MCSManager帮助信息
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?(mcs|MCS)(help|帮助|菜单)$ | help |
MCSManager-信息
- 描述:获取MCSManager面板信息
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?(mcs|MCS)\\s\*(概览|overview)$ | overview |
^#?(mcs|MCS)\\s\*(用户列表|users)\\s\*(\\d+)?$ | users |
MCSManager-实例管理
- 描述:MCSManager 实例管理指令
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?(mcs|MCS)\\s\*(实例列表|list)\\s\*(\[0-9\]\*)?$ | listInstances |
^#?(mcs|MCS)\\s\*(实例信息|info)\\s\*(\[a-zA-Z0-9\]+)$ | instanceInfo |
^#?(mcs|MCS)\\s\*(启动|start)\\s\*(\[a-zA-Z0-9\]+)$ | startInstance |
^#?(mcs|MCS)\\s\*(停止|stop)\\s\*(\[a-zA-Z0-9\]+)$ | stopInstance |
^#?(mcs|MCS)\\s\*(重启|restart)\\s\*(\[a-zA-Z0-9\]+)$ | restartInstance |
^#?(mcs|MCS)\\s\*(强制结束|kill)\\s\*(\[a-zA-Z0-9\]+)$ | killInstance |
^#?(mcs|MCS)\\s\*(日志|log)\\s\*(\[a-zA-Z0-9\]+)\\s\*(\\d+)?$ | viewLog |
^#?(mcs|MCS)\\s\*(命令|cmd)\\s\*(\[a-zA-Z0-9\]+)\\s\*(.+)$ | sendCommand |
MCSManager-用户管理
- 描述:管理MCSManager用户
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^#?(mcs|MCS)\\s\*(创建用户|createuser)\\s\*.\*$ | createUser |
^#?(mcs|MCS)\\s\*(删除用户|deleteuser)\\s\*.\*$ | deleteUser |
^#?(mcs|MCS)\\s\*(修改权限|setperm)\\s\*.\*$ | changePermission |
^#?(mcs|MCS)\\s\*(重置密码|resetpwd)\\s\*.\*$ | resetPassword |
MCTool-推送
- 描述:Minecraft服务器推送服务
- 事件:
message - 优先级:5000
| 正则表达式 | 处理函数 |
|---|---|
^$ | noop |
← 返回插件列表