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
35 changes: 15 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
name: basePower 1.17 CI
name: basePower 1.18 CI

on:
push:
branches: [master-1.17.1, 'feature/**']
branches: [master-1.18.2, 'feature/**']
pull_request:
branches: [master-1.17.1]
branches: [master-1.18.2]

permissions:
contents: read

concurrency:
group: poweradvantage-1.17-${{ github.workflow }}-${{ github.ref }}
group: basepower-1.18-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand All @@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf
ref: d31f52f296739f34a0c13f554abf3e1ac071ae25
path: .ci-dependencies/OreSpawn
- name: Use canonical LF dependency inputs
# Use the same source bytes on hosted and local dependency builds.
Expand All @@ -34,24 +34,19 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: 0deeeeecdbbc1fbcdecf910c59477de8efe164d7
ref: 3488ed58403722ac3ff203cff7680dfc16e0fd3f
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 16 production toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '16.0.2+7'
- name: Install Java 8 renamer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'
- name: Install Java 17 for Gradle
- name: Install Java 17 for Gradle and production
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
Expand All @@ -60,7 +55,7 @@ jobs:
# These are Gradle project properties, not JVM system properties.
shell: bash
run: >-
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_16_X64,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
-Porg.gradle.java.installations.auto-detect=false
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
- name: Set up Gradle
Expand All @@ -75,8 +70,8 @@ jobs:
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.117011-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.1.117011-deobf.jar"
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.118021-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.2.118021-deobf.jar"
test -f "$osjar" && test -f "$bmjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
Expand All @@ -90,20 +85,20 @@ jobs:
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: PowerAdvantage-1.17.1-${{ github.sha }}
name: basePower-1.18.2-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/basePower-2.4.9.117011.jar
build/libs/basePower-2.4.9.117011-sources.jar
build/libs/basePower-2.4.9.117011-javadoc.jar
build/libs/basePower-2.4.10.118021.jar
build/libs/basePower-2.4.10.118021-sources.jar
build/libs/basePower-2.4.10.118021-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt
- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: PowerAdvantage-1.17.1-diagnostics-${{ github.sha }}
name: basePower-1.18.2-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand Down
21 changes: 8 additions & 13 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.17.1, 'feature/**']
branches: [master-1.18.2, 'feature/**']
pull_request:
branches: [master-1.17.1]
branches: [master-1.18.2]
schedule:
- cron: '47 7 * * 4'

Expand All @@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf
ref: d31f52f296739f34a0c13f554abf3e1ac071ae25
path: .ci-dependencies/OreSpawn
- name: Use canonical LF dependency inputs
# Use the same source bytes on hosted and local dependency builds.
Expand All @@ -34,24 +34,19 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: 0deeeeecdbbc1fbcdecf910c59477de8efe164d7
ref: 3488ed58403722ac3ff203cff7680dfc16e0fd3f
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 16 production toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '16.0.2+7'
- name: Install Java 8 renamer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'
- name: Install Java 17 for Gradle
- name: Install Java 17 for Gradle and production
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
Expand All @@ -60,7 +55,7 @@ jobs:
# These are Gradle project properties, not JVM system properties.
shell: bash
run: >-
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_16_X64,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
-Porg.gradle.java.installations.auto-detect=false
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
- name: Set up Gradle
Expand All @@ -75,8 +70,8 @@ jobs:
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.117011-deobf.jar" >> "$GITHUB_OUTPUT"
echo "basemetals=$basemetals/build/libs-dev/BaseMetals-3.1.1.117011-deobf.jar" >> "$GITHUB_OUTPUT"
echo "orespawn=$orespawn/build/libs-dev/OreSpawn-4.1.0.118021-deobf.jar" >> "$GITHUB_OUTPUT"
echo "basemetals=$basemetals/build/libs-dev/BaseMetals-3.1.2.118021-deobf.jar" >> "$GITHUB_OUTPUT"
- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
with:
Expand Down
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.17.1
- master-1.18.2
- 'feature/**'
pull_request:
branches:
- master-1.17.1
- master-1.18.2

permissions:
contents: read
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
basePower 2.4.10.118021 (Minecraft 1.18.2)

- Bring basePower to Forge 40 and Java 17, keeping the same blocks, items and machine data.
- Use Forge's registry lifecycle for blocks, items and oil, and native save and update packets for machines.
- Carry old machine and entity data into 1.18's chunk format without blocking new terrain below the old world floor.
- Retire old Forge biome entries only when Minecraft's own data fixer handles the rename or merge.
- When upgrading with Base Metals, use 3.1.2. It lets basePower preserve old item wear, entities and machine facings before Minecraft converts the chunks.

basePower 2.4.9.117011 (Minecraft 1.17.1)

- Bring basePower to Minecraft 1.17.1 with one shared tab for the three mods.
Expand Down
57 changes: 27 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,41 @@
# basePower

**Minecraft 1.17.1, version 2.4.9.117011. Local test candidate.**
**Minecraft 1.18.2, version 2.4.10.118021.**

See the [1.17 port record](docs/1.17/PORT-STATUS.md) for this candidate's
validation status. The retained 1.16 and earlier reports are historical evidence,
not passes for 1.17. Manual testing follows the current automated qualification.
See the [1.18 port record](docs/1.18/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.

**Back up the entire world before upgrading. Test only disposable copies.**
The port retains existing registry names and legacy migration code. Upgrade tests
use disposable original and maintained saves, including connected machines.
Check every other mod's target-version support too.
The port keeps existing registry names and machine data. I tested disposable
copies of original Advantage and released base* saves, including connected
machines, and checked them again after closing and restarting Minecraft.
Check that the other mods in your world support 1.18.2 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.17.1
## Building Minecraft 1.18.2

The `master-1.17.1` build uses Forge 37.1.1, official `1.17.1` mappings,
MCP `20210706.113038`, ForgeGradle 7.0.34 and Gradle 9.6.1.
Run Gradle with Java 17 and compile and run production code with Java 16. Mavenizer also
The build uses Forge 40.3.0, official `1.18.2` mappings,
MCP `20220404.173914`, 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>,<java16>,<java17>,<java25>` and disable
`-Porg.gradle.java.installations.paths=<java8>,<java17>,<java25>` and disable
automatic discovery and downloads for a reproducibility check.

Build the pinned Base Metals `3.1.1.117011` and OreSpawn `4.1.0.117011` deobf jars first.
Use Base Metals 3.1.1 for its 1.17.1 startup fix. The build pins the exact
dependency source and checksums in `gradle.properties`.
Build the pinned Base Metals `3.1.2.118021` and OreSpawn `4.1.0.118021` deobf jars first.
The source pins and checksums are in `gradle.properties`.
Check out the pinned dependency sources with `core.autocrlf=false` so the
Base Metals development jar matches CI.
Use Base Metals 3.1.2 for upgrades with Base Metals installed. Its shared
save hook lets both mods preserve old items and machines before Minecraft
converts the chunk. Older Base Metals builds do not have that hook.

Then run from the repository root:

Expand All @@ -42,8 +46,8 @@ gradlew.bat clean check build javadoc verifyReleaseDependencies verifyReleaseArt
The default dependency jars are:

```text
D:\BaseMetals\BaseMetals 117\BaseMetals\build\libs-dev\BaseMetals-3.1.1.117011-deobf.jar
D:\MinecraftMineralogy\OS117\OreSpawn\build\libs-dev\OreSpawn-4.1.0.117011-deobf.jar
D:\BaseMetals\BaseMetals 118\BaseMetals\build\libs-dev\BaseMetals-3.1.2.118021-deobf.jar
D:\MinecraftMineralogy\OS118\OreSpawn\build\libs-dev\OreSpawn-4.1.0.118021-deobf.jar
```

Other layouts can pass `-PbaseMetalsDeobfJar=<path>` and `-PoreSpawnDeobfJar=<path>`.
Expand All @@ -65,10 +69,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.10.117011` deobf jars,
To prepare a combined client, build the baseSteam and baseElectric `2.2.11.118021` deobf jars,
run `gradlew.bat prepareCombinedEclipseLaunch`, refresh Eclipse, then launch
`runClientAllAdvantage.launch`. Inputs must match
`test-rig/profiles/native117/dev-core.json`; alternative layouts can pass
`test-rig/profiles/native118/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 @@ -77,15 +81,9 @@ preparing a launch does not copy, open or qualify a save.
which reads every development runtime jar entry and checks its size and CRC.
This catches damaged cached dependencies before the next test launch.

Client-resource and recipe-book checks must use the exact 1.17 candidate.
See the [client test instructions](test-rig/client-resources/README.md).
Manual visual and interaction acceptance remains separate. The retained Java 8
Eclipse compiler script is historical tooling, not a 1.17 verification command.
Keep Eclipse's access-restriction checks enabled and use Java 16 for its project
JRE and Minecraft launches.
The [native Eclipse compiler check](tools/verification/native117/README.md)
compiles fresh production and test outputs, then runs the complete unit-test
inventory on Java 16 without replacing the built mod jars.
Keep Eclipse's access-restriction checks enabled and use Java 17 for its project
JRE and Minecraft launches. Check visuals, menus and recipe discovery against the
same jars used for the automated machine tests.

## Compatibility

Expand All @@ -109,7 +107,6 @@ 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.
Use the [native Advantage Works guide](test-rig/NATIVE117.md) for this checkout.
The [1.17 status](docs/1.17/PORT-STATUS.md) tracks this port's qualification.
The [1.18 status](docs/1.18/PORT-STATUS.md) tracks this port's qualification.

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