Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ check_hash() {
[[ "${actual^^}" == "$expected" ]] || fail "SHA-256 mismatch for $file: expected $expected, got ${actual^^}"
}

[[ "$(value minecraft_version)" == '1.19.4' && "$(value forge_version)" == '45.4.0' ]] ||
fail 'This dependency build is only for Minecraft 1.19.4 / Forge 45.4.0'
[[ "$(value poweradvantage_pin_state)" == 'PUBLISHED_RELEASE' ]] || fail 'The released basePower is not pinned'
[[ "$(value minecraft_version)" == '1.20.1' && "$(value forge_version)" == '47.4.10' ]] ||
fail 'This dependency build is only for Minecraft 1.20.1 / Forge 47.4.10'
[[ "$(value poweradvantage_pin_state)" == 'MERGED_SOURCE' ]] || fail 'basePower merged source is not pinned'

ore_ref="$(value orespawn_source_commit)"
bm_ref="$(value basemetals_source_commit)"
Expand Down Expand Up @@ -52,7 +52,7 @@ test "$(git -C "$basemetals" rev-parse HEAD)" = "$bm_ref"
test "$(git -C "$power" rev-parse HEAD)" = "$power_ref"

mavenizer="$orespawn/ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.jar"
check_hash "$mavenizer" '341B3FB10ABA6EA7DC612FBE519DC290A1C81867AED5DD320ACD783688AC49DE'
check_hash "$mavenizer" '416DCA4797BC55826F0DDCF03FDC405F1990FC15C2133FA27A1F143BF7976177'

read -r -a toolchains <<< "${MMD_GRADLE_TOOLCHAINS:?}"
ore_version="$(value orespawn_version)"
Expand All @@ -66,7 +66,7 @@ powerjar="$power/build/libs-dev/basePower-$power_version-deobf.jar"
powerplayer="$power/build/libs/basePower-$power_version.jar"
bootstrap="$power/test-rig/unit-bootstrap/ForgeCapabilityBootstrap.java"
agent="$power/build/unit-bootstrap/forge-native-unit-bootstrap.jar"
installer="${RUNNER_TEMP:?}/forge-1.19.4-45.4.0-installer.jar"
installer="${RUNNER_TEMP:?}/forge-1.20.1-47.4.10-installer.jar"

(cd "$orespawn" && ./gradlew "${toolchains[@]}" assemble --no-daemon --stacktrace)
check_hash "$osjar" "$(value orespawn_deobf_sha256)"
Expand All @@ -78,33 +78,15 @@ check_hash "$bmjar" "$(value basemetals_deobf_sha256)"
check_hash "$bmplayer" "$(value basemetals_runtime_sha256)"
check_hash "$bootstrap" "$(value poweradvantage_unit_bootstrap_sha256)"
(cd "$power" && ./gradlew "${toolchains[@]}" assemble unitBootstrapJar verifyReleaseDependencies --no-daemon --stacktrace \
"-Pforge45MavenizerJar=$mavenizer" "-PbaseMetalsDeobfJar=$bmjar" "-PoreSpawnDeobfJar=$osjar")
"-Pforge47MavenizerJar=$mavenizer" "-PbaseMetalsDeobfJar=$bmjar" "-PoreSpawnDeobfJar=$osjar")
git -C "$power" diff --exit-code HEAD --
check_hash "$powerjar" "$(value poweradvantage_deobf_sha256)"
check_hash "$powerplayer" "$(value poweradvantage_runtime_sha256)"
check_hash "$agent" "$(value poweradvantage_unit_bootstrap_jar_sha256)"
curl --fail --silent --show-error --location --proto '=https' \
'https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.4-45.4.0/forge-1.19.4-45.4.0-installer.jar' \
'https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.1-47.4.10/forge-1.20.1-47.4.10-installer.jar' \
--output "$installer"
check_hash "$installer" "$(value forge_installer_sha256)"

# Check public player bytes separately from the source-built development jars.
published="$RUNNER_TEMP/base-electric-published"
mkdir -p "$published"
fetch_public() {
curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' --output "$1" "$2"
check_hash "$1" "$3"
}
maven='https://maven.moddev.zone/releases/zone/moddev/mc'
powerplayer="$published/basePower-$power_version.jar"
bmplayer="$published/BaseMetals-$bm_version.jar"
osplayer="$published/OreSpawn-$ore_version.jar"
fetch_public "$powerplayer" "$maven/basepower/basePower/$power_version/basePower-$power_version.jar?ci=$GITHUB_RUN_ID" \
"$(value poweradvantage_runtime_sha256)"
fetch_public "$bmplayer" "$maven/basemetals/BaseMetals/$bm_version/BaseMetals-$bm_version.jar?ci=$GITHUB_RUN_ID" \
"$(value basemetals_runtime_sha256)"
fetch_public "$osplayer" 'https://www.curseforge.com/api/v1/mods/245586/files/9171353/download' \
"$(value orespawn_runtime_sha256)"

printf 'mavenizer=%s\norespawn=%s\norespawn_player=%s\nbasemetals=%s\nbasemetals_player=%s\npower=%s\npower_player=%s\nbootstrap=%s\nagent=%s\ninstaller=%s\n' \
"$mavenizer" "$osjar" "$osplayer" "$bmjar" "$bmplayer" "$powerjar" "$powerplayer" "$bootstrap" "$agent" "$installer" >> "$GITHUB_OUTPUT"
33 changes: 33 additions & 0 deletions .github/verify-published-pins.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
set -euo pipefail

value() { sed -n "s/^$1=//p" gradle.properties | tr -d '\r'; }

require_merged() {
local repo="$1" ref="$2" status
[[ "$ref" =~ ^[a-f0-9]{40}$ ]]
status="$(gh api "repos/MinecraftModDevelopmentMods/$repo/compare/$ref...master-1.20.1" --jq '.status')"
case "$status" in
identical|ahead) ;;
*) echo "::error::$repo $ref is not on upstream master-1.20.1 ($status)."; exit 1 ;;
esac
}

file_id="$(value poweradvantage_public_file_id)"
expected="$(value poweradvantage_runtime_sha256)"
if [[ ! "$file_id" =~ ^[1-9][0-9]*$ || ! "$expected" =~ ^[A-F0-9]{64}$ ]]; then
echo '::error::A verified public basePower 1.20.1 file ID and player checksum are required.'
exit 1
fi
require_merged basePower "$(value poweradvantage_source_ref)"
require_merged BaseMetals "$(value basemetals_source_commit)"

player="${RUNNER_TEMP:?}/basePower-public-player.jar"
curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
--output "$player" "https://www.curseforge.com/api/v1/mods/1780140/files/$file_id/download"
read -r actual _ < <(sha256sum < "$player")
if [[ "${actual^^}" != "$expected" ]]; then
echo "::error::Public basePower file $file_id SHA-256 is ${actual^^}, expected $expected."
exit 1
fi
printf 'power_player=%s\n' "$player" >> "${GITHUB_OUTPUT:?}"
35 changes: 20 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
name: baseElectric 1.19.4 CI
name: baseElectric 1.20.1 CI

on:
push:
branches: [master-1.19.4, 'feature/**']
branches: [master-1.20.1, 'feature/**']
pull_request:
branches: [master-1.19.4]
branches: [master-1.20.1]

permissions:
contents: read

concurrency:
group: baseelectric-1.19.4-${{ github.workflow }}-${{ github.ref }}
group: baseelectric-1.20.1-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand All @@ -23,9 +23,14 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Use canonical LF dependency inputs
run: git config --global core.autocrlf false
- name: Require coordinated 1.19.4 dependency pins
- name: Verify merged dependency pins and public basePower bytes
id: public-pins
env:
GH_TOKEN: ${{ github.token }}
run: bash .github/verify-published-pins.sh
- name: Require coordinated 1.20.1 dependency pins
id: pins
run: bash .github/scripts/forge45-dependencies.sh pins
run: bash .github/scripts/forge47-dependencies.sh pins
- name: Check out pinned OreSpawn
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
Expand Down Expand Up @@ -67,15 +72,15 @@ jobs:
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6
- name: Build 1.19.4 dependency chain
- name: Build 1.20.1 dependency chain
id: dependencies
run: bash .github/scripts/forge45-dependencies.sh build
run: bash .github/scripts/forge47-dependencies.sh build
- name: Build and audit release artifacts
shell: bash
env:
MAVENIZER: ${{ steps.dependencies.outputs.mavenizer }}
POWER_DEV: ${{ steps.dependencies.outputs.power }}
POWER_PLAYER: ${{ steps.dependencies.outputs.power_player }}
POWER_PLAYER: ${{ steps.public-pins.outputs.power_player }}
POWER_BOOTSTRAP: ${{ steps.dependencies.outputs.bootstrap }}
POWER_AGENT: ${{ steps.dependencies.outputs.agent }}
METALS_DEV: ${{ steps.dependencies.outputs.basemetals }}
Expand All @@ -85,7 +90,7 @@ jobs:
FORGE_INSTALLER: ${{ steps.dependencies.outputs.installer }}
run: |
./gradlew $MMD_GRADLE_TOOLCHAINS build writeReleaseChecksums verifyEclipseProductionClasspath \
"-Pforge45MavenizerJar=$MAVENIZER" "-PpowerAdvantageDeobfJar=$POWER_DEV" \
"-Pforge47MavenizerJar=$MAVENIZER" "-PpowerAdvantageDeobfJar=$POWER_DEV" \
"-PpowerAdvantageRuntimeJar=$POWER_PLAYER" "-PpowerAdvantageUnitBootstrapSource=$POWER_BOOTSTRAP" \
"-PpowerAdvantageUnitBootstrapJar=$POWER_AGENT" "-PbaseMetalsDeobfJar=$METALS_DEV" \
"-PbaseMetalsRuntimeJar=$METALS_PLAYER" "-PoreSpawnDeobfJar=$ORESPAWN_DEV" \
Expand All @@ -94,20 +99,20 @@ jobs:
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: baseElectric-1.19.4-${{ github.sha }}
name: baseElectric-1.20.1-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/baseElectric-2.2.12.119041.jar
build/libs/baseElectric-2.2.12.119041-sources.jar
build/libs/baseElectric-2.2.12.119041-javadoc.jar
build/libs/baseElectric-2.2.13.120011.jar
build/libs/baseElectric-2.2.13.120011-sources.jar
build/libs/baseElectric-2.2.13.120011-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt
- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: baseElectric-1.19.4-diagnostics-${{ github.sha }}
name: baseElectric-1.20.1-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand Down
19 changes: 12 additions & 7 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CodeQL

on:
push:
branches: [master-1.19.4, 'feature/**']
branches: [master-1.20.1, 'feature/**']
pull_request:
branches: [master-1.19.4]
branches: [master-1.20.1]
schedule:
- cron: '59 7 * * 4'

Expand All @@ -23,9 +23,14 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Use canonical LF dependency inputs
run: git config --global core.autocrlf false
- name: Require coordinated 1.19.4 dependency pins
- name: Verify merged dependency pins and public basePower bytes
id: public-pins
env:
GH_TOKEN: ${{ github.token }}
run: bash .github/verify-published-pins.sh
- name: Require coordinated 1.20.1 dependency pins
id: pins
run: bash .github/scripts/forge45-dependencies.sh pins
run: bash .github/scripts/forge47-dependencies.sh pins
- name: Check out pinned OreSpawn
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
Expand Down Expand Up @@ -67,9 +72,9 @@ jobs:
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6
- name: Build 1.19.4 dependency chain
- name: Build 1.20.1 dependency chain
id: dependencies
run: bash .github/scripts/forge45-dependencies.sh build
run: bash .github/scripts/forge47-dependencies.sh build
- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
with:
Expand All @@ -84,7 +89,7 @@ jobs:
ORESPAWN_DEV: ${{ steps.dependencies.outputs.orespawn }}
run: |
./gradlew $MMD_GRADLE_TOOLCHAINS classes verifyReleaseDependencies --rerun-tasks --no-build-cache --no-daemon --stacktrace \
"-Pforge45MavenizerJar=$MAVENIZER" "-PpowerAdvantageDeobfJar=$POWER_DEV" \
"-Pforge47MavenizerJar=$MAVENIZER" "-PpowerAdvantageDeobfJar=$POWER_DEV" \
"-PbaseMetalsDeobfJar=$METALS_DEV" "-PoreSpawnDeobfJar=$ORESPAWN_DEV"
- name: Analyze
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
9 changes: 7 additions & 2 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
baseElectric 2.2.12.119041 (Minecraft 1.19.4)
baseElectric 2.2.13.120011 (Minecraft 1.20.1 / Forge)

- Update to Forge 47.4.10 with Java 17.
- Keep machine save data, the shared creative tab, and older Electric Advantage world mappings.
- Keep the original ore tool levels, drops, machine block properties and drill track appearance on the new Forge APIs.

baseElectric 2.2.12.119041 (Minecraft 1.19.4 / Forge)

- Target Forge 45.4.0, official mappings, Java 17 and ForgeGradle 7.
- Register the same Electric content in the shared basePower creative tab.
- Retain machine data, recipe unlocks, ore drops and optional Base Metals recipes.
- Use native registry-aware crafting, sound, damage and renderer APIs.
- Pin the released basePower 2.4.11.119041 and the Base Metals migration fix.

baseElectric 2.2.10.117011 (Minecraft 1.17.1)

Expand Down
Loading
Loading