1+ import com.falsepattern.jtweaker.readZipInputStreamFor
12import com.falsepattern.zanama.tasks.ZanamaTranslate
23import com.falsepattern.zigbuild.tasks.ZigBuildTask
34import com.falsepattern.zigbuild.toolchain.ZigVersion
5+ import com.gtnewhorizons.retrofuturagradle.mcp.ReobfuscatedJar
6+ import net.darkhax.curseforgegradle.TaskPublishCurseForge
7+ import java.nio.file.StandardOpenOption
8+ import kotlin.io.path.outputStream
49
510plugins {
6- id(" com.falsepattern.fpgradle-mc" ) version " 2.1 .1"
11+ id(" com.falsepattern.fpgradle-mc" ) version " 2.2 .1"
712 id(" com.falsepattern.zanama" ) version " 0.2.0"
813 id(" com.falsepattern.zigbuild" )
914}
@@ -118,7 +123,6 @@ val panamaNatives = jarInJar_fp("panama") {
118123 this .javaCompatibility = modern
119124 this .javaVersion = JavaVersion .VERSION_25
120125 this .artifactName = " falsetweaks-panama"
121- this .artifactVersion = " 1.0.0"
122126}
123127tasks.named<JavaCompile >(panamaNatives.compileJavaTaskName) {
124128 dependsOn(zigTranslateCpuID, zigTranslateFalseTweaks)
@@ -143,8 +147,79 @@ tasks.processResources.configure {
143147 into(minecraft_fp.mod.rootPkg.map { " /assets/falsetweaks" } ) {
144148 from(packNatives.map { it.outputs.files })
145149 }
150+ val ver = minecraft_fp.mod.version
151+ filesMatching(" META-INF/deps_modern.json" ) {
152+ expand(" modVersion" to ver.get())
153+ }
154+ }
155+
156+ // region curseforge jank
157+
158+ publishing {
159+ publications {
160+ val mvn = minecraft_fp.publish.maven
161+ val jar = tasks.named<Jar >(panamaNatives.jarTaskName)
162+ val reobfJar = tasks.named<ReobfuscatedJar >(" reobf${panamaNatives.jarTaskName} " )
163+ create<MavenPublication >(" mavenPanama" ) {
164+ setArtifacts(emptyList<Any >())
165+ artifact(jar)
166+ artifact(reobfJar)
167+ groupId = mvn.group.get()
168+ artifactId = jar.flatMap { it.archiveBaseName }.get()
169+ version = mvn.version.get()
170+ }
171+ }
172+ }
173+
174+ val reobfJarTask = tasks.reobfJar
175+
176+ abstract class CurseStripJar @Inject constructor(project : Project ): Jar() {
177+ @get:Inject
178+ abstract val archive: ArchiveOperations
179+
180+ @get:InputFile
181+ abstract val inputFile: RegularFileProperty
182+
183+ @TaskAction
184+ fun run () {
185+ inputFile.asFile.get().toPath().readZipInputStreamFor(" META-INF/MANIFEST.MF" , false ) { inp ->
186+ // write to temp file
187+ val inpTmp = temporaryDir.resolve(" input-manifest.MF" ).toPath()
188+ inpTmp.outputStream(StandardOpenOption .CREATE , StandardOpenOption .TRUNCATE_EXISTING ).use { out ->
189+ inp.copyTo(out )
190+ }
191+ this .manifest {
192+ this @manifest.from(inpTmp)
193+ }
194+ }
195+
196+ from(archive.zipTree(inputFile)) {
197+ exclude(" META-INF/falsepatternlib_repo/com/falsepattern/falsetweaks-panama/**/*" )
198+ }
199+ copy()
200+ }
201+
202+ init {
203+ this .destinationDirectory.set(project.layout.buildDirectory.dir(" libs-cf" ))
204+ }
146205}
147206
207+ val cfJar = tasks.register<CurseStripJar >(" curseforgeJar" ) {
208+ inputFile = reobfJarTask.flatMap { it.archiveFile }
209+ dependsOn(reobfJarTask)
210+ archiveFileName = reobfJarTask.flatMap { it.archiveFileName }
211+ }
212+
213+ afterEvaluate {
214+ tasks.named<TaskPublishCurseForge >(" curseforge" ) {
215+ dependsOn(cfJar)
216+ }
217+ }
218+
219+ minecraft_fp.publish.curseforge.toUpload.set(cfJar.map { it.archiveFile })
220+
221+ // endregion
222+
148223repositories {
149224 cursemavenEX()
150225 modrinthEX()
0 commit comments