plugins { id "java" id "com.github.johnrengelman.shadow" version "6.1.0" id "net.minecraftforge.gradle.forge" version "6f53277" id "org.jetbrains.kotlin.jvm" version "1.5.31" } group "io.polyfrost" version "1.0-SNAPSHOT" archivesBaseName = "OneConfig" sourceCompatibility = targetCompatibility = 1.8 compileJava.options.encoding = 'UTF-8' minecraft { version = "1.8.9-11.15.1.2318-1.8.9" runDir = "run" mappings = "stable_22" makeObfSourceJar = false } configurations { shade implementation.extendsFrom(shade) } repositories { } dependencies { } /** * This task simply replaces the `${version}` and `${mcversion}` properties in the mcmod.info with the data from Gradle */ processResources { // this will ensure that this task is redone when the versions change. inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' // replace version and mcversion expand 'version': project.version, 'mcversion': project.minecraft.version } // copy everything else, thats not the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } } /** * This task simply moves resources so they can be accessed at runtime, Forge is quite weird isn't it */ task moveResources { doLast { ant.move file: "${buildDir}/resources/main", todir: "${buildDir}/classes/java" } } moveResources.dependsOn processResources classes.dependsOn moveResources shadowJar { archiveClassifier.set('dep') configurations = [project.configurations.shade] duplicatesStrategy DuplicatesStrategy.EXCLUDE } compileKotlin { kotlinOptions { jvmTarget = "1.8" } } reobf { shadowJar { mappingType = "SEARGE" } } tasks.reobfShadowJar.mustRunAfter shadowJar afterEvaluate { build.dependsOn reobfShadowJar }