summaryrefslogtreecommitdiff
path: root/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'build.gradle')
-rw-r--r--build.gradle76
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