diff --git a/.github/workflows/build-prs.yml b/.github/workflows/build-prs.yml index f74b9ff476..e6f7e26618 100644 --- a/.github/workflows/build-prs.yml +++ b/.github/workflows/build-prs.yml @@ -31,23 +31,31 @@ jobs: run: git switch -C pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.ref }} + - name: Validate wrapper + uses: gradle/actions/wrapper-validation@v3 + - name: Setup JDK 21 uses: actions/setup-java@v2 with: java-version: '21' distribution: 'temurin' - - name: Setup with Gradle - uses: gradle/gradle-build-action@v2 + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 with: - arguments: setup cache-read-only: false + - name: Setup with Gradle + run: ./gradlew setup + - name: Build with Gradle - uses: gradle/gradle-build-action@v2 - with: - arguments: assemble checkFormatting - cache-read-only: false + run: ./gradlew assemble checkFormatting + + - name: Run JCC + run: ./gradlew checkJarCompatibility + + - name: Upload JCC + uses: neoforged/action-jar-compatibility/upload@v1 - name: Publish artifacts uses: neoforged/action-pr-publishing/upload@v1 diff --git a/.github/workflows/check-local-changes.yml b/.github/workflows/check-local-changes.yml new file mode 100644 index 0000000000..6a58660482 --- /dev/null +++ b/.github/workflows/check-local-changes.yml @@ -0,0 +1,48 @@ +name: Check PR local changes + +on: + pull_request: + types: + - synchronize + - opened + - ready_for_review + - reopened + +jobs: + check-local-changes: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1000 + fetch-tags: true + + # GradleUtils will append the branch name to the version, + # but for that we need a properly checked out branch + - name: Create branch for commit + run: + git switch -C pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.ref }} + + - name: Setup JDK 21 + uses: actions/setup-java@v2 + with: + java-version: '21' + distribution: 'temurin' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + cache-read-only: false + + - name: Setup with Gradle + run: ./gradlew setup + + - name: Run datagen with Gradle + run: ./gradlew :neoforge:runData :tests:runData + + - name: Check no local changes are present + run: | + # Print status for easier debugging + git status + if [ -n "$(git status --porcelain)" ]; then exit 1; fi diff --git a/.github/workflows/publish-jcc.yml b/.github/workflows/publish-jcc.yml new file mode 100644 index 0000000000..f4c78789bc --- /dev/null +++ b/.github/workflows/publish-jcc.yml @@ -0,0 +1,20 @@ +# File generated by the GradleUtils `setupGitHubActionsWorkflows` task, avoid modifying it directly +# The template can be found at https://github.com/neoforged/GradleUtils/blob/a65628b0c89dec60b357ce3f8f6bfa62934b8357/src/actionsTemplate/resources/.github/workflows/publish-jcc.yml + +name: Publish PR JCC output + +on: + workflow_run: + workflows: [Build PRs] + types: + - completed + +jobs: + publish-jcc: + if: true + uses: neoforged/actions/.github/workflows/publish-jcc.yml@main + with: + beta_version_pattern: .*-beta.* + secrets: + JCC_GH_APP_ID: ${{ secrets.JCC_GH_APP_ID }} + JCC_GH_APP_KEY: ${{ secrets.JCC_GH_APP_KEY }} diff --git a/.github/workflows/test-prs.yml b/.github/workflows/test-prs.yml index fd33722179..0fff8674c4 100644 --- a/.github/workflows/test-prs.yml +++ b/.github/workflows/test-prs.yml @@ -34,23 +34,19 @@ jobs: java-version: '21' distribution: 'temurin' - - name: Setup with Gradle - uses: gradle/gradle-build-action@v2 + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 with: - arguments: setup cache-read-only: false + - name: Setup with Gradle + run: ./gradlew setup + - name: Run game tests with Gradle - uses: gradle/gradle-build-action@v2 - with: - arguments: :tests:runGameTestServer - cache-read-only: false + run: ./gradlew :tests:runGameTestServer - name: Run JUnit tests with Gradle - uses: gradle/gradle-build-action@v2 - with: - arguments: :tests:runUnitTests - cache-read-only: false + run: ./gradlew :tests:runUnitTests - name: Store reports if: failure() diff --git a/build.gradle b/build.gradle index 183cf8203f..0dcce49b15 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ import java.util.regex.Matcher import java.util.regex.Pattern plugins { - id 'net.neoforged.gradleutils' version '3.0.0-alpha.10' apply false + id 'net.neoforged.gradleutils' version '3.0.0-alpha.13' apply false id 'com.diffplug.spotless' version '6.22.0' apply false id 'net.neoforged.licenser' version '0.7.2' id 'neoforge.formatting-conventions' diff --git a/projects/neoforge/build.gradle b/projects/neoforge/build.gradle index 119dcbea8e..8fdcec818e 100644 --- a/projects/neoforge/build.gradle +++ b/projects/neoforge/build.gradle @@ -1,6 +1,10 @@ +import net.neoforged.jarcompatibilitychecker.gradle.JCCPlugin +import net.neoforged.jarcompatibilitychecker.gradle.ProvideNeoForgeJarTask + plugins { id 'java-library' id 'maven-publish' + id 'net.neoforged.jarcompatibilitychecker' version '0.1.9' } apply plugin: 'net.neoforged.gradleutils' @@ -18,6 +22,24 @@ dynamicProject { rootProject.layout.projectDirectory.dir('rejects')) } +final checkVersion = JCCPlugin.providePreviousVersion( + project.providers, project.providers.provider({['https://maven.neoforged.net/releases']}), project.providers.provider({'net.neoforged:neoforge'}) +) +final createCompatJar = tasks.register('createCompatibilityCheckJar', ProvideNeoForgeJarTask) { + // Use the same jar that the patches were generated against + cleanJar.set(tasks.generateClientBinaryPatches.clean) + maven.set('https://maven.neoforged.net/releases') + artifact.set('net.neoforged:neoforge') + version.set(checkVersion) + javaLauncher = javaToolchains.launcherFor { + languageVersion = JavaLanguageVersion.of(java_version) + } +} +checkJarCompatibility { + isAPI = true + baseJar = createCompatJar.flatMap { it.output } +} + installerProfile { profile = 'NeoForge' } diff --git a/settings.gradle b/settings.gradle index 1ac035355b..589f0b3ad1 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,7 +7,7 @@ pluginManagement { } plugins { - id 'net.neoforged.gradle.platform' version '7.0.142' + id 'net.neoforged.gradle.platform' version '7.0.149' } rootProject.name = rootDir.name diff --git a/src/generated/resources/data/c/tags/item/tools/bow.json b/src/generated/resources/data/c/tags/item/tools/bow.json index d0dad42854..0e7a3eb3a2 100644 --- a/src/generated/resources/data/c/tags/item/tools/bow.json +++ b/src/generated/resources/data/c/tags/item/tools/bow.json @@ -1,8 +1,8 @@ { "values": [ - "minecraft:brush", + "minecraft:bow", { - "id": "#c:tools/brushes", + "id": "#forge:tools/bows", "required": false }, { diff --git a/src/generated/resources/reports/registry_order.json b/src/generated/resources/reports/registry_order.json index c7e0a8ef88..17ea12b63d 100644 --- a/src/generated/resources/reports/registry_order.json +++ b/src/generated/resources/reports/registry_order.json @@ -81,7 +81,6 @@ "neoforge:attachment_types", "neoforge:biome_modifier_serializers", "neoforge:condition_codecs", - "neoforge:display_contexts", "neoforge:entity_data_serializers", "neoforge:fluid_ingredient_type", "neoforge:fluid_type", diff --git a/tests/src/generated/resources/assets/minecraft/models/item/stick.json b/tests/src/generated/resources/assets/minecraft/models/item/stick.json index e3c18581e5..4e9498d758 100644 --- a/tests/src/generated/resources/assets/minecraft/models/item/stick.json +++ b/tests/src/generated/resources/assets/minecraft/models/item/stick.json @@ -1,7 +1,7 @@ { "parent": "minecraft:item/generated", "display": { - "custom_transformtype_test:hanging": { + "neotests:hanging": { "rotation": [ 62, 147,