plugins {
    id 'com.github.johnrengelman.shadow'
    id "me.shedaniel.unified-publishing"
}

repositories {
    maven { url "https://api.modrinth.com/maven" }
    maven {
        name = 'NeoForged'
        url = 'https://maven.neoforged.net/releases'
    }
}


architectury {
    platformSetupLoomIde()
    neoForge()
}

loom {
    accessWidenerPath = project(":common").loom.accessWidenerPath
}

configurations {
    common {
        canBeResolved = true
        canBeConsumed = false
    }
    compileClasspath.extendsFrom common
    runtimeClasspath.extendsFrom common
    developmentNeoForge.extendsFrom common

    // Files in this configuration will be bundled into your mod using the Shadow plugin.
    // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files.
    shadowBundle {
        canBeResolved = true
        canBeConsumed = false
    }
    archivesBaseName = rootProject.archives_base_name + "-neoforge"
}

dependencies {
    neoForge "net.neoforged:neoforge:$rootProject.neoforge_version"
    modImplementation "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-neoforge"

    common(project(path: ':common', configuration: 'namedElements')) { transitive false }
    shadowBundle project(path: ':common', configuration: 'transformProductionNeoForge')
}

processResources {
    inputs.property 'version', project.version

    filesMatching('META-INF/neoforge.mods.toml') {
        expand version: project.version
    }
}

shadowJar {
    configurations = [project.configurations.shadowBundle]
    archiveClassifier = 'dev-shadow'
}

remapJar {
    input.set shadowJar.archiveFile
}

sourcesJar {
    def commonSources = project(":common").sourcesJar
    dependsOn commonSources
    from commonSources.archiveFile.map { zipTree(it) }
}

components.java {
    withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
        skip()
    }
}

unifiedPublishing {
    project {
        displayName = "VisualOverhaul v$project.version - NeoForge $project.minecraft_version"
        releaseType = "$project.release_type"
        changelog = releaseChangelog()
        gameVersions = []
        gameLoaders = ["neoforge"]

        mainPublication remapJar

        relations {
            depends {
                curseforge = "midnightlib"
                modrinth = "midnightlib"
            }
            includes {}
        }

        var CURSEFORGE_TOKEN = project.findProperty("CURSEFORGE_TOKEN") ?: System.getenv("CURSEFORGE_TOKEN")
        if (CURSEFORGE_TOKEN != null) {
            curseforge {
                token = CURSEFORGE_TOKEN
                id = rootProject.curseforge_id
                gameVersions.addAll "Java 21", project.minecraft_version
                releaseType = "alpha"
            }
        }

        var MODRINTH_TOKEN = project.findProperty("MODRINTH_TOKEN") ?: System.getenv("MODRINTH_TOKEN")
        if (MODRINTH_TOKEN != null) {
            modrinth {
                token = MODRINTH_TOKEN
                id = rootProject.modrinth_id
                version = "$project.version-$project.name"
                gameVersions.addAll project.minecraft_version
            }
        }
    }
}