plugins { `java-library` } dependencies { api(project(":engine")) implementation(project(":content-pokemon")) compileOnly("com.hypixel.hytale:Server:0.5.9") implementation("com.fasterxml.jackson.core:jackson-databind:2.20.0") testImplementation(platform("org.junit:junit-bom:6.0.0")) testImplementation("org.junit.jupiter:junit-jupiter") testRuntimeOnly("org.junit.platform:junit-platform-launcher") testImplementation("org.assertj:assertj-core:3.27.6") } tasks.jar { enabled = false } val fanModJar = tasks.register("fanModJar") { group = "build" description = "Packages the unofficial non-commercial fan plugin and embedded asset pack." dependsOn(configurations.runtimeClasspath) archiveBaseName.set("ProjectCapture") archiveClassifier.set("fan-dev") duplicatesStrategy = DuplicatesStrategy.EXCLUDE from(sourceSets.main.get().output) from({ configurations.runtimeClasspath.get() .filter { it.exists() } .map { if (it.isDirectory) it else zipTree(it) } }) exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA") manifest { attributes["Implementation-Title"] = "ProjectCapture Unofficial Fan Project" attributes["Implementation-Version"] = project.version attributes["ProjectCapture-Distribution"] = "UNOFFICIAL-NONCOMMERCIAL" } } tasks.assemble { dependsOn(fanModJar) } tasks.register("installToDevMods") { group = "development" description = "Copies the fan mod only into an explicitly configured isolated dev Mods directory." dependsOn(fanModJar) val configuredModsDir = providers.gradleProperty("projectCapture.devModsDir") onlyIf { if (!configuredModsDir.isPresent) { logger.lifecycle("Skipping install: set -PprojectCapture.devModsDir=.") false } else { true } } from(fanModJar.flatMap { it.archiveFile }) into(configuredModsDir) }