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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 26 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ permissions:
contents: read

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

jobs:
Expand All @@ -30,12 +30,25 @@ jobs:
- name: Use canonical LF dependency inputs
# Base Metals predates archive text normalization; its LF artifact is separately pinned.
run: git config --global core.autocrlf false
- name: Read Base Metals development pin
id: basemetals-pin
shell: bash
run: |
set -euo pipefail
ref=$(sed -n 's/^basemetals_source_commit=//p' gradle.properties)
[[ "$ref" =~ ^[a-f0-9]{40}$ ]]
echo "ref=$ref" >> "$GITHUB_OUTPUT"
- name: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: 1376a20d7d5ba22d3abc77dc34b49a2c88943697
ref: ${{ steps.basemetals-pin.outputs.ref }}
path: .ci-dependencies/BaseMetals
- name: Install Java 25 for Mavenizer
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'
- name: Install Java 8 toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
Expand All @@ -57,9 +70,12 @@ jobs:
basemetals="$GITHUB_WORKSPACE/.ci-dependencies/BaseMetals"
chmod +x "$orespawn/gradlew" "$basemetals/gradlew"
(cd "$orespawn" && ./gradlew jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew jar --no-daemon --stacktrace)
mirror="$RUNNER_TEMP/orespawn-mirror"
(cd "$basemetals" && bash gradle/stage-orespawn-release.sh "$mirror" &&
./gradlew jar "-PorespawnVerificationRepository=$mirror" --no-daemon --stacktrace)
bm_version=$(sed -n 's/^basemetals_version=//p' gradle.properties)
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.113021-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.0.1.113021-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-$bm_version-deobf.jar"
test -f "$osjar" && test -f "$bmjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
Expand All @@ -73,20 +89,21 @@ jobs:
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: PowerAdvantage-1.13.2-${{ github.sha }}
name: basePower-1.13.2-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/PowerAdvantage-2.4.4.113021.jar
build/libs/PowerAdvantage-2.4.4.113021-sources.jar
build/libs/PowerAdvantage-2.4.4.113021-javadoc.jar
build/libs/basePower-2.4.5.113021.jar
build/libs/basePower-2.4.5.113021-sources.jar
build/libs/basePower-2.4.5.113021-javadoc.jar
build/libs-dev/basePower-2.4.5.113021-deobf.jar
build/release/SHA256SUMS
CHANGELOG.txt
- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: PowerAdvantage-1.13.2-diagnostics-${{ github.sha }}
name: basePower-1.13.2-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand Down
22 changes: 19 additions & 3 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,25 @@ jobs:
- name: Use canonical LF dependency inputs
# Base Metals predates archive text normalization; its LF artifact is separately pinned.
run: git config --global core.autocrlf false
- name: Read Base Metals development pin
id: basemetals-pin
shell: bash
run: |
set -euo pipefail
ref=$(sed -n 's/^basemetals_source_commit=//p' gradle.properties)
[[ "$ref" =~ ^[a-f0-9]{40}$ ]]
echo "ref=$ref" >> "$GITHUB_OUTPUT"
- name: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: 1376a20d7d5ba22d3abc77dc34b49a2c88943697
ref: ${{ steps.basemetals-pin.outputs.ref }}
path: .ci-dependencies/BaseMetals
- name: Install Java 25 for Mavenizer
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'
- name: Install Java 8 toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
Expand All @@ -57,9 +70,12 @@ jobs:
basemetals="$GITHUB_WORKSPACE/.ci-dependencies/BaseMetals"
chmod +x "$orespawn/gradlew" "$basemetals/gradlew"
(cd "$orespawn" && ./gradlew jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew jar --no-daemon --stacktrace)
mirror="$RUNNER_TEMP/orespawn-mirror"
(cd "$basemetals" && bash gradle/stage-orespawn-release.sh "$mirror" &&
./gradlew jar "-PorespawnVerificationRepository=$mirror" --no-daemon --stacktrace)
bm_version=$(sed -n 's/^basemetals_version=//p' gradle.properties)
echo "orespawn=$orespawn/build/libs-dev/OreSpawn-4.1.0.113021-deobf.jar" >> "$GITHUB_OUTPUT"
echo "basemetals=$basemetals/build/libs-dev/BaseMetals-3.0.1.113021-deobf.jar" >> "$GITHUB_OUTPUT"
echo "basemetals=$basemetals/build/libs-dev/BaseMetals-$bm_version-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/release-on-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ permissions:
contents: read

concurrency:
group: poweradvantage-release-tag-${{ github.ref_name }}
group: basepower-release-tag-${{ github.ref_name }}
cancel-in-progress: false

jobs:
validate-release-tag:
name: Validate tag for manual release confirmation
if: github.repository == 'MinecraftModDevelopmentMods/PowerAdvantage'
if: github.repository == 'MinecraftModDevelopmentMods/basePower'
runs-on: ubuntu-latest
timeout-minutes: 10

Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
2.4.5.113021 - basePower for Minecraft 1.13.2

- Bring basePower to Forge 1.13.2 under the basePower name.
- Read both original Advantage and released base* worlds through the 1.13 block conversion, keeping machine inventories, fluid amounts and saved power.
- Convert filled oil buckets and keep the original configuration files when importing settings.
- Convert old vanilla item IDs in machine inventories, including sugar cane stored in growth chambers.
- Put all three mods' player-facing items on one creative tab named basePower.

Unreleased test-coverage repairs for 1.13.2

- Keep steel frames non-opaque on dedicated servers as well as clients.
Expand Down
19 changes: 12 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
# PowerAdvantage
# basePower for Minecraft 1.13.2

Power Advantage provides shared power, fluid, item transport, and compatibility APIs for its Minecraft 1.13.2 expansion mods.
basePower continues DrCyano's Power Advantage with conveyors, filters, fluid plumbing and the shared systems used by baseSteam and baseElectric.

This port keeps existing registry names and includes migration from 1.10 and 1.12.
Always back up a world before upgrading, and check that its other mods also support the target version.
The [qualification notes](docs/1.13/CURRENT-QUALIFICATION.md) separate tested scenarios from remaining gaps;
- Use Forge 25.0.223, Java 8, Base Metals 3.0.2.113021 and MMD OreSpawn 4.1.0.113021. The older Base Metals 3.0.1 download can crash while converting an old world.
- Back up the world and config. Replace the old Advantage or base* jars together, then open a copy of your world first. Save it, close Minecraft completely, and reopen the copy before upgrading your main world.

The upgrade understands original Advantage 1.10.2 and the released base* builds for 1.10.2 and 1.12.2. Check that the other mods in your world also support 1.13.2.

All three mods share the **basePower** creative tab. Look for the sprocket.
The [base* upgrade notes](docs/1.13/BASE-IDENTITY-MIGRATION.md) separate tested scenarios from remaining gaps;
they are not a guarantee that an entire modpack can be upgraded without losses.

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.
Expand All @@ -15,7 +19,7 @@ The [manufacturing progression audit](docs/1.13/MANUFACTURING-PROGRESSION.md) tr

The `master-1.13.2` build uses ForgeGradle 7.0.34 and Gradle 9.6.1. Run Gradle with Java 17; Gradle resolves the Java 8 production toolchain.

Build the pinned Base Metals `3.0.1.113021` and OreSpawn `4.1.0.113021` deobf jars in their sibling checkouts, then run:
Build the pinned Base Metals `3.0.2.113021` and OreSpawn `4.1.0.113021` deobf jars in their sibling checkouts, then run:

```text
gradlew.bat clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts writeReleaseChecksums verifyEclipseProductionClasspath
Expand All @@ -31,6 +35,7 @@ Advantage's own archives normalize text to LF.
All Advantage archives also exclude empty directories left behind by older source layouts.

Release jars are written to `build/libs`; `deobfJar` writes the sibling-development jar to `build/libs-dev`.
For publishing, use the [MMD release workflow](https://github.com/MinecraftModDevelopmentMods/basePower/actions/workflows/deploy-release.yml). It publishes the same checked jar to CurseForge and MMD Maven.

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

Expand All @@ -53,7 +58,7 @@ The [client resource probe](test-rig/client-resources/README.md) checks native b
The [stronger regression-test backport](docs/1.13/TEST-COVERAGE-BACKPORT.md)
records the local repairs, tested jar hashes and remaining manual checks.

The implementation namespace is `zone.moddev.mc.poweradvantage`. The historical `cyano.poweradvantage.api` surface, including `FluidNetworkApi`, remains available to dependent mods. Registry names, fluids, tile IDs, NBT keys, OreSpawn provider IDs, and configuration meaning remain stable.
The implementation namespace is `zone.moddev.mc.basepower`. The historical `cyano.poweradvantage.api` surface, including `FluidNetworkApi`, remains available. World migration translates old Advantage registry, fluid and tile names to the corresponding base* names while retaining saved machine data.

PowerAdvantage owns the shared pre-flattening migration hook used by all three Advantage mods. See [the 1.13 migration guide](docs/1.13/MIGRATION.md) before opening an irreplaceable 1.10 or 1.12 world. The [Advantage Works rig](test-rig/README.md) provides repeatable machine, restart, world-generation, and migration checks.

Expand Down
Loading
Loading