From 5e338b40dada02bcd9fdfd9e280a97d0f8229dd2 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 9 Dec 2021 01:40:05 +0800 Subject: [PATCH] Update to Loom 0.10 --- .github/workflows/pr.yml | 16 +++--- .github/workflows/push.yml | 22 ++++---- build.gradle | 12 ++++- common/build.gradle | 9 +--- common/src/main/resources/fabric.mod.json | 7 --- fabric/build.gradle | 49 +++++++++++------ forge/build.gradle | 53 +++++++++++++------ gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 4 ++ testmod-common/build.gradle | 2 - .../test/particle/TestParticles.java | 8 ++- testmod-fabric/build.gradle | 11 ++-- testmod-forge/build.gradle | 21 +++++--- 13 files changed, 133 insertions(+), 83 deletions(-) delete mode 100644 common/src/main/resources/fabric.mod.json diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 19f510cb..b4102099 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -23,11 +23,11 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 8 + - name: Set up JDK 17 uses: actions/setup-java@v2 with: - java-version: 8 - distribution: 'adopt' + java-version: 17 + distribution: 'temurin' - name: Cache Gradle wrapper uses: actions/cache@v2 @@ -66,7 +66,7 @@ jobs: name: "Build" strategy: matrix: - java: [ 8, 15 ] # Build on Java 8 (version shipped with MC 1.16) and Java 15 (iirc the latest version supported by both loaders on 1.16) + java: [ 17 ] # Build on Java 17 runs-on: ubuntu-20.04 if: | !contains(github.event.pull_request.title, '[ci skip]') @@ -77,7 +77,7 @@ jobs: uses: actions/setup-java@v2 with: java-version: ${{ matrix.java }} - distribution: 'adopt' + distribution: 'temurin' - name: Cache Gradle wrapper uses: actions/cache@v2 @@ -114,16 +114,16 @@ jobs: rm -f $HOME/.gradle/caches/journal-1/file-access.bin - name: Setting mod version - if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 + if: ${{ matrix.java == '17' }} run: | cat $GITHUB_WORKSPACE/gradle.properties | grep ^archives_base_name= >> $GITHUB_ENV cat $GITHUB_WORKSPACE/gradle.properties | grep ^minecraft_version= >> $GITHUB_ENV cat $GITHUB_WORKSPACE/gradle.properties | grep ^base_version= >> $GITHUB_ENV - name: Create package name - if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 + if: ${{ matrix.java == '17' }} run: echo "package_name=[$minecraft_version] $archives_base_name-$base_version-SNAPSHOT.PR${{ github.event.number }}" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 - if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 + if: ${{ matrix.java == '17' }} with: name: ${{ env.package_name }} path: | diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index e66068aa..e3651d9d 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -33,11 +33,11 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 8 + - name: Set up JDK 17 uses: actions/setup-java@v2 with: - java-version: 8 - distribution: 'adopt' + java-version: 17 + distribution: 'temurin' - name: Cache Gradle wrapper uses: actions/cache@v2 @@ -77,7 +77,7 @@ jobs: name: "Build" strategy: matrix: - java: [ 8, 15 ] # Build on Java 8 (version shipped with MC 1.16) and Java 15 (iirc the latest version supported by both loaders on 1.16) + java: [ 17 ] runs-on: ubuntu-20.04 if: | !contains(github.event.head_commit.message, '[ci skip]') @@ -88,7 +88,7 @@ jobs: uses: actions/setup-java@v2 with: java-version: ${{ matrix.java }} - distribution: 'adopt' + distribution: 'temurin' - name: Cache Gradle wrapper uses: actions/cache@v2 @@ -125,16 +125,16 @@ jobs: rm -f $HOME/.gradle/caches/journal-1/file-access.bin - name: Setting mod version - if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 + if: ${{ matrix.java == '17' }} run: | cat $GITHUB_WORKSPACE/gradle.properties | grep ^archives_base_name= >> $GITHUB_ENV cat $GITHUB_WORKSPACE/gradle.properties | grep ^minecraft_version= >> $GITHUB_ENV cat $GITHUB_WORKSPACE/gradle.properties | grep ^base_version= >> $GITHUB_ENV - name: Create package name - if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 + if: ${{ matrix.java == '17' }} run: echo "package_name=[$minecraft_version] $archives_base_name-$base_version.${{ github.run_number }}" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 - if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 + if: ${{ matrix.java == '17' }} with: name: ${{ env.package_name }} path: | @@ -156,11 +156,11 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 8 + - name: Set up JDK 17 uses: actions/setup-java@v2 with: - java-version: 8 - distribution: 'adopt' + java-version: 17 + distribution: 'temurin' - name: Cache Gradle wrapper uses: actions/cache@v2 diff --git a/build.gradle b/build.gradle index fbe53a65..7035e7ec 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "0.7.3-SNAPSHOT" apply false + id "dev.architectury.loom" version "0.10.0-SNAPSHOT" apply false id "org.cadixdev.licenser" version "0.6.1" id "com.matthewprenger.cursegradle" version "1.4.0" apply false id "maven-publish" @@ -15,7 +15,11 @@ subprojects { loom { silentMojangMappingsLicense() - useFabricMixin = true + } + + dependencies { + minecraft "com.mojang:minecraft:${rootProject.architectury.minecraft}" + mappings loom.officialMojangMappings() } } @@ -100,6 +104,10 @@ allprojects { return changes.toString() } } + + java { + withSourcesJar() + } } task licenseFormatAll diff --git a/common/build.gradle b/common/build.gradle index 45d0b45d..e42c75de 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -3,8 +3,6 @@ loom { } dependencies { - minecraft "com.mojang:minecraft:${rootProject.architectury.minecraft}" - mappings minecraft.officialMojangMappings() // We depend on fabric loader here to use the fabric @Environment annotations // Do NOT use other classes from fabric loader modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" @@ -19,12 +17,7 @@ publishing { publications { mavenCommon(MavenPublication) { artifactId = rootProject.archivesBaseName - artifact(file("${project.buildDir}/libs/${project.archivesBaseName}-${project.version}.jar")) { - builtBy build - } - artifact(sourcesJar) { - builtBy remapSourcesJar - } + from components.java } } diff --git a/common/src/main/resources/fabric.mod.json b/common/src/main/resources/fabric.mod.json deleted file mode 100644 index 50ea013b..00000000 --- a/common/src/main/resources/fabric.mod.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "_comment": "This file is here to make fabric loader load this on the Knot classloader.", - "schemaVersion": 1, - "id": "architectury-common", - "version": "0.0.1", - "accessWidener": "architectury.accessWidener" -} \ No newline at end of file diff --git a/fabric/build.gradle b/fabric/build.gradle index c86b2deb..5fc2c1e1 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,5 +1,5 @@ plugins { - id "com.github.johnrengelman.shadow" version "5.0.0" + id "com.github.johnrengelman.shadow" version "7.0.0" id "com.matthewprenger.cursegradle" } @@ -7,6 +7,11 @@ loom { accessWidener = file("src/main/resources/architectury.accessWidener") } +architectury { + platformSetupLoomIde() + fabric() +} + configurations { common shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. @@ -15,18 +20,11 @@ configurations { developmentFabric.extendsFrom common } -architectury { - platformSetupLoomIde() - fabric() -} - repositories { maven { url "https://maven.terraformersmc.com/releases/" } } dependencies { - minecraft "com.mojang:minecraft:${rootProject.architectury.minecraft}" - mappings minecraft.officialMojangMappings() modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" modCompileOnly "com.terraformersmc:modmenu:${rootProject.mod_menu_version}" @@ -50,23 +48,42 @@ shadowJar { relocate "net.jodah.typetools", "me.shedaniel.architectury.shadowed.impl.net.jodah.typetools" configurations = [project.configurations.shadowCommon] - classifier "shadow" + classifier "dev-shadow" } remapJar { - dependsOn(shadowJar) - input.set(shadowJar.archiveFile) - archiveClassifier = "fabric" + input.set shadowJar.archiveFile + dependsOn shadowJar + classifier null +} + +jar { + classifier "dev" +} + +sourcesJar { + afterEvaluate { + [":common"].forEach { + def depSources = project(it).sourcesJar + dependsOn depSources + from(depSources.archiveFile.map { zipTree(it) }) { + exclude "architectury.accessWidener" + } + } + } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } } publishing { publications { mavenFabric(MavenPublication) { artifactId = rootProject.archivesBaseName + "-fabric" - artifact(remapJar.archivePath) { - builtBy build - classifier null - } + from components.java } } diff --git a/forge/build.gradle b/forge/build.gradle index ad9294df..fccbd874 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -1,10 +1,17 @@ plugins { - id "com.github.johnrengelman.shadow" version "5.0.0" + id "com.github.johnrengelman.shadow" version "7.0.0" id "com.matthewprenger.cursegradle" } loom { - mixinConfigs = ["architectury.mixins.json", "architectury-common.mixins.json"] + forge { + mixinConfigs "architectury.mixins.json", "architectury-common.mixins.json" + } +} + +architectury { + platformSetupLoomIde() + forge() } configurations { @@ -15,14 +22,7 @@ configurations { developmentForge.extendsFrom common } -architectury { - platformSetupLoomIde() - forge() -} - dependencies { - minecraft "com.mojang:minecraft:${rootProject.architectury.minecraft}" - mappings loom.officialMojangMappings() forge "net.minecraftforge:forge:${rootProject.architectury.minecraft}-${rootProject.forge_version}" implementation "net.jodah:typetools:0.6.2" shadowCommon "net.jodah:typetools:0.6.2" @@ -45,23 +45,42 @@ shadowJar { exclude "architectury.common.json" configurations = [project.configurations.shadowCommon] - classifier "shadow" + classifier "dev-shadow" } remapJar { - dependsOn(shadowJar) - input.set(shadowJar.archivePath) - archiveClassifier = "forge" + input.set shadowJar.archiveFile + dependsOn shadowJar + classifier null +} + +jar { + classifier "dev" +} + +sourcesJar { + afterEvaluate { + [":common"].forEach { + def depSources = project(it).sourcesJar + dependsOn depSources + from(depSources.archiveFile.map { zipTree(it) }) { + exclude "architectury.accessWidener" + } + } + } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } } publishing { publications { mavenForge(MavenPublication) { artifactId = rootProject.archivesBaseName + "-forge" - artifact(remapJar.archivePath) { - builtBy build - classifier null - } + from components.java } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f371643e..84d1f85f 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-7.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index 54ab33bf..fa6e39a6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,6 +7,10 @@ pluginManagement { } } +if (JavaVersion.current().ordinal() + 1 < 16) { + throw new IllegalStateException("Please run gradle with Java 16+!") +} + include("common") include("fabric") include("forge") diff --git a/testmod-common/build.gradle b/testmod-common/build.gradle index 45b48561..c696eabe 100644 --- a/testmod-common/build.gradle +++ b/testmod-common/build.gradle @@ -1,6 +1,4 @@ dependencies { - minecraft "com.mojang:minecraft:${rootProject.architectury.minecraft}" - mappings loom.officialMojangMappings() // We depend on fabric loader here to use the fabric @Environment annotations // Do NOT use other classes from fabric loader modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" diff --git a/testmod-common/src/main/java/me/shedaniel/architectury/test/particle/TestParticles.java b/testmod-common/src/main/java/me/shedaniel/architectury/test/particle/TestParticles.java index 9a1f2aca..14be509d 100644 --- a/testmod-common/src/main/java/me/shedaniel/architectury/test/particle/TestParticles.java +++ b/testmod-common/src/main/java/me/shedaniel/architectury/test/particle/TestParticles.java @@ -19,6 +19,7 @@ package me.shedaniel.architectury.test.particle; +import me.shedaniel.architectury.event.events.client.ClientLifecycleEvent; import me.shedaniel.architectury.platform.Platform; import me.shedaniel.architectury.registry.DeferredRegister; import me.shedaniel.architectury.registry.ParticleProviderRegistry; @@ -38,7 +39,10 @@ public class TestParticles { public static void initialize() { PARTICLE_TYPES.register(); - if (Platform.getEnvironment() == Env.CLIENT) - ParticleProviderRegistry.register(TEST_PARTICLE.get(), HeartParticle.Provider::new); + if (Platform.getEnvironment() == Env.CLIENT) { + ClientLifecycleEvent.CLIENT_SETUP.register(instance -> { + ParticleProviderRegistry.register(TEST_PARTICLE.get(), HeartParticle.Provider::new); + }); + } } } diff --git a/testmod-fabric/build.gradle b/testmod-fabric/build.gradle index a0e6bf00..920c73d5 100644 --- a/testmod-fabric/build.gradle +++ b/testmod-fabric/build.gradle @@ -1,5 +1,5 @@ plugins { - id "com.github.johnrengelman.shadow" version "5.0.0" + id "com.github.johnrengelman.shadow" version "7.0.0" id "com.matthewprenger.cursegradle" } @@ -8,9 +8,14 @@ architectury { fabric() } +configurations { + common + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentFabric.extendsFrom common +} + dependencies { - minecraft "com.mojang:minecraft:${rootProject.architectury.minecraft}" - mappings loom.officialMojangMappings() modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" diff --git a/testmod-forge/build.gradle b/testmod-forge/build.gradle index ca8af2ee..b5fcb979 100644 --- a/testmod-forge/build.gradle +++ b/testmod-forge/build.gradle @@ -1,13 +1,17 @@ plugins { - id "com.github.johnrengelman.shadow" version "5.0.0" + id "com.github.johnrengelman.shadow" version "7.0.0" id "com.matthewprenger.cursegradle" } loom { - mixinConfig "architectury.mixins.json" + forge { + mixinConfig "architectury.mixins.json" - localMods { - it.add(project(":forge").sourceSets.main) + localMods { + forge { + it.add(project(":forge").sourceSets.main) + } + } } } @@ -16,9 +20,14 @@ architectury { forge() } +configurations { + common + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentForge.extendsFrom common +} + dependencies { - minecraft "com.mojang:minecraft:${gradle.rootProject.architectury.minecraft}" - mappings loom.officialMojangMappings() forge "net.minecraftforge:forge:${gradle.rootProject.architectury.minecraft}-${rootProject.forge_version}" implementation project(path: ":forge", configuration: "namedElements")