动态包

动态包

此模组将自动更新你的资源包!

管理

🌍 DynamicPack

一个轻量级模组,用于监控你的资源包版本并自动更新。

环境:客户端 GitHub 仓库 构建状态

DynamicPack 横幅 Fabric 下载 NeoForge 下载


📖 文档

查看 GitHub Wiki 获取完整的开发者文档、高级功能和示例。


🎨 使用 DynamicPack 的资源包

以下资源包已使用 DynamicPack 自动更新功能:


⚙️ 工作原理

资源包开发者需要在包内包含一个名为 dynamicmcpack.json 的元数据文件。 游戏启动时,DynamicPack 会检查更新,并在必要时自动下载最新版本。


🧩 玩家指南

安装模组即可享受 — DynamicPack 会在后台处理更新。


🛠 开发者指南

如果你希望自己的资源包能够自动更新,可以选择以下集成方式之一。

🔗 方式 1 — 通过 Modrinth 更新

在你的资源包中创建一个名为 dynamicmcpack.json 的文件:

{
  "current": {
    "version_number": "7.1"                                   // 资源包当前版本
  },
  "remote": {
    "game_version": "1.21.1",                                 // 兼容的 Minecraft 版本
    "modrinth_project_id": "better-leaves",                   // 你的 Modrinth 项目 slug 或 ID
    "type": "modrinth"                                        // 更新源类型(Modrinth)
  },
  "formatVersion": 1                                          // 内部配置格式版本
}
🐙 方式 2 — 通过 GitHub 更新

在你的资源包中创建一个名为 dynamicmcpack.json 的文件:

{
  "current": {},
  "remote": {
    "sign_no_required": true,                                 // 可选的数字签名 — 设为 true 可禁用验证
    "type": "dynamic_repo",                                   // 更新源类型(动态仓库)
    "url": "https://adamcalculator.github.io/CursedEveryday/" // 远程仓库 URL
  },
  "formatVersion": 1                                          // 内部配置格式版本
}

接下来,创建一个类似这样的 dynamicmcpack.repo.json 文件:

{
  "formatVersion": 1,                                         // 内部模式版本
  "build": 10,                                                // 当前发布的构建号
  "name": "CursedEveryday",                                   // 资源包显示名称
  "contents": [
    {
      // 元数据块(包组件的主要信息)
      "url": "path/to/content.json",
      "hash": "5e4d4ad1e9714487263c51f5f83c448c0708773a",     // content.json 的 SHA1 校验和
      "id": "meta",
      "hidden": true,                                         // 从面向用户的列表隐藏此组件
      "required": true                                        // 将此组件标记为必需
    },
    {
      // 附加内容部分的示例
      "url": "path/to/content.json",
      "hash": "6e6739297dac80078bbc4890567f05d4015553db",
      "id": "cursed",
      "name": "Cursed content"                                // 可选的友好显示名称
    }
  ]
}

然后,为每个内容部分创建单独的 content.json 文件:

{
  "formatVersion": 1,                                         // 模式版本
  "content": {
    "parent": "path/to/parent",                               // 包含文件的本地文件夹
    "remote_parent": "remote/path/to/parent",                 // 在 Git 仓库中对应的路径
    "files": {
      "path/to/file": {
        "hash": "ca55daeef2e2d84ccd64608cf889ac321c18d4c2",   // 文件的 SHA1 哈希
        "size": 4773                                          // 文件大小(字节)
      },
      "path/to/file2": {
        "hash": "336e9f4e6d7d1400d8a308a33e703e8b33ea5434",
        "size": 54665
      },
      "path/to/file3": {
        "hash": "09dae0777de1705e8acd0ff84c0bb6b7e3e22f63",
        "size": 98592
      }
    }
  }
}

⚠️ 重要提示: 这些示例使用了 json5,它允许注释(//)。 实际文件必须是有效的 .json,因此使用前请删除注释,或使用此 JSON 检查器进行验证。

高级功能 — 例如动态仓库 — 已在 GitHub Wiki 中记录。


💖 支持项目

DynamicPack 是开源的,并在 MIT 许可证 下完全免费。 如果你想支持原作者:

比特币: bc1qpc0q9ym7rnfatdh43c4jyf68znj8x2jae5j4cz

每一份聪都帮助项目保持活力(也许还能多买些咖啡 ☕)。