195 lines
12 KiB
Groovy
195 lines
12 KiB
Groovy
|
buildscript {
|
|||
|
repositories {
|
|||
|
// Эти репозитории предназначены только для Gradle-плагинов, другие репозитории размещайте в блоке ниже
|
|||
|
mavenCentral()
|
|||
|
}
|
|||
|
dependencies {
|
|||
|
// После удаления Mixin здесь больше не требуется зависимостей
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
plugins {
|
|||
|
id 'eclipse'
|
|||
|
id 'idea'
|
|||
|
id 'net.minecraftforge.gradle' version '[6.0.16,6.2)'
|
|||
|
}
|
|||
|
|
|||
|
group = mod_group_id
|
|||
|
version = mod_version
|
|||
|
|
|||
|
base {
|
|||
|
archivesName = mod_id
|
|||
|
}
|
|||
|
|
|||
|
java {
|
|||
|
toolchain.languageVersion = JavaLanguageVersion.of(17)
|
|||
|
}
|
|||
|
|
|||
|
minecraft {
|
|||
|
// Маппинги могут быть изменены в любое время и должны быть в следующем формате.
|
|||
|
// Канал: Версия:
|
|||
|
// official MCVersion Официальные имена полей/методов из файлов маппингов Mojang
|
|||
|
// parchment YYYY.MM.DD-MCVersion Открытые имена параметров и javadocs, созданные сообществом, на основе official
|
|||
|
|
|||
|
// Вы должны быть в курсе лицензии Mojang при использовании 'official' или 'parchment' маппингов.
|
|||
|
// Дополнительная информация здесь: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md
|
|||
|
|
|||
|
// Parchment — неофициальный проект, поддерживаемый ParchmentMC, отдельный от MinecraftForge
|
|||
|
// Дополнительная настройка необходима для использования их маппингов: https://parchmentmc.org/docs/getting-started
|
|||
|
|
|||
|
// Используйте неофициальные маппинги на свой риск. Они могут не всегда работать.
|
|||
|
// Просто повторно запустите задачу настройки после изменения маппингов для обновления рабочей области.
|
|||
|
mappings channel: mapping_channel, version: mapping_version
|
|||
|
|
|||
|
// Когда true, это свойство будет заставлять все конфигурации запуска Eclipse/IntelliJ IDEA выполнять задачу "prepareX" для данной конфигурации запуска перед запуском игры.
|
|||
|
// В большинстве случаев нет необходимости включать.
|
|||
|
// enableEclipsePrepareRuns = true
|
|||
|
// enableIdeaPrepareRuns = true
|
|||
|
|
|||
|
// Это свойство позволяет настроить задачи ProcessResources Gradle для запуска в IDE перед запуском игры.
|
|||
|
// Должно быть установлено в true для корректной работы шаблона.
|
|||
|
// См. https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html
|
|||
|
copyIdeResources = true
|
|||
|
|
|||
|
// Когда true, это свойство добавит имя папки всех объявленных конфигураций запуска в сгенерированные конфигурации IDE.
|
|||
|
// Имя папки можно установить в конфигурации запуска с помощью свойства "folderName".
|
|||
|
// По умолчанию имя папки конфигурации запуска — это имя Gradle-проекта, содержащего его.
|
|||
|
// generateRunFolders = true
|
|||
|
|
|||
|
// Это свойство включает трансформеры доступа для использования в разработке.
|
|||
|
// Они будут применены к артефакту Minecraft.
|
|||
|
// Файл трансформера доступа может быть в любом месте проекта.
|
|||
|
// Однако он должен находиться в "META-INF/accesstransformer.cfg" в финальном jar моде, чтобы быть загруженным Forge.
|
|||
|
// Это расположение по умолчанию — лучшая практика для автоматического размещения файла в правильном месте в финальном jar.
|
|||
|
// См. https://docs.minecraftforge.net/en/latest/advanced/accesstransformers/ для дополнительной информации.
|
|||
|
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
|||
|
|
|||
|
// Конфигурации запуска по умолчанию.
|
|||
|
// Их можно настроить, удалить или дублировать по мере необходимости.
|
|||
|
runs {
|
|||
|
// применяется ко всем конфигурациям запуска ниже
|
|||
|
configureEach {
|
|||
|
workingDirectory project.file('run')
|
|||
|
|
|||
|
// Рекомендуемые данные логирования для среды разработки
|
|||
|
// Маркеры могут быть добавлены/удалены по мере необходимости, разделенные запятыми.
|
|||
|
// "SCAN": Для сканирования модов.
|
|||
|
// "REGISTRIES": Для срабатывания событий реестра.
|
|||
|
// "REGISTRYDUMP": Для получения содержимого всех реестров.
|
|||
|
property 'forge.logging.markers', 'REGISTRIES'
|
|||
|
|
|||
|
// Рекомендуемый уровень логирования для консоли
|
|||
|
// Вы можете установить различные уровни здесь.
|
|||
|
// Пожалуйста, прочитайте: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
|
|||
|
property 'forge.logging.console.level', 'debug'
|
|||
|
|
|||
|
mods {
|
|||
|
"${mod_id}" {
|
|||
|
source sourceSets.main
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
client {
|
|||
|
// Список пространств имен, из которых загружаются gametest'ы. Пустой = все пространства имен.
|
|||
|
property 'forge.enabledGameTestNamespaces', mod_id
|
|||
|
}
|
|||
|
|
|||
|
server {
|
|||
|
property 'forge.enabledGameTestNamespaces', mod_id
|
|||
|
args '--nogui'
|
|||
|
}
|
|||
|
|
|||
|
// Эта конфигурация запускает GameTestServer и выполняет все зарегистрированные gametest'ы, затем выходит.
|
|||
|
// По умолчанию сервер упадет, если не предоставлены gametest'ы.
|
|||
|
// Система gametest также включена по умолчанию для других конфигураций запуска через команду /test.
|
|||
|
gameTestServer {
|
|||
|
property 'forge.enabledGameTestNamespaces', mod_id
|
|||
|
}
|
|||
|
|
|||
|
data {
|
|||
|
// пример переопределения workingDirectory, установленного в configureEach выше
|
|||
|
workingDirectory project.file('run-data')
|
|||
|
|
|||
|
// Укажите modid для генерации данных, куда выводить результирующий ресурс и где искать существующие ресурсы.
|
|||
|
args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Включите ресурсы, сгенерированные генераторами данных.
|
|||
|
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
|||
|
|
|||
|
repositories {
|
|||
|
// Добавляйте репозитории для зависимостей здесь
|
|||
|
// ForgeGradle автоматически добавляет Forge maven и Maven Central для вас
|
|||
|
|
|||
|
// Если у вас есть зависимости модов в ./libs, вы можете объявить их как репозиторий следующим образом.
|
|||
|
// См. https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver
|
|||
|
// flatDir {
|
|||
|
// dir 'libs'
|
|||
|
// }
|
|||
|
}
|
|||
|
|
|||
|
dependencies {
|
|||
|
// Укажите версию Minecraft для использования.
|
|||
|
// Любой артефакт может быть предоставлен, пока у него есть артефакт с классификатором "userdev" и он является совместимым патчером.
|
|||
|
// Классификатор "userdev" будет запрошен и настроен ForgeGradle.
|
|||
|
// Если groupId "net.minecraft" и artifactId один из ["client", "server", "joined"],
|
|||
|
// то выполняется специальная обработка для настройки зависимости на ваниль без использования внешнего репозитория.
|
|||
|
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
|
|||
|
|
|||
|
// Пример зависимости мода с JEI - использование fg.deobf() обеспечивает ремаппинг зависимости на ваши маппинги разработки
|
|||
|
// API JEI объявлен для использования во время компиляции, в то время как полный артефакт JEI используется во время выполнения
|
|||
|
// compileOnly fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}")
|
|||
|
// compileOnly fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}")
|
|||
|
// runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}")
|
|||
|
|
|||
|
// Пример зависимости мода, использующего jar мода из ./libs с плоским репозиторием
|
|||
|
// Это соответствует ./libs/coolmod-${mc_version}-${coolmod_version}.jar
|
|||
|
// groupId игнорируется при поиске — в данном случае это "blank"
|
|||
|
// implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}")
|
|||
|
|
|||
|
// Для дополнительной информации:
|
|||
|
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
|||
|
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
|||
|
}
|
|||
|
|
|||
|
tasks.named('processResources', ProcessResources).configure {
|
|||
|
var replaceProperties = [
|
|||
|
minecraft_version : minecraft_version, minecraft_version_range: minecraft_version_range,
|
|||
|
forge_version : forge_version, forge_version_range: forge_version_range,
|
|||
|
loader_version_range: loader_version_range,
|
|||
|
mod_id : mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version,
|
|||
|
mod_authors : mod_authors, mod_description: mod_description,
|
|||
|
]
|
|||
|
|
|||
|
inputs.properties replaceProperties
|
|||
|
|
|||
|
filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) {
|
|||
|
expand replaceProperties + [project: project]
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Пример того, как получить свойства в манифест для чтения во время выполнения.
|
|||
|
tasks.named('jar', Jar).configure {
|
|||
|
manifest {
|
|||
|
attributes([
|
|||
|
"Specification-Title" : mod_id,
|
|||
|
"Specification-Vendor" : mod_authors,
|
|||
|
"Specification-Version" : "1", // Мы версия 1 самих себя
|
|||
|
"Implementation-Title" : project.name,
|
|||
|
"Implementation-Version" : project.jar.archiveVersion,
|
|||
|
"Implementation-Vendor" : mod_authors,
|
|||
|
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
|
|||
|
])
|
|||
|
}
|
|||
|
|
|||
|
// Это предпочтительный метод для переобфускации вашего jar файла
|
|||
|
finalizedBy 'reobfJar'
|
|||
|
}
|
|||
|
|
|||
|
tasks.withType(JavaCompile).configureEach {
|
|||
|
options.encoding = 'UTF-8' // Используйте кодировку UTF-8 для компиляции Java
|
|||
|
}
|