Skip to content

Commit 484b439

Browse files
authored
Merge the basePower 1.10.2 continuation
Continue Power Advantage under the basePower name, retaining the tested world migration, machine fixes and compatibility API. Keep publication separate.
2 parents eaf745d + 425af86 commit 484b439

517 files changed

Lines changed: 8215 additions & 2777 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/ci.yml‎

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Power Advantage 1.10 CI
1+
name: basePower 1.10 CI
22

33
on:
44
push:
@@ -13,7 +13,7 @@ permissions:
1313
contents: read
1414

1515
concurrency:
16-
group: poweradvantage-1.10-${{ github.workflow }}-${{ github.ref }}
16+
group: basepower-1.10-${{ github.workflow }}-${{ github.ref }}
1717
cancel-in-progress: true
1818

1919
jobs:
@@ -81,28 +81,46 @@ jobs:
8181
-PoreSpawnDeobfJar=${{ steps.orespawn.outputs.jar }}
8282
--no-daemon --stacktrace
8383
84+
- name: Check the isolated test harness
85+
run: >-
86+
./gradlew -p test-rig clean check assemble
87+
-PpowerAdvantageDeobfJar=${{ github.workspace }}/build/libs-dev/basePower-2.4.4.110021-deobf.jar
88+
--no-daemon --stacktrace
89+
90+
- name: Install Python for migration contract tests
91+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
92+
with:
93+
python-version: '3.12.14'
94+
95+
- name: Check migration and progression contracts
96+
run: |
97+
python -m pip install -r test-rig/migration/requirements.txt
98+
python -m unittest discover -s test-rig/migration -p 'test_*.py'
99+
84100
- name: Upload audited release candidate
85101
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
86102
with:
87-
name: PowerAdvantage-1.10.2-${{ github.sha }}
103+
name: basePower-1.10.2-${{ github.sha }}
88104
if-no-files-found: error
89105
retention-days: 30
90106
path: |
91-
build/libs/PowerAdvantage-2.4.3.110021.jar
92-
build/libs/PowerAdvantage-2.4.3.110021-sources.jar
93-
build/libs/PowerAdvantage-2.4.3.110021-javadoc.jar
107+
build/libs/basePower-2.4.4.110021.jar
108+
build/libs/basePower-2.4.4.110021-sources.jar
109+
build/libs/basePower-2.4.4.110021-javadoc.jar
94110
build/release/SHA256SUMS
95111
CHANGELOG.txt
96112
97113
- name: Upload diagnostics on failure
98114
if: failure()
99115
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
100116
with:
101-
name: PowerAdvantage-1.10.2-diagnostics-${{ github.sha }}
117+
name: basePower-1.10.2-diagnostics-${{ github.sha }}
102118
if-no-files-found: ignore
103119
retention-days: 14
104120
path: |
105121
build/test-results/**
106122
build/reports/**
107123
build/*-run/logs/**
108124
build/problems/**
125+
test-rig/build/gradle/test-results/**
126+
test-rig/build/gradle/reports/**

‎.github/workflows/release-on-tag.yml‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Validate Power Advantage release tag
1+
name: Validate basePower release tag
22

33
on:
44
push:
@@ -10,13 +10,13 @@ permissions:
1010
contents: read
1111

1212
concurrency:
13-
group: poweradvantage-release-tag-${{ github.ref_name }}
13+
group: basepower-release-tag-${{ github.ref_name }}
1414
cancel-in-progress: false
1515

1616
jobs:
1717
validate-release-tag:
1818
name: Validate tag for manual release confirmation
19-
if: github.repository == 'MinecraftModDevelopmentMods/PowerAdvantage'
19+
if: github.repository == 'MinecraftModDevelopmentMods/basePower'
2020
runs-on: ubuntu-latest
2121
timeout-minutes: 10
2222

@@ -37,6 +37,11 @@ jobs:
3737
minecraft_version="$(value minecraft_version)"
3838
loader_name="$(value loader_name)"
3939
loader_code="$(value loader_code)"
40+
project_id="$(value curseforge_project_id)"
41+
if [[ ! "$project_id" =~ ^[1-9][0-9]*$ || "$project_id" == '240982' ]]; then
42+
echo "basePower publication requires a new assigned CurseForge project; refusing $project_id" >&2
43+
exit 1
44+
fi
4045
4146
IFS=. read -r mc_major mc_minor mc_patch extra <<<"$minecraft_version"
4247
if [[ -n "${extra:-}" || -z "${mc_major:-}" || -z "${mc_minor:-}" ]]; then

‎.gitignore‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
/classes/
2626
/logs/
2727
/mcmodsrepo/
28+
/.ci-dependencies/
2829
/test-rig/.cache/
2930
/test-rig/.gradle/
3031
/test-rig/build/
@@ -77,6 +78,13 @@
7778
!/libs/RF-API.zip
7879

7980
/secret.json
81+
82+
# Packaged output; only the wrapper and the pinned RF API belong in source control.
83+
*.jar
84+
*.zip
85+
!/gradle/wrapper/gradle-wrapper.jar
86+
!/libs/RF-API.jar
87+
!/libs/RF-API.zip
8088
# Nested local tooling and generated output
8189
AGENTS.md
8290
AGENT.md

‎CHANGELOG.txt‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,20 @@
1-
Unreleased
1+
basePower 2.4.4.110021
2+
3+
- Continue Power Advantage as basePower, with the new basepower mod ID and namespace.
4+
- Read released Cyano 1.10 block, item and tile identities without rebuilding machines.
5+
- Import existing configuration and loot settings without overwriting base customisations.
6+
- Translate saved Forge mod and oil-owner records before world loading, with byte-for-byte header backups.
7+
- Keep OreSpawn choices during the identity change and stop on conflicting old and new settings.
8+
- Keep fluid identities, processing rules and the legacy add-on API available.
9+
- Restore translated portable-tank descriptions and retain the empty tank's description on its item.
10+
- Check upgrades on copies of released Cyano worlds, including Sylvester, and retain machine contents across full restarts.
11+
- Add finite-material recipe progression checks, including returned buckets, obtainable ingredient alternatives, villager trades and connected starter machines across full restarts.
12+
- Route Forge fluid capability calls through each machine's fluid handler, so stills fill their input tank and tank restrictions are respected.
13+
- Keep current OreSpawn global and saved-world profiles readable after a full restart, without resetting generation choices or accepting unknown future schemas.
14+
- Add the basePower project logo and updated installation, migration and CurseForge descriptions.
15+
- Run the migration-contract checks in clean checkouts and CI without depending on local folder names.
16+
17+
Earlier unreleased Advantage fixes, retained in basePower
218

319
- Restore missing carbon-dust and steel-block recipe names when equivalent registered materials are available. Keep existing Ore Dictionary entries and recipe amounts unchanged.
420
- Enable Forge's universal bucket during mod construction so oil buckets work without another mod enabling them first.

‎README.md‎

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,40 @@
1-
# PowerAdvantage
1+
# basePower
22

3-
Power Advantage provides shared power, fluid, and item transport systems for its Minecraft 1.10.2 expansion mods.
3+
basePower continues DrCyano's Power Advantage as a Base Metals expansion for Minecraft 1.10.2. It provides conveyors, filters, fluid pipes, tanks, oil processing and the shared power systems used by baseSteam and baseElectric. The original Advantage repositories remain available as historical references.
44

5-
The [test coverage backport notes](TEST-COVERAGE-BACKPORT.md#final-recorded-candidate) record the final machine, restart, control, partial-network, GUI, endurance, connected-world and reproducibility results alongside exact candidate hashes. The bounded legacy checks pass; the recipe progression graph is still partial. Earlier failures, modern follow-up findings and manual-testing limits are kept in the notes. This is not an all-machines or all-worlds guarantee.
5+
The new mod ID is `basepower`, with implementation packages under `zone.moddev.mc.basepower`. This is a coordinated replacement, not an add-on to the old Power Advantage jar. Read the [world migration instructions](docs/1.10/base-migration.md) before replacing mods in an existing world.
66

7-
The maintained implementation namespace is `zone.moddev.mc.poweradvantage`. The legacy
7+
## Playing And Upgrading
8+
9+
Use Java 8, Forge `12.18.3.2511` or a compatible later 1.10.2 build, Base Metals and MMD OreSpawn. The maintained dependency pack was tested with Base Metals `2.5.1.110021` and OreSpawn `4.1.2.110021`.
10+
11+
Back up the complete world and configuration, then try the upgrade on a copy. Replace Power Advantage with basePower. Replace Steam and Electric Advantage with matching baseSteam and baseElectric builds if they are installed; do not mix the old and new families. Existing machines and their saved contents migrate without rebuilding. Check the copy again after closing Minecraft completely and restarting it.
12+
13+
The supported historical source is the released Cyano 1.10.2 line. Old third-party integrations which check the original mod IDs may need an update. In particular, IAF's plumbing provider detection needs its separate basePower update; the preserved API alone cannot change that check.
14+
15+
## Validation And Guides
16+
17+
The [current candidate checks](docs/1.10/base-qualification.md) list the exact tested jars, results and remaining release gates.
18+
19+
The [recipe progression checks](docs/1.10/recipe-progression-checks.md) explain how the test rig verifies finite crafting chains, returned buckets, trading and a connected starter plant across full restarts.
20+
21+
The [historical test coverage notes](TEST-COVERAGE-BACKPORT.md#final-recorded-candidate) record the earlier Advantage candidates, including their exact hashes and remaining limits. They do not qualify the renamed jars. The base migration uses fresh disposable-world, operating, restart, GUI and endurance checks. The bounded recipe audit is separate from its still-partial crafting progression graph; neither is an all-machines or all-worlds guarantee.
22+
23+
The maintained implementation namespace is `zone.moddev.mc.basepower`. The legacy
824
`cyano.poweradvantage.api` package remains the supported add-on API.
925

10-
External fluid producers can offer fluid to an adjacent Power Advantage pipe through
26+
External fluid producers can offer fluid to an adjacent basePower pipe through
1127
`cyano.poweradvantage.api.fluid.FluidNetworkApi.offerFluid(...)`. The method reports the exact
1228
accepted amount without draining the caller's tank, allowing optional integrations to remain in
1329
control of their own fluid state.
1430

1531
The [Advantage Works 1.10.2 Handbook](docs/1.10/README.md) documents every machine and component across Power, Steam, and Electric Advantage, including commissioning layouts and known investigation points. The [MMD material and fluid compatibility specification](docs/1.10/mmd-material-fluid-compatibility.md) defines OreSpawn ownership, legacy migration, crude-oil aliases, and Ore Dictionary names.
1632

17-
The source-controlled [Advantage Works test rig](test-rig/README.md) turns those commissioning cards into a disposable, walkable Forge server world with repeatable save/restart checkpoints. It is a separate test mod and is never packaged with PowerAdvantage.
33+
The source-controlled [Advantage Works test rig](test-rig/README.md) turns those commissioning cards into a disposable, walkable Forge server world with repeatable save/restart checkpoints. It is a separate test mod and is never packaged with basePower.
1834

1935
## Building Minecraft 1.10.2
2036

21-
The rig profiles use Steam and Electric Advantage `2.2.5.110021`, which retain unfinished
22-
drill work after a restart. The machine repairs and their verification scope are
23-
described in the test coverage notes above; this work does not bump the version.
37+
The candidate versions are basePower `2.4.4.110021` and baseSteam/baseElectric `2.2.6.110021`. Local qualification includes 188 operating cases and 188 cold-state comparisons in each dependency pack, original Cyano fixtures, a disposable Sylvester upgrade, and two finite-supply Steam endurance runs. These are not a promise that every machine has run for 30 minutes or that every third-party integration has been tested.
2438

2539
The `master-1.10.2` build uses ForgeGradle 7.0.34 and Gradle 9.6.1. Run Gradle with Java 17; Gradle resolves the Java 8 toolchain used for compilation.
2640

@@ -30,6 +44,16 @@ Build the pinned OreSpawn commit `5a50df1158e948c8db55814e819090b34c12d765` firs
3044
gradlew.bat clean check build verifyReleaseDependencies verifyReleaseArtifacts writeReleaseChecksums
3145
```
3246

47+
The separate harness and migration-contract checks are also run in CI. With Python 3.12 installed:
48+
49+
```text
50+
gradlew.bat -p test-rig clean check assemble
51+
python -m pip install -r test-rig/migration/requirements.txt
52+
python -m unittest discover -s test-rig/migration -p "test_*.py"
53+
```
54+
55+
These contract tests do not start the full native server matrix. Its copied-world, operating and endurance results are recorded in the qualification notes.
56+
3357
Release jars are written to `build/libs`. The deobfuscated development jar for sibling mod compilation is written to `build/libs-dev` by `deobfJar` or `build`.
3458

3559
For Eclipse, import the repository as an existing Gradle project and run:
@@ -39,3 +63,9 @@ gradlew.bat cleanEclipse verifyEclipseProductionClasspath
3963
```
4064

4165
Base Metals remains a required distribution dependency and is absent from the compile classpath. OreSpawn is a required runtime dependency whose pinned public API is used at compile time; it is never bundled. Optional RF and RebornCore integrations compile against pinned API inputs and are not bundled.
66+
67+
## Publishing
68+
69+
Source delivery and CurseForge publication are separate. The new CurseForge project ID is still `0`, which deliberately blocks uploads; the original Power Advantage project must not be reused. No tag or release is created by the ordinary CI build.
70+
71+
The [project-page copy](docs/curseforge-description.md) and [logo](docs/branding/README.md) are kept with the source. The logo is not part of the mod jar, so it does not change the tested artifacts.

0 commit comments

Comments
 (0)