pack.mcmeta: pack_format numbers and the \"incompatible\" warning
One wrong integer makes Minecraft grey out your pack. Here is the format-to-version mapping, the supported_formats range that avoids the whole problem, and where the file must sit.
Nearly every "my pack shows as incompatible" is one number in one small file.
The file
{
"pack": {
"pack_format": 46,
"description": "My pack"
}
}
It must be named exactly pack.mcmeta and sit at the root of the zip — next to assets/ or data/, not inside a folder inside the zip. Zipping the containing folder instead of its contents is the second most common failure, and it looks identical to a wrong format number.
Resource packs and data packs use different numbers
This is the part that catches people: the two counters diverged years ago and are not interchangeable. A data pack using a resource-pack number is greyed out even though the number is "current".
Rather than memorising a table that goes stale every release, read the number off a vanilla pack for the version you are targeting — or let a generator fill it in.
supported_formats is the real fix
Pinning one integer means the pack breaks on the next release. A range does not:
{
"pack": {
"pack_format": 46,
"supported_formats": { "min_inclusive": 42, "max_inclusive": 99 },
"description": "My pack"
}
}
pack_format stays as the primary declaration; supported_formats widens what the game accepts without the warning. For a pack that only adds textures or recipes — which is most packs — a wide range is honest, because nothing in it actually breaks between versions.
Description takes text components
"description": [
{ "text": "My pack ", "color": "gold" },
{ "text": "v2", "color": "gray", "italic": true }
]
Section-sign codes (§6) also still work, but the JSON form survives copy-paste through tools that strip control characters.
Overlays, for supporting several versions at once
"overlays": { "entries": [
{ "formats": { "min_inclusive": 42, "max_inclusive": 45 }, "directory": "older" }
] }
The older/ folder at the pack root is used only on those formats. This is how a single download supports two versions with different model formats, instead of shipping two zips.
Quick diagnosis
| Symptom | Cause |
|---|---|
| Greyed out, "made for an older/newer version" | wrong pack_format |
| Pack not listed at all | pack.mcmeta not at zip root, or invalid JSON |
| Loads, textures missing | pack format fine; the texture paths are wrong |
| Works in singleplayer, not on a server | data pack in the wrong world folder |
A trailing comma is invalid JSON and produces the "not listed at all" case, not an error message.
Generate a valid file for your pack type and target version — with supported_formats filled in — using the pack.mcmeta Generator.