简易模组同步

简易模组同步

加入时自动同步服务器到客户端或客户端到客户端的文件,并使用端到端加密。

管理

Easy Mod Sync

alt text

Easy Mod Sync 是一个 Fabric 模组,用于将 Minecraft 服务器或其他客户端的指定文件和目录同步到连接的客户端。它确保玩家在加入前拥有服务器所需的配置、模组、资源包或其他资源。

功能特性

  • 增量同步: 该模组计算服务器跟踪文件的 MD5 哈希,并与客户端的本地文件进行比较。客户端仅下载缺失或与服务器版本不同的文件。
  • 传输方式:
    • MINECRAFT(默认)(较慢): 使用标准的 Minecraft 自定义负载数据包传输文件,并分块处理。适用于配置文件或少量模组。
    • EXTERNAL(快速): 启动一个轻量级的内部 HTTP 服务器来处理文件传输。此方法针对较大文件(如大型资源包或数百个模组)进行了优化,以防止阻塞服务器主线程。
  • 安全与加密:
    • 使用 EXTERNAL 传输方式时,文件负载使用 AES-GCM 加密,并为每个客户端连接生成一次性会话 ID。
    • 服务器强制执行严格的白名单,客户端只能请求已添加到同步注册表中的文件。内置了目录遍历保护。
  • 客户端界面与隔离:
    • 连接的玩家会看到一个提示,详细说明风险,并选择接受下载或断开连接。
    • 文件首先下载到临时目录(config/easymodsync/temp/)。只有当传输 100% 完成且无错误,并且玩家点击“确认”后,文件才会被移动到活动游戏目录。
    • 进度屏幕上有可滚动的事件日志,可实时查看文件传输状态。玩家可以随时使用退出按钮安全地中止传输。

命令

EasyModSync 包含游戏内命令,用于管理文件同步注册表(config/easymodsync/file_tree.json)。这些命令需要操作员(OP)等级 3 或更高。

  • /easymodsync add_files <路径> 将特定文件或递归添加目录到同步列表中。路径必须相对于服务器根目录。 示例: /easymodsync add_files config/mypack/

  • /easymodsync remove_files <路径> 从同步列表中移除特定文件或目录中的所有文件。 示例: /easymodsync remove_files config/old_settings.json

(注意:命令参数支持动态标签补全,可补全本地服务器文件和当前跟踪的文件,以减少因递归检查服务器完整目录树而可能产生的延迟。因此,在输入文件夹名称后,请按空格键再按退格键,以获取该文件夹内文件和目录的更新列表。)

配置

该模组的配置存储在 config/easymodsync.json 中,可以直接编辑,也可以通过 Mod Menu/Cloth Config 进行修改。

选项 类型 默认值 描述
offerAdditionalFiles 布尔值 true 切换服务器是否提示加入的客户端下载跟踪文件。
fileTransferMethod 枚举 MINECRAFT 确定用于发送文件的协议。选项为 MINECRAFT(基于数据包)或 EXTERNAL(基于 HTTP)。
externalPort 整数 25652 如果选择了 EXTERNAL 传输方式,内置 HTTP 服务器使用的端口。此端口必须对连接的客户端可访问(即服务器或提供文件的客户端需要开放该端口)。

要求

  • Fabric Loader
  • Fabric API
  • Cloth Config API