230 lines
13 KiB
Groovy
230 lines
13 KiB
Groovy
buildscript {
|
||
repositories {
|
||
// Эти репозитории предназначены только для Gradle-плагинов, другие репозитории размещайте в блоке ниже
|
||
maven { url = 'https://repo.spongepowered.org/repository/maven-public/' }
|
||
mavenCentral()
|
||
}
|
||
dependencies {
|
||
// После удаления Mixin здесь больше не требуется зависимостей
|
||
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
|
||
}
|
||
}
|
||
|
||
plugins {
|
||
id 'eclipse'
|
||
id 'idea'
|
||
id 'net.minecraftforge.gradle' version '[6.0.16,6.2)'
|
||
}
|
||
|
||
apply plugin: 'org.spongepowered.mixin'
|
||
|
||
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"
|
||
}
|
||
// Включите ресурсы, сгенерированные генераторами данных.
|
||
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'
|
||
}
|
||
|
||
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)
|