▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Mod Menu
Mod Menu

Mod Menu

Мод Mod Menu для Майнкрафт добавляет удобное меню со списком всех установленных модов. Быстрый доступ к настройкам, проверка обновлений и многое другое.

Оцените первым
109.0M
24.8K

Mod Menu

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

Но Mod Menu - это не просто список. Он умеет больше: поддерживает переводы названий и описаний модов, может отфильтровывать библиотеки от обычных модов (чтобы не засорять список), проверяет обновления для модов с Modrinth или собственных источников. В общем, штука полезная, особенно если у тебя сборка из 50+ модов.

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

Mod Menu работает на Fabric или Quilt для Minecraft: Java Edition 1.14 и новее.

Для разработчиков

У Mod Menu есть несколько API, чтобы разработчики могли улучшить отображение своих модов. Всё через языковые ключи, JSON-метаданные и Java API.

API переводов

Можно перевести название, краткое описание и полное описание мода без единой строчки Java-кода. Просто добавь ключи перевода в нужном формате.

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

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

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!"

Перевод summary тут избыточен, но он показывает, что можно переводить краткое описание отдельно от полного.

Fabric Metadata API

Многое можно добавить прямо в fabric.mod.json через блок custom.

Вот пример использования разных фич:

fabric.mod.json

{
  ...
  "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
    }
  }
}
Документация Fabric Metadata API

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

Значок Client ставится автоматически для клиентских модов (если указано "environment": "client"). А вот Library и Deprecated нужно прописывать вручную.

Допустимые значения:

  • library - для модов-зависимостей, которые не нужно показывать пользователю по умолчанию
  • deprecated - для устаревших модов (например, старые модули API)

Остальные значки игнорируются. Свои добавить нельзя, но можно предложить новую фичу через issue.

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

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

Ключи из links используются как ключи перевода. Например:

fabric.mod.json

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

Будет показана ссылка с текстом "Discord", потому что это английский перевод ключа modmenu.discord.

У Mod Menu есть несколько стандартных переводов для ссылок. Все ключи имеют формат modmenu.<тип>.

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

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

Родители нужны, чтобы показать мод как дочерний для другого. Это удобно для модов, разбитых на модули. Например:

fabric.mod.json

"custom": {
    "modmenu": {
        "parent": "flamingo"
    }
}

Если родитель - не настоящий мод, а виртуальный, можно задать его метаданные прямо тут:

fabric.mod.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. Если найдёт совпадение, то сравнивает версию и сообщает о наличии апдейта.

Отключить можно так:

fabric.mod.json

"custom": {
    "modmenu": {
        "update_checker": false
    }
}

Quilt Metadata API

Для Quilt всё то же самое, но формат немного другой. Вместо блока "modmenu" внутри "custom", он кладётся прямо в корень объекта:

quilt.mod.json

{
  ...
  "modmenu": {
    // Тут ссылки, значки и прочее
  }
}

Java API

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

build.gradle

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

// Добавь Mod Menu как зависимость в окружении
dependencies {
  // До Minecraft 26.x используй "modImplementation" вместо этого
  implementation("com.terraformersmc:modmenu:${project.modmenu_version}")
}

Потом пропиши версию Mod Menu в gradle.properties. Актуальную версию можно взять тут, но если у тебя не последняя версия Майнкрафт, может понадобиться другая - смотри список версий.

gradle.properties

modmenu_version=НОМЕР_ВЕРСИИ_ТУТА

Если не хочешь тащить Mod Menu в окружение для тестов, но нужно компилировать под Java API - используй modCompileOnly вместо modImplementation. Это сработает даже если Mod Menu не обновлён под твою версию Minecraft.

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

Начало работы

Реализуй интерфейс ModMenuApi на классе и добавь его как точку входа типа "modmenu" в fabric.mod.json:

fabric.mod.json

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

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

Моды могут предоставить фабрику экранов для кастомной конфигурации через кнопку настроек. Реализуй метод getModConfigScreenFactory.

ID мода определяется автоматически по контейнеру, из которого пришла точка входа.

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

Моды могут предоставлять фабрики экранов для других модов через метод getProvidedConfigScreenFactories. Это нужно, например, для Cloth Config, который может показывать настройки для модов, использующих его API.

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

Моды могут назначать другим модам значок Modpack, реализовав метод attachModpackBadges. Например:

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

Внутренние моды (сам Minecraft и загрузчик) получить этот значок не могут - они не распространяются в составе типичного модпака.

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

У ModMenuApi есть несколько методов для работы с меню модов.

Создание экрана со списком модов:

Screen createModsScreen(Screen previous)

Создание текста для кнопки меню модов:

Text createModsButtonText()

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

25w46a26.2.x26.1.x1.21.x1.20.x1.19.x1.18.x1.17.x1.16.x1.15.x1.14.x

Платформы

Поддерживаемые окружения

Клиент

Зависимости

Ссылки

Детали

Лицензия:
Опубликован:5 лет назад
Обновлён:1 неделю назад
Главная