From 1a9f6fed7297be659fe6a0f5a114bab06aedd437 Mon Sep 17 00:00:00 2001 From: CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> Date: Mon, 28 Oct 2024 00:20:43 +1100 Subject: Fix: Downloading forge multiple times (#2836) --- build.gradle.kts | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 400dd12b1..e03158212 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,6 +15,8 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import skyhannibuildsystem.ChangelogVerification import skyhannibuildsystem.DownloadBackupRepo +import java.io.Serializable +import java.nio.file.Path import java.util.zip.ZipFile import java.util.zip.ZipOutputStream import kotlin.io.path.moveTo @@ -424,17 +426,13 @@ tasks.withType().configureEach { outputs.cacheIf { false } // Custom rules won't work if cached } -abstract class ShotApplicationJarProcessor @Inject constructor(val shots: Shots) : MinecraftJarProcessor { - private class EnsureCompile(shots: Shots) : ShotApplicationJarProcessor(shots) - override fun buildSpec(context: SpecContext?): MinecraftJarProcessor.Spec? { - return object : MinecraftJarProcessor.Spec {} - } +abstract class ShotApplicationJarProcessor @Inject constructor(private val shots: Shots) : + MinecraftJarProcessor, + Serializable { + + override fun buildSpec(context: SpecContext?): MinecraftJarProcessor.Spec? = ShotSpec(shots) - override fun processJar( - source: java.nio.file.Path, - spec: MinecraftJarProcessor.Spec, - context: ProcessorContext? - ) { + override fun processJar(source: Path, spec: MinecraftJarProcessor.Spec?, context: ProcessorContext?) { val dest = source.resolveSibling(source.fileName.toString() + "-temp-shot") ZipFile(source.toFile()).use { input -> ZipOutputStream(dest.outputStream()).use { output -> @@ -444,7 +442,17 @@ abstract class ShotApplicationJarProcessor @Inject constructor(val shots: Shots) dest.moveTo(source, overwrite = true) } - override fun getName(): String { - return "Shots" + override fun getName(): String = "Shots" + + private class ShotSpec(val shots: Shots) : MinecraftJarProcessor.Spec, Serializable { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is ShotSpec) return false + return shots == other.shots + } + + override fun hashCode(): Int { + return shots.hashCode() + } } } -- cgit