import com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer import io.papermc.fill.model.BuildChannel plugins { application id("velocity-init-manifest") alias(libs.plugins.shadow) alias(libs.plugins.fill) } application { mainClass.set("com.velocitypowered.proxy.Velocity") applicationDefaultJvmArgs += listOf("-Dvelocity.packet-decode-logging=true") } tasks { withType { exclude("**/com/velocitypowered/proxy/protocol/packet/**") } jar { manifest { attributes["Implementation-Title"] = "Velocity" attributes["Implementation-Vendor"] = "Velocity Contributors" attributes["Multi-Release"] = "true" } } shadowJar { filesMatching("META-INF/org/apache/logging/log4j/core/config/plugins/**") { duplicatesStrategy = DuplicatesStrategy.INCLUDE } transform(Log4j2PluginsCacheFileTransformer::class.java) // Exclude Checker Framework annotations exclude("org/checkerframework/checker/**") relocate("org.bstats", "com.velocitypowered.proxy.bstats") // Include Configurate 3 val configurateBuildTask = project(":deprecated-configurate3").tasks.named("shadowJar") dependsOn(configurateBuildTask) from(zipTree(configurateBuildTask.map { it.outputs.files.singleFile })) } runShadow { workingDir = file("run").also(File::mkdirs) standardInput = System.`in` jvmArgs("-Dvelocity.packet-decode-logging=true") } named("run") { workingDir = file("run").also(File::mkdirs) standardInput = System.`in` // Doesn't work? } withType().configureEach { options.compilerArgs.addAll( listOf( "-Alog4j.graalvm.groupId=${project.group}", "-Alog4j.graalvm.artifactId=${project.name}" ) ) } } val projectVersion = version as String fill { project("velocity") build { channel = BuildChannel.STABLE versionFamily("4.0.0") version(projectVersion) if (versionFamily.get().split(".")[0] != projectVersion.split(".")[0]) { throw IllegalArgumentException("Version family does not match project version") } downloads { register("server:default") { file = tasks.shadowJar.flatMap { it.archiveFile } nameResolver.set { project, _, version, build -> "$project-$version-$build.jar" } } } } } dependencies { implementation(project(":velocity-api")) implementation(project(":velocity-native")) implementation(libs.bundles.log4j) implementation(libs.kyori.ansi) implementation(libs.netty.codec) implementation(libs.netty.codec.haproxy) implementation(libs.netty.codec.http) implementation(libs.netty.handler) implementation(libs.netty.transport.native.epoll) implementation(variantOf(libs.netty.transport.native.epoll) { classifier("linux-x86_64") }) implementation(variantOf(libs.netty.transport.native.epoll) { classifier("linux-aarch_64") }) implementation(libs.netty.transport.native.iouring) implementation(variantOf(libs.netty.transport.native.iouring) { classifier("linux-x86_64") }) implementation(variantOf(libs.netty.transport.native.iouring) { classifier("linux-aarch_64") }) implementation(libs.netty.transport.native.kqueue) implementation(variantOf(libs.netty.transport.native.kqueue) { classifier("osx-x86_64") }) implementation(variantOf(libs.netty.transport.native.kqueue) { classifier("osx-aarch_64") }) implementation(libs.jopt) implementation(libs.terminalconsoleappender) runtimeOnly(libs.jline) runtimeOnly(libs.disruptor) implementation(libs.fastutil) implementation(platform(libs.adventure.bom)) implementation(libs.adventure.text.serializer.json.legacy.impl) implementation(libs.completablefutures) implementation(libs.nightconfig) implementation(libs.bstats) implementation(libs.lmbda) implementation(libs.asm) implementation(libs.bundles.flare) compileOnly(libs.spotbugs.annotations) compileOnly(libs.auto.service.annotations) testImplementation(libs.mockito) annotationProcessor(libs.auto.service) annotationProcessor(libs.log4j.core) }