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
41 changes: 22 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
name: Electric Advantage 1.13 CI
name: Electric 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: electricadvantage-1.13-${{ github.workflow }}-${{ github.ref }}
group: electricadvantage-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: ElectricAdvantage-1.13.2-${{ github.sha }}
name: ElectricAdvantage-1.14.4-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/ElectricAdvantage-2.2.5.113021.jar
build/libs/ElectricAdvantage-2.2.5.113021-sources.jar
build/libs/ElectricAdvantage-2.2.5.113021-javadoc.jar
build/libs/ElectricAdvantage-2.2.6.114041.jar
build/libs/ElectricAdvantage-2.2.6.114041-sources.jar
build/libs/ElectricAdvantage-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: ElectricAdvantage-1.13.2-diagnostics-${{ github.sha }}
name: ElectricAdvantage-1.14.4-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand All @@ -108,3 +110,4 @@ jobs:
build/*-run/logs/**
build/problems/**
.ci-dependencies/PowerAdvantage/build/reports/**
.ci-dependencies/PowerAdvantage/build/libs-dev/*.jar
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: '59 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
15 changes: 15 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
Electric Advantage 2.2.6.114041

- Target Minecraft 1.14.4 and Forge 28.2.26 using native platform classes and Java 8 production bytecode.
- Adapt machine state callbacks, shapes, smelting lookup, food detection, entity registration and spawn packets.
- Retain the shared native container API and use blit and the 1.14 GlStateManager for GUI/rendering code.
- Replace removed villager careers with librarian trade events, preserving offer levels, base quantities and prices.
- Use native condition serializers without changing recipe-mode IDs or JSON inputs.
- Use native block-loot lookup for drills and crops, and provide ordinary machine/conduit item-drop tables.
- Preserve runtime IDs, legacy migration aliases, NBT keys, drill geometry/costs and OreSpawn provider names.
- Resolve native crop blocks through IPlantable and retain deferred growth/progress NBT before world attachment.
- Add focused persistence, direction, geometry, recipe-mode, trade and resource regression tests.
- Native production/test compilation, all 34 unit tests and the development-jar build passed locally; no tests were skipped.
- Pass 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.

Electric Advantage 2.2.5.113021

- Keep development archives identical in existing workspaces and fresh CI checkouts.
Expand Down
38 changes: 30 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,40 @@
# ElectricAdvantage

Electric Advantage adds electric machines, generation, storage, automation, and defence to Power Advantage for Minecraft 1.13.2.
**Minecraft 1.14.4 port, version 2.2.6.114041.** Native compilation and all 34 unit
tests pass, with no tests skipped. 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.

Electric Advantage adds electric machines, generation, storage, automation, and defence to Power Advantage for Minecraft 1.14.4.

Every crafting and vanilla smelting 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) and [manufacturing progression audit](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.13.2/docs/1.13/MANUFACTURING-PROGRESSION.md). Regenerate unlock JSON after recipe changes with `node tools/generate-recipe-unlocks.js`; `check` audits recipe coverage and criteria. Custom machine and crushing recipes are not crafting-book entries.

## 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`, mappings `snapshot 20190719-1.14.3`,
and MCP `20190829.143755`, using 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 ElectricAdvantage:
For local development with the matching native jars, compile and run tests:

```text
gradlew.bat classes test deobfJar
```

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

```text
gradlew.bat clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts writeReleaseChecksums verifyEclipseProductionClasspath
Expand All @@ -37,9 +54,14 @@ 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.
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. Resource checks do not replace gameplay testing.

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

The implementation namespace is `zone.moddev.mc.electricadvantage`. Runtime identities, registries, tile/entity IDs, NBT, recipes, tags, OreSpawn provider IDs, and assets remain stable. Electric registers its legacy state, tile, and hydroturbine aliases with PowerAdvantage's shared migration hook.

The RF- and Tech Reborn-labelled converters belong to Power Advantage and now use Forge Energy.
Read the [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