Установщик Quilt
TIP
Обратите внимание, что ProjBobcat реализует только автоматизированный процесс установки Quilt. Вам все равно нужно самостоятельно реализовать процессы поиска, загрузки и сохранения установочных пакетов Quilt.
WARNING
Установщик Quilt в настоящее время находится на экспериментальной стадии, и связанные с ним API и процесс установки могут претерпеть значительные изменения.
Полезные ресурсы
Проверка совместимости
Перед началом установки Quilt вам необходимо проверить через Quilt Meta API, поддерживается ли версия Minecraft, которую вы собираетесь изменить.
Сначала вам нужно отправить запрос HTTP GET на https://meta.quiltmc.org/v3/versions/game.
Вы увидите ответ, подобный следующему:
[
{
"version": "1.19.3",
"stable": true
},
{
"version": "1.19.3-rc3",
"stable": false
},
{...},
{...}
]Здесь вам нужно проверить, есть ли версия игры, которую вы собираетесь установить, в официальном списке поддержки Quilt. Вам нужно сравнить версию игры с полем version в объекте JSON. Если вашей игры нет в списке поддержки, установка не может быть продолжена.
Получение модели загрузчика Quilt
Поскольку установщик Quilt в ProjBobcat требует, чтобы вы предоставили информацию о загрузке от Quilt при инициализации установщика. Поэтому здесь мы кратко опишем, как получить эту информацию в соответствии с указанной версией Minecraft.
INFO
В этом примере мы будем использовать Minecraft 1.19.2, чтобы показать вам, как его получить.
Сначала вам нужно отправить запрос HTTP GET на https://meta.quiltmc.org/v3/versions/loader.
Вы увидите ответ, подобный следующему:
[
{
"separator": ".",
"build": 25,
"maven": "org.quiltmc:quilt-loader:0.18.1-beta.25",
"version": "0.18.1-beta.25"
},
{...},
{...}
]Quilt Meta API вернет массив JSON, и каждый элемент в массиве — это артефакт загрузчика, который нам нужен.
Преобразование ответа JSON в тип ProjBobcat
Если вы используете JSON.NET (Newtonsoft.JSON) в своем проекте. Вы можете использовать код, подобный приведенному ниже, для преобразования ответа сервера, который вы получили, в соответствующий тип ProjBobcat:
// Запрос данных из Quilt Meta API (пример, не реальный код)
...
var responseJson = await res.Content.ReadAsStringAsync();
// Преобразование ответа JSON в тип ProjBobcat
var artifacts = JsonConvert.DeserializeObject<List<QuiltLoaderModel>>(responseJson);
// Получение версии, которую хочет установить пользователь (пример, не реальный код)
var userSelect = vm.SelectedArtifactIndex;
// Получение одного артефакта загрузчика
var selectedArtifact = artifacts[userSelect]; Здесь selectedArtifact — это QuiltLoaderModel, необходимый установщику Fabric.
Инициализация установщика
Инициализировать установщик Quilt очень просто. Вам нужно использовать selectedArtifact, полученный на предыдущем шаге, для инициализации установщика:
var quiltInstaller = new QuiltInstaller
{
InheritsFrom = "[MC_VERSION_OR_GAME_ID]",
RootPath = "[GAME_ROOT_PATH]",
CustomId = "[CUSTOM_INSTALL_GAME_ID]",
LoaderArtifact = selectedArtifact
};В приведенном выше блоке кода замените эти параметры в соответствии с вашей реальной ситуацией:
| Элемент | Описание |
|---|---|
| [GAME_ROOT_PATH] | Корневой каталог игры, обычно путь к папке .minecraft |
| [CUSTOM_INSTALL_GAME_ID] | Необязательно, пользовательское имя игры, которую вы собираетесь установить |
| [MC_VERSION_OR_GAME_ID] | Версия оригинальной игры Minecraft, от которой наследуется Forge, обычно версия игры. Например: 1.19.2 |
Начало установки
После завершения инициализации установщика вам нужно только вызвать метод установки установщика Fabric для завершения установки.
В асинхронном контексте используйте InstallTaskAsync для завершения установки:
await quiltInstaller.InstallTaskAsync();В синхронном контексте используйте Install для завершения установки:
quiltInstaller.Install();Отчет о ходе установки
В некоторых случаях установка с помощью установщика Quilt может занять несколько минут. Поэтому вам может потребоваться сообщать пользователю о текущем ходе установки в режиме реального времени. Для этого установщик Quilt предоставляет событие StageChangedEventDelegate, чтобы помочь вам реализовать отчет о задачах. Вам просто нужно зарегистрировать следующее событие перед началом установки:
quiltInstaller.StageChangedEventDelegate += (_, args) => {
ReportProgress(args.Progress, args.CurrentStage);
};Где args.Progress указывает текущий процент выполнения установщика. args.CurrentStage — это текстовое описание текущего этапа установщика.