Mod Menu

Mod Menu

Fabric
Mod Menu - 11 / 4

Mod Menu — удобный просмотрщик и менеджер модов

Mod Menu — это мод для Fabric и Quilt, который добавляет в игру удобный экран для просмотра всех установленных модов. Его главная задача — дать игроку полный обзор модификаций в одном месте, а также предоставить быстрый доступ к их настройкам, если мод такую возможность поддерживает.

Помимо базового функционала, Mod Menu обладает рядом продвинутых возможностей:

  • Поддержка переводимых названий и описаний модов.
  • Форматирование описаний с помощью QuickText благодаря интеграции с API Text Placeholder API от Patbox.
  • Автоматическая фильтрация библиотечных модов (их можно скрыть или показать по желанию).
  • Встроенная проверка обновлений для модов, размещённых на Modrinth или предоставляющих собственные источники обновлений.
  • Гибкая настройка всех доступных функций.

Мод доступен для Minecraft: Java Edition начиная с версии 1.14 и выше, для загрузчиков Fabric и Quilt.

Возможности для разработчиков

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

Перевод названия и описания

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

Пример перевода для Mod Menu на «пиратский» язык (en_pt.json):

"modmenu.nameTranslation.modmenu": "Menu o' mods!",
"modmenu.descriptionTranslation.modmenu": "Menu o' mods ye installed matey!",
"modmenu.summaryTranslation.modmenu": "Menu o' mods ye installed matey!"

Ключ summaryTranslation позволяет задать отдельное краткое описание (в одно предложение), даже для основного языка. В примере он избыточен, так как совпадает с полным описанием.

Чтобы перевести свой мод, замените modmenu в конце ключа на идентификатор вашего мода (например, traverse).

Настройка через метаданные (Fabric)

Большую часть кастомизации можно выполнить прямо в файле fabric.mod.json, добавив специальный блок modmenu внутри объекта custom.

Пример конфигурации с несколькими функциями:

{
  ...
  "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
    }
  }
}

Доступные опции в метаданных

  • Бейджи ("badges": [ ]):

    • Бейдж Client добавляется автоматически для клиентских модов (указавших "environment": "client").
    • library — для модов-библиотек, которые по умолчанию скрыты от пользователя.
    • deprecated — для устаревших модов, оставленных для совместимости.
    • Добавление собственных бейджей не поддерживается.
  • Ссылки ("links": { }): Позволяет добавить в описание мода кликабельные ссылки. Ключом объекта является ключ перевода, значением — URL.

    "links": {
      "modmenu.discord": "https://discord.gg/jEGF5fb"
    }
    

    Mod Menu предоставляет набор стандартных переводов для ключей вида modmenu.<тип> (полный список в языковом файле). Для кастомных ссылок используйте свой неймспейс в ключе перевода.

  • Родительские моды ("parent": ...): Позволяет объединить несколько модов-модулей под одним «родителем» в иерархическом списке.

    • Можно указать просто ID существующего мода: "parent": "flamingo".
    • Либо задать виртуального родителя с полным описанием (поддерживаются поля id, name, description, icon, badges). Эта метаданная должна быть прописана во всех дочерних модах.

  • Проверка обновлений ("update_checker": false): По умолчанию включена. Mod Menu по хешу JAR-файла ищет проект на Modrinth и проверяет наличие новых версий для вашего загрузчика и версии Minecraft. Чтобы отключить, установите значение false.

Настройка через метаданные (Quilt)

Для модов под Quilt API идентично, но блок modmenu размещается не внутри custom, а в корне файла quilt.mod.json:

{
  ...
  "modmenu": {
    // Здесь размещаются links, badges, parent и т.д.
  }
}

Java API

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

Добавление в build.gradle:

repositories {
  maven {
    name = "Terraformers"
    url = "https://maven.terraformersmc.com/"
  }
}

dependencies {
  // Для версий Minecraft до 26.x используйте "modImplementation"
  implementation("com.terraformersmc:modmenu:${project.modmenu_version}")
}

Указание версии в gradle.properties:

modmenu_version=VERSION_NUMBER_HERE

Актуальную версию можно посмотреть на странице мода. Если вы не хотите добавлять мод в среду для тестов, но нуждаетесь в компиляции против API, используйте modCompileOnly вместо implementation.

Использование Java API

  1. Создайте класс, реализующий интерфейс ModMenuApi.
  2. Зарегистрируйте его как точку входа типа modmenu в fabric.mod.json:
    "entrypoints": {
      "modmenu": [ "com.example.mod.ExampleModMenuApiImpl" ]
    }
    

Основные методы API:

  • getModConfigScreenFactory: Позволяет вашему моду предоставить собственный экран настроек, который будет открываться по кнопке "Configure" в Mod Menu. ID мода определяется автоматически.

  • getProvidedConfigScreenFactories: Позволяет вашему моду (например, библиотеке конфигураций вроде Cloth Config) предоставлять экраны настроек для других модов.

  • attachModpackBadges: Позволяет пометить другие моды бейджем Modpack, указав их ID. Внутренние моды (Minecraft, загрузчик) пометить нельзя.

    @Override
    public void attachModpackBadges(Consumer<String> consumer) {
        consumer.accept("modmenu"); // Помечает мод 'modmenu' как часть модпака
    }
    

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

API также включает полезные методы для интеграции:

  • Screen createModsScreen(Screen previous): Создаёт и возвращает экземпляр экрана модов Mod Menu.

  • Text createModsButtonText(): Возвращает объект Text с названием для кнопки, ведущей на экран модов (например, для добавления в меню паузы).

Все права на данный контент принадлежат его авторам. Мы не храним и не распространяем файлы — страница носит исключительно информационный характер. Оригинальный источник доступен по этой ссылке.

0
0
22

Комментарии (0)

Войдите, чтобы оставить комментарий

Пока нет комментариев

Будьте первым!