SyncCurseCraft

SyncCurseCraft

将你的mods文件夹与服务器列表同步,通过正常的Minecraft端口。

SyncCurseCraft

让玩家的模组文件夹始终与服务器保持一致。无需额外端口,无需网页服务器,无需启动器。

你给服务器添加了一个模组。你的朋友连接时因模组不匹配而被踢出,于是你在聊天里粘贴了一个下载链接,结果还是有人装错了版本。SyncCurseCraft 省去了这整段对话:服务器发布其模组列表,客户端将其与 /mods/ 目录进行比对,只需一个按钮即可修复差异。


为什么它在其他工具失效的场景下依然有效

所有数据都通过正常的 Minecraft 端口传输。没有额外的 HTTP 服务器,也不需要开放第二个端口。

如果你租用服务器,这一点至关重要。像 BisectHosting、Aternos 或 Shockbyte 这样的服务商只提供 25565 端口,没有其他端口,这排除了所有期望通过 HTTP 提供文件服务的同步工具。SyncCurseCraft 随服务器列表 Ping 一同工作——也就是你的客户端为显示 MOTD 和玩家数量而读取的同一响应。你的玩家在连接之前就能看到模组列表,无需加入游戏,也无需登录。

.jar 文件本身直接来自 CurseForge 的 CDN。你的服务器从不上传任何单个模组文件,因此一个 400 MB 的整合包不会消耗服务器任何带宽。


给玩家的说明

  1. 启动游戏。在主菜单和服务器列表的左上角有一个同步模组按钮。绿色圆点表示服务器的列表已更改。
  2. 输入服务器地址,点击检查服务器。
  3. 选择你的配置文件:
    • 低配电脑 — 仅包含服务器必需的模组。
    • 高配电脑 — 包含必需的模组以及客户端额外的模组:光影、小地图、环境音效,以及管理员放入的任何内容。
  4. 点击立即同步,然后点击退出以应用。
  5. 重新打开游戏。完成。

在发生任何操作之前,你始终能看到将要安装和将要移除的完整列表,如果列表很长,还可以滚动查看。

给管理员的说明

服务器会创建 config/synccursecraft/packs/ 目录,其中包含两个文件夹:

LowPC/     必需的模组,每个玩家都会获得
HighPC/    完整的高配电脑配置;此处的任何模组以及不在 LowPC/ 中的模组
           将成为可选的客户端模组

将你的 .jar 文件拖入其中并重启,或运行 /scc generate 命令。每个文件都会通过指纹在 CurseForge 上进行识别,清单会自动为你生成,包含模组 ID、哈希值、大小和下载 URL。你的文件绝不会被移动或删除 —— 这些文件夹归你所有。

/scc generate    根据整合包文件夹重建清单
/scc reload      无需重启即可重新加载清单
/scc status      显示正在公告的内容以及任何警告

它还会为你验证整合包。如果某个模组需要你忘记添加的依赖项,控制台会在生成时提醒你,而不是等你的玩家因崩溃才发现问题。


它绝不会触碰的内容

这是整个模组构建所依据的规则,且不可协商:

仅限 /mods/ 目录内的 .jar 文件,且仅限于它自己安装的那些。

你的 config/ 文件夹、options.txt、按键绑定、光影包、资源包、存档以及任何你自行安装的模组都不会被改动。只有一个例外,且在执行前会显示在屏幕上:如果你安装了与服务器所需模组不同的版本,该模组会被移除 —— 游戏无法在同时加载两个相同模组版本的情况下启动。

安全性

  • 下载被限制在硬编码的白名单中:.forgecdn.net 和 。无论清单如何声明,其他任何主机均无法访问。
  • 每个文件在安装前都会通过 SHA-1 和字节大小 进行验证。如果不匹配,文件将被丢弃,不留任何痕迹。
  • 文件名会针对路径遍历进行验证。
  • 下载会先放入暂存文件夹,在下次重启时才会移入 /mods/ 目录,因此同步中断绝不会导致游戏损坏。
  • 你的 CurseForge API 密钥保留在服务器上。它刻意不存储在 NeoForge 服务器配置中,因为这些配置会同步到每个连接的客户端。

性能

所有下载、哈希计算和磁盘写入都在渲染线程之外进行。游戏在同步过程中不会卡顿。


安装

客户端 — 两个 jar 文件都放在 .minecraft/mods 目录中:

文件 用途
synccursecraft-<版本号>.jar 模组本体
synccursecraft-bootstrap-<版本号>.jar 早期引导服务

你需要同时安装两者。它们分开发布是因为 NeoForge 不允许一个 jar 文件同时作为早期引导服务和模组 —— 如果引导服务在主 jar 中,模组将完全无法加载。如果你通过 CurseForge 应用安装,第二个 jar 会作为依赖项自动附带。

如果没有引导 jar,模组仍可运行,但它只能添加模组,而无法更新或移除已加载的模组。同步界面会在此 jar 缺失时发出警告。

服务器 — 只需要将 synccursecraft-<版本号>.jar 放入服务器的 mods 文件夹。

要求

Minecraft 1.21.1 · NeoForge 21.1.x · Java 21

无需其他模组。无外部库,无内嵌内容。


已知限制

某些模组需要另一个模组,但未在任何地方声明 —— 不在其元数据中,也不在 curseforge API 中。Iris 和 Sodium 是已知案例:如果你的整合包使用 Iris,请手动将 Sodium 添加到整合包文件夹中。任何自动检查都无法捕获这种情况。

SyncCurseCraft 无法自我更新。将其自身的 jar 放入整合包文件夹会被故意拒绝,并在控制台中显示警告。当新版本发布时,请告知你的玩家替换这两个 jar 文件。


许可证:CC BY-NC-SA 4.0 · 作者:el_this_boy