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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
/test-rig/.gradle/
/test-rig/.cache/
/test-rig/build/
/test-rig/logs/
/test-rig/migration-probe/.gradle/
/test-rig/migration-probe/build/
/test-rig/migration/.venv/
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
Unreleased - Minecraft 1.14.4

- Keep steel frames non-opaque on dedicated servers without changing their collision or drops.

- Keep power refused by one consumer available to the rest of its network.
- Check all accessible conveyor slots, respect stack limits and keep different item NBT separate.
- Route overflow into available slots and save both inventories after a transfer.
- Pick up source fluids without deleting waterlogged blocks or replacing solid blocks at a discharge.
- Backport measured machine jobs, strict restart checks and required GUI caption checks.

Power Advantage 2.4.5.114041 (Minecraft 1.14.4)

- Move to Minecraft 1.14.4 and Forge 28.2.26, retaining existing registry names, saved-state keys and public API packages.
Expand Down
32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,35 @@ normal chunk loading reconnects them without replacing pipes. The same protocol
records acquisition-stack diagnostics and pipe-only bridge regressions.

The historical 1.10 handbook remains on the [1.10.2 branch](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.10.2/docs/1.10/README.md).

The local [test-coverage backport](docs/1.14/TEST-COVERAGE-BACKPORT.md) records the
repaired candidate, measured machine jobs, restart checks and GUI captures.

## Generator Follow-Up

The [generator follow-up](docs/1.14/TEST-COVERAGE-BACKPORT.md#generator-follow-up) records the older `pa114-candidate-c` inputs.
Its 126 operating jobs and 126 cold checks, 39 GUI windows, 351 caption cases,
355 rejected broken controls, thirteen frozen routes and five connected routes
passed. The corrected paired 30-minute run also passed; the original POI failure
is retained. This is a pre-final Steam-control checkpoint, not qualification of
the newer SteamAdvantage jars or harness. Those still need the final sweep.
Manual play-testing and release review remain separate.

## Final T Candidate

The [final-t checkpoint](docs/1.14/TEST-COVERAGE-BACKPORT.md#final-t-candidate)
records profile `pa114-candidate-e` and its exact jar hashes. All 132 operating
jobs and 132 cold-restart comparisons pass, including an independent audit of
six Steam controls and their nine tile-hold records. GUI checks pass for 39
windows, 351 caption cases and 355 rejected broken controls.
Frozen migration passed on 13 routes and connected-source operation passed on
all five declared routes.
Fresh and migrated-copy 30-minute runs pass. Power and Electric retain their
exact-hash release and reproducibility proof; final-t Steam passes its full suite
and two independent export builds. All 18 mod/version release and reproducibility
gates pass across the six maintained Minecraft lines. Both requested broad
profiles and their independent audit pass; the reporter-only unit/replay
qualification preserves the original native proof. Survival harvest checks pass
before and after restart. The report's extra network/drill scopes are now
qualified; manual acceptance remains separate. Earlier checkpoints keep their original scope;
nothing has been published by this local test work.
14 changes: 12 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -1141,14 +1141,24 @@ tasks.register('prepareCombinedEclipseLaunch') {
group = 'ide'
description = 'Creates an additional production-only Eclipse client launch with all three Advantage mods.'
dependsOn tasks.named('verifyEclipseProductionClasspath')
dependsOn tasks.named('deobfJar')
doLast {
def profile = new JsonSlurper().parse(file('test-rig/profiles/native114/dev-core.json'))
File inputProfile = file(providers.gradleProperty('advantageDevelopmentProfile').getOrElse(
'test-rig/profiles/native114/dev-core.json'))
def profile = new JsonSlurper().parse(inputProfile)
if (profile.powerDeobfSha256) {
File powerJar = tasks.named('jar', Jar).get().archiveFile.get().asFile
String powerHash = MessageDigest.getInstance('SHA-256').digest(powerJar.bytes).encodeHex().toString()
if (!powerHash.equalsIgnoreCase(profile.powerDeobfSha256 as String)) {
throw new GradleException("PowerAdvantage does not match the dependency pin in ${inputProfile}: ${powerJar}")
}
}
advantageExtensionJars.each { String id, File jar ->
def pin = profile.mods.find { it.id == id }
if (!jar.isFile()) throw new GradleException("Build ${id} first, or override its *AdvantageDeobfJar property: ${jar}")
String hash = MessageDigest.getInstance('SHA-256').digest(jar.bytes).encodeHex().toString()
if (pin == null || !hash.equalsIgnoreCase(pin.sha256 as String)) {
throw new GradleException("${id} does not match the audited dev-core dependency pin: ${jar}")
throw new GradleException("${id} does not match the dependency pin in ${inputProfile}: ${jar}")
}
}
def launch = new groovy.xml.XmlParser().parse(file('runClient.launch'))
Expand Down
4 changes: 4 additions & 0 deletions docs/1.14/PORT-STATUS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Advantage 1.14.4 Port

> The earlier acceptance below applies to the archived candidate. See the
> [stronger regression record](TEST-COVERAGE-BACKPORT.md) for the locally repaired
> jars and their new machine, migration, restart and GUI results.

## Starting Point

The tested 1.14.4 candidate is accepted for merging. Visuals and recipe unlocks
Expand Down
Loading
Loading