buildscript {
    repositories {
        mavenCentral()
        maven { url = "https://repo.spongepowered.org/maven" }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
    }
}

apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'eclipse'

sourceSets {
    main.java.srcDirs = ['src/main/java', '../DynmapCore/src/main/java', '../DynmapCoreAPI/src/main/java']
    main.resources.srcDirs = ['src/main/resources', '../DynmapCore/src/main/resources', '../DynmapCoreAPI/src/main/resources']
}

eclipse {
    project {
        name = "Dynmap(Forge-Legacy-1.12.2)"
    }
}

dependencies {
    implementation 'javax.servlet:javax.servlet-api:3.1'
    implementation'org.eclipse.jetty:jetty-server:9.4.26.v20200117'
    implementation 'org.eclipse.jetty:jetty-servlet:9.4.26.v20200117'
    implementation 'com.googlecode.json-simple:json-simple:1.1.1'
    implementation 'org.yaml:snakeyaml:1.23'	// DON'T UPDATE - NEWER ONE TRIPS ON WINDOWS ENCODED FILES
    implementation 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20180219.1'
    implementation 'org.postgresql:postgresql:42.2.18'
    implementation 'io.github.linktosriram.s3lite:core:0.0.2-SNAPSHOT'
    implementation 'io.github.linktosriram.s3lite:api:0.0.2-SNAPSHOT'
    implementation 'io.github.linktosriram.s3lite:http-client-url-connection:0.0.2-SNAPSHOT'
    implementation 'io.github.linktosriram.s3lite:http-client-spi:0.0.2-SNAPSHOT'
    implementation 'io.github.linktosriram.s3lite:util:0.0.2-SNAPSHOT'
    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.1'
    implementation 'com.sun.xml.bind:jaxb-impl:3.0.0'
    implementation 'com.googlecode.json-simple:json-simple:1.1.1'
    implementation 'org.yaml:snakeyaml:1.23'
    implementation 'org.spongepowered:spongeapi:7.0.0'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8
ext.buildNumber = System.getenv().BUILD_NUMBER ?: "Dev"

repositories {
    mavenCentral()                                          // Maven Central
    maven { url = 'https://repo.spongepowered.org/maven' }  // SpongePowered
    maven { url = 'https://jitpack.io/' }                   // JitPack
}

minecraft {
    version = "1.12.2-14.23.5.2847"
    mappings = "snapshot_20180814"
    runDir = 'run'
    replaceIn "Version.java"
    replace "@VERSION@", project.version + '-' + project.ext.buildNumber
    replace "@BUILD_NUMBER@", project.ext.buildNumber
}

project.archivesBaseName = "${project.archivesBaseName}-forge-1.12.2"

processResources {
    // replace stuff in mcmod.info, nothing else
    filesMatching([
        'core.yml',
        'lightings.txt',
        'perspectives.txt',
        'shaders.txt',
        'mcmod.info',
        'extracted/web/version.js',
        'extracted/web/index.html',
        'extracted/web/login.html'
    ]) {
        // replace version and mcversion
        expand(
            buildnumber: project.parent.ext.globals.buildNumber,
            version: project.version,
        	mcversion: "1.12.2"
        )
    }
}

shadowJar {
    dependencies {
        include(dependency('com.googlecode.json-simple:json-simple:'))
        include(dependency('org.yaml:snakeyaml:'))
        include(dependency('com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:'))
        include(dependency('javax.servlet::'))
        include(dependency('org.eclipse.jetty::'))
        include(dependency('org.eclipse.jetty.orbit:javax.servlet:'))
        include(dependency('org.postgresql:postgresql:'))
        include(dependency('io.github.linktosriram.s3lite:core:'))
        include(dependency('io.github.linktosriram.s3lite:api:'))
        include(dependency('io.github.linktosriram.s3lite:http-client-url-connection:'))
        include(dependency('io.github.linktosriram.s3lite:http-client-spi:'))
        include(dependency('io.github.linktosriram.s3lite:util:'))
        include(dependency('jakarta.xml.bind::'))
        include(dependency('com.sun.xml.bind::'))
        exclude("META-INF/maven/**")
        exclude("META-INF/services/**")
	}
	relocate('org.json.simple', 'org.dynmap.json.simple')
	relocate('org.yaml.snakeyaml', 'org.dynmap.snakeyaml')
	relocate('org.eclipse.jetty', 'org.dynmap.jetty')
	relocate('org.owasp.html', 'org.dynmap.org.owasp.html')
	relocate('javax.servlet', 'org.dynmap.javax.servlet' )
	relocate('org.postgresql', 'org.dynmap.org.postgresql')
	relocate('io.github.linktosriram.s3lite', 'org.dynmap.s3lite')    
    archiveName = "Dynmap-${parent.version}-forge-1.12.2.jar"
    destinationDir = file '../target'
    manifest {
        attributes 'FMLAT': 'dynmap_at.cfg'
    }
}

shadowJar.doLast {
    task ->
        ant.checksum file: task.archivePath
}


reobf {
    shadowJar {
        mappingType = 'SEARGE'
    }
}

task deobfJar(type: Jar) {
    from sourceSets.main.output
    classifier = 'dev'
}

artifacts {
    archives deobfJar
}

build.dependsOn(shadowJar)
