plugins {
    id 'fabric-loom' version '1.11-SNAPSHOT'
    id 'maven-publish'
}

repositories {
    maven {
        url "https://repo.papermc.io/repository/maven-public/"
    }
}

sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21

archivesBaseName = project.archives_base_name
version = project.mod_version
group = project.maven_group

configurations {
    shade.transitive = false
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'

    minecraft "com.mojang:minecraft:${project.minecraft_version}"
    mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
    modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
    modImplementation include("com.velocitypowered:velocity-native:3.4.0-SNAPSHOT")
}

test {
    useJUnitPlatform()
}

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

    filesMatching("fabric.mod.json") {
        expand "version": project.version
    }
}

// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

java {
    // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
    // if it is present.
    // If you remove this line, sources will not be generated.
    withSourcesJar()
}

jar {
    from "LICENSE"
}

// configure the maven publication
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

afterEvaluate {
    tasks.getByName("configureClientLaunch").doFirst {
        loom {
            runs {
                all {
                    property("fabric.development=true")
                    property("mixin.hotSwap")
                    // vmArg("-javaagent:${dependencies.module(group = "net.fabricmc", name = "sponge-mixin")}")
                    def mixinJarFile = configurations.compileClasspath.files {
                        it.group == "net.fabricmc" && it.name == "sponge-mixin"
                    }.find { true }
                    vmArg("-javaagent:$mixinJarFile")

                    ideConfigGenerated = true
                }
            }
        }
    }
}

loom {
    accessWidenerPath = file("src/main/resources/krypton.accesswidener")
}
