chatit/build.gradle

230 lines
13 KiB
Groovy
Raw Normal View History

2024-10-21 10:05:56 +02:00
buildscript {
repositories {
// Эти репозитории предназначены только для Gradle-плагинов, другие репозитории размещайте в блоке ниже
maven { url = 'https://repo.spongepowered.org/repository/maven-public/' }
2024-10-21 10:05:56 +02:00
mavenCentral()
}
dependencies {
// После удаления Mixin здесь больше не требуется зависимостей
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
2024-10-21 10:05:56 +02:00
}
}
plugins {
id 'eclipse'
id 'idea'
id 'net.minecraftforge.gradle' version '[6.0.16,6.2)'
}
apply plugin: 'org.spongepowered.mixin'
2024-10-21 10:05:56 +02:00
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/')
}
}
}
mixin {
add sourceSets.main, "${mod_id}.refmap.json"
config "${mod_id}.mixins.json"
}
2024-10-21 10:05:56 +02:00
// Включите ресурсы, сгенерированные генераторами данных.
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
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
2024-10-21 10:05:56 +02:00
}
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
}
// Определите путь к вашей целевой папке
def targetModsDir = "D:/server_sandbox/ForgeCreate/mods"
// Задача для копирования JAR-файла
tasks.register('copyJarToMods', Copy) {
// Указывает, откуда копировать файл (из build/libs)
from jar.archiveFile
// Указывает, куда копировать файл
into targetModsDir
// Фильтр для выбора нужных файлов, если необходимо
//include "${project.name}-${project.version}.jar"
// Можно добавить переименование файла, если требуется
// rename "${project.name}-${project.version}.jar", "${project.name}.jar"
}
// Убедитесь, что задача `copyJarToMods` выполняется после сборки JAR
jar.finalizedBy(copyJarToMods)
// (Опционально) Добавьте зависимость на задачу `copyJarToMods` к задаче `build`
build.dependsOn(copyJarToMods)