Guidefor modders3 min read
Resource pack format numbers and which Minecraft versions they cover
pack_format is the one field that decides whether your pack loads. What it means, why it keeps changing, and how to support several versions from one file.
The field that decides everything
Every resource pack has a pack.mcmeta at its root:
{
"pack": {
"pack_format": 46,
"description": "My pack"
}
}
pack_format tells the game which layout your pack uses. It is not a version of your pack
and it is not something you choose freely: it is a number the game defines, and using the
wrong one makes Minecraft warn the player that your pack was made for something else.
Why it changes
The number increments whenever the layout the game expects changes. Historically that has meant:
- a folder being renamed, such as the move from
blocks/toblock/ - a file format changing, such as how sounds or fonts are declared
- a new required field appearing in a JSON file
- textures moving to a different path
None of these are cosmetic. A pack built for an older format has files where the newer game does not look, which is why it loads with pieces missing rather than failing cleanly.
The result is that the number moves often and does not track Minecraft's own version numbers at all. There is no formula. It is a lookup.
Getting the right number
The reliable source is the version you are targeting, not a table on the internet, because tables go stale within weeks of a release.
Two ways that always work:
Look inside the client jar. Open the jar for the version you are targeting and read its
own pack.mcmeta. That is the number the game is using, by definition.
Make the game tell you. Set a deliberately absurd pack_format, load the pack, and the
warning names the format the game expected.
The second takes about a minute and is what most pack authors actually do.
Supporting several versions from one pack
Newer Minecraft versions read supported_formats, which declares a range:
{
"pack": {
"pack_format": 46,
"supported_formats": { "min_inclusive": 42, "max_inclusive": 46 },
"description": "My pack"
}
}
Set both fields. Versions that understand supported_formats use it and load without a
warning across the whole range. Versions that do not simply ignore it and read
pack_format, so nothing breaks.
The catch: declaring a range is a claim that your pack works across it. If a texture path changed inside that range, half the range gets a broken pack and no warning, which is worse than the warning would have been. Test the ends of the range before claiming it.
When one file cannot cover it
Sometimes a layout change is too large to bridge. Two options:
Overlays. Newer formats support declaring directories that apply only to particular format ranges, so one download can carry version-specific files. The right answer when the differences are small.
Separate downloads. One pack per format range, clearly labelled. Less elegant and more honest, and it is what large packs generally end up doing.
Either way, put the supported Minecraft versions in your release metadata rather than only in the description. That metadata is what catalogues read, including this one: the resource pack catalogue filters on the exact versions each release declares, so a pack that lists them properly is a pack people can find.
Data packs are a separate sequence
A data pack also has pack.mcmeta with a pack_format, and its numbers are a different
sequence from resource packs. Resource pack format 46 and data pack format 46 have nothing
to do with each other and correspond to different Minecraft versions.
This catches people constantly, especially when a project ships both. Keep two numbers and check each against its own kind. Data pack pack.mcmeta covers that side.
A checklist before release
pack.mcmetais at the root of the zip, not inside a folder. Zipping the folder rather than its contents is the single most common packaging mistake.pack_formatmatches the newest version you target.supported_formatscovers the range you have actually tested.- The pack loads with no warning on the newest version and with no missing textures on the oldest.
- The release metadata lists every Minecraft version you support, so catalogues and search can find it.