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
33 changes: 17 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Steam Advantage 1.10 CI
name: baseSteam 1.10 CI

on:
push:
Expand All @@ -13,7 +13,7 @@ permissions:
contents: read

concurrency:
group: steamadvantage-1.10-${{ github.workflow }}-${{ github.ref }}
group: basesteam-1.10-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand All @@ -23,7 +23,7 @@ jobs:
timeout-minutes: 75

steps:
- name: Check out SteamAdvantage
- name: Check out baseSteam
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Check out pinned OreSpawn
Expand All @@ -33,12 +33,12 @@ jobs:
ref: 5a50df1158e948c8db55814e819090b34c12d765
path: .ci-dependencies/OreSpawn

- name: Check out pinned PowerAdvantage
- name: Check out pinned basePower
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 2443eaae7c666b8d54a5c9c30091892b79e80994
path: .ci-dependencies/PowerAdvantage
repository: MinecraftModDevelopmentMods/basePower
ref: 425af862ef5b41b61d3e1f7e665d1d691852ff4b
path: .ci-dependencies/basePower

- name: Install Java 8 toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
Expand Down Expand Up @@ -70,12 +70,12 @@ jobs:
test -f "$jar"
echo "jar=$jar" >> "$GITHUB_OUTPUT"

- name: Build pinned PowerAdvantage development jar
- name: Build pinned basePower development jar
id: poweradvantage
shell: bash
run: |
set -euo pipefail
dependency="$GITHUB_WORKSPACE/.ci-dependencies/PowerAdvantage"
dependency="$GITHUB_WORKSPACE/.ci-dependencies/basePower"
mirror="$RUNNER_TEMP/reborncore-mirror"
chmod +x "$dependency/gradlew"
(
Expand All @@ -86,8 +86,9 @@ jobs:
-PoreSpawnDeobfJar="${{ steps.orespawn.outputs.jar }}" \
--no-daemon --stacktrace
)
jar="$dependency/build/libs-dev/PowerAdvantage-2.4.3.110021-deobf.jar"
jar="$dependency/build/libs-dev/basePower-2.4.4.110021-deobf.jar"
test -f "$jar"
printf '%s %s\n' '2992F2CADC30D8F61A17216DF9AB02BDF8E8211BB8B494A6CCED70A3267F69FE' "$jar" | sha256sum --check --strict
echo "jar=$jar" >> "$GITHUB_OUTPUT"

- name: Make the wrapper executable
Expand All @@ -104,21 +105,21 @@ jobs:
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: SteamAdvantage-1.10.2-${{ github.sha }}
name: baseSteam-1.10.2-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/SteamAdvantage-2.2.5.110021.jar
build/libs/SteamAdvantage-2.2.5.110021-sources.jar
build/libs/SteamAdvantage-2.2.5.110021-javadoc.jar
build/libs/baseSteam-2.2.6.110021.jar
build/libs/baseSteam-2.2.6.110021-sources.jar
build/libs/baseSteam-2.2.6.110021-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt

- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: SteamAdvantage-1.10.2-diagnostics-${{ github.sha }}
name: baseSteam-1.10.2-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand All @@ -127,4 +128,4 @@ jobs:
build/*-run/logs/**
build/problems/**
.ci-dependencies/OreSpawn/build/reports/**
.ci-dependencies/PowerAdvantage/build/reports/**
.ci-dependencies/basePower/build/reports/**
19 changes: 10 additions & 9 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
timeout-minutes: 60

steps:
- name: Check out SteamAdvantage
- name: Check out baseSteam
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Check out pinned OreSpawn
Expand All @@ -33,12 +33,12 @@ jobs:
ref: 5a50df1158e948c8db55814e819090b34c12d765
path: .ci-dependencies/OreSpawn

- name: Check out pinned PowerAdvantage
- name: Check out pinned basePower
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 2443eaae7c666b8d54a5c9c30091892b79e80994
path: .ci-dependencies/PowerAdvantage
repository: MinecraftModDevelopmentMods/basePower
ref: 425af862ef5b41b61d3e1f7e665d1d691852ff4b
path: .ci-dependencies/basePower

- name: Install Java 8 toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
Expand Down Expand Up @@ -70,12 +70,12 @@ jobs:
test -f "$jar"
echo "jar=$jar" >> "$GITHUB_OUTPUT"

- name: Build pinned PowerAdvantage development jar
- name: Build pinned basePower development jar
id: poweradvantage
shell: bash
run: |
set -euo pipefail
dependency="$GITHUB_WORKSPACE/.ci-dependencies/PowerAdvantage"
dependency="$GITHUB_WORKSPACE/.ci-dependencies/basePower"
mirror="$RUNNER_TEMP/reborncore-mirror"
chmod +x "$dependency/gradlew"
(
Expand All @@ -86,16 +86,17 @@ jobs:
-PoreSpawnDeobfJar="${{ steps.orespawn.outputs.jar }}" \
--no-daemon --stacktrace
)
jar="$dependency/build/libs-dev/PowerAdvantage-2.4.3.110021-deobf.jar"
jar="$dependency/build/libs-dev/basePower-2.4.4.110021-deobf.jar"
test -f "$jar"
printf '%s %s\n' '2992F2CADC30D8F61A17216DF9AB02BDF8E8211BB8B494A6CCED70A3267F69FE' "$jar" | sha256sum --check --strict
echo "jar=$jar" >> "$GITHUB_OUTPUT"

- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
with:
languages: java-kotlin

- name: Compile SteamAdvantage production code
- name: Compile baseSteam production code
run: |
chmod +x ./gradlew
./gradlew clean classes --rerun-tasks --no-build-cache --no-daemon --stacktrace \
Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/release-on-tag.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Validate Steam Advantage release tag
name: Validate baseSteam release tag

on:
push:
Expand All @@ -10,13 +10,13 @@ permissions:
contents: read

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

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

Expand All @@ -37,6 +37,11 @@ jobs:
minecraft_version="$(value minecraft_version)"
loader_name="$(value loader_name)"
loader_code="$(value loader_code)"
project_id="$(value curseforge_project_id)"
if [[ ! "$project_id" =~ ^[1-9][0-9]*$ || "$project_id" == '240984' ]]; then
echo "baseSteam has no assigned CurseForge project; release validation is disabled" >&2
exit 1
fi

IFS=. read -r mc_major mc_minor mc_patch extra <<<"$minecraft_version"
if [[ -n "${extra:-}" || -z "${mc_major:-}" || -z "${mc_minor:-}" ]]; then
Expand Down
15 changes: 14 additions & 1 deletion CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@
Unreleased - Minecraft 1.10.2
baseSteam 2.2.6.110021

- Rename Steam Advantage to baseSteam, using the basesteam mod and asset namespace.
- Move implementation code to zone.moddev.mc.basesteam and require basePower 2.4.4.110021 or newer.
- Read original steamadvantage block, item and tile identities; write new tile saves with basesteam IDs.
- Import the old configuration and additional loot rules without replacing current administrator settings; retain the original bytes.
- Honour old Power oil fuel-setting keys after the rename, with raw fluid names and current keys taking priority.
- Keep the four original enchantment registry keys and numeric allocation order for 1.10 compatibility.
- Preserve hitscan musket behavior, recipes, machine ratings, fuel settings, and the stable Power API.
- Use basepower and base-metals CurseForge relations; leave the new project unassigned and block publication.
- Pin the exact basePower source commit and development-jar checksum in the build and CI.
- Document the copied-world, operating and restart checks without treating them as a guarantee for every third-party add-on.

Also included:

- Let Forge fluid sources control their own drainage, preserving the amount and fluid data they return.
- Keep fluid in the steam pump when an attached tank refuses it, and only charge for successful pickup.
Expand Down
52 changes: 43 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,34 @@
# SteamAdvantage
# baseSteam

Steam Advantage adds steam-powered machines and infrastructure to Power Advantage for Minecraft 1.10.2.
baseSteam continues DrCyano's Steam Advantage, adding boilers, steam networks and steam-powered machines to basePower for Minecraft 1.10.2.

The maintained implementation namespace is `zone.moddev.mc.steamadvantage`. This coordinated release
requires Power Advantage `2.4.3.110021` or newer; update the two mods together. Runtime registry,
tile-entity, asset, configuration, and saved-world identities are unchanged.
Version `2.2.6.110021` renames Steam Advantage to baseSteam, with mod ID `basesteam` and
implementation namespace `zone.moddev.mc.basesteam`. It requires basePower `2.4.4.110021` or newer.
Replace both old jars together; do not install the old and new mods side by side.
The rename changes no recipes, machine ratings, fuel values, or musket balance.

The cross-mod [Advantage Works 1.10.2 Handbook](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.10.2/docs/1.10/README.md) includes the Steam Engineer's Handbook, rated figures, commissioning layouts, and persistence tests. The [MMD material and fluid compatibility specification](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.10.2/docs/1.10/mmd-material-fluid-compatibility.md) defines crude-oil aliases and OreSpawn ownership.
## Release Status

This version is not published. The local checks include 135 Steam unit tests, original-release
migration fixtures, operating and full-restart checks, and finite-supply Steam endurance runs.
The [cross-mod qualification notes](https://github.com/MinecraftModDevelopmentMods/basePower/blob/master-1.10.2/docs/1.10/base-qualification.md)
record the tested jar checksums and limits. These checks do not replace manual gameplay acceptance.

The cross-mod [1.10.2 Handbook](https://github.com/MinecraftModDevelopmentMods/basePower/blob/master-1.10.2/docs/1.10/README.md) includes the Steam Engineer's Handbook, rated figures, commissioning layouts, and persistence tests. The [MMD material and fluid compatibility specification](https://github.com/MinecraftModDevelopmentMods/basePower/blob/master-1.10.2/docs/1.10/mmd-material-fluid-compatibility.md) defines crude-oil aliases and OreSpawn ownership.

## Existing Worlds

Back up worlds and configuration before migration, and test a copy first.
Original `steamadvantage` blocks, items, and tile IDs are accepted; new tile saves use `basesteam`.
`steamadvantage.cfg` is copied to `basesteam.cfg` only when the latter is absent; the original is retained.
Old Power oil fuel-setting keys still work, with raw fluid names and current keys taking priority.
Custom additional-loot-table files are imported without replacing existing baseSteam files, and the old
bytes are retained as inactive `*.json.before-basesteam` backups. Existing loot files are never replaced by defaults.

The four enchantment registry keys deliberately remain `steamadvantage:*`, preserving the original
numeric allocation order and Forge's saved enchantment-registry snapshot. This is a persistence
exception, not a second legacy mod container. This 1.10 version uses hitscan muskets, not saved projectile entities.
See [migration details and test coverage](docs/1.10-identity-migration.md).

## Drill Reload Fix

Expand All @@ -18,7 +40,7 @@ The regression tests cover resumed progress and full server restarts.

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.

Build the pinned OreSpawn commit `5a50df1158e948c8db55814e819090b34c12d765` first. Then build the pinned sibling PowerAdvantage development jar:
Build the pinned OreSpawn commit `5a50df1158e948c8db55814e819090b34c12d765` first. Then build the pinned sibling basePower development jar (the local checkout directory remains `PowerAdvantage`):

```text
cd ..\..\PowerAdvantage
Expand All @@ -27,7 +49,7 @@ gradlew.bat deobfJar

The dependency locations can be overridden with `-PoreSpawnDeobfJar=<path>` and `-PpowerAdvantageDeobfJar=<path>`.

Then build and audit SteamAdvantage:
Then build and audit baseSteam:

```text
gradlew.bat clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts writeReleaseChecksums
Expand All @@ -41,4 +63,16 @@ For Eclipse, import this repository as an existing Gradle project and run:
gradlew.bat cleanEclipse verifyEclipseProductionClasspath
```

Power Advantage `2.4.3.110021` or newer is required at compile time and runtime but is never bundled. OreSpawn is required transitively by Power Advantage. Base Metals remains a required distribution dependency while its integrations stay reflection-based and absent from the compile classpath.
The expected development artifact is `basePower-2.4.4.110021-deobf.jar`. Its SHA-256 is pinned in
`gradle.properties`, the build audit, CI and CodeQL, together with source commit
`425af862ef5b41b61d3e1f7e665d1d691852ff4b` from the MMD basePower repository.
The build checks both pins. Do not substitute the old Power Advantage jar or a moving branch.

basePower is required at compile time and runtime but is never bundled. OreSpawn is required transitively
by basePower. Base Metals remains a required distribution dependency while its integrations stay reflection-based
and absent from the compile classpath. The stable `cyano.poweradvantage.api` and required `com.mcmoddev`
compatibility types are not renamed.

CurseForge relations are `basepower` and `base-metals`. No new CurseForge project is assigned:
`curseforge_project_id=0` deliberately blocks publication and release validation until
a new project is assigned and the identity audit is updated. The former project ID must not be reused.
Loading
Loading