import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import net.minecraftforge.gradle.common.util.RunConfig import net.minecraftforge.gradle.userdev.UserDevExtension import net.minecraftforge.gradle.mcp.task.GenerateSRG import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace plugins { id("net.minecraftforge.gradle") } applyPlatformAndCoreConfiguration() applyShadowConfiguration() val minecraftVersion = "1.14.4" val mappingsMinecraftVersion = "1.14.3" val forgeVersion = "28.1.0" configurations.all { resolutionStrategy { force("com.google.guava:guava:21.0") } } dependencies { "compile"(project(":worldedit-core")) "compile"("org.apache.logging.log4j:log4j-slf4j-impl:2.11.2") "minecraft"("net.minecraftforge:forge:$minecraftVersion-$forgeVersion") } configure { mappings(mapOf( "channel" to "snapshot", "version" to "20190913-$mappingsMinecraftVersion" )) accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) runs { val runConfig = Action { properties(mapOf( "forge.logging.markers" to "SCAN,REGISTRIES,REGISTRYDUMP", "forge.logging.console.level" to "debug" )) workingDirectory = project.file("run").canonicalPath source(sourceSets["main"]) } create("client", runConfig) create("server", runConfig) } } configure { archivesBaseName = "$archivesBaseName-mc$minecraftVersion" } tasks.named("processResources") { // this will ensure that this task is redone when the versions change. inputs.property("version", project.ext["internalVersion"]) inputs.property("forgeVersion", forgeVersion) // replace stuff in mcmod.info, nothing else from(sourceSets["main"].resources.srcDirs) { include("META-INF/mods.toml") // replace version and mcversion expand( "version" to project.ext["internalVersion"], "forgeVersion" to forgeVersion ) } // copy everything else except the mcmod.info from(sourceSets["main"].resources.srcDirs) { exclude("META-INF/mods.toml") } } tasks.named("jar") { manifest { attributes("Class-Path" to CLASSPATH, "WorldEdit-Version" to project.version) } } tasks.named("shadowJar") { dependencies { relocate("org.slf4j", "com.sk89q.worldedit.slf4j") relocate("org.apache.logging.slf4j", "com.sk89q.worldedit.log4jbridge") include(dependency("org.slf4j:slf4j-api")) include(dependency("org.apache.logging.log4j:log4j-slf4j-impl")) include(dependency("de.schlichtherle:truezip")) include(dependency("net.java.truevfs:truevfs-profile-default_2.13")) include(dependency("org.mozilla:rhino-runtime")) } minimize { exclude(dependency("org.mozilla:rhino-runtime")) } } afterEvaluate { val reobf = extensions.getByName>("reobf") reobf.maybeCreate("shadowJar").run { mappings = tasks.getByName("createMcpToSrg").output } } tasks.register("deobfJar") { from(sourceSets["main"].output) archiveClassifier.set("dev") } artifacts { add("archives", tasks.named("deobfJar")) }