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 (CrT / Bookshelf)'
            url = 'https://maven.blamejared.com'
        }

        maven { url 'https://squiddev.cc/maven/' }
        maven { url "https://cursemaven.com"}
    }

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

    // 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) {

        enabled = false
    }
}