常见问题

有疑问?这里可能有答案

按主题分类的常见问题与排障指南。没找到?查阅 完整文档

通用问题

ResourcePackSync 是面向 Minecraft 游戏服的资源包更新事件控制台与客户端同步 Mod。它让服主上传不可变资源包版本、定向玩家用户组、创建即时或预约更新事件;双端 Mod 在玩家登录或执行命令时自动检查、下载并以 SHA-256 校验资源包。支持 Minecraft 1.20.1、1.21.11 与 26.2,覆盖 Forge / Fabric / NeoForge 三大加载器。

原版方案只能配一个静态资源包 URL,更新需手动换文件,无法定向用户组、无法预约、无法回退、无法校验完整性。ResourcePackSync 提供:不可变版本管理、用户组定向、即时/预约事件、Diff 对比、一键回退(基于历史快照创建新事件)、SHA-256 校验、实时下载进度 UI、多语言管理控制台与 TOTP 2FA。

不是纯服务端插件。客户端必须安装匹配的 JAR,否则不会出现检查/下载 UI。服主需向玩家分发对应 MC 版本与加载器的 JAR(Fabric 用户另需 Fabric API)。每个 JAR 仅声明一个精确 Minecraft 补丁版本,不承诺跨补丁二进制兼容。

支持三个 MC 版本 × 三大加载器:

  • 1.20.1 -- Forge 47.2.0+ / Fabric Loader 0.14.21+ / NeoForge 47.1.106(Java 17+)
  • 1.21.11 -- Forge 61.1.8+ / Fabric 0.19.3+ / NeoForge 21.11.42+(Java 21+)
  • 26.2 -- Forge 65.0.3+ / Fabric 0.19.3+ / NeoForge 26.2.0.7-beta(Java 25+,NeoForge 为 Beta)

MC 26.2 编译与运行均需 Java 25,NeoForge 26.2 为 Beta,上线前请在测试服验证。

不需要。后端是单一 Go 二进制(Go 1.25 编译,CGO_ENABLED=0),内置 SQLite(纯 Go 驱动,无 CGO)。运行时完全不依赖 JVM。同一二进制同时支持 Windows .exe 与 Linux amd64。Java 仅在编译 Mod 时需要。

是,MIT 协议开源。作者为 Creating工程组 与 BenLi06,仓库位于 GitHub。游戏内品牌显示为 [CREssentials] ResourcePackSync,由 Creating工程组出品、BenLi06 制作。

安装部署

执行 ./gradlew.bat releaseArtifacts,产物整理进 build/release/,包含后端二进制、按 MC 版本与加载器分组的 Mod JAR、完整部署 ZIP 与 SHA256SUMS.txt。JAR 命名规则:rpsync-{loader}-mc{mcVersion}-{modVersion}.jar

必须按顺序启动:

  1. 后端start-backend.bat / .sh
  2. Minecraft 服务端(含 RPSync 服务端 Mod)
  3. 客户端(安装匹配 JAR 后加入)

顺序错误会导致服务端 Mod 启动时无法连接后端。

首次运行自动生成:

  • Forge / NeoForgeconfig/rpsync-common.toml
  • Fabricconfig/rpsync-fabric.properties(等价键 + rpsync.serverAuthSecret 系统属性)

分发包内附 rpsync-common.example.toml 模板(仅 Forge/NeoForge 目录)。

单机演示:后端与服务端同机,baseUrl=http://localhost:8080allowLocalHttpForDevelopment=true(仅限开发)。生产部署:后端独立主机/域名,前置 Nginx/Caddy 提供 HTTPS,客户端与服务端均指向真实 baseUrl,关闭 allowLocalHttpForDevelopment

start-backend.bat / start-backend.sh 自动将 RPSYNC_STATIC_DIRRPSYNC_BUILTIN_PACKS_DIRRPSYNC_ADMIN_DATA_DIR 设置为相对路径,无需手动配置即可从分发包目录启动。

配置问题

是的。最常见误配:服务端 baseUrl 正确,但客户端 baseUrl 仍是 localhost第二常见:生产环境仍用 http://,客户端下载会被拒绝。第三public-base-url 不匹配--即使后端能启动,下载也会失败。请确保客户端与服务端 baseUrl 完全一致且指向真实 HTTPS 域名。

生产环境默认拒绝明文 HTTP 下载。需满足:allowLocalHttpForDevelopment=falseallowInsecureHttpDownloads=false。如确需自定义 HTTP 端点,必须在 allowedDownloadEndpoints 显式白名单,并设 allowHttpDownloadsOnCustomPort=true,同时避开 3389/3390 端口(已在 blockedDownloadPorts 默认拦截)。

管理控制台 Cookie 名固定为 RPSYNCADMIN,属性 HttpOnly + SameSite=Strict。HTTPS 下必须设 RPSYNC_ADMIN_COOKIE_SECURE=true,否则浏览器不会回传安全 Cookie,导致无法登录。

后端设 RPSYNC_SERVER_AUTH_ENABLED=trueRPSYNC_SERVER_AUTH_SECRET(≥32 字符)。Mod 端通过 RPSYNC_SERVER_AUTH_SECRET 环境变量或 rpsync.serverAuthSecret 系统属性提供相同密钥。服务端到后端的所有请求均 HMAC 签名,防止伪造。下载令牌密钥与服务端认证密钥应是两把独立的密钥,绝不复用。

生产环境要求 ≥16 字符,或提供 bcrypt 哈希 RPSYNC_ADMIN_PASSWORD_HASH(格式 {bcrypt}$2a$...)。RPSYNC_ADMIN_USERNAME 仅在初始化时用于创建首个 SUPER_ADMIN,之后不可通过环境变量更改。公网管理控制台强烈建议启用 TOTP 2FA(Base32 密钥,6/8 位)。

玩家与客户端

两种方式:

  1. 自动:玩家登录服务器时自动触发 Session Check(可在客户端设置中关闭自动检查)。
  2. 手动:执行 /rpsync checkupdate 立即检查。

Session Check 仅返回 PASSNEED_UPDATE(外加 DENY)。

会。关闭自动检查不会关闭 upcoming 或预约到点聊天提醒。服务端每 30s 轮询到期事件,到点仅发送聊天提醒,不自动弹出下载 UI--由玩家看到提醒后自行执行 /rpsync checkupdate 触发。

全部为客户端命令,无服务端权限节点:

  • /rpsync checkupdate -- 立即检查资源包更新
  • /rpsync settings -- 打开客户端设置(登录时是否自动检查)
  • /rpsync guide -- 打开游戏内首次使用引导

客户端下载 UI 实时显示:资源包名称、文件名、总进度/当前进度、实时速度与 ETA。必装包(required)显示为红色,可选包显示为金色/绿色。下载完成后以 SHA-256 + 文件大小校验完整性。

会。玩家首次登录自动注册到数据库(V006 新增大小写不敏感名称索引)。内置 default / vip / staff 三个用户组。用户组仅管理成员关系,资源包通过事件分配--在创建事件时为目标用户组选择资源包版本。

管理控制台

资源包版本不可变,不能覆盖旧版本。正确流程:上传新 ZIP -> 系统生成新的不可变版本号 -> 选择该版本 + 目标用户组 -> 创建即时或预约事件 -> 玩家下次登录或执行 /rpsync checkupdate 触发下载。切勿用不同内容覆盖旧文件名。

不会修改历史。事件历史是不可变的。回退会创建一个新事件,指向某个旧版本快照,并要求填写回退说明,全程可审计。每个事件还可查看版本 Diff 对比。

可以。一个事件中每个资源包选一个版本。要同时更新多个包,在同一事件中分别为每个包选择一个版本即可。事件状态实时派生:scheduled / active / superseded / rolled_back / cancelled

采用一次性暂存上传:预览阶段返回 stagedUploadId(1 小时 TTL,单次使用);提交阶段仅发送 ID + 元数据,避免重复传输文件内容。上传时单遍流式写入 ZIP 并同步计算 SHA-1 + SHA-256。

两种角色:SUPER_ADMIN(全部权限 + 面板用户管理)与 ADMIN(无面板用户管理,/api/admin/panel-users/** 仅超级管理员可访问)。不能删除自身或最后一个超级管理员;角色变更或删除用户后,下次请求会重新校验会话。

内置中文(默认)、English、日本語,自动检测浏览器语言。语言选择存储于 localStoragerpsync-admin-locale 键。导航包含:概览 / 资源包更新 / 事件历史 / 用户组 / 玩家 / 日志 / 设置。

安全与生产

会。非回环绑定(0.0.0.0)时,后端启动会自动拦截:占位/过短密钥、缺失服务端 HMAC、明文公网 HTTP(必须设 RPSYNC_ALLOW_PUBLIC_HTTP_CUSTOM_PORT=true 并避开 3389/3390 端口)。这是生产安全的默认防线。

三个端口必须分离:Minecraft FRP 端口、RDP/MSTSC FRP 端口、RPSync 后端端口。切勿把 RDP FRP 端口放进 public-base-url / baseUrl。Mod 默认 blockedDownloadPorts = [3389, 3390] 已拦截常见 RDP 端口。条件允许时优先使用 VPN / Tailscale / ZeroTier,而非暴露 RDP。

真实 HTTPS 域名 · 强下载令牌密钥 · 已替换管理员凭据 · 公网启用 TOTP · 客户端+服务端 baseUrl 一致 · allowLocalHttpForDevelopment=false · 受限的 /admin 访问日志。验证命令:go test ./...npm run build(含 vue-tsc)、gradlew Mod 测试。

下载 URL 与 token 均绑定到不可变 versionId。清单(PackManifestDto)中的 packId 仅为逻辑包 ID。signature 字段为编码兼容保留空字符串。下载令牌由 RPSYNC_DOWNLOAD_TOKEN_SECRET 通过 HMAC 生成。

数据库 WAL 模式、外键开启、5s 忙等待超时、小连接池。每小时自动清理日志与过期暂存上传。旧 session_reports / audit_logs 表保留只读,新写入进入 app_log_entries 表。日志级别与设置可通过 Admin API 的 /api/admin/log-settings 查询与更新。

没找到你的问题?

查阅 完整文档,或前往 GitHub 仓库 提交 Issue。如遇问题请联系 Creating工程组。