plugins {
    id 'java-library'
    id 'com.github.johnrengelman.shadow' version '5.2.0'
    id 'maven-publish'
    id 'java'
}

dependencies {
    implementation project(":eco-core").getSubprojects()
}

allprojects {
    apply plugin: 'java'
    apply plugin: 'maven-publish'
    apply plugin: 'com.github.johnrengelman.shadow'

    repositories {
        mavenCentral()
        jcenter()
        mavenLocal()
        maven { url 'https://jitpack.io' }
        maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
        maven { url 'https://repo.codemc.org/repository/nms/' }
        maven { url 'https://repo.codemc.org/repository/maven-public' }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
        maven { url 'https://oss.sonatype.org/content/groups/public/' }
        maven { url 'https://maven.enginehub.org/repo/' }
        maven { url 'https://ci.ender.zone/plugin/repository/project/' }
        maven { url 'https://ci.ender.zone/plugin/repository/everything/' }
        maven { url 'https://repo.md-5.net/content/repositories/snapshots/' }
        maven { url 'https://repo.dmulloy2.net/nexus/repository/public/' }
        maven { url 'https://papermc.io/repo/repository/maven-public/' }
        maven { url 'https://repo.maven.apache.org/maven2/' }
        maven { url 'https://repo.dustplanet.de/artifactory/ext-release-local/' }
        maven { url 'https://libraries.minecraft.net/' }
        maven { url 'https://repo.spongepowered.org/maven/' }
        maven { url 'https://org.kitteh.pastegg' }
        maven { url 'https://repo.mikeprimm.com/' }
        maven { url 'https://maven.sk89q.com/repo/' }
        maven { url 'https://github.com/factions-site/repo/raw/public/' }
    }

    jar {
        onlyIf { !sourceSets.main.allSource.files.isEmpty() }
    }

    compileJava {
        onlyIf { !sourceSets.main.allSource.files.isEmpty() }
    }

    dependencies {
        compileOnly 'com.willfp:eco:4.2.0'

        compileOnly 'org.jetbrains:annotations:19.0.0'

        compileOnly 'org.projectlombok:lombok:1.18.16'
        annotationProcessor 'org.projectlombok:lombok:1.18.16'

        testCompileOnly 'org.projectlombok:lombok:1.18.16'
        testAnnotationProcessor 'org.projectlombok:lombok:1.18.16'
    }

    tasks.withType(JavaCompile) {
        options.deprecation = true
        options.encoding = 'UTF-8'
    }

    processResources {
        filesNotMatching(["**/*.png", "**/models/**", "**/textures/**"]) {
            expand projectVersion: project.version
        }
    }

    compileJava.options.encoding = 'UTF-8'
    compileJava.dependsOn clean

    build.dependsOn shadowJar
}

tasks.withType(Jar) {
    destinationDirectory = file("$rootDir/bin/")
}

clean.doLast {
    file("${rootDir}/bin").deleteDir()
}

shadowJar {
    archiveFileName = findProperty("plugin-name") + " v" + findProperty("version") + ".jar"
}

jar {
    archiveFileName = findProperty("plugin-name") + " v" + findProperty("version") + ".jar"
}

group = 'com.willfp'
archivesBaseName = project.name
version = findProperty("version")
java.sourceCompatibility = JavaVersion.VERSION_1_8

compileJava.options.encoding = 'UTF-8'

publishing {
    publications {
        maven(MavenPublication) {
            from(components.java)
        }
    }
}