pack.mcmeta лежит в корне пака. До 1.21.9 версия пишется одним числом в pack_format — например, для 1.20.1:

{
  "pack": {
    "pack_format": 15,
    "description": "Мой пак"
  }
}

С 1.21.9 вместо него пара min_format и max_format: с какой версии и до какой пак работает. Число — мажор формата; минор (дробная часть, как у 97.1) пишут парой [97, 1], а голое число в max_format значит «любой минор». Ресурспак для 26.3:

{
  "pack": {
    "min_format": 97,
    "max_format": 97,
    "description": "Мой пак"
  }
}

Датапак для 26.3 — то же самое со своим номером:

{
  "pack": {
    "min_format": 121,
    "max_format": 121,
    "description": "Мой пак"
  }
}

Пак, который должен работать и на старых версиях, пишет оба способа сразу: pack_format для старых и пару для новых. Между ними, с 1.20.2 по 1.21.8, был ещё supported_formats — список подходящих номеров. Если номер не совпадает с версией игры, пак горит красным в списке, но чаще всего работает; поменять номер в чужом паке можно в конвертере паков.