Skip to content

DynamicPack

This mod will automatically update your resource packs!

FabricNeoForgeForge
Loaders
FabricNeoForgeForge
Downloads on Modrinth
33.5K
Followers on Modrinth
61
versions
98
Updated
April 26, 2026Apr 26
Published
in 2024
Background · swipe

At a glance

Runs on Fabric, NeoForge and Forge
For Minecraft 1.17–1.20.2, 1.20.4–26.1.2
Client only — no need to install it on the server
Latest version — 1.2.3-b.26.1-neoforge from April 26, 2026
Requires Kotlin for Forge
License MIT — free
Where it's needed
In gamerequiredOn servernot needed

Install in the game only; not needed on the server

Game versions1.17–1.20.2, 1.20.4–26.1.2

🌍 DynamicPack

A lightweight mod that monitors your resource pack version and updates it automatically.

Environment: Client GitHub Repository Build Status

DynamicPack Banner Fabric downloads NeoForge downloads


📖 Documentation

See the GitHub Wiki for full developer documentation, advanced features, and examples.


🎨 Resource Packs Using DynamicPack

These resource packs already use automatic DynamicPack updates:


⚙️ How It Works

Resource pack developers include a metadata file named dynamicmcpack.json inside their pack.
At game launch, DynamicPack checks for updates and automatically downloads the latest version if necessary.


🧩 For Players

Install the mod and enjoy — DynamicPack will handle updates in the background.


🛠 For Developers

If you’d like your pack to update itself automatically, you can choose one of the integration options below.

🔗 Option 1 — Update from Modrinth

Create a file named dynamicmcpack.json in your pack:

{
  "current": {
    "version_number": "7.1"                                   // Current version of your resource pack
  },
  "remote": {
    "game_version": "1.21.1",                                 // Compatible Minecraft version
    "modrinth_project_id": "better-leaves",                   // Your Modrinth project slug or ID
    "type": "modrinth"                                        // Update source type (Modrinth)
  },
  "formatVersion": 1                                          // Internal config format version
}
🐙 Option 2 — Update from GitHub

Create a file named dynamicmcpack.json in your pack:

{
  "current": {},
  "remote": {
    "sign_no_required": true,                                 // Optional digital signature — set to true to disable verification
    "type": "dynamic_repo",                                   // Update source type (Dynamic Repository)
    "url": "https://adamcalculator.github.io/CursedEveryday/" // Remote repository URL
  },
  "formatVersion": 1                                          // Internal configuration format version
}

Next, create a dynamicmcpack.repo.json file like this:

{
  "formatVersion": 1,                                         // Internal schema version
  "build": 10,                                                // Build number of your current release
  "name": "CursedEveryday",                                   // Display name of your resource pack
  "contents": [
    {
      // Metadata block (main information about pack components)
      "url": "path/to/content.json",
      "hash": "5e4d4ad1e9714487263c51f5f83c448c0708773a",     // SHA1 checksum of content.json
      "id": "meta",
      "hidden": true,                                         // Hides this component from user‑facing lists
      "required": true                                        // Marks this component as mandatory
    },
    {
      // Example of an additional content section
      "url": "path/to/content.json",
      "hash": "6e6739297dac80078bbc4890567f05d4015553db",
      "id": "cursed",
      "name": "Cursed content"                                // Optional friendly display name
    }
  ]
}

Next, create a separate content.json file for each content section:

{
  "formatVersion": 1,                                         // Schema version
  "content": {
    "parent": "path/to/parent",                               // Local folder containing the files
    "remote_parent": "remote/path/to/parent",                 // Corresponding path in your Git repo
    "files": {
      "path/to/file": {
        "hash": "ca55daeef2e2d84ccd64608cf889ac321c18d4c2",   // SHA1 hash of file
        "size": 4773                                          // File size in bytes
      },
      "path/to/file2": {
        "hash": "336e9f4e6d7d1400d8a308a33e703e8b33ea5434",
        "size": 54665
      },
      "path/to/file3": {
        "hash": "09dae0777de1705e8acd0ff84c0bb6b7e3e22f63",
        "size": 98592
      }
    }
  }
}

⚠️ Important: These examples use json5, which allows comments (//).
The actual files must be valid .json, so remove comments before use or validate them with this JSON checker.

Advanced features — such as dynamic repositories — are documented in the GitHub Wiki.


💖 Support the Project

DynamicPack is open‑source and completely free under the MIT License.
If you’d like to support the original author:

Bitcoin:
bc1qpc0q9ym7rnfatdh43c4jyf68znj8x2jae5j4cz

Every satoshi helps keep things dynamic (and maybe buys some extra coffee ☕).

FAQ

How to install DynamicPack?

Install Fabric for your Minecraft version, download DynamicPack for the same version and loader, put the file into the mods folder and launch the game with the loader profile.

Which Minecraft versions does DynamicPack support?

DynamicPack has builds for Minecraft 1.17–1.20.2, 1.20.4–26.1.2.

Is DynamicPack needed on the server?

Client only — no need to install it on the server

License and source
MIT Licensefree to use and share with credit to the author
Original — Modrinth↗Files unchanged, verified with SHA-512Is this your mod? For rights holders

The site uses cookies: the necessary ones for sign-in and the theme, plus the Yandex Metrica and LiveInternet visit counters — they show us how the site is used. We have no advertising cookies. More