plugins { id("com.gtnewhorizons.gtnhconvention") id("me.champeau.jmh") version "0.7.3" } minecraft { //extraRunJvmArguments.add("-Dgtnhlib.dumpClass=true") //extraRunJvmArguments.addAll("-Dlegacy.debugClassLoading=true", "-Dlegacy.debugClassLoadingFiner=true", "-Dlegacy.debugClassLoadingSave=true") } // Add a Java 17 sourceset for including code optimized for newer Java versions val java17ToolchainSpec: JavaToolchainSpec.() -> Unit = { // Use a Java 21 compiler with a target of 17 languageVersion = JavaLanguageVersion.of(21) } val main17 by sourceSets.creating { compileClasspath = files(compileClasspath, configurations.lwjgl3Classpath.get(), sourceSets.main.get().compileClasspath.filter({ f -> !f.toString().contains("jabel-javac") }), sourceSets.main.get().output) runtimeClasspath = files(runtimeClasspath, configurations.lwjgl3Classpath.get(), sourceSets.main.get().runtimeClasspath, sourceSets.main.get().output) } tasks.named(main17.compileJavaTaskName).configure { javaCompiler = javaToolchains.compilerFor(java17ToolchainSpec) options.release = 17 sourceCompatibility = JavaVersion.VERSION_17.majorVersion targetCompatibility = JavaVersion.VERSION_17.majorVersion } tasks.jar.configure { dependsOn(main17.compileJavaTaskName) into("META-INF/versions/17") { from(main17.output) } } tasks.jar { manifest { attributes["MixinConfigs"] = "mixins.gtnhlib.preinit.json" } } tasks.sourcesJar.configure { into("META-INF/versions/17") { from(main17.java.sourceDirectories) } } tasks.processResources { val projectVersion = project.version.toString() inputs.property("version", projectVersion) filesMatching("META-INF/rfb-plugin/*") { expand("version" to projectVersion) } // Embed the FalsePatternLib DepLoader bootstrap jar for the static-block bootstrap. from(configurations["deploader"]) { rename { "fplib_deploader.jar" } } } tasks.test { useJUnitPlatform() testLogging { events("passed", "skipped", "failed") } // On macOS ARM64, use an ARM64-compatible JVM for tests val isMacOsArm64 = System.getProperty("os.name").lowercase().contains("mac") && System.getProperty("os.arch") == "aarch64" javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(8) if (isMacOsArm64) { vendor = JvmVendorSpec.AZUL } } dependsOn(tasks.extractNatives2) jvmArgs("-Djava.library.path=${tasks.extractNatives2.get().destinationFolder.asFile.get().path}") } tasks.shadowJar { into("META-INF/versions/17") { from(main17.output) } exclude("META-INF/versions/9/module-info.class") } for (jarTask in listOf(tasks.jar, tasks.shadowJar, tasks.sourcesJar)) { jarTask.configure { manifest { attributes("Multi-Release" to true) } } } sourceSets { named("jmh") { compileClasspath += sourceSets["patchedMc"].output runtimeClasspath = files(main17.output) + runtimeClasspath + files(sourceSets["patchedMc"].output) } } dependencies { add("jmhRuntimeOnly", files(sourceSets["patchedMc"].output)) } tasks.named("jmh") { dependsOn(main17.compileJavaTaskName) }