diff options
Diffstat (limited to 'build.gradle')
-rw-r--r-- | build.gradle | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..88b8faf --- /dev/null +++ b/build.gradle @@ -0,0 +1,76 @@ +plugins { + id "java" + id "com.github.johnrengelman.shadow" version "6.1.0" + id "net.minecraftforge.gradle.forge" version "6f53277" +} + +version = "1.0" +group = "dev.asbyth" +archivesBaseName = "ForgeTemplate" + +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 +} + +configurations { + // Creates an extra configuration that implements `implementation` to be used later as the configuration that shades libraries + include + implementation.extendsFrom(include) +} + +dependencies { + // How to normally add a dependency (If you don't want it to be added to the jar) + // implementation "com.example:example:1.0.0" + // If you would like to include it (have the library inside your jar) instead use + // include "com.example:example:1.0.0" +} + +/** + * 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", 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, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } +} + +/** + * 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/java" + } +} + +moveResources.dependsOn processResources +classes.dependsOn moveResources + +// This adds support to ("embed", "shade", "include") libraries into our JAR +shadowJar { + archiveClassifier.set('') + configurations = [project.configurations.include] + duplicatesStrategy DuplicatesStrategy.EXCLUDE +} + +jar.dependsOn shadowJar |