String devName = "main" String releaseName = "release" import proguard.gradle.ProGuardTask buildscript { repositories { maven { url = 'https://maven.minecraftforge.net' } maven { url = 'https://repo.spongepowered.org/repository/maven-public' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.1', changing: true classpath "org.spongepowered:mixingradle:0.7.+" classpath 'com.guardsquare:proguard-gradle:7.1.0' } } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'java' group = project.modGroup version = project.modVersion sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' tasks.withType(JavaCompile) { configure(options) { options.compilerArgs.add("-XDignore.symbol.file=true") options.encoding = 'utf-8' } } minecraft { mappings channel: 'stable', version: '39-1.12' accessTransformer = file('src/main/resources/client_at.cfg') runs { client { workingDirectory project.file('run') jvmArgs = ["-Dfml.coreMods.load=de.com.baseband.client.DevStub", "-Xmx700M"] args = ["--userType", "mojang", "--username", "qukn", "--accessToken", "eyJraWQiOiJhYzg0YSIsImFsZyI6IkhTMjU2In0.eyJ4dWlkIjoiMjUzNTQyNTU0MzA3NTkyNSIsImFnZyI6IkFkdWx0Iiwic3ViIjoiNGU0YmNlN2UtZDBkZi00MjM3LWFhNTUtMjZmZTVhNjY3ZmQ4IiwiYXV0aCI6IlhCT1giLCJucyI6ImRlZmF1bHQiLCJyb2xlcyI6W10sImlzcyI6ImF1dGhlbnRpY2F0aW9uIiwiZmxhZ3MiOlsidHdvZmFjdG9yYXV0aCIsIm1zYW1pZ3JhdGlvbl9zdGFnZTQiLCJvcmRlcnNfMjAyMiIsIm11bHRpcGxheWVyIl0sInByb2ZpbGVzIjp7Im1jIjoiODZhMzJmY2UtYTk0Ni00MzY2LWI0YTAtMDk3YTI5MDcyZTU0In0sInBsYXRmb3JtIjoiUENfTEFVTkNIRVIiLCJuYmYiOjE3MTY1NTc3MzQsImV4cCI6MTcxNjY0NDEzNCwiaWF0IjoxNzE2NTU3NzM0fQ.Bt1AahWJrQqv8iJe8JH4T2IczdKzDjPnN-z7YLpcpFw", "--uuid", "86a32fcea9464366b4a0097a29072e54"] property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' property 'forge.logging.console.level', 'debug' } } } repositories { maven { name = 'spongepowered-repo' url = 'https://repo.spongepowered.org/maven' } maven { name = "jitpack.io" url = "https://jitpack.io" } mavenCentral() maven { url = 'https://git.tudbut.de/api/packages/TudbuT/maven' } maven { url = 'https://git.tudbut.de/api/packages/BaseBand/maven' } } configurations { jarLibs reloadQuickly { resolutionStrategy.cacheDynamicVersionsFor(30, 'seconds') resolutionStrategy.cacheChangingModulesFor(30, 'seconds') } } dependencies { minecraft('net.minecraftforge:forge:1.12.2-14.23.5.2860') jarLibs('com.github.LabyStudio:java-spotify-api:+:all') jarLibs('org.spongepowered:mixin:0.7.11-SNAPSHOT') { exclude module: 'launchwrapper' exclude module: 'guava' exclude module: 'gson' exclude module: 'commons-io' exclude module: 'log4j-core' } reloadQuickly jarLibs('de.tudbut:tuddylib:+') // should NOT go into the jar. implementation('com.github.cabaletta:baritone:1.2.14') annotationProcessor('org.spongepowered:mixin:0.8.5:processor') { exclude module: 'gson' } implementation configurations.jarLibs } processResources { duplicatesStrategy = DuplicatesStrategy.EXCLUDE inputs.property 'version', project.version inputs.property 'mcversion', '1.12.2' from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' expand 'version': project.version, 'mcversion': '1.12.2' } from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } rename '(.+_at.cfg)', 'META-INF/$1' } mixin { defaultObfuscationEnv 'searge' add sourceSets.main, 'mixins.baseband.refmap.json' } jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE from { configurations.jarLibs.collect { it.isDirectory() ? it : zipTree(it) } } { exclude "LICENSE.txt", "META-INF/MANIFSET.MF", "META-INF/maven/**", "META-INF/*.RSA", "META-INF/*.SF" } manifest.attributes ( 'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker', 'TweakOrder': '0', 'FMLCorePluginContainsFMLMod': 'true', 'FMLCorePlugin': 'de.com.baseband.client.DevStub', 'ForceLoadAsMod': 'true' ) archiveFileName = "BaseBand-${devName}.jar" } tasks.register('releaseJar', Jar) { dependsOn "jar" dependsOn "reobfJar" from(zipTree(jar.archiveFile)) { exclude 'de/com/baseband/client/DevStub.class' exclude 'de/com/baseband/client/DevStub.java' exclude 'org/spongepowered/**' exclude 'META-INF/**' exclude 'mcmod.info' } manifest.attributes( 'ReleaseJar': 'true' ) archiveFileName = "BaseBand-${releaseName}.jar" } build.dependsOn(releaseJar) def proguardBuildDir = "${buildDir}/proguard" def proguardDir = "proguard" tasks.register('proguard', ProGuardTask) { dependsOn jar dependsOn "reobfJar" configuration "${proguardDir}/proguard.cfg" injars jar.archiveFile outjars "${proguardBuildDir}/BaseBand-${devName}.jar" libraryjars "${proguardDir}/rt.jar" libraryjars configurations.compileClasspath.resolve().collect() { if(it.getName().contains("mapped_stable")) { return new File("build/fg_cache/net/minecraftforge/forge/1.12.2-14.23.5.2860/forge-1.12.2-14.23.5.2860-mci.jar") } else return it; } dump "${proguardBuildDir}/dump-${devName}.txt" printmapping "${proguardBuildDir}/mapping-${devName}.txt" printconfiguration "${proguardBuildDir}/configuration.txt" } tasks.register('proguardRelease', ProGuardTask) { dependsOn tasks.releaseJar configuration "${proguardDir}/proguard.cfg" injars tasks.releaseJar.archiveFile outjars "${proguardBuildDir}/BaseBand-${releaseName}.jar" libraryjars "${proguardDir}/rt.jar" libraryjars configurations.compileClasspath.resolve().collect() { if(it.getName().contains("mapped_stable")) { return new File("build/fg_cache/net/minecraftforge/forge/1.12.2-14.23.5.2860/forge-1.12.2-14.23.5.2860-mci.jar") } else return it; } dump "${proguardBuildDir}/dump-${releaseName}.txt" printmapping "${proguardBuildDir}/mapping-${releaseName}.txt" printconfiguration "${proguardBuildDir}/configuration.txt" }