EnvironmentDetector (API)
EnvironmentDetector — это лёгкий Fabric API, который автоматически определяет информацию о лаунчере, платформе, модпаке, загрузчике и окружении через простую систему плейсхолдеров и API для разработчиков.
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 306
- Подписчиков на Modrinth
- 0
- версия
- 1
- Обновлён
- 29 мая 202629 мая
- Опубликован
- в 2026
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
EnvironmentDetector API
Лёгкий и безопасный API для определения окружения Minecraft для Fabric, Quilt и современных лаунчеров модпаков. EnvironmentDetector автоматически определяет:
- Лаунчер
- Экземпляр модпака
- Загрузчик
- Версию Minecraft
- Особые клиентские окружения API предназначен для:
- Модов
- HUD
- Систем плейсхолдеров
- Аналитики
- Слоёв совместимости
- Интеграций с лаунчерами
✨ Возможности
Автоматическое определение лаунчера
EnvironmentDetector может автоматически определить:
- Modrinth App
- CurseForge
- GDLauncher
- Prism Launcher
- MultiMC
- ATLauncher
- Feather Client
- NoRisk Client
- Lunar Client
- Badlion Client
- Официальный лаунчер Minecraft Ручная настройка не требуется.
🧩 Совместимость
Поддерживаемые версии Minecraft
Основная поддержка
- Minecraft
1.21.x(1.21,1.21.1,1.21.2и т. д.) - Оптимизировано и протестировано для современных окружений Minecraft. Проект на данный момент ориентирован на:
Java 21- современные версии Fabric Loader
- актуальные экосистемы лаунчеров
Обратная совместимость
EnvironmentDetector в основном полагается на:
- API Fabric Loader
- проверки файловой системы
- анализ во время выполнения API НЕ вносит глубоких изменений во внутренности Minecraft и избегает сложных миксинов для логики определения. Благодаря этому проект можно портировать и на старые версии, например:
1.20.11.19.4с минимальными правками:- понижение целевой версии Java с
21→17 - корректировка
fabric.mod.json - пересборка проекта
Поддерживаемые загрузчики модов
Fabric
✅ Полная нативная поддержка (Основная целевая платформа)
Quilt
✅ Полная нативная поддержка Quilt нативно поддерживает моды Fabric, и EnvironmentDetector включает отдельную логику определения Quilt. Это значит, что в логах будет корректно отображаться:
Loader=Quiltвместо Fabric при работе на Quilt.
NeoForge / Forge
⚡ Нативно не поддерживается EnvironmentDetector — в первую очередь мод для Fabric. Однако мод корректно работает через слои совместимости, такие как:
- Sinytra Connector
- реализации Fabric Connector При использовании через эти слои API может даже определить, что окружение работает на:
- Forge
- NeoForge
Технические требования
Версия Java
- Для Minecraft
1.20.5+требуется Java21
Fabric Loader
- Fabric Loader
0.16.0+
Обзор совместимости
| Функция | Статус |
|---|---|
| Minecraft 1.21.x | ✅ Оптимизировано и протестировано |
| Fabric | ✅ Нативная поддержка |
| Quilt | ✅ Нативная поддержка |
| NeoForge / Forge | ⚡ Только через Connector |
| Выделенный сервер | ✅ Полностью совместимо |
| Java 21 | 🛠️ Требуется |
🧠 Высокоточная система определения
В отличие от многих других модов, EnvironmentDetector НЕ полагается только на имена процессов. Вместо этого он использует:
- проверку на основе файлов
- рекурсивное сканирование директорий
- проверку метаданных лаунчера
- анализ classpath
- анализ окружения во время выполнения Это позволяет избежать ложных срабатываний и дублирующихся определений. Пример: Другие моды могут просто искать
"Modrinth"в системе. EnvironmentDetector же использует более продвинутую систему определения на основе среды выполнения.
1. Сканирование аргументов JVM
API сканирует аргументы запуска Minecraft (та же информация, что обычно видна в логах и параметрах запуска). Если слово:
modrinthвстречается в аргументах JVM, путях запуска или параметрах среды выполнения, лаунчер автоматически определяется как:
Modrinth AppЭто работает надёжно, потому что лаунчер Modrinth обычно добавляет пути или идентификаторы, связанные с Modrinth, в среду выполнения Minecraft.
2. Ручная настройка как запасной вариант
При первом запуске EnvironmentDetector автоматически создаёт:
config/environmentdetector.propertiesВ этом файле можно вручную задать свои значения:
manual_pack_name=Your Modpack Name
manual_launcher_name=Your Custom LauncherЕсли эти значения заданы, они всегда имеют наивысший приоритет и переопределяют автоматическое определение. Это позволяет надёжно работать с API:
- кастомным лаунчерам
- приватным модпакам
- неподдерживаемым лаунчерам
- средам разработки
- портативным сборкам
🔍 Логика определения
API сканирует несколько уровней директорий для определения структур лаунчеров.
Поддерживаемые маркеры
Modrinth App
- Анализ JVM во время выполнения
- Анализ аргументов запуска
- Опциональная проверка метаданных
CurseForge
CURSEFORGE_INSTANCE_NAMEminecraftinstance.json.curseclient
Feather Client
featherfeather-core.feather
NoRisk Client
norisk.config- Mod ID:
norisk
GDLauncher
gd-launcher.jsongdlauncher.json
Prism Launcher / MultiMC
prism.configprism.jsonmultimc.cfg
ATLauncher
instance.jsonatlauncher.json
Lunar / Badlion
Анализ ключевых слов в classpath:
lunarbadlion
Официальный лаунчер
launcher_profiles.json
📜 Стандартизированное логирование
После инициализации EnvironmentDetector выводит единую запись в лог. Пример:
[EnvironmentDetector] Launcher=Modrinth App, Instance=Ultra Survival, NoRisk=false, Loader=Fabric, Version=1.21.1Другие примеры:
[EnvironmentDetector] Launcher=CurseForge, Instance=BetterMC, NoRisk=false, Loader=Fabric, Version=1.21.1[EnvironmentDetector] Launcher=NoRisk Client, Instance=Unknown Pack, NoRisk=true, Loader=Fabric, Version=1.21.1Запасной вариант:
[EnvironmentDetector] Unknown Environment⚡ Производительность
- Однократное сканирование при запуске
- Кэшированные результаты
- Потокобезопасная внутренняя логика
- Минимальные накладные расходы
- Без фонового сканирования EnvironmentDetector запускается один раз при старте и после этого только отдаёт кэшированные данные.
🛠 Интеграция для разработчиков
Настройка Gradle
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
filter {
includeGroup "maven.modrinth"
}
}
}Зависимость
dependencies {
modImplementation "maven.modrinth:environmentdetector-api:VERSION"
}Замените VERSION на последний релиз.
💻 Пример использования
public String getLauncherName() {
if (FabricLoader.getInstance().isModLoaded("environmentdetector")) {
return de.felixfgf.environmentdetector.EnvironmentDetectorAPI
.getEnvironment()
.launcher();
}
return "Vanilla";
}⚠ Рекомендации
Всегда используйте опциональную интеграцию
НЕ делайте жёсткую зависимость от EnvironmentDetector. Всегда проверяйте:
FabricLoader.getInstance().isModLoaded("environmentdetector")перед использованием API.
🚫 Частые ошибки
Неправильный пакет
Правильный пакет:
de.felixfgf.environmentdetectorНЕ:
de.felixfgf.environmentdetector.apiОтсутствие проверки modLoaded
Прямой доступ к API без проверки наличия мода может привести к крашу других модов.
Использование плейсхолдеров каждый кадр
Не обрабатывайте плейсхолдеры каждый кадр отрисовки. Кэшируйте значения при открытии меню или HUD.
🐛 Баг-репорты и поддержка
Нашли баг или проблему с определением? Пожалуйста, сообщите:
- используемый лаунчер
- версию Minecraft
- загрузчик
- latest.log
- вывод определённого окружения Присоединяйтесь к Discord-серверу для поддержки, баг-репортов и обсуждения API:
![Join DC [middle small]](https://cdn.modrinth.com/data/cached_images/bfca91ef533789255f946e0c21aa5a6f4925876f_0.webp)
🎯 Цели
- Максимальная прозрачность окружения
- Надёжное определение лаунчера
- Высокая совместимость
- Настройка без конфигурации
- Безопасная интеграция без крашей
- Лёгкая архитектура EnvironmentDetector создан, чтобы стать стандартным API окружения для современных экосистем лаунчеров Minecraft 🚀
Частые вопросы
Как установить EnvironmentDetector (API)?
Установите Fabric под свою версию Minecraft, скачайте EnvironmentDetector (API) под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть EnvironmentDetector (API)?
У EnvironmentDetector (API) есть сборки для Minecraft 1.21–1.21.11.
Нужен ли EnvironmentDetector (API) на сервере?
Ставится только в игру; на сервер ставить не нужно