plugins { id "net.minecraftforge.gradle.forge" version "6f53277" id "com.github.johnrengelman.shadow" version "6.1.0" id 'org.spongepowered.mixin' version "d5f9873" id 'org.jetbrains.kotlin.jvm' version "1.6.10" id "net.kyori.blossom" version "1.3.0" id "java" } version = mod_version group = "com.raeids" archivesBaseName = mod_name blossom { String className = "src/main/kotlin/com/raeids/stratus/Stratus.kt" replaceToken("@VER@", project.version, className) replaceToken("@NAME@", mod_name, className) replaceToken("@ID@", mod_id, className) } 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 clientRunArgs += "--mixin mixins.${mod_id}.json" clientRunArgs += '--tweakClass gg.essential.loader.stage0.EssentialSetupTweaker' } configurations { // Creates an extra configuration that implements `implementation` to be used later as the configuration that shades libraries include implementation.extendsFrom(include) } repositories { mavenCentral() maven { url 'https://jitpack.io/' } maven { url 'https://repo.spongepowered.org/repository/maven-public/' } maven { url 'https://repo.sk1er.club/repository/maven-releases/' } } dependencies { include ('gg.essential:loader-launchwrapper:1.1.3') { transitive = false } implementation 'gg.essential:essential-1.8.9-forge:1626+release-launch' annotationProcessor 'org.spongepowered:mixin:0.7.11-SNAPSHOT' } /** * 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", version inputs.property "mcversion", minecraft.version inputs.property "name", mod_name inputs.property "id", mod_id filesMatching("mcmod.info") { expand( "id": mod_id, "name": mod_name, "version": version, "mcversion": minecraft.version ) } filesMatching("mixins.${mod_id}.json") { expand("id": mod_id) } rename '(.+_at.cfg)', 'META-INF/$1' } jar { manifest.attributes( 'ModSide': 'CLIENT', 'ForceLoadAsMod': true, 'TweakClass': 'gg.essential.loader.stage0.EssentialSetupTweaker', 'MixinConfigs': "mixins.${mod_id}.json" ) enabled = false } /** * 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/kotlin" } } moveResources.dependsOn processResources classes.dependsOn moveResources mixin { disableRefMapWarning = true defaultObfuscationEnv searge add sourceSets.main, "mixins.${mod_id}.refmap.json" } // This adds support to ("include") libraries into our JAR shadowJar { archiveClassifier.set('') configurations = [project.configurations.include] duplicatesStrategy DuplicatesStrategy.EXCLUDE } reobf { shadowJar { classpath = sourceSets.main.compileClasspath } } tasks.reobfJar.dependsOn tasks.shadowJar sourceSets { dummy main { compileClasspath += dummy.output ext.refMap = "mixins.${mod_id}.refmap.json" } }