plugins {
    id 'dev.architectury.loom' version '1.7-SNAPSHOT' apply false
    id 'architectury-plugin' version '3.4-SNAPSHOT'
    id 'com.github.johnrengelman.shadow' version '8.1.1' apply false
}

architectury {
    minecraft = project.minecraft_version
}

allprojects {
    group = rootProject.maven_group
    version = "$rootProject.mod_version-mc$rootProject.minecraft_version"
}

subprojects {
    apply plugin: 'dev.architectury.loom'
    apply plugin: 'architectury-plugin'
    apply plugin: 'maven-publish'

    base {
        // Set up a suffixed format for the mod jar names, e.g. `example-fabric`.
        archivesName = "$rootProject.archives_name-$project.name"
    }

    repositories {
        maven {
            name = 'ParchmentMC'
            url = 'https://maven.parchmentmc.org'
        }
        maven {
            name = "Curse Maven"
            url = "https://www.cursemaven.com"
            content {
                includeGroup "curse.maven"
            }
        }
        maven { url "https://jitpack.io" }
        maven { // KubeJS and Rhino
            url = "https://maven.latvian.dev/releases"
            content {
                includeGroup "dev.latvian.mods"
                includeGroup "dev.latvian.apps"
            }
        }
        // Dev dependencies
        maven { url = "https://maven.blamejared.com/" } // JEI
    }

    dependencies {
        minecraft "net.minecraft:minecraft:$rootProject.minecraft_version"
        mappings(loom.layered {
            officialMojangMappings()
            parchment("org.parchmentmc.data:parchment-$rootProject.minecraft_version:$rootProject.parchment_version@zip")
        })
    }

    processResources {
        from(rootProject.file("LICENSE")) {
            rename { "META-INF/${it}_$rootProject.archives_name" }
        }
    }

    java {
        // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
        // if it is present.
        // If you remove this line, sources will not be generated.
        withSourcesJar()

        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }

    tasks.withType(JavaCompile).configureEach {
        it.options.release = 17
    }

    // Configure Maven publishing.
    publishing {
        publications {
            mavenJava(MavenPublication) {
                artifactId = base.archivesName.get()
                from components.java
            }
        }

        // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
        repositories {
            // Add repositories to publish to here.
            // Notice: This block does NOT have the same function as the block in the top level.
            // The repositories here will be used for publishing your artifact, not for
            // retrieving dependencies.
        }
    }
}
