import groovy.json.JsonSlurper import groovy.json.JsonOutput buildscript { repositories { mavenLocal() jcenter() google() } dependencies { classpath 'com.guardsquare:proguard-gradle:7.0.1' } } plugins { id 'fabric-loom' version '0.7-SNAPSHOT' id 'maven-publish' } sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group sourceSets { testmod { compileClasspath += main.compileClasspath runtimeClasspath += main.runtimeClasspath } } repositories { maven { url = "https://maven.terraformersmc.com/releases/"} } dependencies { //to change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modImplementation "com.terraformersmc:modmenu:1.16.8" afterEvaluate { testmodImplementation sourceSets.main.output } } processResources { inputs.property "version", project.version from(sourceSets.main.resources.srcDirs) { include "fabric.mod.json" expand "version": project.version } from(sourceSets.main.resources.srcDirs) { exclude "fabric.mod.json" } doLast { def jsonMinifyStart = System.currentTimeMillis() def jsonMinified = 0 def jsonBytesSaved = 0 fileTree(dir: outputs.files.asPath, include: '**/*.json').each { File file = it jsonMinified++ def oldLength = file.length() file.text = JsonOutput.toJson(new JsonSlurper().parse(file)) jsonBytesSaved += oldLength - file.length() println(it) } println('Minified ' + jsonMinified + ' json files. Saved ' + jsonBytesSaved + ' bytes. Took ' + (System.currentTimeMillis() - jsonMinifyStart) + 'ms.') } } // 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" } // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task // if it is present. // If you remove this task, sources will not be generated. task sourcesJar(type: Jar, dependsOn: classes) { classifier = "sources" from sourceSets.main.allSource } // configure the maven publication publishing { publications { mavenJava(MavenPublication) { // add all the jars that should be included when publishing to maven artifact(remapJar) { builtBy remapJar } artifact(sourcesJar) { builtBy remapSourcesJar } } } // select the repositories you want to publish to repositories { // uncomment to publish to the local maven // mavenLocal() } } // technician what does this do tasks.withType(net.fabricmc.loom.task.AbstractRunTask) { classpath += sourceSets.testmod.runtimeClasspath classpath += sourceSets.testmod.output } task ('proguard', type: proguard.gradle.ProGuardTask) { configuration 'proguard.conf' verbose injars 'build/libs/omega-config-1.0.0.jar' outjars 'build/libs/out.jar' printmapping 'out.map' keepparameternames renamesourcefileattribute 'SourceFile' keepattributes 'Signature,Exceptions,InnerClasses,PermittedSubclasses,EnclosingMethod,Deprecated,SourceFile,LineNumberTable' keepattributes '*Annotation*' keep 'public class * { \ public protected *; \ }' keepclassmembernames 'class * { \ java.lang.Class class$(java.lang.String); \ java.lang.Class class$(java.lang.String, boolean); \ }' keepclassmembers 'class draylar.omegaconfig.mixin.* {\ ;\ ();\ ;\ }' }