从上传到校验,一站式资源包生命周期管理
不可变版本 + 事件快照 + Diff 回退,让每一次资源包更新都可追溯、可回退、可审计。
不可变资源包版本
每次上传生成独立版本号,已发布版本永不覆盖。事件保存完整版本快照,回退也基于历史版本创建新事件。
即时与预约更新事件
创建立即生效或定时触发的更新事件。预约事件到点仅发送聊天提醒,由玩家自行触发下载,体验友好。
Diff 对比与一键回退
每个事件均可查看版本差异。回退会创建指向旧快照的新事件,需填写回退说明,全程可审计。
玩家用户组定向推送
内置 default / vip / staff 用户组,玩家首次登录自动注册。通过事件将不同资源包版本定向推送给指定用户组。
多语言管理控制台
Vue 3 管理控制台内置中文、English、日本語,自动检测浏览器语言。概览、资源包、事件、用户组、玩家、日志、设置一站式管理。
TOTP 双因素认证
管理员账号支持 6/8 位 TOTP 2FA(Base32 密钥)。面向公网的管理控制台强烈建议启用,配合 bcrypt 密码哈希。
SHA-256 校验与断点安全
客户端下载 UI 实时显示进度、速度与 ETA。下载完成以 SHA-256 + 文件大小校验,必装包标红、可选包标金。
纯 Go 后端,零 JVM 依赖
单一 Go 二进制同时支持 Windows 与 Linux amd64,内置 SQLite。运行时不依赖 JVM,启动即用、跨平台分发。
生产安全默认值
默认绑定 127.0.0.1;公网绑定强制强密钥、HMAC、安全 Cookie。非回环启动自动拦截弱密钥与明文 HTTP。
六步完成一次资源包更新
从管理控制台上传到玩家客户端校验,全流程闭环。
上传资源包 ZIP
管理控制台上传,单遍流式写入并同步计算 SHA-1 + SHA-256,生成不可变版本。
保存不可变版本
相同包+版本+内容复用既有版本号,已发布版本永不被覆盖。
选择玩家用户组
为本次更新事件指定目标用户组(default / vip / staff 或自定义)。
创建更新事件
立即生效或预约到点。预约事件到点仅发送聊天提醒,不自动弹出下载。
玩家登录 / 主动检查
玩家进服或执行 /rpsync checkupdate 触发 Session Check。
下载并校验资源包
客户端从后端拉取,实时显示进度与速度,完成后以 SHA-256 校验。
双端 Mod + 自托管后端,三层协作
服务端 Mod 解析玩家用户组与活动事件并调用后端;客户端 Mod 负责实际下载;Go 后端提供管理控制台与资源分发。Session Check 仅返回 PASS 或 NEED_UPDATE。
后端 Admin Panel
单一 Go 二进制,内置 SQLite + Vue 3 静态控制台。提供 Admin API、Session Check、资源包下载、事件轮询。WAL 模式、外键约束、5s 忙等待超时。
- 无 JVM 依赖运行时仅需 Go 二进制
- 跨平台分发Windows .exe + Linux 二进制
共享 Mod common 层
共享 DTO、JSON 序列化、协议类型(网络协议版本 "2")与安全工具(HMAC、SHA-256)。所有加载器实现共用同一协议层。
- 统一协议rpsync:* 数据包 ID
- HMAC 签名服务端请求防伪造
加载器实现
Forge / Fabric / NeoForge 各自实现。客户端注册 /rpsync 命令与下载 UI;服务端每 30s 轮询到期事件并发送聊天提醒。
- 客户端命令checkupdate / settings / guide
- 下载 UI进度 / 速度 / ETA 实时显示
覆盖三个 Minecraft 版本 × 三大加载器
每个 JAR 仅声明一个精确 Minecraft 补丁版本,不承诺跨补丁二进制兼容。Fabric 始终需要 Fabric API。
| Minecraft | Java | Forge | Fabric | NeoForge |
|---|---|---|---|---|
| 1.20.1 | 17+ | 47.2.0+ | Loader 0.14.21+ | 47.1.106 |
| 1.21.11 | 21+ | 61.1.8+ | Loader 0.19.3+ | 21.11.42+ |
| 26.2 | 25+ | 65.0.3+ | Loader 0.19.3+ | 26.2.0.7-beta |
JAR 命名规则:rpsync-{loader}-mc{mcVersion}-{modVersion}.jar · MC 26.2 需 Java 25 编译与运行