plugins {
    id 'idea'
    id 'dev.architectury.loom' version '1.9-SNAPSHOT' apply false
    id 'architectury-plugin' version '3.4-SNAPSHOT'
    id 'com.github.johnrengelman.shadow' version '8.1.1' apply false
    id "me.shedaniel.unified-publishing" version "0.1.+" apply false
}

architectury {
    minecraft = project.minecraft_version
}

allprojects {
    group = rootProject.maven_group
    version = rootProject.mod_version + "+mc" + rootProject.minecraft_version

    configurations.configureEach {
        resolutionStrategy.force "org.lwjgl:lwjgl-stb:3.3.1"
        resolutionStrategy.force "org.lwjgl:lwjgl-opengl:3.3.1"
        resolutionStrategy.force "org.lwjgl:lwjgl-openal:3.3.1"
        resolutionStrategy.force "org.lwjgl:lwjgl-tinyfd:3.3.1"
        resolutionStrategy.force "org.lwjgl:lwjgl-jemalloc:3.3.1"
        resolutionStrategy.force "org.lwjgl:lwjgl-glfw:3.3.1"
        resolutionStrategy.force "org.lwjgl:lwjgl:3.3.1"
    }
}

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 { url = "https://maven.parchmentmc.org" }
        maven { url = "https://api.modrinth.com/maven" }
        maven { url = "https://maven.createmod.net" }
        maven { url = "https://maven.tterrag.com/" }
    }

    loom {
        silentMojangMappingsLicense()
    }

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

    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.
        }
    }
}

idea {
    // Tell IDEA to always download sources/javadoc artifacts from maven.
    module {
        downloadJavadoc = true
        downloadSources = true
    }
}
