plugins {
    id 'fabric-loom' version '1.2-SNAPSHOT' apply(false)
    id 'net.minecraftforge.gradle' version '[6.0,6.2)' apply(false)
    id 'org.spongepowered.gradle.vanilla' version '0.2.1-SNAPSHOT' apply(false)
    id("org.spongepowered.mixin") version "0.7-SNAPSHOT" apply(false)
}

subprojects {
    apply plugin: 'java'

    java.toolchain.languageVersion = JavaLanguageVersion.of(17)
    java.withSourcesJar()
    java.withJavadocJar()
        
    jar {
        from(rootProject.file("LICENSE")) {
            rename { "${it}_${mod_name}" }
        }
        manifest {
            attributes([
                'Specification-Title'     : mod_name,
                'Specification-Vendor'    : mod_author,
                'Specification-Version'   : project.jar.archiveVersion,
                'Implementation-Title'    : project.name,
                'Implementation-Version'  : project.jar.archiveVersion,
                'Implementation-Vendor'   : mod_author,
                'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
                'Timestamp'               : System.currentTimeMillis(),
                'Built-On-Java'           : "${System.getProperty('java.vm.version')} (${System.getProperty('java.vm.vendor')})",
                'Built-On-Minecraft'      : minecraft_version
            ])
        }
    }

    sourcesJar {
        from(rootProject.file("LICENSE")) {
            rename { "${it}_${mod_name}" }
        }
    }

    repositories {
        mavenCentral()
        maven {
            name = 'Sponge / Mixin'
            url = 'https://repo.spongepowered.org/repository/maven-public/'
        }
        maven {
            name = 'BlameJared Maven (JEI / CraftTweaker / Bookshelf)'
            url = 'https://maven.blamejared.com'
        }

        // CC: Tweaked
        maven {
            url "https://squiddev.cc/maven/"
            content {
                includeGroup("cc.tweaked")
                includeModule("org.squiddev", "Cobalt")
            }
        }
        // Curseforge
        repositories {
            maven {
                url "https://cursemaven.com"
            }
        }
        // Create Fabric 1.20 (Jeez that's a lot of mavens)
//        maven {
//            name "devOSSnapshots"
//            url "https://mvn.devos.one/snapshots"
//        }
//        maven {
//            name "tterrag maven"
//            url "https://maven.tterrag.com/"
//        }
//        maven {
//            url "https://maven.jamieswhiteshirt.com/libs-release"
//            content {
//                includeGroup "com.jamieswhiteshirt"
//            }
//        }
    }

    tasks.withType(JavaCompile).configureEach {
    
        it.options.encoding = 'UTF-8'
        it.options.getRelease().set(17)
    }

    processResources {
        filesMatching(['pack.mcmeta', 'fabric.mod.json', 'mods.toml', '*.mixins.json']) {
            expand project.properties
        }
    }

    // Disables Gradle's custom module metadata from being published to maven. The
    // metadata includes mapped dependencies which are not reasonably consumable by
    // other mod developers.
    tasks.withType(GenerateModuleMetadata).configureEach {
        enabled = false
    }
}