Плагин для minecraft-моддеров, позволяющий искать Access-трансформеры в зависимостях машего проекта, а затем объединяет их в один файл.
В узком смысле, это подход, который использует Minecraft Forge, чтобы моддеры могли получать доступ к приватным полям и методам без необходимости модифицировать minecraft.jar
. А в широком - процес изменения модификаторов доступа классов на этапе их загрузки.
Подбробнее о транформерах вы можете узнать тут
Несмотря на то, что команда MincraftForge не оказывает поддержку устаревшим версиям игры, они все еще развиваются и используются. К сожалению, ForgeGradle для старых версий не умеет извлекать access-трансформеры из модов-зависимостей (такое появилось тольков 2.0). Из-за чего подключать моды через Gradle становится очень неудобно, т.к. вручную приходилсь переписывать все трансформеры в файл. Но с этим плагином вам больше не придется беспокоиться о трансформерах в ваших зависимостях!
- Подключите репозиторий с плагином к вашему билдскрипту:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ru.rarescrap:depATs:1.0.0'
}
}
- Подключите плагин: (лучше сделать это после включения forge-плагина)
apply plugin: 'DepATs'
- Добавьте в блок настроек
minecraft {}
всего одну строку:
minecraft {
// ...
at(DepATs.getDepATs())
}
Теперь запустите gradlew setupDecompWorkspace
и наслаждайтесь примененными трансформерами.
- Трансформеры из зависимостей по умолчанию хранятся в
build/dependencies_at.cfg
, но вы можете указать любой файл, какой пожелаете:
DepATs {
depATs = file("myCustomDepATsFile_at.cfg")
}
Теперь транформеры будут хранится в корне проекта в файле myCustomDepATsFile_at.cfg
- Вы можете игнорировать cfg-файлы с определенным именем или crf-файлы только для определенной зависимости:
DepATs {
ignoredATs = [
'ignoreThisFile_at.cfg', // Этот файл будет игнорироваться для всех зависимостей
'ignoreThoseFile_at.cfg:dependency.jar'] // Файл с этим именем будет игнорироваться только для зависимости dependency.jar
}
По умолчанию игнорируются "forge_at.cfg" и "fml_at.cfg", т.к. они применяются и так.
Вы можете высказать все это на багтрекере