buildscript { repositories { jcenter() maven { url = "https://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' classpath "com.github.jengelman.gradle.plugins:shadow:1.2.3" } } apply plugin: 'net.minecraftforge.gradle.forge' //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. apply plugin: "com.github.johnrengelman.shadow" version = "3.1.7" group = "me.rigamortis" archivesBaseName = "seppuku" def buildmode = "IDE" sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. compileJava { sourceCompatibility = targetCompatibility = '1.8' } idea { module { inheritOutputDirs = false outputDir = compileJava.destinationDir testOutputDir = compileTestJava.destinationDir } } minecraft { version = "1.12.2-14.23.5.2768" runDir = "run" // the mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD snapshot are built nightly. // stable_# stables are built at the discretion of the MCP team. // Use non-default mappings at your own risk. they may not always work. // simply re-run your setup task after changing the mappings to update your workspace. mappings = "stable_39" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } dependencies { compile group: "com.googlecode.json-simple", name: "json-simple", version: "1.1.1" } jar { manifest { attributes 'FMLCorePlugin': 'me.rigamortis.seppuku.impl.fml.core.SeppukuLoadingPlugin' attributes 'FMLCorePluginContainsFMLMod': 'true' attributes 'FMLAT': 'seppuku_at.cfg' } } reobf { jar { mappingType = 'SEARGE' } shadowJar { //mappingType = 'NOTCH' mappingType = 'SEARGE' classpath = sourceSets.main.compileClasspath } } shadowJar { dependencies { include(dependency('com.googlecode.json-simple:json-simple:1.1.1')) include(dependency('net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT')) } manifest { attributes 'FMLCorePlugin': 'me.rigamortis.seppuku.impl.fml.core.SeppukuLoadingPlugin' attributes 'FMLCorePluginContainsFMLMod': 'true' attributes 'FMLAT': 'seppuku_at.cfg' } exclude 'dummyThing' exclude 'LICENSE.txt' classifier = 'full' } task signJar(type: SignJar, dependsOn: reobfJar) { onlyIf { project.hasProperty('keyStore') } keyStore = project.findProperty('keyStore') alias = project.findProperty('keyStoreAlias') storePass = project.findProperty('keyStorePass') keyPass = project.findProperty('keyStoreKeyPass') inputFile = jar.archivePath outputFile = jar.archivePath } build.dependsOn { [ 'shadowJar', 'reobfShadowJar', 'signJar' ] } 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 except the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } } if (buildmode.equals("IDE")) { sourceSets { main(({ output.resourcesDir = output.classesDir })) } }