# Закреплённый движок AirDef Движок: https://gitea.maoniao.team/chexit/horizon-airdef, ветка `airdef`. AirDef хранит точный SHA как gitlink `horizon/`; новый push движка не меняет старые сборки мода. История upstream и всех 44 прежних патчей сохранена в форке. Старые patch-файлы и HORIZON_COMMIT доступны в истории AirDef и больше не являются вторым источником движка. Baseline описан в AIRDEF-FORK.md. ## Windows: обновление и запуск ```powershell git fetch origin git switch kimi-work git pull --ff-only python tools/airdef.py all python tools/airdef.py play ``` Первое клонирование: `git clone --recurse-submodules https://gitea.maoniao.team/chexit/airdef.git`. Обычный clone тоже поддерживается: `python tools/airdef.py fork` или команда submodule выше. `all` инициализирует зависимость сам, включая переход со старой папки `horizon/`. Для чистого checkout можно отдельно выполнить `git submodule update --init --recursive`. Нужны Git, Python и Rust согласно INSTALL.md. Сборка клиента и мод устанавливаются в обычное место; ресурсы Minecraft готовятся отдельно по INSTALL.md. При первом переходе со старого отдельного clone `horizon/` скрипт сохраняет его Git-историю и ветки, переводит в сабмодуль и получает закреплённый SHA. Если там есть изменения при другом SHA, обновление останавливается с объяснением: сначала закоммитьте/сохраните свои изменения. Скрипт не выполняет reset --hard или clean. Чистый checkout может остаться detached HEAD — это нормально для зависимости. ## Изменение движка 1. В `horizon/` создать рабочую ветку от закреплённого SHA. Проверить изменение и push в репозиторий движка. 2. В AirDef выполнить `git add horizon`, проверить мод/игру, коммитить обновление gitlink отдельно. 3. Push AirDef выполняется после движка. Не коммитить Git URL с токенами. 4. Для возврата выбрать прежний commit AirDef и выполнить `git submodule update --init --recursive`. Упаковщик собирается repo-local в `.horizon-cache/packer//`, глобальный `cargo-horizon-mod` не используется. Изменения tracked-исходников движка входят в identity. Рядом с airdef.hmod записывается build-identity.json: SHA AirDef, pin/identity движка, SHA256 WIT и артефакта. API-диагностика остаётся в `python tools/airdef.py check`. Нативные тесты не заменяют отдельную игровую проверку графики, звука и экспорта.