
Preloading Tricks
Preloading Tricks - утилита для разработчиков, дающая доступ к ранней загрузке, трансформации классов и перехватчикам загрузчика. Поддержка Fabric, Forge, NeoForge.
Preloading Tricks - это инструментальный мод для разработчиков, который открывает доступ к самым ранним стадиям загрузки мод-лоадера в Minecraft. Если ты когда-нибудь сталкивался с тем, что не успеваешь перехватить инициализацию, подменить классы или добавить свои обработчики до того, как всё уже запущено - этот проект как раз для таких случаев.
По сути, Preloading Tricks даёт возможность делать следующие вещи:
- Ранние хуки через
PreloadingEntrypoint(на основе SPI) - Трансформацию классов с помощью Java Instrumentation - можно менять даже уже загруженные классы, включая системные и класслоадерные
- Определение варианта Forge/NeoForge для гибкой совместимости
Поддерживаемые окружения
Мод работает на Fabric (1.20.1, 1.21+), Forge (LexForge, 1.20.1), NeoForge (1.20.6, 1.21+). В действительности может работать и на других версиях, потому что привязка идёт к версии загрузчика, а не к версии Minecraft.
Основные возможности
Ранние точки входа
Реализуй PreloadingEntrypoint (SPI), и твой код выполнится ещё до того, как моды начнут загружаться. Доступные события: SETUP_LANGUAGE_ADAPTER - настройка адаптера языка, COLLECT_MOD_CANDIDATES - добавление путей к модам до их обнаружения, SETUP_MODS - изменение списка модов (добавление/удаление/запрос через ModManager API).
Трансформация классов
Через ClassTransform можно менять уже загруженные классы, конфигурация задаётся в MANIFEST.MF.
Определение варианта Forge
Если твой мод должен работать по-разному на LexForge и NeoForge, можно указать в MANIFEST.MF параметр ForgeVariant: LexForge или ForgeVariant: NeoForge. Тогда мод загрузится только на нужном варианте.
Подключение через Gradle
Если ты разрабатываешь мод и хочешь использовать Preloading Tricks, добавь репозиторий и зависимость:
repositories {
maven("https://raw.githubusercontent.com/settingdust/maven/main/repository/")
}
dependencies {
implementation("settingdust.preloading_tricks:PreloadingTricks:3.5.9")
}
Можно указать конкретный классификатор - fabric, forge-service, neoforge-modlauncher, neoforge-fancy-mod-loader, но обычно достаточно базовой зависимости, Gradle сам подтянет нужный вариант.
Настройка ClassTransform
В MANIFEST.MF пропиши:
ClassTransformConfig: xxxx.classtransform.json
Несколько конфигов через запятую.
Пример xxxx.classtransform.json:
{
"package": "settingdust.preloading_tricks.neoforge.transformer",
"transformers": [
"mod_setup_hook.FMLLoaderTransformer"
]
}
Зачем это нужно?
В обычной разработке модов ты ограничен тем, что твой код запускается только после инициализации загрузчика. Preloading Tricks ломает эти рамки: можно подменять классы до того, как Minecraft вообще начнёт думать о мире, блоках или мобах. Это критично для:
- оптимизаций на уровне байткода
- внедрения прокси-классов
- модификации системных вызовов
- раннего логирования и профилирования
Для обычного игрока мод бесполезен, но для разработчика - это мощный низкоуровневый инструмент. Если ты пишешь сложные моды, которые должны работать на стыке загрузчиков, Preloading Tricks реально упрощает задачу. Скачивай, разбирайся, тестируй.
