Curseforge 同步

Curseforge 同步

将你的服务器指向一个CurseForge整合包,每次启动时它都会自动保持同步——在Forge扫描模组之前。旧版本会被删除,新版本会被安装,客户端专用模组会被自动过滤掉。

功能简介

让 Forge 服务器与整合包保持同步是一项手工活。每次整合包更新,都需要手动比对 mods 文件夹、删除过期的 jar 文件、下载替换文件,还要记住哪些条目是仅客户端模组,装到服务器上会导致崩溃或浪费内存。

CurseforgeSync 在启动时自动完成所有这些工作。 将一个 jar 文件放入 mods/,在配置文件中填入你的整合包项目 ID,每次启动时服务器都会自动将其 mods 文件夹与整合包的最新版本进行同步。

  • 下载并安装整合包列出的所有内容
  • 当整合包更新到新版本时,自动删除旧版本的模组
  • 跳过仅客户端模组,如 Rubidium、Oculus、Mouse Tweaks 和 Xaero 的小地图
  • 将资源包和光影包整理到各自的文件夹,而不是丢在 mods/ 中
  • 保留你手动添加的 jar 文件,原封不动

安装设置

  1. 将对应你 Minecraft 版本的 jar 文件放入 mods/。
  2. 启动服务器一次。它会生成 config/curseforgesync.json。
  3. 从整合包 CurseForge 页面上的 Project ID 框中复制数字,填入 modpackProjectId。
  4. 重新启动。
{
  "modpackProjectId": 885460
}

以上就是全部设置。其他所有选项都有合理的默认值。

在 Forge 扫描模组之前运行

普通模组在此场景下为时已晚。当普通模组的 setup 事件触发时,mods/ 中的所有 jar 文件已经被扫描并加载,此时修改文件夹内容只能等下次重启才生效。

因此,CurseforgeSync 根本不注册为模组——它注册为加载器的一部分。在 1.16.5 及更新版本中,它是一个 ModLauncher 转换服务;在 1.7.10 和 1.12.2 中,它是一个 FML coremod。两者都在模组扫描器存在之前运行,因此同步操作在本次启动中即可生效。

这意味着 CurseforgeSync 不会出现在服务器的模组列表中,这是预期行为。 Forge 故意跳过对提供转换服务的 jar 文件进行模组扫描——这正是让它能这么早运行的机制。

决定保留什么、移除什么

CurseForge 整合包清单只是一个项目 ID 的扁平列表。它不说明每个条目是什么或属于哪一端,因为读取它的启动器永远是客户端。有两个问题会为你自动解决。

文件的实际类型

整合包经常将资源包和光影包与模组混在一起——例如 All of Create 包含 230 个模组、42 个资源包和 2 个光影包。这些文件会被放入 resourcepacks/ 和 shaderpacks/,绝不会放进 mods/,在服务器上则会被完全跳过。世界存档和 Bukkit 插件永远不会被安装。

模组属于哪一端

按以下顺序判定,每个决定的理由都会写入日志:

  1. 你自己的 clientOnlyMods 和 serverOnlyMods 列表
  2. 一个包含约 100 个知名仅客户端项目的精选列表——渲染器、光影加载器、缩放和输入模组、HUD 和提示框模组、音效和装饰模组、Discord 状态
  3. 作者在上传文件上标注的客户端/服务器标签

任何无法识别的模组都会被安装。这种不对称是故意的:错误地判定为“仅客户端”会导致依赖缺失和崩溃,而错误地判定为“通用”只会浪费几 MB 内存。即使有部分服务端组件的模组——如 JEI、Jade、JourneyMap、FerriteCore、ModernFix——也刻意不列入列表。

两种清理模式

模式 行为
tracked(默认) 只移除 CurseforgeSync 自己安装的 jar 文件。更新模组时仍会删除旧版本,但你手动添加的任何内容都不会被触碰。
strict 让 mods/ 成为整合包的精确镜像,删除所有其他文件,但你在 protectedFiles 中列出的名称除外。

在信任之前先试用

每个 jar 文件同时也是可运行的命令行工具,因此你可以在不接触真实服务器的情况下,精确查看同步操作会做什么:

java -jar curseforgesync-1.19.2-1.0.0.jar --dir ./myserver --pack 885460 --dry-run --verbose

这也是在全新服务器首次启动前预先填充内容的最快方式。

支持的版本

Minecraft 1.7.10、1.12.2、1.16.5、1.19.2、1.20.6、1.21.11、26.1.2 和 26.2。每个构建版本都针对其对应版本的最新 Forge。如果整合包的目标 Minecraft 版本与你的服务器不同,同步操作会拒绝运行,而不是用无法加载的 jar 文件填满 mods/。

其他值得了解的事项

  • Coremod 需要重启。 如果同步操作安装了另一个 coremod 或加载器插件,它无法在本次启动中生效,因为加载器在我们运行之前就已经完成 coremod 扫描。CurseforgeSync 会检测到这一点并重启服务器——此行为可配置,如果你希望关闭也可以。
  • CurseForge 故障不会导致服务器宕机。 如果同步失败,启动过程会继续使用已安装的模组。如果你希望停止,可以设置 failOnError。
  • 选择退出第三方分发的作者 也会得到处理。受影响的文件会列在文本文件中,供你手动安装。
  • 内置可用的 API 密钥,无需注册任何服务。费率限制是按密钥计算的,因此繁忙的主机可以自行换成免费的密钥。
  • 完整日志 写入 logs/curseforgesync.log,在 Minecraft 自身的日志系统启动之前就会开始记录。