plugins { java id("xyz.jpenilla.run-paper") version "2.3.1" } group = "io.github.adrianvic" version = System.getenv("NEMESIS_VERSION_NAME") ?: "1.0.3-SNAPSHOT" repositories { mavenCentral() maven("https://repo.papermc.io/repository/maven-public/") } /* ----------------------------------------- */ /* SUPPORTED VERSIONS */ /* ----------------------------------------- */ val mcVersions = listOf( "b1_7_3", "r1_21" ) /* ----------------------------------------- */ /* CREATE SOURCE SET PER VERSION */ /* ----------------------------------------- */ tasks.withType { inputs.property("version", project.version) filesMatching("plugin.yml") { expand("version" to project.version) } } mcVersions.forEach { ver -> val ss = sourceSets.create(ver) { java.srcDir("src/$ver/java") resources.setSrcDirs(listOf("src/$ver/resources", "src/main/resources")) compileClasspath += sourceSets["main"].output runtimeClasspath += output + compileClasspath } tasks.withType { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } configurations[ss.implementationConfigurationName] .extendsFrom(configurations["implementation"]) configurations[ss.compileOnlyConfigurationName] .extendsFrom(configurations["compileOnly"]) } /* ----------------------------------------- */ /* DEPENDENCIES */ /* ----------------------------------------- */ dependencies { add("compileOnly", "io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT") add("r1_21CompileOnly", "io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT") add("b1_7_3CompileOnly", files("libs/craftbukkit-1060.jar")) } /* ----------------------------------------- */ /* BUILD TASKS */ /* ----------------------------------------- */ mcVersions.forEach { ver -> tasks.register("jar${ver.replace(".", "_").replace("-", "_").replace("/", "_").capitalize()}") { duplicatesStrategy = DuplicatesStrategy.EXCLUDE from(sourceSets["main"].output) from(sourceSets[ver].output) archiveClassifier.set(ver) manifest { attributes( "Nemesis-Impl-Version" to ver ) } } } tasks.register("buildAll") { dependsOn(tasks.withType()) } /* ----------------------------------------- */ /* JAVA SETTINGS */ /* ----------------------------------------- */ java { toolchain.languageVersion.set(JavaLanguageVersion.of(21)) } tasks.withType { options.encoding = "UTF-8" } tasks.runServer { minecraftVersion("1.21") }