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
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: Steam Advantage 1.13 CI
name: Steam Advantage 1.14 CI

on:
push:
branches: [master-1.13.2, 'feature/**']
branches: [master-1.14.4, 'feature/**']
pull_request:
branches: [master-1.13.2]
branches: [master-1.14.4]

permissions:
contents: read

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

jobs:
Expand All @@ -25,22 +25,22 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 6a7c2bb07b9a7771128812fcc07d185f7d9df58b
ref: 9c2488cba02d317e3f31e24441dcc58273d8d0e6
path: .ci-dependencies/OreSpawn
- name: Use canonical LF dependency inputs
# Base Metals predates archive text normalization; its LF artifact is separately pinned.
# Use the same source bytes on hosted and local dependency builds.
run: git config --global core.autocrlf false
- name: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: 1376a20d7d5ba22d3abc77dc34b49a2c88943697
ref: 713802f93f2d1f650e1593fa35c487ea43add4a5
path: .ci-dependencies/BaseMetals
- name: Check out PowerAdvantage 1.13.2
- name: Check out PowerAdvantage 1.14.4
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 6a845ad68eb1e34dcdd793dceb9cb528be22cedf
ref: 1d498ca02b6795b16435f0ece35ac04c67ef6948
path: .ci-dependencies/PowerAdvantage
- name: Install Java 8 toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
Expand All @@ -54,7 +54,7 @@ jobs:
java-version: '17'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6
- name: Build 1.13.2 dependency chain
- name: Build 1.14.4 dependency chain
id: dependencies
shell: bash
run: |
Expand All @@ -65,10 +65,12 @@ jobs:
chmod +x "$orespawn/gradlew" "$basemetals/gradlew" "$power/gradlew"
(cd "$orespawn" && ./gradlew jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew jar --no-daemon --stacktrace)
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.113021-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.0.1.113021-deobf.jar"
(cd "$power" && ./gradlew jar verifyReleaseDependencies -PbaseMetalsDeobfJar="$bmjar" -PoreSpawnDeobfJar="$osjar" --no-daemon --stacktrace)
powerjar="$power/build/libs-dev/PowerAdvantage-2.4.4.113021-deobf.jar"
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.1.114041-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.0.1.114041-deobf.jar"
(cd "$power" && ./gradlew jar verifyReleaseDependencies \
-PbaseMetalsDeobfJar="$bmjar" -PoreSpawnDeobfJar="$osjar" \
--no-daemon --stacktrace)
powerjar="$power/build/libs-dev/PowerAdvantage-2.4.5.114041-deobf.jar"
test -f "$osjar" && test -f "$bmjar" && test -f "$powerjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
Expand All @@ -86,20 +88,20 @@ jobs:
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: SteamAdvantage-1.13.2-${{ github.sha }}
name: SteamAdvantage-1.14.4-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/SteamAdvantage-2.2.5.113021.jar
build/libs/SteamAdvantage-2.2.5.113021-sources.jar
build/libs/SteamAdvantage-2.2.5.113021-javadoc.jar
build/libs/SteamAdvantage-2.2.6.114041.jar
build/libs/SteamAdvantage-2.2.6.114041-sources.jar
build/libs/SteamAdvantage-2.2.6.114041-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt
- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: SteamAdvantage-1.13.2-diagnostics-${{ github.sha }}
name: SteamAdvantage-1.14.4-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.13.2, 'feature/**']
branches: [master-1.14.4, 'feature/**']
pull_request:
branches: [master-1.13.2]
branches: [master-1.14.4]
schedule:
- cron: '53 7 * * 4'

Expand All @@ -25,22 +25,22 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 6a7c2bb07b9a7771128812fcc07d185f7d9df58b
ref: 9c2488cba02d317e3f31e24441dcc58273d8d0e6
path: .ci-dependencies/OreSpawn
- name: Use canonical LF dependency inputs
# Base Metals predates archive text normalization; its LF artifact is separately pinned.
# Use the same source bytes on hosted and local dependency builds.
run: git config --global core.autocrlf false
- name: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: 1376a20d7d5ba22d3abc77dc34b49a2c88943697
ref: 713802f93f2d1f650e1593fa35c487ea43add4a5
path: .ci-dependencies/BaseMetals
- name: Check out PowerAdvantage 1.13.2
- name: Check out PowerAdvantage 1.14.4
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 6a845ad68eb1e34dcdd793dceb9cb528be22cedf
ref: 1d498ca02b6795b16435f0ece35ac04c67ef6948
path: .ci-dependencies/PowerAdvantage
- name: Install Java 8 toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
Expand All @@ -54,7 +54,7 @@ jobs:
java-version: '17'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6
- name: Build 1.13.2 dependency chain
- name: Build 1.14.4 dependency chain
id: dependencies
shell: bash
run: |
Expand All @@ -65,10 +65,12 @@ jobs:
chmod +x "$orespawn/gradlew" "$basemetals/gradlew" "$power/gradlew"
(cd "$orespawn" && ./gradlew jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew jar --no-daemon --stacktrace)
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.113021-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.0.1.113021-deobf.jar"
(cd "$power" && ./gradlew jar verifyReleaseDependencies -PbaseMetalsDeobfJar="$bmjar" -PoreSpawnDeobfJar="$osjar" --no-daemon --stacktrace)
powerjar="$power/build/libs-dev/PowerAdvantage-2.4.4.113021-deobf.jar"
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.1.114041-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.0.1.114041-deobf.jar"
(cd "$power" && ./gradlew jar verifyReleaseDependencies \
-PbaseMetalsDeobfJar="$bmjar" -PoreSpawnDeobfJar="$osjar" \
--no-daemon --stacktrace)
powerjar="$power/build/libs-dev/PowerAdvantage-2.4.5.114041-deobf.jar"
test -f "$osjar" && test -f "$bmjar" && test -f "$powerjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
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.13.2
- master-1.14.4
- 'feature/**'
pull_request:
branches:
- master-1.13.2
- master-1.14.4

permissions:
contents: read
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
Steam Advantage 2.2.6.114041

- Save the drill's cached facing without reloading a chunk during its unload-save.
- Target Minecraft 1.14.4 / Forge 28.2.26 with snapshot 20190719-1.14.3 mappings and MCP 20190829.143755.
- Adapt native block callbacks, tile validity, loot, recipe conditions, furnace recipes, musket hits and enchantments.
- Keep native machine containers and client rendering on Power Advantage's shared API.
- Detach drill helpers before line-removal callbacks; defer saved target loot restoration until server world attachment.
- Preserve existing registry identities, NBT keys, recipes, machine costs, output quantities and migration codecs.
- Replace removed villager careers with native profession trade events at the same levels and price ranges.
- Add native block self-drop tables and focused direction, progress, inventory, energy, musket and resource tests.
- Pass 27 unit/resource tests and combined-mod automated machine, migration, lifecycle and restart checks.
- Keep coverage limited to the recorded scenarios; back up whole worlds and test upgrades on disposable copies.

Steam Advantage 2.2.5.113021

- Keep development archives identical in existing workspaces and fresh CI checkouts.
Expand Down
46 changes: 37 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,41 @@
# SteamAdvantage

Steam Advantage adds steam-powered machines and infrastructure to Power Advantage for Minecraft 1.13.2.
**Minecraft 1.14.4 port, version 2.2.6.114041.** Native compilation and 27 unit/resource tests pass.
The combined-mod automated checks also cover client resources, connected machinery,
drill movement, chunk lifecycle, restart persistence and disposable-copy migration.
The [1.14 test results](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.14.4/docs/1.14/BROADER-QUALIFICATION.md)
describe the tested scenarios and remaining limits, not a guarantee for an entire modpack.

Steam Advantage adds steam-powered machines and infrastructure to Power Advantage for Minecraft 1.14.4.

Every crafting variant has an ingredient-triggered recipe-book discovery. See the [shared material checklist and discovery tests](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.13.2/docs/1.13/RECIPE-DISCOVERY.md). Regenerate unlock JSON after recipe changes with `node tools/generate-recipe-unlocks.js`; `check` audits recipe coverage and criteria. Crushing recipes are deliberately excluded from the crafting book.

The [manufacturing progression audit](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.13.2/docs/1.13/MANUFACTURING-PROGRESSION.md) checks raw-material, processing and loot acquisition paths in every mode, including restart persistence.
The historical [manufacturing progression protocol](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.13.2/docs/1.13/MANUFACTURING-PROGRESSION.md) describes raw-material, processing and loot acquisition paths in every mode, including restart persistence. See the 1.14 test results above for this port's coverage.

## Building Minecraft 1.13.2
## Building Minecraft 1.14.4

The `master-1.13.2` build uses ForgeGradle 7.0.34 and Gradle 9.6.1. Run Gradle with Java 17; production code is compiled for Java 8.
The `master-1.14.4` build targets Forge 28.2.26, snapshot `20190719-1.14.3` mappings,
and MCP `20190829.143755`. It uses ForgeGradle 7.0.34 and Gradle 9.6.1.
Run Gradle with Java 17; production code is compiled for Java 8.

Build the pinned PowerAdvantage, Base Metals, and OreSpawn deobf jars first.
Exact source commits and checksums are recorded in `gradle.properties`; CI builds the same commits.
Build the matching 1.14 PowerAdvantage, Base Metals and OreSpawn deobf jars first.
Dependency versions, checksums and the exact Power source reference belong in
`gradle.properties`. Release audits reject missing or placeholder pins; do not
bypass those checks or substitute a 1.13 dependency.
With the standard sibling layout:

```text
cd ..\..\PowerAdvantage
gradlew.bat deobfJar
```

Then build SteamAdvantage:
For local development, compile and run tests in SteamAdvantage:

```text
gradlew.bat compileJava test
```

With the exact Power dependency pinned, run the complete release gates:

```text
gradlew.bat clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts writeReleaseChecksums verifyEclipseProductionClasspath
Expand All @@ -39,8 +55,20 @@ The Eclipse resource root is `build/resources/main`, so its builder copies expan

## Compatibility

For an all-Advantage play-test, run `prepareCombinedEclipseLaunch` in the sibling PowerAdvantage checkout and select its `runClientAllAdvantage.launch`. The [native resource probe](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.13.2/test-rig/client-resources/README.md) checks models, textures and names across all three mods. These resource checks do not replace gameplay testing.
The 1.14 source adaptations preserve machine callbacks, all six drill directions, native
helper-tile lifecycle, saved progress and target snapshots, energy/inventory NBT, legacy
fluid contracts, musket loaded-state bytes and migration codecs. Native villager professions
replace the removed smith careers (armorer, weaponsmith, toolsmith) and priest (cleric).
Trades retain their legacy level and price ranges; 1.14 restocking and profession selection
follow the native engine.

Automated coverage is bounded to the recorded scenarios. It does not establish every
in-world GUI, rendering, sound, control or musket interaction, multiplayer behavior,
or compatibility with arbitrary third-party mods. Unit/resource tests alone are not
runtime or world-upgrade evidence.

For an all-Advantage play-test, run `prepareCombinedEclipseLaunch` in the sibling PowerAdvantage checkout and select its `runClientAllAdvantage.launch`. The [native resource probe](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.14.4/test-rig/client-resources/README.md) checks models, textures and names across all three mods. These resource checks do not replace gameplay testing.

The implementation namespace is `zone.moddev.mc.steamadvantage`. Runtime identities, registries, tile IDs, saved NBT, recipes, and assets remain stable. Steam registers its legacy state and NBT codecs with PowerAdvantage's shared migration hook so 1.10 and 1.12 worlds can be converted before Minecraft flattens old numeric block states.

Read PowerAdvantage's [1.13 migration guide](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.13.2/docs/1.13/MIGRATION.md) before upgrading, and always use a backup. The [qualification notes](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.13.2/docs/1.13/CURRENT-QUALIFICATION.md) list the tested scenarios and remaining gaps.
The historical [1.13 migration guide](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.13.2/docs/1.13/MIGRATION.md) explains the legacy conversion and backup process; the 1.14 test results above describe this port's coverage. Always make a whole-world backup before upgrading, keep the complete set of migration backups, and test only disposable copies. Check that every other mod supports the target version; these results do not qualify unrelated mods or an entire existing modpack.
Loading
Loading