plugins { id "com.github.johnrengelman.shadow" version "7.0.0" } architectury { platformSetupLoomIde() forge() } configurations { common shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. compileClasspath.extendsFrom common runtimeClasspath.extendsFrom common developmentForge.extendsFrom common } processResources { filesMatching("META-INF/mods.toml") { expand "version": project.version } inputs.property "version", project.version } repositories { maven { url "https://www.cursemaven.com" } maven { name "Modmaven" url "https://modmaven.dev/" // For Gradle 5.1 and above, limit it to just AE2 content { includeGroup 'appeng' } } } sourceSets { serverComponent { compileClasspath += main.compileClasspath runtimeClasspath += main.runtimeClasspath } } processServerComponentResources { filesMatching("META-INF/mods.toml") { expand "version": project.version } inputs.property "version", project.version } loom { launches { all { arg "--mixin", "rei-jei-internals-workaround.mixins.json" } } forge { localMods { it.add(project(":jei-internals-workaround").sourceSets.main) } } } def depProjects = [":api", ":runtime", ":default-plugin"] dependencies { forge("net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}") modApi("me.shedaniel.cloth:cloth-config-forge:${cloth_config_version}") modApi("me.shedaniel:architectury-forge:${architectury_version}") common(project(path: ":jei-compatibility-layer", configuration: "namedElements")) { transitive false } shadowCommon(project(path: ":jei-compatibility-layer", configuration: "namedElements")) { transitive false } runtimeClasspath(project(path: ":jei-internals-workaround", configuration: "namedElements")) { transitive false } depProjects.forEach { common(project(path: it, configuration: "namedElements")) { transitive false } shadowCommon(project(path: it, configuration: "transformProductionForge")) { transitive false } } modRuntime("curse.maven:chiselsbits-231095:3176033") modRuntime("curse.maven:jumbofurnace-390880:3120970") modRuntime("curse.maven:cyclic-239286:3221427") modRuntime("curse.maven:mekanism-268560:3206392") modRuntime("curse.maven:mekanism-tools-268567:3206396") modRuntime("curse.maven:autoreglib-250363:3326041") modRuntime("curse.maven:ars-nouveau-401955:3442387") modRuntime("curse.maven:patchouli-306770:3374063") modRuntime("curse.maven:curios-309927:3343065") modRuntime("curse.maven:geckolib-388172:3428832") modRuntime("curse.maven:refined-storage-243076:3196167") modRuntime("appeng:appliedenergistics2:8.2.0") modRuntime("curse.maven:tcon-74072:3273213") modRuntime("curse.maven:mantle-74924:3273201") modRuntime("curse.maven:jer-240630:3066754") modRuntime("curse.maven:jep-417645:3198370") modRuntime("curse.maven:simple-storage-network-268495:3257204") modRuntime("curse.maven:create-328085:3536025") modRuntime("curse.maven:flywheel-486392:3535459") modRuntime("curse.maven:industrial-foregoing-266515:3446262") modRuntime("curse.maven:titanium-287342:3346366") modRuntime("curse.maven:extended-crafting-268387:3470453") modRuntime("curse.maven:cucumber-272335:3349690") modRuntime("curse.maven:crafttweaker-239197:3494644") modRuntime("curse.maven:jeitweaker-368718:3468722") modRuntime("curse.maven:eidolon-429625:3157832") // modRuntime("curse.maven:resourceful-bees-384508:3485315") modRuntime("curse.maven:thermal-expansion-69163:3404884") modRuntime("curse.maven:thermal-foundation-222880:3412300") modRuntime("curse.maven:cofh-core-69162:3407019") modRuntime("curse.maven:advanced-peripherals-431725:3525665") modRuntime("curse.maven:cc-tweaked-282001:3434680") modRuntime("curse.maven:ender-storage-245174:3361748") modRuntime("curse.maven:codechicken-242818:3528603") modRuntime("curse.maven:recipe-stages-280554:3492760") modRuntime("curse.maven:game-stages-268655:3437962") modRuntime("curse.maven:bookshelf-228525:3474499") modRuntime("curse.maven:kubejs-238086:3533307") modRuntime("curse.maven:rhino-416294:3525704") modRuntime("curse.maven:enchantment-descriptions-250419:3566132") } def modRuntime(str) { dependencies.modLocalRuntime(str) } shadowJar { configurations = [project.configurations.shadowCommon] classifier "dev-shadow" } remapJar { input.set shadowJar.archiveFile dependsOn shadowJar classifier null } jar { classifier "dev" } java { withSourcesJar() } sourcesJar { afterEvaluate { depProjects.forEach { def depSources = project(it).sourcesJar dependsOn depSources from depSources.archiveFile.map { zipTree(it) } } } } task serverOnlyJar(type: Jar, dependsOn: [remapJar]) { classifier "server-only" from(zipTree(remapJar.archiveFile.get().asFile)) { exclude "META-INF/mods.toml", "mezz/**", "me/shedaniel/rei/forge/RoughlyEnoughItemsForge.class", "me/shedaniel/rei/forge/JEIStub.class" } from(sourceSets.serverComponent.output) } tasks.build { dependsOn tasks.serverOnlyJar } components.java { withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { skip() } } publishing { publications { mavenFabric(MavenPublication) { artifactId = rootProject.name + "-" + project.name from components.java } ["api", "default-plugin"].forEach { projectName -> create(projectName + "Fabric", MavenPublication.class) { publication -> publication.artifactId = rootProject.name + "-" + projectName + "-forge" project.afterEvaluate { def project = project(":" + projectName) publication.artifact(project.fakeForgeJar) { classifier null } def remapSourcesJarTask = project.remapSourcesJar publication.artifact(remapSourcesJarTask) { builtBy remapSourcesJarTask classifier "sources" } } } } } } curseforge { if (project.hasProperty('danielshe_curse_api_key') || System.getenv('danielshe_curse_api_key') != null) { apiKey = project.hasProperty('danielshe_curse_api_key') ? project.property('danielshe_curse_api_key') : System.getenv('danielshe_curse_api_key') project { id = "310111" releaseType = "beta" changelogType = "html" changelog = rootProject.releaseChangelog addGameVersion "1.16.4" addGameVersion "1.16.5" addGameVersion "Java 8" addGameVersion "Forge" relations { requiredDependency "architectury-forge" requiredDependency "cloth-config-forge" requiredDependency "roughly-enough-items-hacks" } mainArtifact(tasks.getByName("remapJar")) { displayName = "[Forge $project.supported_version] v$project.version" } } project { id = "567899" releaseType = "release" changelogType = "html" changelog = rootProject.releaseChangelog addGameVersion "1.16.4" addGameVersion "1.16.5" addGameVersion "Java 8" addGameVersion "Forge" relations { requiredDependency "architectury-forge" requiredDependency "cloth-config-forge" } mainArtifact(tasks.getByName("serverOnlyJar")) { displayName = "[Forge $project.supported_version] v$project.version" } } } options { forgeGradleIntegration = false javaVersionAutoDetect = false } }