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
2 changes: 1 addition & 1 deletion .github/verify-base-metals-pin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if [[ ! "$commit" =~ ^[0-9a-f]{40}$ ]]; then
exit 1
fi

branch=master-1.20.1
branch=master-1.20.6
if ! status="$(gh api "repos/MinecraftModDevelopmentMods/BaseMetals/compare/$commit...$branch" --jq '.status')"; then
echo "::error::Could not verify Base Metals $commit on upstream $branch"
exit 1
Expand Down
40 changes: 21 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
name: basePower 1.20.1 CI
name: basePower 1.20.6 CI

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

permissions:
contents: read

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

jobs:
Expand All @@ -21,7 +21,7 @@ jobs:
steps:
- name: Check out PowerAdvantage
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Require the Base Metals pin on upstream master-1.20.1
- name: Require the Base Metals pin on upstream master-1.20.6
id: base-metals-pin
env:
GH_TOKEN: ${{ github.token }}
Expand All @@ -32,29 +32,29 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 9d9db6cd315c9fce542808aa2551c94bf9267e93
ref: 4085315345ff043448b316d75e03f4b8da45402d
path: .ci-dependencies/OreSpawn
- name: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: ${{ steps.base-metals-pin.outputs.commit }}
ref: 9e706db5c85fa2bc7f36dee94f39a5f2fa8ab367
path: .ci-dependencies/BaseMetals
- name: Install pinned Java 25 Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'
- name: Install Java 8 renamer runtime
- name: Install Java 8 launcher helper
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'
- name: Install Java 17 for Gradle and production
- name: Install Java 21 for Gradle and production
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '17.0.1+12'
java-version: '21.0.7+6.0.LTS'
- name: Use pinned build toolchains
# These are Gradle project properties, not JVM system properties.
shell: bash
Expand All @@ -72,11 +72,13 @@ jobs:
orespawn="$GITHUB_WORKSPACE/.ci-dependencies/OreSpawn"
basemetals="$GITHUB_WORKSPACE/.ci-dependencies/BaseMetals"
mavenizer="$orespawn/ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.jar"
mirror="$RUNNER_TEMP/orespawn-mirror"
(cd "$basemetals" && bash gradle/stage-orespawn-release.sh "$mirror")
chmod +x "$orespawn/gradlew" "$basemetals/gradlew"
(cd "$orespawn" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.120011-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.2.120011-deobf.jar"
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar -PorespawnVerificationRepository="$mirror" --no-daemon --stacktrace)
osjar="$orespawn/build/libs/OreSpawn-4.1.0.120061.jar"
bmjar="$basemetals/build/libs/BaseMetals-3.1.2.120061.jar"
test -f "$osjar" && test -f "$bmjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
Expand All @@ -87,25 +89,25 @@ jobs:
writeReleaseChecksums verifyEclipseProductionClasspath
-PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }}
-PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }}
-Pforge47MavenizerJar=${{ steps.dependencies.outputs.mavenizer }}
-Pforge50MavenizerJar=${{ steps.dependencies.outputs.mavenizer }}
--no-daemon --stacktrace
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: basePower-1.20.1-${{ github.sha }}
name: basePower-1.20.6-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/basePower-2.4.12.120011.jar
build/libs/basePower-2.4.12.120011-sources.jar
build/libs/basePower-2.4.12.120011-javadoc.jar
build/libs/basePower-2.4.13.120061.jar
build/libs/basePower-2.4.13.120061-sources.jar
build/libs/basePower-2.4.13.120061-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt
- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: basePower-1.20.1-diagnostics-${{ github.sha }}
name: basePower-1.20.6-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand Down
26 changes: 14 additions & 12 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.20.1, 'feature/**']
branches: [master-1.20.6, 'feature/**']
pull_request:
branches: [master-1.20.1]
branches: [master-1.20.6]
schedule:
- cron: '47 7 * * 4'

Expand All @@ -21,7 +21,7 @@ jobs:
steps:
- name: Check out PowerAdvantage
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Require the Base Metals pin on upstream master-1.20.1
- name: Require the Base Metals pin on upstream master-1.20.6
id: base-metals-pin
env:
GH_TOKEN: ${{ github.token }}
Expand All @@ -32,29 +32,29 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 9d9db6cd315c9fce542808aa2551c94bf9267e93
ref: 4085315345ff043448b316d75e03f4b8da45402d
path: .ci-dependencies/OreSpawn
- name: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: ${{ steps.base-metals-pin.outputs.commit }}
ref: 9e706db5c85fa2bc7f36dee94f39a5f2fa8ab367
path: .ci-dependencies/BaseMetals
- name: Install pinned Java 25 Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'
- name: Install Java 8 renamer runtime
- name: Install Java 8 launcher helper
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'
- name: Install Java 17 for Gradle and production
- name: Install Java 21 for Gradle and production
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '17.0.1+12'
java-version: '21.0.7+6.0.LTS'
- name: Use pinned build toolchains
# These are Gradle project properties, not JVM system properties.
shell: bash
Expand All @@ -72,11 +72,13 @@ jobs:
orespawn="$GITHUB_WORKSPACE/.ci-dependencies/OreSpawn"
basemetals="$GITHUB_WORKSPACE/.ci-dependencies/BaseMetals"
mavenizer="$orespawn/ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.jar"
mirror="$RUNNER_TEMP/orespawn-mirror"
(cd "$basemetals" && bash gradle/stage-orespawn-release.sh "$mirror")
chmod +x "$orespawn/gradlew" "$basemetals/gradlew"
(cd "$orespawn" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
echo "orespawn=$orespawn/build/libs-dev/OreSpawn-4.1.0.120011-deobf.jar" >> "$GITHUB_OUTPUT"
echo "basemetals=$basemetals/build/libs-dev/BaseMetals-3.1.2.120011-deobf.jar" >> "$GITHUB_OUTPUT"
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar -PorespawnVerificationRepository="$mirror" --no-daemon --stacktrace)
echo "orespawn=$orespawn/build/libs/OreSpawn-4.1.0.120061.jar" >> "$GITHUB_OUTPUT"
echo "basemetals=$basemetals/build/libs/BaseMetals-3.1.2.120061.jar" >> "$GITHUB_OUTPUT"
echo "mavenizer=$mavenizer" >> "$GITHUB_OUTPUT"
- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
Expand All @@ -89,6 +91,6 @@ jobs:
./gradlew $MMD_GRADLE_TOOLCHAINS clean classes verifyReleaseDependencies --rerun-tasks --no-build-cache --no-daemon --stacktrace \
-PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }} \
-PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }} \
-Pforge47MavenizerJar=${{ steps.dependencies.outputs.mavenizer }}
-Pforge50MavenizerJar=${{ steps.dependencies.outputs.mavenizer }}
- name: Analyze
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
4 changes: 2 additions & 2 deletions .github/workflows/validate-gradle-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ name: Validate Gradle Wrapper
on:
push:
branches:
- master-1.20.1
- master-1.20.6
- 'feature/**'
pull_request:
branches:
- master-1.20.1
- master-1.20.6

permissions:
contents: read
Expand Down
11 changes: 10 additions & 1 deletion CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
basePower 2.4.12.120011 (Minecraft 1.20.1, Forge 47)
basePower 2.4.13.120061 (Minecraft 1.20.6)

- Bring basePower to Forge 50 and Java 21 without changing the names of existing machines or items.
- Read old machine inventories into Minecraft's new item components. Portable fluid tanks still keep their contents when picked up.
- Move recipes, recipe unlocks and loot to the new Forge and Minecraft formats.
- Fix the corrupted fluid texture in tank gauges and other machine screens.
- Keep player datapack chest loot overrides intact.
- Keep the shared upgrade hook so Base Metals and basePower can preserve old machine data before Minecraft converts the chunks.

basePower 2.4.12.120011 (Minecraft 1.20.1)

- Bring basePower to Forge 47 with the same blocks, items, and machine data.
- Use Minecraft's current screen rendering, creative tabs, and block properties.
Expand Down
52 changes: 26 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,49 @@
# basePower

**Minecraft 1.20.1, Forge 47.4.10, Java 17.**
**Minecraft 1.20.6 (Forge), version 2.4.13.120061.**

This branch prepares basePower `2.4.12.120011`. It is not a download announcement.

See the [1.20.1 port record](docs/1.20.1/PORT-STATUS.md) for the current checks.
See the [1.20.6 port record](docs/1.20.6/PORT-STATUS.md) for the current checks.
Results from earlier versions do not qualify this build.

basePower continues DrCyano's Power Advantage. It provides shared power,
fluids and item transport for baseSteam and baseElectric.

## Playing On 1.20.1
## Playing On 1.20.6

- Install [MMD OreSpawn 4.1.0.120011](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9175609) on both client and server.
- Install [MMD OreSpawn 4.1.0.120061](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9183384) on both client and server.
- Base Metals is optional for a new basePower world. For a world that already
uses Base Metals, keep it installed and use the matching Forge 1.20.1 build
`3.1.2.120011`. Older Base Metals builds do not have the shared upgrade hook.
uses Base Metals, keep it installed and use the matching Forge 1.20.6 build
`3.1.2.120061`. Older Base Metals builds do not have the shared upgrade hook.
- baseSteam and baseElectric are separate mods. Use only their matching
1.20.1 builds. Additional Loot Tables is not needed on 1.20.1.
1.20.6 builds. Additional Loot Tables is not needed for the built-in loot.

**Back up the entire world before upgrading. Test only disposable copies.**
The port keeps existing registry names and machine data. The upgrade checks
use disposable copies of original Advantage and released base* saves, including
connected machines, and check them again after a full restart. Check that the
other mods in your world support 1.20.1 before you upgrade.
other mods in your world support 1.20.6 before you upgrade.
The accepted [1.14 results](docs/1.14/BROADER-QUALIFICATION.md) are historical
evidence, not qualification of this port or a whole modpack.

Recipe-book discovery now follows relevant ingredients. See the [all-Advantage material checklist and automated discovery tests](docs/1.13/RECIPE-DISCOVERY.md). To regenerate the checked-in unlock JSON after changing recipes, run `node tools/generate-recipe-unlocks.js`; `check` rejects missing or stale ingredient criteria.

The [manufacturing progression audit](docs/1.13/MANUFACTURING-PROGRESSION.md) traces survival parts from raw resources, including configured material aliases, processing, loot-only parts and automated restart checks.

## Building Minecraft 1.20.1
## Building Minecraft 1.20.6

The build uses Forge 47.4.10, official `1.20.1` mappings,
MCP `20230612.114412`, ForgeGradle 7.0.34 and Gradle 9.6.1.
Use Java 17 for Gradle, compilation and Minecraft. Mavenizer also
needs Java 25. CI pins these JDKs and Java 8 for the legacy renamer. Pass the installed homes using
`-Porg.gradle.java.installations.paths=<java8>,<java17>,<java25>` and disable
The build uses Forge 50.2.0, official `1.20.6` mappings,
MCP `20240429.135109`, ForgeGradle 7.0.34 and Gradle 9.6.1.
Use Java 21 for Gradle, compilation and Minecraft. Mavenizer also
needs Java 25; the development launcher helper uses Java 8. Pass the installed homes using
`-Porg.gradle.java.installations.paths=<java8>,<java21>,<java25>` and disable
automatic discovery and downloads for a reproducibility check.

Build the pinned Base Metals `3.1.2.120011` and OreSpawn `4.1.0.120011` deobf jars first.
Use the pinned Base Metals `3.1.2.120061` and OreSpawn `4.1.0.120061` jars.
The source pins and checksums are in `gradle.properties`.
Forge 47 also needs the Mavenizer compatibility jar in the pinned OreSpawn
Forge 50 also needs the Mavenizer compatibility jar in the pinned OreSpawn
checkout's `ci-fixtures/tools/` directory. It fixes decompiled Forge sources
on a clean build and uses Java 25. It is not part of the mod or game runtime.
Set `-Pforge47MavenizerJar=<path>` when that checkout is in another location.
Set `-Pforge50MavenizerJar=<path>` when that checkout is in another location.
If Base Metals is installed, use the pinned 3.1.2 build when testing an upgrade. It lets
both mods preserve old items and machines before Minecraft converts the
chunk. An older Base Metals jar is not a substitute for this upgrade path.
Expand All @@ -59,8 +57,8 @@ gradlew.bat clean check build javadoc genEclipseRuns eclipse isolateEclipseProdu
The default dependency jars are:

```text
D:\BaseMetals\BaseMetals 1201\BaseMetals\build\libs-dev\BaseMetals-3.1.2.120011-deobf.jar
D:\MinecraftMineralogy\OS1201\OreSpawn\build\libs-dev\OreSpawn-4.1.0.120011-deobf.jar
D:\BaseMetals\.verification-basemetals1206\Advantage shared hook\build\libs\BaseMetals-3.1.2.120061.jar
D:\MinecraftMineralogy\OS1206\OreSpawn\build\libs\OreSpawn-4.1.0.120061.jar
```

Other layouts can pass `-PbaseMetalsDeobfJar=<path>` and `-PoreSpawnDeobfJar=<path>`.
Expand All @@ -72,7 +70,8 @@ player jar that differs from the frozen test kit. Hosted CI requires the Base
Metals pin to be on its upstream `master-1.20.1` branch; a locally tested pin
does not qualify a hosted build.

Release jars are written to `build/libs`; `deobfJar` writes the sibling-development jar to `build/libs-dev`.
Release jars are written to `build/libs`. Forge 50 uses the same mod jar for play
and development; `deobfJar` is kept as a task alias for older build scripts.

For Eclipse, import this repository as an existing Gradle project and run:

Expand All @@ -84,10 +83,10 @@ Refresh the project in Eclipse, allow its Java build to finish, and launch the g

Eclipse copies production resources from `build/resources/main`, not directly from `src/main/resources`. This prevents its builder from overwriting the expanded `mods.toml` with raw `${version}` placeholders. After updating this setup, use **Gradle > Refresh Gradle Project**, then **Project > Clean** before relaunching. After editing resources or version properties, run `processResources` or refresh the Gradle project before the Eclipse build. See the [metadata regression notes](docs/1.13/ECLIPSE-METADATA.md).

To prepare a combined client, build the baseSteam and baseElectric `2.2.13.120011` deobf jars,
To prepare a combined client, build the baseSteam and baseElectric `2.2.14.120061` jars,
run `gradlew.bat prepareCombinedEclipseLaunch`, refresh Eclipse, then launch
`runClientAllAdvantage.launch`. Inputs must match
`test-rig/profiles/native1201/dev-core.json`; alternative layouts can pass
`test-rig/profiles/native1206/dev-core.json`; alternative layouts can pass
`-PsteamAdvantageDeobfJar=<path>` and `-PelectricAdvantageDeobfJar=<path>`.
The ordinary `runClient.launch` remains Power-only. Both use the `run` directory;
preparing a launch does not copy, open or qualify a save.
Expand All @@ -96,7 +95,7 @@ preparing a launch does not copy, open or qualify a save.
matching their packages. They also read every development runtime jar entry
and check its size and CRC to catch damaged cached dependencies.

Keep Eclipse's access-restriction checks enabled and use Java 17 for its project
Keep Eclipse's access-restriction checks enabled and use Java 21 for its project
JRE and Minecraft launches. Check visuals, menus and recipe discovery against the
same jars used for the automated machine tests.

Expand All @@ -122,6 +121,7 @@ data-pack tags. The shared pre-flattening migration hook remains necessary;
its presence is not proof that an upgrade is safe.

The [legacy migration guide](docs/1.13/MIGRATION.md) describes the earlier protocols.
The [Advantage Works 1.20.1 guide](test-rig/NATIVE1201.md) lists the automated checks.
The [Advantage Works 1.20.1 guide](test-rig/NATIVE1201.md) describes the prior
qualification and the checks carried into 1.20.6.

The historical 1.10 handbook remains on the [1.10.2 branch](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.10.2/docs/1.10/README.md).
Loading
Loading