Переход на новый снапшот
mcrs следует за последним снапшотом Minecraft. Эта страница показывает, как контрибьютор переводит репозиторий на новый снапшот: одна команда обновляет данные, а упавшие тесты подсказывают, что осталось сделать. Полная процедура описана в tools/mcrs_minecraft_update/README.md.
cargo run -p mcrs_minecraft_update -- <version id>Единственный аргумент - id версии, например 26.4-snapshot-7. Команде нужны JDK 25 для Gradle и доступ в сеть к Mojang и к Maven-репозиторию Fabric. Запускайте не больше одного экземпляра сразу. Никакой код инструмент не портирует.
Что меняет команда
Заголовок раздела «Что меняет команда»| Путь | Что команда туда пишет |
|---|---|
assets/minecraft/version.json |
Единственное место, где записана версия. Файл копируется байт в байт из клиентского jar. Тест падает, если исходник на Rust, TOML или Gradle повторяет одно из его значений. |
crates/mcrs_minecraft_client_jar/src/release.json |
Дескриптор клиентского jar. |
assets/mcrs/reports/ |
Отчеты из игры: registries.json, packets.json, datapack.json и names.json. |
assets/mcrs/block_definition, item_definition и registry_definition |
Определения блоков, предметов и реестров, их заменяет то, что записал дамп из игры. |
| Сгенерированные исходники ключей реестров | Заново сгенерированные ключи. Никогда не правьте их руками. |
Еще команда печатает три diff: сдвинувшиеся ID протокола, изменившиеся поля определений, добавленные и удаленные имена.
Datafixer в mcrs нет, поэтому чанки, сохранения и шаблоны, записанные с другим DataVersion, не загружаются. Мир, записанный между обновлением и правками кода, которые за ним следуют, хранить незачем.
Что делать дальше
Заголовок раздела «Что делать дальше»-
Прочитайте напечатанные diff.
-
Запустите
cargo nextest run --workspace. Упавшие тесты перечислят, что изменил снапшот. Записи встроенного worldgen, которые расходятся с файлами игры, падают поименно. -
Переснимите фикстуры, то есть файлы, которые выдала игра и с которыми сравнивают наши тесты. Один из тестов перечисляет каждую фикстуру, у которой запись в
tools/captures.jsonне совпадает с новой версией.Окно терминала cargo run -p mcrs_minecraft_update -- recapture --allНекоторые фикстуры в таблицу не входят, и для них нужен ручной шаг. Они перечислены в README.
-
Если изменились протокол или форматы сериализации, выясните, как именно, по эталонным исходникам игры. Этот шаг делает только автор спецификации, потому что здесь читают код игры. Исполнитель работает по спецификации, которая получится. Обе роли объясняет страница Clean-room на практике.
-
Почините
tools/vanilla-oracle, если он перестал компилироваться. Новому снапшоту могут понадобиться такие правки, прежде чем фикстуры получится переснять.
Обновите документацию в том же PR
Заголовок раздела «Обновите документацию в том же PR»- Найдите в документации старую строку версии. Версия в бейджах и в тексте FAQ должна браться из
assets/minecraft/version.json. Если нашли копию, набранную руками, замените ее. - Пройдите по страницам, которые получили предупреждение в PR, потому что изменились их
sources. Если страница по-прежнему верна, обновите ее блокverified. - Если изменились таблицы пакетов, обновите числа на странице Статус.
- Если изменился
PERF.md, проверьте, что машина и сценарий рядом с каждым числом на сайте по-прежнему верны. - Переснимите скриншоты и видео, на которых видна версия.
- Проверьте каждую интерактивную объяснялку. В поле “сверено с кодом” в ее мета-данных стоят снапшот и дата.
- Добавьте строку в Новости: версия, что сломалось и что починили.
Источники и проверка
Проверено: 26.4-snapshot-7, 51d45c26a, 2026-11-09
Переведено с версии 51d45c26a