Files
antarchy-mirror/neoforge-1.21.1/build.gradle
T

138 lines
5.5 KiB
Groovy

plugins {
id 'net.neoforged.moddev' version '2.0.141'
id "com.matthewprenger.cursegradle" version "1.4.0"
id "me.modmuss50.mod-publish-plugin" version "0.5.1"
}
base {
archivesName = mod_id
}
version = "${mod_version}+1.21.1-neoforge"
java {
toolchain { languageVersion = JavaLanguageVersion.of(21) }
withSourcesJar()
}
// Add common-1.21.1's sources directly — this module compiles them itself.
sourceSets {
main {
java {
srcDirs project(':common-1.21.1').sourceSets.main.java.srcDirs
}
resources {
srcDir project(':common-1.21.1').sourceSets.main.resources.srcDirs
}
}
}
neoForge {
version = neoforge_version_1_21_1
mods {
create(mod_id) {
sourceSet sourceSets.main
}
}
runs {
client { client() }
server { server() }
data {
data()
programArguments.addAll("--all", "--mod", mod_id)
programArguments.addAll("--existing", file("src/main/resources").absolutePath)
programArguments.addAll("--output", file("src/main/generated/resources").absolutePath)
}
}
}
dependencies {
if (providers.gradleProperty('antarchySodiumCompatTest').orNull == 'true') {
runtimeOnly(files(rootProject.file("infinite_dimensions_jars/sodium-neoforge-0.8.13+mc1.21.1.jar")))
}
// Sodium — compile-only, for portal live views drawn through Sodium's renderer
// (content/client/renderer/sodium, mixins/compat/sodium). Never bundled; that code only
// loads when Sodium is installed. The published jar nests the mod jar, so compile against it.
compileOnly(files(zipTree(rootProject.file("infinite_dimensions_jars/sodium-neoforge-0.8.13+mc1.21.1.jar"))
.matching { include "META-INF/jarjar/net.caffeinemc.sodium-neoforge-*-mod.jar" }))
compileOnly(files(rootProject.file("infinite_dimensions_jars/antos-neoforge-1.21.1-${antos_version}.jar")))
runtimeOnly(files(rootProject.file("infinite_dimensions_jars/antos-neoforge-1.21.1-${antos_version}.jar")))
compileOnly("curse.maven:intapi-${intapi_curseforge_id}:${intapi_curseforge_file_id_neoforge}")
runtimeOnly("curse.maven:intapi-${intapi_curseforge_id}:${intapi_curseforge_file_id_neoforge}")
implementation "software.bernie.geckolib:geckolib-neoforge-1.21.1:${geckolib_version}"
compileOnly(files(rootProject.file("infinite_dimensions_jars/infinity-2.7.3+1.21.1-neoforge.jar")))
compileOnly(files(rootProject.file("infinite_dimensions_jars/stellarview-1.21.1-0.5.3-neoforge.jar")))
runtimeOnly(files(rootProject.file("infinite_dimensions_jars/infinity-2.7.3+1.21.1-neoforge.jar")))
runtimeOnly("dev.architectury:architectury-neoforge:${architectury_api_version}")
compileOnly(files(rootProject.file("sizeable_foliage_jars/sizeable_foliage-neoforge-1.21.1-1.0.0.jar")))
runtimeOnly(files(rootProject.file("sizeable_foliage_jars/sizeable_foliage-neoforge-1.21.1-1.0.0.jar")))
runtimeOnly("com.telepathicgrunt:CommandStructures-Neoforge:${commandstructures_neoforge}")
runtimeOnly("com.telepathicgrunt:StructureVoidToggle-Neoforge:${structurevoidtoggle_neoforge}")
compileOnly "mezz.jei:jei-1.21.1-common-api:${jei_version}"
compileOnly "mezz.jei:jei-1.21.1-neoforge-api:${jei_version}"
runtimeOnly "mezz.jei:jei-1.21.1-neoforge:${jei_version}"
// Configured — optional, gives players an in-game config screen for Antarchy's
// ModConfigSpec-based settings (AntarchyMobsConfig/AntarchyToolsConfig/AntarchyMiscConfig)
// with zero Java code on this side: NeoForge's own config system is auto-discovered.
// No compileOnly needed since nothing here references Configured's classes directly.
// Has no Modrinth release, hence cursemaven (repo already declared in the root build.gradle).
runtimeOnly("curse.maven:configured-${configured_curseforge_id}:${configured_curseforge_file_id_neoforge}")
implementation(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixin_extras_1_21_1}"))
}
tasks.withType(ProcessResources).configureEach {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
var replaceProperties = [
version: project.version,
architectury_api_version: architectury_api_version
]
inputs.properties replaceProperties
filesMatching('META-INF/neoforge.mods.toml') {
expand replaceProperties
}
}
tasks.matching { it.name in ["runClient", "runServer", "runData"] }.configureEach {
doFirst {
def infinityConfigPrefix = "config/common/"
zipTree(rootProject.file("infinite_dimensions_jars/infinity-2.7.3+1.21.1-neoforge.jar")).visit { details ->
if (!details.directory && details.relativePath.pathString.startsWith(infinityConfigPrefix)) {
def targetPath = details.relativePath.pathString.substring(infinityConfigPrefix.length())
file("run/config/infinity/${targetPath}").parentFile.mkdirs()
}
}
}
}
tasks.withType(Copy).configureEach {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType(Jar).configureEach {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId = rootProject.group
artifactId = "${mod_id}-neoforge-1.21.1"
version = project.version
artifact jar
artifact sourcesJar
pom {
name = "${mod_name} (NeoForge 1.21.1)"
description = mod_description
}
}
}
}