buildscript { repositories { mavenCentral() maven { name = "forge" url = "https://maven.minecraftforge.net/" } } dependencies { classpath ('com.anatawa12.forge:ForgeGradle:1.2-1.1.+') { changing = true } } } plugins { id 'java-library' id 'maven-publish' // id 'com.github.johnrengelman.shadow' version '6.1.0' // Use the latest version } apply plugin: 'forge' // These settings allow you to choose what version of Java you want to be compatible with. Forge 1.7.10 runs on Java 6 to 8. sourceCompatibility = 1.8 targetCompatibility = 1.8 version = project.version group = project.group def yourMixinConfig = 'mixins.cindercore_modlist.json' def refMapForYourConfig = 'mixins.cindercore_modlist.refmap.json' def relativePathToMixinAP = 'libs/mixin-0.8-SNAPSHOT.jar' def refMap = 'src/main/resources/' + refMapForYourConfig def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg" repositories { flatDir { dirs 'libs' } maven { name = 'sponge' url = 'https://repo.spongepowered.org/repository/maven-public' } } dependencies { // implementation 'com.google.code.gson:gson:2.8.6' implementation('org.spongepowered:mixin:0.7.11-SNAPSHOT') { // Mixin includes a lot of dependencies that are too up-to-date exclude module: 'launchwrapper' exclude module: 'guava' exclude module: 'gson' exclude module: 'commons-io' exclude module: 'log4j-core' } // implementation name: 'mixin-0.8-SNAPSHOT', ext: 'jar' // implementation name: 'SpongeMixins-1.5.0', ext: 'jar' implementation name: 'cindercore', ext: 'jar' } minecraft { version = project.minecraft_version + "-" + project.forge_version runDir = "run" } 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 values in only mcmod.info. filesMatching('mcmod.info') { // Replace version and mcversion. expand 'version':project.version, 'mcversion':project.minecraft.version } } // Ensures that the encoding of source files is set to UTF-8, see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html tasks.withType(JavaCompile) { options.encoding = "UTF-8" } // This task creates a .jar file containing the source code of this mod. task sourcesJar(type: Jar, dependsOn: classes) { classifier = "sources" from sourceSets.main.allSource } // This task creates a .jar file containing a deobfuscated version of this mod, for other developers to use in a development environment. task devJar(type: Jar) { classifier = "dev" from sourceSets.main.output } // Creates the listed artifacts on building the mod. artifacts { archives sourcesJar archives devJar } // This block configures any maven publications you want to make. publishing { publications { mavenJava(MavenPublication) { // Add any other artifacts here that you would like to publish! artifact(jar) { builtBy build } artifact(sourcesJar) { builtBy sourcesJar } artifact(devJar) { builtBy devJar } } } // This block selects the repositories you want to publish to. } jar { duplicatesStrategy = DuplicatesStrategy.INCLUDE from sourceSets.main.output.resourcesDir from refMap manifest { attributes([ "Manifest-Version": "1.0", "TweakClass": "org.spongepowered.asm.launch.MixinTweaker", 'MixinConfigs': yourMixinConfig, "FMLCorePlugin": "com.zivilon.cindercore_modlist.coremod.ModListCore", 'FMLCorePluginContainsFMLMod': 'true', "ForceLoadAsMod": true ]) } } reobf { addExtraSrgFile mixinSrg } afterEvaluate { def fixedRelPathToAP = relativePathToMixinAP if(fixedRelPathToAP.startsWith('./') || fixedRelPathToAP.startsWith('.\\')){ fixedRelPathToAP = fixedRelPathToAP.substring(2) } else if(fixedRelPathToAP.startsWith('/') || fixedRelPathToAP.startsWith('\\')){ fixedRelPathToAP = fixedRelPathToAP.substring(1) } tasks.withType(JavaCompile) { options.annotationProcessorPath = files(projectDir.absolutePath + '/' + fixedRelPathToAP) println "Refmap path: ${refMap}" options.compilerArgs += [ "-ArefMapFile=${refMap}", "-AoutRefMapFile=${refMap}", "-AdefaultObfuscationEnv=searge" ] } } sourceSets { main { output.resourcesDir = output.classesDirs.asPath ext.refMap = refMapForYourConfig } }