plugins {
    id 'com.gradleup.shadow'
}

architectury {
    platformSetupLoomIde()
    fabric()
}

configurations {
    common {
        canBeResolved = true
        canBeConsumed = false
    }
    compileClasspath.extendsFrom common
    runtimeClasspath.extendsFrom common
    developmentFabric.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
    }
}

dependencies {
    modImplementation "net.fabricmc:fabric-loader:$rootProject.fabric_loader_version"

    // Fabric API. This is technically optional, but you probably want it anyway.
    modImplementation "net.fabricmc.fabric-api:fabric-api:$rootProject.fabric_api_version"

    // Architectury API. This is optional, and you can comment it out if you don't need it.
    modImplementation "dev.architectury:architectury-fabric:$rootProject.architectury_api_version"

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

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

    filesMatching('fabric.mod.json') {
        expand version: inputs.properties.version
    }
}

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

remapJar {
    inputFile.set shadowJar.archiveFile
}

fabricApi {
    configureDataGeneration() {
        client = true
        modId = project.archives_name
        createSourceSet = false
    }
}

loom {
    runs {
        datagen {
            client()
            name "Data Generation"
            vmArg "-Dfabric-api.datagen.output-dir=${project(':common').file('src/main/generated')}"
            vmArg "-Dfabric-api.datagen.modid=${project.archives_name}"

            runDir "build/datagen"
        }
    }
}