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
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
* text=auto eol=lf
*.bat text eol=crlf
*.png binary
*.ogg binary
*.jar binary
*.zip binary
87 changes: 48 additions & 39 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,96 +1,105 @@
name: Electric Advantage 1.12 CI
name: Electric Advantage 1.13 CI

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

permissions:
contents: read

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

jobs:
build:
name: Build, test, and audit
runs-on: ubuntu-latest
timeout-minutes: 75

timeout-minutes: 105
steps:
- name: Check out ElectricAdvantage
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Check out pinned PowerAdvantage
- name: Check out pinned OreSpawn
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 6a7c2bb07b9a7771128812fcc07d185f7d9df58b
path: .ci-dependencies/OreSpawn
- 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: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: 1376a20d7d5ba22d3abc77dc34b49a2c88943697
path: .ci-dependencies/BaseMetals
- name: Check out PowerAdvantage 1.13.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 40811a0be37174a0633998eb3d820d95755d35e8
ref: 6a845ad68eb1e34dcdd793dceb9cb528be22cedf
path: .ci-dependencies/PowerAdvantage

- name: Install Java 8 toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'

- name: Install Java 17 for Gradle
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: microsoft
java-version: '17'

- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6

- name: Build pinned PowerAdvantage development jar
id: poweradvantage
- name: Build 1.13.2 dependency chain
id: dependencies
shell: bash
run: |
set -euo pipefail
dependency="$GITHUB_WORKSPACE/.ci-dependencies/PowerAdvantage"
mirror="$RUNNER_TEMP/reborncore-mirror"
chmod +x "$dependency/gradlew"
(
cd "$dependency"
bash gradle/stage-reborncore-release.sh "$mirror"
./gradlew deobfJar verifyReleaseDependencies \
-PrebornCoreVerificationRepository="$mirror" --no-daemon --stacktrace
)
jar="$dependency/build/libs-dev/PowerAdvantage-2.4.1.112021-deobf.jar"
test -f "$jar"
echo "jar=$jar" >> "$GITHUB_OUTPUT"

orespawn="$GITHUB_WORKSPACE/.ci-dependencies/OreSpawn"
basemetals="$GITHUB_WORKSPACE/.ci-dependencies/BaseMetals"
power="$GITHUB_WORKSPACE/.ci-dependencies/PowerAdvantage"
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"
test -f "$osjar" && test -f "$bmjar" && test -f "$powerjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
echo "power=$powerjar" >> "$GITHUB_OUTPUT"
echo "power_ref=$(git -C "$power" rev-parse HEAD)" >> "$GITHUB_OUTPUT"
- name: Build and audit release artifacts
run: >-
./gradlew clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts
writeReleaseChecksums verifyEclipseProductionClasspath
-PpowerAdvantageDeobfJar=${{ steps.poweradvantage.outputs.jar }}
-PpowerAdvantageDeobfJar=${{ steps.dependencies.outputs.power }}
-Ppoweradvantage_source_ref=${{ steps.dependencies.outputs.power_ref }}
-PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }}
-PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }}
--no-daemon --stacktrace

- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: ElectricAdvantage-1.12.2-${{ github.sha }}
name: ElectricAdvantage-1.13.2-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/ElectricAdvantage-2.2.1.112021.jar
build/libs/ElectricAdvantage-2.2.1.112021-sources.jar
build/libs/ElectricAdvantage-2.2.1.112021-javadoc.jar
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/release/SHA256SUMS
CHANGELOG.txt

- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: ElectricAdvantage-1.12.2-diagnostics-${{ github.sha }}
name: ElectricAdvantage-1.13.2-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand Down
75 changes: 42 additions & 33 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,11 @@ name: CodeQL

on:
push:
branches:
- master-1.12.2
- 'feature/**'
branches: [master-1.13.2, 'feature/**']
pull_request:
branches:
- master-1.12.2
branches: [master-1.13.2]
schedule:
- cron: '53 7 * * 4'
- cron: '59 7 * * 4'

permissions:
actions: read
Expand All @@ -20,62 +17,74 @@ jobs:
analyze:
name: Analyze Java
runs-on: ubuntu-latest
timeout-minutes: 60

timeout-minutes: 90
steps:
- name: Check out ElectricAdvantage
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Check out pinned PowerAdvantage
- name: Check out pinned OreSpawn
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 6a7c2bb07b9a7771128812fcc07d185f7d9df58b
path: .ci-dependencies/OreSpawn
- 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: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
ref: 1376a20d7d5ba22d3abc77dc34b49a2c88943697
path: .ci-dependencies/BaseMetals
- name: Check out PowerAdvantage 1.13.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 40811a0be37174a0633998eb3d820d95755d35e8
ref: 6a845ad68eb1e34dcdd793dceb9cb528be22cedf
path: .ci-dependencies/PowerAdvantage

- name: Install Java 8 toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'

- name: Install Java 17 for Gradle
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: microsoft
java-version: '17'

- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6

- name: Build pinned PowerAdvantage development jar
id: poweradvantage
- name: Build 1.13.2 dependency chain
id: dependencies
shell: bash
run: |
set -euo pipefail
dependency="$GITHUB_WORKSPACE/.ci-dependencies/PowerAdvantage"
mirror="$RUNNER_TEMP/reborncore-mirror"
chmod +x "$dependency/gradlew"
(
cd "$dependency"
bash gradle/stage-reborncore-release.sh "$mirror"
./gradlew deobfJar verifyReleaseDependencies \
-PrebornCoreVerificationRepository="$mirror" --no-daemon --stacktrace
)
jar="$dependency/build/libs-dev/PowerAdvantage-2.4.1.112021-deobf.jar"
test -f "$jar"
echo "jar=$jar" >> "$GITHUB_OUTPUT"

orespawn="$GITHUB_WORKSPACE/.ci-dependencies/OreSpawn"
basemetals="$GITHUB_WORKSPACE/.ci-dependencies/BaseMetals"
power="$GITHUB_WORKSPACE/.ci-dependencies/PowerAdvantage"
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"
test -f "$osjar" && test -f "$bmjar" && test -f "$powerjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
echo "power=$powerjar" >> "$GITHUB_OUTPUT"
echo "power_ref=$(git -C "$power" rev-parse HEAD)" >> "$GITHUB_OUTPUT"
- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
with:
languages: java-kotlin

- name: Compile ElectricAdvantage production code
run: |
chmod +x ./gradlew
./gradlew clean classes --rerun-tasks --no-build-cache --no-daemon --stacktrace \
-PpowerAdvantageDeobfJar=${{ steps.poweradvantage.outputs.jar }}

-PpowerAdvantageDeobfJar=${{ steps.dependencies.outputs.power }} \
-Ppoweradvantage_source_ref=${{ steps.dependencies.outputs.power_ref }} \
-PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }} \
-PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }}
- name: Analyze
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
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.12.2
- master-1.13.2
- 'feature/**'
pull_request:
branches:
- master-1.12.2
- master-1.13.2

permissions:
contents: read
Expand Down
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
/run/
/run-data/
/run.*
/$run/
/eula.txt
/server.properties
/*.log
/classes/
/logs/
Expand Down Expand Up @@ -62,6 +65,25 @@
/replay_pid*.log

/secret.json
# Nested local tooling and generated output
AGENTS.md
AGENT.md
CLAUDE.md
GEMINI.md
ARCHITECT.md
agent-notes/
.codex/
.agent/
.agents/
.claude/
.gemini/
.cursor/
agent-*.md
codex-*.md
*.log
*.class
__pycache__/
*.pyc
/.DS_Store
/README.txt
/forge-*-changelog.txt
34 changes: 34 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
Electric Advantage 2.2.5.113021

- Keep development archives identical in existing workspaces and fresh CI checkouts.
- Separate different electronics and machines into distinct recipe-book cells while keeping same-output alternatives together.
- Populate wire and carbon tags, point circuit-board ingredients at finished control circuits, and retain configured rubber and Normal solder compatibility.
- Restore lithium, silicon and solder smelting, mineral crushing and Apocalyptic parts recycling.
- Add lithium nugget/ingot conversion and smelting recipe-book discoveries.
- Restore legacy electric-parts chest loot through Power Advantage's native fallback when Additional Loot Tables is absent.
- Verify material-to-machine progression from raw resources in every recipe mode, with live processing, resource reload and full-restart checks.
- Add ingredient-triggered recipe-book discoveries for every crafting variant, retaining tagged ingredient compatibility and recipe-mode restrictions.
- Prevent Eclipse builds from replacing processed mod metadata with unresolved source templates.
- Fix literal 1.13 blockstate model paths and replace removed normal selectors, preserving every orientation and registry identity.
- Add modern language aliases alongside legacy GUI keys and audit native client resources in the combined Advantage launch.
- Point generated Eclipse mod discovery at bin/main and audit it, preventing launches that omit Electric Advantage.
- Make tile-type registration generic inference explicit for Eclipse's compiler.
- Retain a loaded hydroturbine's pending generator coordinate when saved before its first tick, preserving the same entity across restart.
- Charge track movement energy to the moved drill rather than the removed tile.
- Fix drill output into empty vanilla rear inventories and mark both inventories dirty after transfer.
- Preserve unfinished drill progress across chunk reloads and full restarts; reset it when a saved target state has changed.
- Keep legacy progress and target-coordinate NBT readable, with optional target-state snapshots for new saves.

- Preserve saved LED energy when upgrading 1.12 worlds or chained 1.10-to-1.12 worlds that use the legacy electricadvantage:l_e_d tile ID.

- Port Electric Advantage to Minecraft 1.13.2, Forge 25.0.223, and the zone.moddev.mc implementation namespace.
- Register legacy block-state, tile, item, and hydroturbine migrations with Power Advantage for direct 1.10 and 1.12 upgrades.
- Preserve all six Electric Drill facings, active state, energy, inventory, movement, output, and helper state.
- Replace Ore Dictionary recipes with Forge tags, including sulfur/sulphur and lithium compatibility aliases.
- Guard tagged recipes so reduced mod sets cannot drop required material ingredients.
- Register conditional OreSpawn 4 sulfur and lithium providers while preserving user-owned world profiles.
- Import retained OreSpawn 1.x lithium and sulfur settings through Power Advantage's non-destructive OreSpawn 4 provider bridge.
- Use Base Metals data-driven crushing recipes without embedding Base Metals.
- Preserve fluid-machine, battery, growth chamber, laser turret, and hydroelectric state across restart.
- Add reproducible 1.13 release artifacts, dependency audits, Eclipse metadata, and Advantage Works coverage.

Electric Advantage 2.2.1.112021

- Upgrade the Minecraft 1.12.2 build to ForgeGradle 7 and Gradle 9.6.1.
Expand Down
Loading
Loading