Fabric Loom, або просто Loom, це плаґін Gradle для розробки модів в екосистемі Fabric.
Loom надає утиліти для встановлення Minecraft і модів у середовищі розробки, щоб ви могли зв’язуватися з ними щодо обфускації Minecraft та її відмінностей між дистрибутивами та версіями. Він також надає налаштування запуску для використання з Fabric Loader, обробкою компіляції міксинів та утиліт для системи jar-in-jar Fabric Loader.
Loom підтримує всі версії Minecraft, навіть ті, які офіційно не підтримуються Fabric API, оскільки він не залежить від версії.
Ця сторінка є посиланням на всі опції та функції Loom. Якщо ви тільки починаєте роботу, перегляньте сторінку початок роботи.
Залежно від підпроєктів
Під час налаштування багатопроєктної збірки, яка залежить від іншого проєкту Loom, ви повинні використовувати конфігурацію namedElements, коли це залежить від іншого проєкту. За замовчуванням «виходи» проєкту переставляються на проміжні назви. Налаштування namedElements містить вихідні дані проєкту, які не було повторно зіставлено.
groovy
dependencies {
implementation project(path: ":name", configuration: "namedElements")
}1
2
3
2
3
Якщо ви використовуєте розділені вихідні набори в збірці з кількома проєктами, вам також потрібно буде додати залежність для клієнтського вихідного набору іншого проєкту.
groovy
dependencies {
clientImplementation project(":name").sourceSets.client.output
}1
2
3
2
3
Розділення клієнта та загальний код
Протягом багатьох років поширеним джерелом збоїв на сервері були моди, які випадково викликали клієнтський код під час встановлення на сервері. Новіші версії Loom і Loader надають можливість вимагати переміщення всього клієнтського коду до власного вихідного набору. Це робиться для того, щоб розв'язати проблему під час компіляції, але збірка все одно призведе до єдиного файлу jar, який працює з обох сторін.
Наступний фрагмент із файлу build.gradle показує, як можна увімкнути це для свого моду. Оскільки тепер ваш мод буде розділено на два набори джерел, вам потрібно буде використовувати новий DSL, щоб визначити набори джерел вашого мода. Це дозволяє Fabric Loader згрупувати шлях до класів вашого мода. Це також корисно для деяких інших складних налаштувань кількох проєктів.
Minecraft 1.18 (рекомендовано 1.19), Loader 0.14 і Loom 1.0 або новішої версії потрібні для розділення клієнтського та загального коду.
groovy
loom {
splitEnvironmentSourceSets()
mods {
example-mod {
sourceSet sourceSets.main
sourceSet sourceSets.client
}
}
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Розв'язування проблем
Loom і/або Gradle іноді можуть виходити з ладу через пошкоджені файли кешу. Запуск ./gradlew build --refresh-dependencies змусить Gradle і Loom повторно завантажити та відтворити всі файли. Це може зайняти кілька хвилин, але зазвичай цього достатньо, щоб розв'язати проблеми, пов’язані з кеш-пам’яттю.
Налаштування середовища розробки
Loom розроблено для роботи з коробки(out-of-the-box), просто налаштувавши робочий простір у вашому IDE. Він робить багато речей за лаштунками для створення середовища розробки з Minecraft:
- Завантажує клієнт і сервер jar з офіційних каналів для налаштованої версії Minecraft
- Об’єднує клієнтську та серверну jar для створення об’єднаного jar з анотаціями @Environment і @EnvironmentInterface
- Завантажує налаштовані зіставлення
- Переставляє об’єднаний jar з проміжними показами, щоб створити проміжний jar
- Переставляє об’єднаний jar зі зіставленнями Yarn, щоб створити зіставлений jar
- Необов’язково: декомпілює зіставлений jar, щоб створити зіставлений джерельний jar і лінійну мапу, і застосовує її до зіставленого jar
- Додає залежності Minecraft
- Завантаження активів Minecraft
- Обробляє та включає доповнені модом залежності
Кеші
${GRADLE_HOME}/caches/fabric-loom: Кеш користувача, кеш, спільний для всіх проєктів Loom для користувача. Використовується для кешування ресурсів Minecraft, jar-ів, об’єднаних jar-ів, проміжних jar-ів і показу jar-ів.gradle/loom-cache: постійний кеш кореневого проєкту, спільний кеш для проєкту та його підпроєктів Використовується для кешу переназначених модів, а також створених включених jar-ів модів**/build/loom-cache: кеш збірки (під)проєктів
Налаштування залежностей
minecraft: визначає версію Minecraft для використання в середовищі розробкиmappings: визначає зіставлення, які будуть використовуватися в середовищі розробкиmodImplementation,modApiіmodRuntime: розширені варіантиimplementation,apiіruntimeдля залежностей мода. Буде переназначено, щоб відповідати зіставленням у середовищі розробки, і будь-які вкладені банки буде видаленоinclude: оголошує залежність, яка має бути включена як jar-in-jar у вивідremapJar. Це налаштування залежності не є транзитивною. Для залежностей, не пов’язаних із модами, Loom згенерує файл mod jar ізfabric.mod.json, використовуючи ID мода як назву та ту саму версію
Налаштування за замовчуванням
- Застосовує такі плаґіни:
java,eclipse - Додає такі репозиторії Maven: Fabric, Mojang і Maven Central
- Налаштовує завдання
eclipse, яке завершується завданнямgenEclipseRuns - Якщо тека
.ideaіснує в кореневому проєкті, завантажує ресурси (якщо вони не оновлені) і встановлює налаштування запуску в.idea/runConfigurations - Додає
net.fabricmc:fabric-mixin-compile-extensionsі його залежності з налаштувань залежностейannotationProcessor - Налаштовує всі нетестові завдання JavaCompile за допомогою налаштувань для процесора анотацій Mixin
- Налаштовує завдання
remapJarдля виведення JAR-файлу з такою самою назвою, як і виведення завданняjar, а потім додає класифікатор «dev» до завданняjar - Налаштовує завдання
remapSourcesJarдля обробки виводу завданняsourcesJar, якщо завдання існує - Додає завдання
remapJarіremapSourcesJarяк залежності завданняbuild - Налаштовує завдання
remapJarіremapSourcesJarдля додавання їхніх результатів як артефактівarchivesпід час виконання - Для кожної MavenPublication (з плаґіна
maven-publish) вручну додає залежності до POM для налаштування залежностей мода, за умови, що налаштування залежностей має область Maven
Усі конфігурації запуску мають каталог запуску ${projectDir}/run та аргумент VM -Dfabric.development=true. Основні класи для конфігурацій запуску зазвичай визначаються файлом fabric-installer.json у корені JAR-файлу Fabric Loader, якщо він включений як залежність мода, але файл може бути визначений будь-якою залежністю мода. Якщо такий файл не знайдено, основними класами за замовчуванням є net.fabricmc.loader.launch.knot.KnotClient і net.fabricmc.loader.launch.knot.KnotServer.








