buildscript {
    repositories {
        // These repositories are only for Gradle plugins, put any other repositories in the repository block further below
        maven { url = 'https://maven.minecraftforge.net' }
        mavenCentral()
    }
    dependencies {
        classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
    }
}
apply plugin: 'net.minecraftforge.gradle'
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

version = '1.12.2'
group = 'de.ellpeck.prettypipes' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'PrettyPipes'

if (System.getenv('BUILD_NUMBER') != null) {
    version += "." + System.getenv('BUILD_NUMBER')
}

java.toolchain.languageVersion = JavaLanguageVersion.of(17)

minecraft {
    mappings channel: 'official', version: '1.18.2'

    runs {
        client {
            workingDirectory project.file('run')

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'info'

            mods {
                prettypipes {
                    source sourceSets.main
                }
            }
        }

        server {
            workingDirectory project.file('run')

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'info'

            mods {
                prettypipes {
                    source sourceSets.main
                }
            }
        }

        data {
            workingDirectory project.file('run')

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'info'

            args '--mod', 'prettypipes', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/'), '--existing', file('src/generated/resources')

            mods {
                prettypipes {
                    source sourceSets.main
                }
            }
        }

        all {
            lazyToken('minecraft_classpath') {
                configurations.embed.copyRecursive().resolve().collect { it.absolutePath }.join(File.pathSeparator)
            }
        }
    }
}

sourceSets.main.resources {
    srcDir 'src/generated/resources'
}

repositories {
    mavenCentral()
    maven {
        url = "https://dvs1.progwml6.com/files/maven"
    }
    maven {
        url = "https://www.cursemaven.com"
    }
}

configurations {
    embed
    implementation.extendsFrom(embed)
}

dependencies {
    minecraft 'net.minecraftforge:forge:1.18.2-40.0.32'
    embed 'org.jgrapht:jgrapht-core:1.5.1'

    compileOnly fg.deobf("mezz.jei:jei-1.18.2:9.5.5.174:api")
    runtimeOnly fg.deobf("mezz.jei:jei-1.18.2:9.5.5.174")

    // to test the rf requiring and crafting stuff
/*    runtimeOnly fg.deobf("curse.maven:powah-352656:3057732")
    runtimeOnly fg.deobf("curse.maven:lollipop-347954:3057731")
    runtimeOnly fg.deobf("curse.maven:mcjtylib-233105:3131241")
    runtimeOnly fg.deobf("curse.maven:rftools-base-326041:3140147")
    runtimeOnly fg.deobf("curse.maven:rftools-utility-342466:3152948")*/
}

// Example for how to get properties into the manifest for reading by the runtime..
jar {
    manifest {
        attributes([
                "Specification-Title"     : "prettypipes",
                "Specification-Vendor"    : "Ellpeck",
                "Specification-Version"   : "1", // We are version 1 of ourselves
                "Implementation-Title"    : project.name,
                "Implementation-Version"  : "${version}",
                "Implementation-Vendor"   : "Ellpeck",
                "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
        ])
    }
    from configurations.embed.collect { it.isDirectory() ? it : zipTree(it) }
}

task deobfJar(type: Jar) {
    from(sourceSets.main.output)
    archiveName = "${baseName}-${version}-deobf.${extension}"
}

task sourcesJar(type: Jar) {
    from(sourceSets.main.allSource)
    archiveName = "${baseName}-${version}-sources.${extension}"
}

artifacts {
    archives deobfJar
    archives sourcesJar
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId project.group
            artifactId project.archivesBaseName
            version project.version
            from components.java

            artifact deobfJar {
                classifier 'deobf'
            }

            artifact sourcesJar {
                classifier 'sources'
            }

            pom.withXml {
                def node = asNode()
                if (node.dependencies.size() > 0)
                    node.remove(node.dependencies)
            }
        }
    }
    repositories {
        maven {
            url "file://" + System.getenv("local_maven")
        }
    }
}
