Mod Menu

Добавляет меню модов для просмотра списка установленных модов.

102,3M

Быстрое задание

Как далеко вы сможете убежать, прежде чем вас поймают толпы?

Mod Menu

Меню модемов

Скриншот экрана «Моды», на котором слева, под строкой поиска и кнопкой фильтров, отображается список нескольких модов, а справа — меню модов. Более подробная информация о моде, такая как авторы, описание, ссылки, благодарности и кнопка для настройки мода, находится в правой части экрана.

Mod Menu позволяет просматривать установленные вами моды и, если это поддерживается модом, обеспечивает быстрый и удобный доступ к экранам настроек мода.

Mod Menu также поддерживает некоторые более продвинутые функции, такие как переводимые названия и описания модов, поддержка форматирования QuickText в описаниях модов благодаря API текстовых заполнителей Patbox, фильтрация модов из библиотеки среди обычных модов, проверка обновлений модов, размещенных на Modrinth или предоставляющих собственные источники обновлений, а также глубокая настройка всех предоставляемых нами функций.

Поддерживаемые платформы

В настоящее время Mod Menu доступен для Fabric или Quilt в Minecraft: Java Edition 1.14 или более поздних версиях.

Застройщики

Mod Menu включает в себя ряд API, позволяющих разработчикам улучшить отображение своих модов в Mod Menu. Эти API доступны в виде языковых ключей, метаданных в формате JSON и даже Java API.

API перевода

Вы можете перевести название, краткое описание и характеристику вашего мода, не затрагивая при этом никакой Java-код. Просто добавьте ключи перевода в поддерживаемом формате на любой язык по вашему выбору.

Документация по API перевода

Вот пример перевода Mod Menu на пиратский язык. Чтобы создать свой собственный, просто замените `modmenu` в конце (*).НЕ* (тот, что в начале) ключа перевода с вашим собственным ID мода, например, `modmenu.descriptionTranslation.traverse`.

`en_pt.json` ```json "modmenu.nameTranslation.modmenu": "Меню модов!", "modmenu.descriptionTranslation.modmenu": "Меню модов, которые вы установили, приятель!", "modmenu.summaryTranslation.modmenu": "Меню модов, которые вы установили, приятель!" ```

> Перевод краткого описания здесь излишен и не нужен, поскольку он совпадает с описанием, но он был включен, чтобы показать, что вы можете переводить краткое описание (короткое описание мода в одном предложении) отдельно от описания, даже на английском языке!

API метаданных Fabric

В файл `fabric.mod.json` можно добавить множество вещей, используя только метаданные.

Все эти данные добавляются в пользовательский блок в вашем файле `fabric.mod.json`, содержащий метаданные Mod Menu. Вот пример использования многих функций, предоставляемых этим API:

`fabric.mod.json` ```json5 { ... "custom": { "modmenu": { "links": { "modmenu.discord": "https://discord.gg/jEGF5fb" }, "badges": [ "library", "deprecated" ], "parent": { "id": "example-api", "name": "Example API", "description": "Modular example library", "icon": "assets/example-api-module-v1/parent_icon.png", "badges": [ "library" ] }, "update_checker": true } } } ```

Документация по API метаданных Fabric

Значки (`"значки": [ ]`)

В то время как значок `Client` добавляется автоматически к модам, настроенным только для клиентской стороны (для этого установите `"environment": "client"` в файле `fabric.mod.json`), другие значки, такие как `Library` и `Deprecated`, требуют определения здесь.

Поддерживаемые значения: - `library` - следует присваивать модам, которые являются исключительно зависимостями для других модов и не должны отображаться пользователю по умолчанию, если он не включит их. - `deprecated` - следует присваивать модам, которые существуют исключительно по причинам совместимости со старыми версиями, например, старый модуль API и т.п.

Все остальные будут проигнорированы, и Mod Menu не поддерживает добавление собственных значков. Вы можете создать заявку здесь, если у вас есть веская причина для использования нового значка.

Ссылки (`"links": { }`)

Объект `links` позволяет авторам модов добавлять пользовательские гиперссылки в конец описания. Если вы укажете контакт `sources` в официальных метаданных `fabric.mod.json`, он также будет включен в раздел ссылок.

Любой ключ из объекта `links` будет включен в раздел ссылок, при этом ключ будет использоваться в качестве ключа перевода. Например, такой:

`fabric.mod.json` ```json "custom": { "modmenu": { "links": { "modmenu.discord": "https://discord.gg/jEGF5fb" } } } ``` будет отображаться как ссылка с текстом "Discord", поскольку "Discord" — это английский перевод "modmenu.discord", предоставленный Mod Menu.

Mod Menu предоставляет несколько стандартных переводов, которые можно использовать для ссылок. Полный список можно посмотреть в языковом файле Mod Menu здесь. Все стандартные ключи перевода ссылок имеют вид `modmenu. `.

Вы также можете предоставить собственные переводы, если хотите добавить пользовательские ссылки. Обязательно используйте *ваше собственное пространство имен* (в отличие от `modmenu`) для любых пользовательских клавиш.

Родители (`"parent": "mod_id" or { }`)

Изображение, демонстрирующее родительский мод Fabric API и некоторые дочерние моды Fabric API, отображаемые иерархически в меню модов.

Родительские элементы используются для отображения одного мода как дочернего по отношению к другому. Это предназначено для модов, разделенных на разные модули. Следующий элемент в файле `fabric.mod.json` определит мод как дочерний по отношению к моду 'flamingo':

`fabric.mod.json` ```json "custom": { "modmenu": { "parent": "flamingo" } } ```

Однако, если вы хотите сгруппировать моды под родительским элементом, но этот родительский элемент на самом деле не является модом, вы тоже можете это сделать. В приведенном ниже примере мод определяет метаданные для родительского элемента. Убедитесь, что эти метаданные включены во все дочерние элементы, использующие фиктивный/поддельный родительский элемент. Это также можно использовать в качестве запасного варианта для необязательного родительского элемента; если он присутствует, он будет заменен реальными метаданными мода.

`fabric.mod.json` ```json "custom": { "modmenu": { "parent": { "id": "this-mod-isnt-real", "name": "Fake Mod", "description": "Do cool stuff with this fake mod", "icon": "assets/real-mod/fake-mod-icon.png", "badges": [ "library" ] } } } ```

Модификации родительского класса, созданные с помощью фиктивных файлов, поддерживают только следующие метаданные: - `id` (строка) - `name` (строка) - `description` (строка) - `icon` (строка) - `badges` (массив строк)

Отключить проверку обновлений (`"update_checker": false`)

По умолчанию проверка обновлений Mod Menu использует хеш jar-файла вашего мода для поиска последней версии на Modrinth. Если она находит подходящий проект, она проверяет наличие последней версии, поддерживающей ваш загрузчик модов и версию Minecraft, и если хеш отличается от хеша вашего существующего файла, она сообщит пользователю о наличии доступного обновления.

Вы можете отключить проверку обновлений, установив параметр `update_checker` в значение false в метаданных вашего меню модов следующим образом:

`fabric.mod.json` ```json "custom": { "modmenu": { "update_checker": false } } ```

API метаданных лоскутного одеяла

Поскольку Mod Menu также поддерживает Quilt, те же API из раздела Fabric Metadata API доступны и для модов Quilt, но формат пользовательских метаданных немного отличается.

Вместо блока `"modmenu"` внутри блока `"custom"`, вы помещаете блок `"modmenu"` в качестве элемента в корневой объект. Таким образом, это должно выглядеть так:

`quilt.mod.json` ```json5 { ... "modmenu": { // Здесь размещаются ваши ссылки, значки и т. д. } } ```

Java API

Для использования Java API вам потребуется добавить Mod Menu в качестве зависимости на этапе компиляции в ваш проект Gradle. Это не приведет к тому, что ваш мод будет требовать Mod Menu, но он будет присутствовать в вашей среде для тестирования.

`build.gradle` ```gradle // Добавьте репозиторий Terraformers Maven в блок `repositories` repositories { maven { name = "Terraformers" url = "https://maven.terraformersmc.com/" } }

// Добавьте Mod Menu в качестве зависимости в зависимости вашей среды { // До версии Minecraft 26.x используйте "modImplementation" вместо implementation("com.terraformersmc:modmenu:${project.modmenu_version}") } ``` Затем укажите версию Mod Menu, которую вы используете, в вашем файле `gradle.properties`. Вы можете получить номер последней версии здесь, но вам может потребоваться другая версия, если вы используете не последнюю версию Minecraft. Полный список версий см. на странице версий.

`gradle.properties` ```properties modmenu_version=VERSION_NUMBER_HERE ``` > Если вы не хотите использовать Mod Menu для тестирования, но всё же хотите скомпилировать его с использованием Java API, вы можете использовать `modCompileOnly` вместо `modImplementation` (это будет работать, даже если Mod Menu не обновлён до версии Minecraft, которую вы используете).

Документация по Java API

Первые шаги

Для использования API реализуйте интерфейс ModMenuApi в классе и добавьте его в качестве точки входа типа "modmenu" в ваш файл `fabric.mod.json` следующим образом:

`fabric.mod.json` ```json "entrypoints": { "modmenu": [ "com.example.mod.ExampleModMenuApiImpl" ] } ```

Экраны конфигурации модов

Моды могут предоставлять фабрику экранов для создания пользовательского экрана конфигурации, который открывается с помощью кнопки конфигурации. Для этого реализуйте метод `getModConfigScreenFactory` в вашей реализации API.

Предполагается, что это позволит модам предоставлять собственные экраны конфигурации. Идентификатор мода на экране конфигурации определяется автоматически на основе исходного контейнера модов, из которого возникла точка входа.

Предоставленные экраны конфигурации

Моды могут предоставлять фабрики экранов для создания пользовательских экранов конфигурации, которые будут открываться вместе с кнопками конфигурации для других модов. Для этого реализуйте метод `getProvidedConfigScreenFactories` в вашей реализации API.

Предполагается, что это пригодится таким модам, как Cloth Config, для предоставления экранов конфигурации для модов, использующих его API.

Значки модпака

Моды могут присваивать другим модам значок `Modpack`, используя метод `attachModpackBadges`, например, следующим образом:

```java @Override public void attachModpackBadges(Consumer consumer) { consumer.accept("modmenu"); // Указывает, что 'modmenu' является частью модпака } ```

Обратите внимание, что «внутренние» моды, такие как сам Minecraft и загрузчик модов, не могут получить значок модпака, поскольку они не распространяются в рамках типичного модпака.

Статические вспомогательные методы

`ModMenuApi` также предлагает несколько вспомогательных методов для модов, которые хотят лучше взаимодействовать с Mod Menu, например, создавать собственные кнопки для модов.

Создание экземпляра экрана «Моды».

Вы можете вызвать этот метод, чтобы получить экземпляр экрана «Моды»: ```java Screen createModsScreen(Screen previous) ```

Создание текста кнопки «Модераторы»

Вы можете вызвать этот метод, чтобы получить текст, который будет отображаться на кнопке меню модов: ```java Text createModsButtonText() ```

ОБЪЯВЛЕНИЯ
RU — Russian