Learn · frameworks
Что такое Fabric API? Объяснение моддинга
Fabric API — это общая библиотека, от которой зависит почти каждый мод для Fabric. Вот что она делает, почему она существует отдельно от загрузчика и нужна ли она вам.
Что такое Fabric API?
Fabric API — это общий набор инструментов, на котором строится экосистема Fabric. Сам загрузчик знает только, как запустить игру и применить патчи; он практически не содержит удобных функций. API заполняет этот пробел стабильным набором событий, вспомогательных средств и интерфейсов, чтобы отдельные моды не изобретали одно и то же заново или не сталкивались друг с другом при этом.
Представьте его как стандартную библиотеку, которой не хватает загрузчику. Когда автору мода нужно отреагировать на присоединение игрока, отправить пользовательский пакет или зарегистрировать новый блок, он обращается к API, а не напрямую взламывает движок.
Почему Fabric API не является частью загрузчика?
Fabric намеренно разделяет систему на две части. Загрузчик — это небольшое, медленно меняющееся ядро, которое запускает Minecraft и выполняет слой патчей. API — это более крупный, быстро развивающийся набор общих интерфейсов, наложенных друг на друга. Разделение позволяет каждой части двигаться в своем собственном темпе.
| Часть | Задача | Частота обновлений |
|---|---|---|
| Загрузчик Fabric | Запускает игру, применяет патчи Mixin, разрешает моды | Быстро переносится на новую версию MC |
| API Fabric | Общие события, сети, реестр, вспомогательные средства рендеринга | Развивается по своему графику |
Выигрыш — в скорости. Когда выходит новая версия Minecraft, небольшой лоадер можно адаптировать в течение нескольких часов, а широкий API догоняет, не блокируя первый порт. Стянув их вместе, весь стек будет двигаться не быстрее своей самой медленной части.
Что на самом деле предоставляет Fabric API?
API предоставляет модам стабильный способ делать то, что нужно почти каждому моду. Вместо того, чтобы каждый автор писал хрупкие хуки для необработанных игровых внутренних компонентов, они нацеливаются на одну общую поверхность, которую сообщество поддерживает вместе.
Жизненный цикл и игровые события
Чистые обратные вызовы для тиков, загрузки мира, присоединения игрока и взаимодействия с блоками, чтобы моды могли реагировать на игру без ручного патчинга.
Помощники в налаживании связей
Разумный способ определения и отправки пользовательских пакетов между клиентом и сервером — основа большинства модов, учитывающих многопользовательский режим.
Помощники по контенту и реестру
Общая система регистрации новых предметов, блоков и сущностей, позволяющая двум модам добавлять контент без конфликтов.
Отрисовка и вспомогательные инструменты ресурсов
Обычно моды, изменяющие отображение элементов интерфейса, модели и текстуры, используют общие хуки и утилиты ресурсов.
Снимите API, и каждый мод должен будет поставляться со своей собственной копией этого механизма. Это приведёт к дублированию усилий и расхождению версий, а затем к конфликтам при попытке объединить их в одной папке. Общая библиотека — это то, что позволяет не связанным между собой модам работать вместе.
Нужен ли вам Fabric API?
Почти всегда — да. Подавляющее большинство модов Fabric объявляют его как обязательную зависимость, то есть они не загрузятся без него. Вы устанавливаете его один раз как обычный мод jar в папку mods, и каждый мод, которому он нужен, использует именно эту копию.
- Используете ли вы Fabric с несколькими модами? Установите API.
- На странице мода указано, что требуются "Fabric API"? Установите его.
- Запуск небольшого, автономного мода, который явно указывает, что ему ничего не требуется? Вы можете пропустить API, хотя его наличие редко приносит вред.
Коротко: относитесь к Fabric API как к базовому набору. Цена его наличия, когда он вам не строго необходим, — одна дополнительная библиотека. Цена его отсутствия — авария.
Где взять Fabric API и как сопоставить версии
Скачайте API из официальных каналов Fabric или популярных хостингов модов и выберите сборку, помеченную для вашей точной версии Minecraft. Сопоставление версий — самая распространенная ошибка, которая приводит к самым громким и запутанным авариям.
Подтвердите вашу версию Minecraft
Обратите внимание на точную версию, с которой запускается ваш профиль, вплоть до номера патча.
Загрузите соответствующую версию API
Возьмите выпуск Fabric API, помеченный для той же версии, а не самую новую доступную.
Положите его в папку с модами
Поместите файл jar рядом с вашими другими модами. Один экземпляр нужен для всех модов, которые от него зависят.
Запустите и просмотрите журнал, если произошла ошибка
Если что-то падает, в логе обычно указывается отсутствующий класс или ожидаемая версия. Эта строка сразу указывает на исправление.
Если ручное управление версиями загрузчиков, API и модов кажется утомительным, то это действительно так. Управляемые лаунчеры и утилиты существуют частично для решения этой цепочки зависимостей, чтобы игра просто запускалась.
Часто задаваемые вопросы
Не каждый, но большинство. Любой мод, который объявляет его зависимостью, отказывается загружаться без него. Несколько небольших, автономных модов от него не зависят, но установка этого мода — безопасный вариант по умолчанию, потому что как только вы добавите второй мод, вам, скорее всего, он понадобится.
Из официальных каналов распространения Fabric и популярных хостов модов. Единственное правило, которое имеет значение: скачивайте сборку, в списке которой указана ваша точная версия Minecraft. Файл jar версии 1.21 не спасет игру версии 1.20.
По задуму. Загрузчик намеренно сделан небольшим, чтобы его можно было быстро перенести на новый релиз Minecraft, в то время как более крупный API развивается по своему собственному графику. Разделение этих частей не позволяет быстро меняющейся части тормозить ту, которая должна обновляться в первую очередь.
Обычно при запуске происходит сбой, часто в логе появляется ошибка типа "missing class" или "missing method". Как правило, решение — удалить несовместимый jar-файл и заменить его сборкой API, соответствующей вашей версии Minecraft.
Loader, API, and mods sorted out for you, with no version-matching headaches.