====== fabric.mod.json ====== Файл **fabric.mod.json** - это файл метаданных мода, используемый Fabric Loader для загрузки модов. Для загрузки мод должен иметь этот файл с точным именем, размещенный в корневом каталоге JAR мода. ===== Обязательные поля ===== * **schemaVersion** Необходим для внутренних механизмов. Всегда должно быть ''1''. * **id** Определяет идентификатор мода - строку из латинских букв, цифр, знаков подчеркивания длиной от 1 до 63. * **version** Определяет версию мода - строковое значение, необязательно соответствующее c спецификацией [[https://semver.org/lang/ru/|Семантического Версионирования 2.0.0]]. ===== Необязательные поля ===== ==== Загрузка мода ==== * **environment**: Определяет, где запускается мод: только на стороне клиента (клиентский мод), только на стороне сервера (плагин) или с обеих сторон (обычный мод). Содержит идентификатор среды: * **''*''** Работает везде. По умолчанию. * **client** Работает на стороне клиента. * **server** Работает на стороне сервера. * **entrypoints** Определяют основные классы вашего мода, которые будут загружены. * Для вашего мода есть 3 точки входа по умолчанию: * **main** Будет запущен первым. Для классов, реализующих ''ModInitializer''. * **client** Будет запущен вторым и только на стороне клиента. Для классов, реализующих ''ClientModInitializer''. * **server** Будет запущен вторым и только на стороне сервера. Для классов, реализующих ''DedicatedServerModInitializer''. * Каждая точка входа может содержать любое количество загружаемых классов. Классы (или методы, или статические поля) могут быть определены двумя способами: * Если вы используете Java, то просто перечислите классы (или другие) с полными именами. Например: "main": [ "net.fabricmc.example.ExampleMod", "net.fabricmc.example.ExampleMod::handle" ] * Если вы используете какой-либо другой язык, обратитесь к документации языкового адаптера. Котлинский находится [[https://github.com/FabricMC/fabric-language-kotlin/blob/master/README.md|здесь (англ.)]]. * **jars** Список вложенных JARs внутри JAR вашего мода для загрузки. Перед использованием поля ознакомьтесь с [[ru:tutorial:loader04x#nested_jars|руководство по использованию вложенных JARs]]. Каждая запись представляет собой объект, содержащий ключ ''file''. Это должен быть путь внутри JAR вашего мода к вложенному JAR. Например: "jars": [ { "file": "nested/vendor/dependency.jar" } ] * **languageAdapters** Словарь адаптеров для используемых языков с указанием полных имен их классов адаптеров. Например: "languageAdapters": { "kotlin": "net.fabricmc.language.kotlin.KotlinAdapter" } * **mixins** Список файлов конфигурации миксина. Каждая запись - это путь к файлу конфигурации миксина внутри JAR вашего мода или объекту, содержащему следующие поля: * **config** Путь к файлу конфигурации миксина внутри JAR вашего мода. * **environment** То же самое, что и поле верхнего уровня **environment**. Смотрите выше. Например: "mixins": [ "modid.mixins.json", { "config": "modid.client-mixins.json", "environment": "client" } ] ==== Разрешение зависимостей ==== Ключом каждой записи приведенных ниже объектов является идентификатор модуля зависимости. Значение каждого ключа представляет собой строку или массив строк, объявляющих поддерживаемые диапазоны версий. В случае массива предполагается связь "ИЛИ", то есть только один диапазон должен совпадать, чтобы коллективный диапазон был удовлетворен. В случае всех версий ''*'' - это специальная строка, объявляющая, что любая версия соответствует диапазону. Кроме того, точное совпадение строк должно быть возможно независимо от типа версии. * **depends** Для зависимостей, необходимых для запуска. Без них игра не запустится. * **recommends** Для зависимостей, которые не требуются для запуска. Без них игра будет выдавать предупреждение. * **suggests** Для зависимостей, которые не требуются для запуска. Используйте это как своего рода метаданные. * **breaks** Для модов, которые вместе с вашими могут привести к сбою игры. С ними игра не запустится. * **conflicts** Для модов, которые вместе с вашими вызывают какие-то ошибки и т.д. С их помощью игра будет выдавать предупреждение. ==== Метаданные ==== * **name** Определяет удобное для пользователя название мода. Если его нет, соответствует **id**. * **description** Определяет описание мода. Если нет, строка пуста. * **contact** Определяет контактную информацию для проекта. Это объект из следующих полей: * **email** Контактный адрес электронной почты, относящийся к моду. Должен быть действительный адрес электронной почты. * **irc** Канал IRC, относящийся к моду. Должен иметь допустимый формат URL-адреса - например: ''irc://irc.esper.net:6667/charset'' для ''#charset'' в EsperNet - порт необязателен и предполагается, что он равен 6667, если отсутствует. * **homepage** Домашняя страница проекта или пользователя. Должен быть действительный адрес HTTP/HTTPS. * **issues** Репорт ошибок проекта. Должен быть действительный адрес HTTP/HTTPS. * **sources** Репозиторий исходного кода проекта. Должен быть действительный URL-адрес - однако он может быть специализированным URL-адресом для данного VCS (например, Git или Mercurial). * Список не является исчерпывающим - моды могут предоставлять дополнительные, нестандартные ключи (такие как **discord**, **slack**, **twitter** и т.д.) - если возможно, они должны быть действительными URL-адресами. * **authors** Список авторов мода. Каждая запись представляет собой одно имя или объект, содержащий следующие поля: * **name** Настоящее имя или ник этого человека. Обязательно. * **contact** Контактная информация лица. То же самое, что и верхний уровень **contact**. Смотрите выше. Необязательно. * **contributors** Список участников мода. Каждая запись такая же, как и в поле **author**. Смотрите выше. * **license** Определяет информацию о лицензировании. Может быть либо одной строкой лицензии, либо их списком. * Это должно обеспечить полный набор привилегированных лицензий, передающих весь пакет модов. Другими словами, соответствие всем перечисленным лицензиям должно быть достаточным для использования, распространения и т.д. пакета модов в целом. * В случаях, когда часть кода имеет двойную лицензию, выберите предпочитаемую лицензию. Список не является исчерпывающим, служит в первую очередь своего рода подсказкой и не мешает вам предоставлять дополнительные права/лицензии в каждом конкретном случае. * Чтобы помочь автоматизированным инструментам, рекомендуется использовать [[https://spdx.org/licenses/|SPDX Идентификаторы лицензий]] для лицензий с открытым исходным кодом. * **icon** Определяет значок мода. Значки представляют собой квадратные файлы в формате PNG. (Пакеты ресурсов Minecraft используют 128 × 128, но это не является жестким требованием - однако рекомендуется использовать степень двойки.) Может быть предоставлен в одной из двух форм: * Путь к одному файлу PNG. * Словарь ширины изображений в соответствии с путями к их файлам. ===== Пользовательские поля ===== Вы можете добавить любое поле, которое хотите добавить внутри поля ''custom''. Загрузчик проигнорировал бы их. Однако //настоятельно рекомендуется использовать пространство имен для ваших полей//, чтобы избежать конфликтов, если ваши поля (имена) будут добавлены в стандартную спецификацию.