From 2eec07642030e86ce9cdbf99323582a8f0369414 Mon Sep 17 00:00:00 2001 From: JacksonAbney Date: Sat, 26 Apr 2025 12:30:06 -0800 Subject: [PATCH] Overhaul build script dependency handling, moves all version numbers for dependencies to gradle.properties and moves downloading Sedna from the GitHub workflow into the gradle workflow. --- .github/workflows/build.yml | 1 - .github/workflows/publish.yml | 1 - build.gradle | 55 ++++++++++++++++++++++------------- gradle.properties | 47 +++++++++++++++++++++++++----- 4 files changed, 73 insertions(+), 31 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fd30d47c..46c1f2c6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,6 @@ jobs: - uses: actions/checkout@v4 - name: build run: | - wget https://github.com/North-Western-Development/sedna-mc/releases/download/1.20.1-forge%2F1.0.54/sedna-1.20.1-forge-1.0.54+8d77183.jar -O libs/sedna.jar ./gradlew build - uses: actions/upload-artifact@v4 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d82ff751..23d6a537 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -30,7 +30,6 @@ jobs: - uses: actions/checkout@v4 - name: build run: | - wget https://github.com/North-Western-Development/sedna-mc/releases/download/1.20.1-forge%2F1.0.54/sedna-1.20.1-forge-1.0.54+8d77183.jar -O libs/sedna.jar ./gradlew -Psemver='${{ github.event.release.tag_name }}' build - name: Add Artifacts to Github Release diff --git a/build.gradle b/build.gradle index 56396882..af000920 100644 --- a/build.gradle +++ b/build.gradle @@ -98,15 +98,15 @@ dependencies { } implementation fileTree(dir: 'libs', include: '*.jar') // implementation "curse.maven:sedna-511276:3885542" - minecraftLibrary "org.apache.commons:commons-collections4:4.4" + minecraftLibrary "org.apache.commons:commons-collections4:${apache_commons_version}" - implementation fg.deobf("curse.maven:architectury-api-419699:5137938") - implementation fg.deobf("curse.maven:markdownmanual-502485:4873115") + implementation fg.deobf("curse.maven:architectury-api-${architectury_project_id}:${architectury_file_id}") + implementation fg.deobf("curse.maven:markdownmanual-${markdownmanual_project_id}:${markdownmanual_file_id}") - compileOnly fg.deobf("mezz.jei:jei-1.20.1-common-api:15.3.0.4") - compileOnly fg.deobf("mezz.jei:jei-1.20.1-forge-api:15.3.0.4") + compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}") + compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-${minecraft_sdk}-api:${jei_version}") - runtimeOnly fg.deobf("mezz.jei:jei-1.20.1-forge:15.3.0.4") + runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}-${minecraft_sdk}:${jei_version}") compileOnly fg.deobf("mrtjp:ProjectRed:${minecraft_version}-${pr_version}:api") runtimeOnly fg.deobf("io.codechicken:CodeChickenLib:${minecraft_version}-${ccl_version}:universal") @@ -116,36 +116,38 @@ dependencies { if (debug_embeddium.toBoolean()) { - runtimeOnly fg.deobf("curse.maven:embeddium-908741:5521846") + runtimeOnly fg.deobf("curse.maven:embeddium-${embeddium_project_id}:${embeddium_file_id}") } if (debug_embeddium_plus_plus.toBoolean()) { - runtimeOnly fg.deobf("curse.maven:embeddiumplus-931925:5436746") + runtimeOnly fg.deobf("curse.maven:embeddiumplus-${embeddium_plus_plus_project_id}:${embeddium_plus_plus_file_id}") } if (debug_oculus.toBoolean()) { - runtimeOnly fg.deobf("curse.maven:oculus-581495:5299671") + runtimeOnly fg.deobf("curse.maven:oculus-${oculus_project_id}:${oculus_file_id}") } - testImplementation "org.mockito:mockito-inline:4.3.1" - testImplementation "org.junit.jupiter:junit-jupiter-api:5.8.2" - testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.8.2" jarJar(group: 'libs', name: 'sedna', version: '[]') { jarJar.pin(it, "") } + + // Test Dependencies + testImplementation "org.mockito:mockito-inline:${mockito_version}" + testImplementation "org.junit.jupiter:junit-jupiter-api:${jupiter_version}" + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${jupiter_version}" } System.setProperty("line.separator", "\n") def nativeLibsDir = file("src/main/resources/natives") -tasks.register("downloadNativeLibs") { +tasks.register("downloadDependencies") { group = "build setup" doLast { - def repo = "North-Western-Development/oc2r-native-networking" - def baseUrl = "https://github.com/${repo}/releases/latest/download/" + // native networking library + def nativeNetworkingBaseUrl = "https://github.com/${native_networking_repo}/releases/download/${network_lib_version}/" def targets = [ "macos/liboc2rnet-x86_64.dylib", @@ -160,12 +162,23 @@ tasks.register("downloadNativeLibs") { def file = new File(nativeLibsDir, path) file.parentFile.mkdirs() def fileName = path.tokenize('/')[-1] - def url = new URL("${baseUrl}${fileName}") + def url = new URL("${nativeNetworkingBaseUrl}${fileName}") println "Downloading ${url} → ${file}" file.withOutputStream { out -> url.openStream().withCloseable { IOUtils.copy(it, out) } } } + + // senda + def sednaUrl = "https://github.com/${senda_repo}/releases/download/${minecraft_version}-${minecraft_sdk}/${sedna_version}/sedna-${minecraft_version}-${minecraft_sdk}-${sedna_version}+${sedna_version_commit_ref}.jar" + def sednaFile = new File('libs', 'sedna.jar') + sednaFile.parentFile.mkdirs() + def url = new URL("${sednaUrl}") + println "Downloading ${url} → ${sednaFile}" + sednaFile.withOutputStream { out -> + url.openStream().withCloseable { IOUtils.copy(it, out) } + } + } } @@ -184,7 +197,7 @@ tasks.register('copyLicensesToResources', Copy) { processResources.dependsOn(packageScripts) processResources.dependsOn(copyLicensesToResources) -processResources.dependsOn(downloadNativeLibs) +processResources.dependsOn(downloadDependencies) tasks.named('jarJar'){ } @@ -279,7 +292,7 @@ curseforge { releaseType = System.getenv('RELEASE_TYPE') ?: "alpha" changelogType = 'markdown' changelog = System.getenv("CHANGELOG") ?: "Changelog not available." - addGameVersion "Forge" + addGameVersion minecraft_sdk addGameVersion minecraft_version addGameVersion "Java 17" mainArtifact "build/libs/oc2r-${minecraft_version}-${minecraft_sdk}-${version}-all.jar" @@ -291,11 +304,11 @@ curseforge { modrinth { token = System.getenv("MODRINTH_TOKEN") - projectId = "F1gm4RsH" + projectId = modrinth_project_id versionType = System.getenv('RELEASE_TYPE') ?: "alpha" uploadFile = "build/libs/oc2r-${minecraft_version}-${minecraft_sdk}-${version}-all.jar" - gameVersions = ["1.20.1"] - loaders = ["forge"] + gameVersions = [minecraft_version] + loaders = [minecraft_sdk] changelog = System.getenv("CHANGELOG") ?: "Changelog not available." dependencies { required.project "markdownmanual" diff --git a/gradle.properties b/gradle.properties index 41aada2f..08983f61 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,20 +3,51 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false +# Minecraft Related forge_version=47.3.38 minecraft_version = 1.20.1 minecraft_sdk = forge -semver=0.0.0 +# Mod Version (for Local Builds Only) +semver = 0.0.0 -curse_project_id=1037738 +# Curse Publishing Info +curse_project_id = 1037738 -pr_version=4.19.0-beta+3 -ccl_version=4.4.0.+ -cbm_version=3.3.0.+ +# Modrinth Publishing Info +modrinth_project_id = F1gm4RsH -debug_embeddium=false +# Dependency CurseForge Project IDs and File IDs (essentially the file id is synonymous with version number and archive classifier) +markdownmanual_project_id = 502485 +markdownmanual_file_id = 4873115 +architectury_project_id = 419699 +architectury_file_id = 5137938 -debug_embeddium_plus_plus=false +# Dependency Version Info +apache_commons_version = 4.4 +jei_version = 15.3.0.4 +pr_version = 4.19.0-beta+3 +ccl_version = 4.4.0.+ +cbm_version = 3.3.0.+ +network_lib_version = 1.0.3 +sedna_version = 1.0.54 +sedna_version_commit_ref = 8d77183 -debug_oculus=false +# Debug Options +debug_embeddium = false +embeddium_project_id = 908741 +embeddium_file_id = 5521846 +debug_embeddium_plus_plus = false +embeddium_plus_plus_project_id = 931925 +embeddium_plus_plus_file_id = 5436746 +debug_oculus = false +oculus_project_id = 581495 +oculus_file_id = 5299671 + +# Repos +native_networking_repo = North-Western-Development/oc2r-native-networking +senda_repo = North-Western-Development/sedna-mc + +# Test Dependency Versions +mockito_version = 4.3.1 +jupiter_version = 5.8.2