From cdc7329c3f860d3c71ef8e9105531fd3b66e1cea Mon Sep 17 00:00:00 2001 From: fayer3 Date: Mon, 8 Jul 2024 23:53:53 +0200 Subject: [PATCH] stupid workaround to make a functional forge jar, because arch loom seems to not want to fix it completely --- build.gradle | 61 +++++++++++++++++++++++- forge/build.gradle | 5 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 63 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 4910f90a6..354688b26 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.6-SNAPSHOT" apply false + id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false id 'io.github.juuxel.loom-quiltflower' version '1.8.0' apply false } @@ -56,6 +56,65 @@ subprojects { } } +tasks.register('fixForge', Zip) { + if (gradle.startParameter.taskNames.contains(name)) { + if (!file('./build/libs/' + archives_base_name + + '-' + minecraft_version + + '-' + mod_version + + '-forge_nonfunctional_without_changes.jar').exists() || + !file('./build/libs/' + archives_base_name + + '-' + minecraft_version + + '-' + mod_version + + '-neoforge.jar').exists()) { + throw new GradleException("forge and neoforge need to be built to run this task") + } + doFirst { + println('unzipping jars') + } + copy { + // extract all forge files + from zipTree('./build/libs/' + archives_base_name + + '-' + minecraft_version + + '-' + mod_version + + '-forge_nonfunctional_without_changes.jar') + into './build/tmp/forge' + // remove any refmap + exclude "**/*-refmap.json" + // remove the refmap from the mixin jsons + eachFile { fileCopyDetails -> + if (fileCopyDetails.name.endsWith('.json')) { + filter { + line -> line.contains('"refmap": "vivecraft-common-refmap.json"') ? '"dummy": ""' : line + } + } + } + } + copy { + // override the general classes with the neoforge ones, since those are mapped correctly + from zipTree('./build/libs/' + archives_base_name + + '-' + minecraft_version + + '-' + mod_version + + '-neoforge.jar') + into './build/tmp/forge' + include '/org/vivecraft/**' + exclude '**/neoforge/**', '**/Xplat*.class', '**/Xevents*.class' + } + + // zip up the combined jar again + archiveFileName = archives_base_name + + '-' + minecraft_version + + '-' + mod_version + + '-forge.jar' + destinationDirectory = file('./build/libs/') + from './build/tmp/forge' + + doLast { + println('removing temp files') + delete './build/tmp/forge' + } + } +} + allprojects { apply plugin: "architectury-plugin" apply plugin: "maven-publish" diff --git a/forge/build.gradle b/forge/build.gradle index 8273b6200..c508fc56b 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -88,12 +88,11 @@ shadowJar { ] archiveClassifier.set("dev-shadow") } -// TODO remove that once archloom fixes forge -remapJar.onlyIf { false } + remapJar { input.set shadowJar.archiveFile dependsOn shadowJar - archiveClassifier.set('forge') + archiveClassifier.set('forge_nonfunctional_without_changes') } jar { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 17655d0ef..0d1842103 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists