diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index edabbad7..25be5fc6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -172,7 +172,7 @@ jobs: set -euo pipefail bundle="$RUNNER_TEMP/release-input" mkdir -p "$bundle" - cp build/libs/ModernMetals-2.5.1.111021{,-sources,-javadoc}.jar "$bundle/" + cp build/libs/ModernMetals-2.5.2.111021{,-sources,-javadoc}.jar "$bundle/" cp build/release/SHA256SUMS CHANGELOG.txt "$bundle/" ./gradlew verifyPreparedReleaseArtifacts verifyMavenCoordinates \ -PpreparedReleaseDir="$bundle" \ @@ -205,9 +205,9 @@ jobs: if-no-files-found: error retention-days: 30 path: | - build/libs/ModernMetals-2.5.1.111021.jar - build/libs/ModernMetals-2.5.1.111021-sources.jar - build/libs/ModernMetals-2.5.1.111021-javadoc.jar + build/libs/ModernMetals-2.5.2.111021.jar + build/libs/ModernMetals-2.5.2.111021-sources.jar + build/libs/ModernMetals-2.5.2.111021-javadoc.jar build/release/SHA256SUMS CHANGELOG.txt diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 8abbc745..691b45df 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,7 @@ +2.5.2.111021 for 1.11.2 + +Use the published Base Metals 2.5.1.111021 and MMD OreSpawn 4.1.6.111021. + 2.5.1.111021 for 1.11.2 This brings the 1.11.2 branch up to date. Use Java 8, Forge 13.20.1.2588 or later for 1.11.2, Base Metals 2.5.1.111021 and MMD OreSpawn 4.1.5.111021. diff --git a/README.md b/README.md index e1afbc9f..d73ed53c 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,16 @@ Modern Metals adds industrial metals and alloys to Base Metals, with ores, building blocks, tools, armour and molten metals. This branch is for Minecraft -**1.11.2**, local candidate **2.5.1.111021**. +**1.11.2**, version **2.5.2.111021**. ## Installation Use Java **8** and Forge **13.20.1.2588 or newer for Minecraft 1.11.2**. -For local testing, put these three jars in `mods/` on both the client and server. +Put these three jars in `mods/` on both the client and server. -- Modern Metals `2.5.1.111021`. -- Base Metals `2.5.1.111021` from the staged 1.11.2 build, supported range `[2.5.1.111021,2.6.0)`. -- MMD OreSpawn `4.1.5.111021` from the staged 1.11.2 build, supported range `[4.1.5.111021,5.0.0)`. +- Modern Metals `2.5.2.111021`. +- [Base Metals 2.5.1.111021](https://www.curseforge.com/minecraft/mc-mods/base-metals/files/9526386), supported range `[2.5.1.111021,2.6.0)`. +- [MMD OreSpawn 4.1.6.111021](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9524249), supported range `[4.1.6.111021,5.0.0)`. Remove older copies first. Use the normal mod jars rather than the sources, Javadocs or development jars. This version uses Base Metals' shared library, so diff --git a/docs/BUILDING.md b/docs/BUILDING.md index e780903d..e66b5184 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -6,13 +6,8 @@ Forge is 13.20.1.2588 with stable-32 mappings. Release pins are Temurin 8u502-b0 17.0.1+12 and 25.0.3+9-LTS. Install them or pass their homes with `org.gradle.java.installations.paths`. Do not launch Gradle on Java 8. -Use Java 17 for `JAVA_HOME` and `PATH`. Until the pinned Base Metals and -OreSpawn builds are published, start with the staged checksum-verified Maven -mirror and pass its location as -`-PlegacyDependencyVerificationRepository=`. The mirror stores OreSpawn -at `zone/moddev/mc/orespawn/OreSpawn/4.1.5.111021/OreSpawn-4.1.5.111021.jar`. -The dependency audit checks its bytes against `gradle/dependencies.json`. -Once both artifacts are available, create the mirror and build as follows. +Use Java 17 for `JAVA_HOME` and `PATH`. Stage the pinned public Base Metals +and OreSpawn jars before building or importing the project into Eclipse. ```powershell $env:GRADLE_USER_HOME='' @@ -28,7 +23,7 @@ to select another location. Remapping and signature removal apply to development copies. No floating mod versions, JCenter or `mavenLocal()` are used. A normal build never publishes. -`build/libs/ModernMetals-2.5.1.111021.jar` is the installed jar. Sources/Javadocs +`build/libs/ModernMetals-2.5.2.111021.jar` is the installed jar. Sources/Javadocs are separate. Test probes are isolated from all release archives. ## Eclipse diff --git a/docs/RELEASING.md b/docs/RELEASING.md index e98805d6..bbb019dd 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -18,17 +18,11 @@ the same candidate bytes to Maven, CurseForge **244357**, then GitHub. CurseForg requires Base Metals **240967** and MMD OreSpawn **245586**, with Additional Loot Tables **243157** optional. Credentials and an HTTPS Maven target are required. -The dispatcher must be installed on the repository's default branch before a -manual release can be started. The current dispatcher on the 1.12 default -branch routes 1.10.2. Install the reviewed 1.11.2 routing there as part of an -authorized release. If an upload times out, check its status before trying again. +Start the release from the repository's default branch, `master-1.12`. Its +dispatcher routes the version to `master-1.11.2`. If an upload times out, check +its status before trying again. After the CurseForge download is publicly +available and verified, update the Forge 1.11.2 entries in `update.json` to +the exact version reported by Forge. -For the default-branch change, copy only the audited `deploy-release.yml`. It -routes each legacy suffix to its target branch and builds there. After a -release is publicly available, update the Forge 1.11.2 entries in `update.json` -to the exact version reported by Forge. - -The checksum-pinned Base Metals 1.11.2 and OreSpawn 4.1.5.111021 jars are -staged locally. Hosted CI requires matching files at their public Maven -coordinates. Reverify the pins if the published bytes differ from the -locally tested artifacts. +CI stages the public Base Metals and OreSpawn jars listed in +`gradle/dependencies.json` and verifies their SHA-256 checksums. diff --git a/gradle.properties b/gradle.properties index 7635e2f8..26bd9c55 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ mappings_version=32-1.11 mod_id=modernmetals mod_group=zone.moddev.mc.modernmetals -mod_version=2.5.1.111021 +mod_version=2.5.2.111021 mod_artifact=ModernMetals loader_name=forge loader_code=1 @@ -26,8 +26,8 @@ curseforge_project_id=244357 cf_requirements=mmd-orespawn,base-metals orespawn_curse_project_id=245586 coreplugin=zone.moddev.mc.modernmetals.compat.ModernMetalsLoadingPlugin -orespawn_version=4.1.5.111021 -orespawn_version_range=[4.1.5.111021,5.0.0) +orespawn_version=4.1.6.111021 +orespawn_version_range=[4.1.6.111021,5.0.0) basemetals_version=2.5.1.111021 basemetals_version_range=[2.5.1.111021,2.6.0) diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 9748783b..ddb96c37 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -40,13 +40,13 @@ tasks.register('verifyReleaseDependencies') { doLast { def artifacts = configurations.legacyModArtifacts.resolvedConfiguration.resolvedArtifacts def orespawn = specs.find { it.id == 'orespawn' } - if (orespawn.coordinate != 'zone.moddev.mc.orespawn:OreSpawn:4.1.5.111021' - || orespawn.sha256 != '5B200A9CE09DF96089FBD7781A026D15B6A7566A0F11B025EBBF486AB8A3655A') { - throw new GradleException('Use the checksum-pinned OreSpawn 4.1.5.111021 jar.') + if (orespawn.coordinate != 'curse.maven:mmd-orespawn-245586:9524249' + || orespawn.sha256 != '4246D1EB83FFFC325F04E3D3FE331D1404714F4A8D773ADE278A5D0EBEE5EDBC') { + throw new GradleException('Use the verified OreSpawn 4.1.6.111021 release.') } def basemetals = specs.find { it.id == 'basemetals' } - if (basemetals.coordinate != 'zone.moddev.mc.basemetals:BaseMetals:2.5.1.111021' - || basemetals.sha256 != 'F56C77ACE4963991AB56A76468EB398F555E4F6D059710C41DD7483054D76B8C') { + if (basemetals.coordinate != 'curse.maven:base-metals-240967:9526386' + || basemetals.sha256 != 'B69E62A786D32CB7D7129E237E3759355721F6D0ED90271C59B5E4444AF0F95C') { throw new GradleException('Use the verified Base Metals 2.5.1.111021 release.') } specs.each { spec -> diff --git a/gradle/dependencies.json b/gradle/dependencies.json index 35d602d2..3573f6b3 100644 --- a/gradle/dependencies.json +++ b/gradle/dependencies.json @@ -1,16 +1,16 @@ [ { "id": "basemetals", - "coordinate": "zone.moddev.mc.basemetals:BaseMetals:2.5.1.111021", - "sha256": "F56C77ACE4963991AB56A76468EB398F555E4F6D059710C41DD7483054D76B8C", - "repository": "https://maven.moddev.zone/releases", + "coordinate": "curse.maven:base-metals-240967:9526386", + "sha256": "B69E62A786D32CB7D7129E237E3759355721F6D0ED90271C59B5E4444AF0F95C", + "repository": "https://www.cursemaven.com", "runtime": true }, { "id": "orespawn", - "coordinate": "zone.moddev.mc.orespawn:OreSpawn:4.1.5.111021", - "sha256": "5B200A9CE09DF96089FBD7781A026D15B6A7566A0F11B025EBBF486AB8A3655A", - "repository": "https://maven.moddev.zone/releases", + "coordinate": "curse.maven:mmd-orespawn-245586:9524249", + "sha256": "4246D1EB83FFFC325F04E3D3FE331D1404714F4A8D773ADE278A5D0EBEE5EDBC", + "repository": "https://www.cursemaven.com", "runtime": true }, { diff --git a/gradle/release/artifacts.gradle b/gradle/release/artifacts.gradle index 5406280d..e4002826 100644 --- a/gradle/release/artifacts.gradle +++ b/gradle/release/artifacts.gradle @@ -38,7 +38,7 @@ tasks.register('verifyReleaseConfiguration') { group = 'verification' dependsOn tasks.named('verifyJava8Toolchain') doLast { - if (project.group != 'zone.moddev.mc.modernmetals' || project.version != '2.5.1.111021' + if (project.group != 'zone.moddev.mc.modernmetals' || project.version != '2.5.2.111021' || project.minecraft_version != '1.11.2' || project.forge_version != '13.20.1.2588' || project.mappings_channel != 'stable' || project.mappings_version != '32-1.11') { throw new GradleException('Modern Metals target, mappings or Maven identity changed.') @@ -47,8 +47,8 @@ tasks.register('verifyReleaseConfiguration') { if (!source.contains('VERSION = "' + project.version + '"') || !source.contains('MODID = "modernmetals"')) { throw new GradleException('The mod identity differs from the build metadata.') } - if (project.orespawn_version != '4.1.5.111021' - || project.orespawn_version_range != '[4.1.5.111021,5.0.0)' + if (project.orespawn_version != '4.1.6.111021' + || project.orespawn_version_range != '[4.1.6.111021,5.0.0)' || !source.contains('required-after:orespawn@' + project.orespawn_version_range) || !source.contains('required-after:forge@[13.20.1.2588,)')) { throw new GradleException('The OreSpawn or Forge runtime requirement changed.') diff --git a/src/main/java/zone/moddev/mc/modernmetals/ModernMetals.java b/src/main/java/zone/moddev/mc/modernmetals/ModernMetals.java index 3f406c03..1577f20e 100644 --- a/src/main/java/zone/moddev/mc/modernmetals/ModernMetals.java +++ b/src/main/java/zone/moddev/mc/modernmetals/ModernMetals.java @@ -27,7 +27,7 @@ modid = ModernMetals.MODID, name = ModernMetals.NAME, version = ModernMetals.VERSION, - dependencies = "required-after:forge@[13.20.1.2588,);required-after:basemetals@[2.5.1.111021,2.6.0);required-after:orespawn@[4.1.5.111021,5.0.0);after:tconstruct;after:ic2;after:cofhcore;after:thermalexpansion;after:mekanism;before:buildingbricks", + dependencies = "required-after:forge@[13.20.1.2588,);required-after:basemetals@[2.5.1.111021,2.6.0);required-after:orespawn@[4.1.6.111021,5.0.0);after:tconstruct;after:ic2;after:cofhcore;after:thermalexpansion;after:mekanism;before:buildingbricks", acceptedMinecraftVersions = "[1.11.2]", guiFactory = "zone.moddev.mc.modernmetals.client.ModernMetalsGuiFactory", updateJSON = ModernMetals.UPDATEJSON) @@ -47,7 +47,7 @@ public class ModernMetals { * increased whenever a change is made that has the potential to break * compatibility with other mods that depend on this one. */ - public static final String VERSION = "2.5.1.111021"; + public static final String VERSION = "2.5.2.111021"; public static final String UPDATEJSON = "https://raw.githubusercontent.com/MinecraftModDevelopmentMods/ModernMetals/master-1.11.2/update.json"; diff --git a/tools/validation/legacy111/README.md b/tools/validation/legacy111/README.md index 4a25e67d..2a0ff1a4 100644 --- a/tools/validation/legacy111/README.md +++ b/tools/validation/legacy111/README.md @@ -77,13 +77,14 @@ The server log verifies that a rejected client never enters the world. --public-jars --candidate --output ` verifies the SHA-256 of the original public jars, creates a 1.11.2 beta4.58 fixture, and checks a separate -upgraded copy on first load and reload. Pass `--mirror` for the staged dependencies. It checks placed blocks, filled +upgraded copy on first load and reload. Pass `--mirror` for a different dependency mirror. It checks placed blocks, filled buckets and item stacks with non-default count or damage. It stops on any Forge prompt to remove missing blocks or items. The source worlds are fingerprinted. ## Limits and separately owned defects -Base Metals 2.5.1.111021 and OreSpawn 4.1.5.111021 are staged locally. +The runtime tests use the public Base Metals 2.5.1.111021 and OreSpawn +4.1.6.111021 jars. The suite tests OS1 and OS3 import and checks that existing native overrides and saved world profiles survive migration. diff --git a/tools/validation/legacy111/check_content_modes.py b/tools/validation/legacy111/check_content_modes.py index ab47b119..a627c19e 100644 --- a/tools/validation/legacy111/check_content_modes.py +++ b/tools/validation/legacy111/check_content_modes.py @@ -12,7 +12,7 @@ def main(): args.output.mkdir(parents=True,exist_ok=False) specs=json.loads((ROOT/'gradle/dependencies.json').read_text()) jars=[dependency(s, args.mirror) for s in specs if s.get('runtime')] - jars += [ROOT/'build/libs/ModernMetals-2.5.1.111021.jar',ROOT/'build/test-mods/modernmetals-probe-packaged.jar'] + jars += [ROOT/'build/libs/ModernMetals-2.5.2.111021.jar',ROOT/'build/test-mods/modernmetals-probe-packaged.jar'] cases=[('default-with-base-low',None,'low_fantasy',False), ('modern-low','low_fantasy','high_fantasy',True), ('modern-high-with-base-low','high_fantasy','low_fantasy',False), diff --git a/tools/validation/legacy111/dependency_requirements.py b/tools/validation/legacy111/dependency_requirements.py index 2ecd4ec3..338af671 100644 --- a/tools/validation/legacy111/dependency_requirements.py +++ b/tools/validation/legacy111/dependency_requirements.py @@ -23,9 +23,9 @@ def verify(java,template,output,base,orespawn,modern): scenarios={ 'missing-base':([orespawn,modern],'basemetals','2.5.1.111021'), 'old-base':([old['base'],orespawn,modern],'basemetals','2.5.1.111021'), - 'missing-orespawn':([base,modern],'orespawn','4.1.5.111021'), - 'old-orespawn':([base,old['os'],modern],'orespawn','4.1.5.111021'), - 'old-orespawn4':([base,old['os4'],modern],'orespawn','4.1.5.111021') + 'missing-orespawn':([base,modern],'orespawn','4.1.6.111021'), + 'old-orespawn':([base,old['os'],modern],'orespawn','4.1.6.111021'), + 'old-orespawn4':([base,old['os4'],modern],'orespawn','4.1.6.111021') } result={} for name,(jars,modid,version) in scenarios.items(): diff --git a/tools/validation/legacy111/run_packaged_client.py b/tools/validation/legacy111/run_packaged_client.py index 9d53e6b2..ad954a90 100644 --- a/tools/validation/legacy111/run_packaged_client.py +++ b/tools/validation/legacy111/run_packaged_client.py @@ -94,7 +94,7 @@ def main(): parser.add_argument('--remote-port',type=int,help='Connect to a disposable server on loopback.') parser.add_argument('--expected-disconnect',help='Expected text in a pre-world disconnect.') parser.add_argument('--low-fantasy',action='store_true',help='Start the remote client in Low Fantasy.') - parser.add_argument('--mod-jar',type=Path,default=ROOT/'build/libs/ModernMetals-2.5.1.111021.jar') + parser.add_argument('--mod-jar',type=Path,default=ROOT/'build/libs/ModernMetals-2.5.2.111021.jar') parser.add_argument('--mirror', type=Path) parser.add_argument('--probe-jar', type=Path, default=ROOT/'build/test-mods/modernmetals-probe-packaged.jar') args=parser.parse_args() diff --git a/tools/validation/legacy111/run_packaged_suite.py b/tools/validation/legacy111/run_packaged_suite.py index 4e87ebf2..1eaf2eb9 100644 --- a/tools/validation/legacy111/run_packaged_suite.py +++ b/tools/validation/legacy111/run_packaged_suite.py @@ -22,7 +22,7 @@ def main(): args.output.mkdir(parents=True,exist_ok=False) specs=json.loads((ROOT/'gradle/dependencies.json').read_text()) jars=[dependency(s,args.mirror) for s in specs if s.get('runtime')] - jars += [ROOT/'build/libs/ModernMetals-2.5.1.111021.jar',ROOT/'build/test-mods/modernmetals-probe-packaged.jar'] + jars += [ROOT/'build/libs/ModernMetals-2.5.2.111021.jar',ROOT/'build/test-mods/modernmetals-probe-packaged.jar'] native=json.loads((ROOT/'build/reports/native-provider.json').read_text()) stock=json.loads((ROOT/'tools/validation/legacy111/fixtures/orespawn3-modernmetals.json').read_text()) @@ -184,7 +184,7 @@ def check(target,expected=None,properties=None,sample=False,saved=False): check(disabled_materials_optional,properties={'modern.disabled':'boron,beryllium,thorium,titanium'}) from dependency_requirements import verify verify(args.java,args.template,args.output,dependency(next(s for s in specs if s['id']=='basemetals'),args.mirror), - dependency(next(s for s in specs if s['id']=='orespawn'),args.mirror),ROOT/'build/libs/ModernMetals-2.5.1.111021.jar') + dependency(next(s for s in specs if s['id']=='orespawn'),args.mirror),ROOT/'build/libs/ModernMetals-2.5.2.111021.jar') assert fingerprint(fresh/'world')==before,'A source fixture world changed' write_json(args.output/'qualification.json',{'passed':True,'scenarios':18,'source_world_unchanged':True}) print('MODERN_METALS_PACKAGED_SUITE_PASS',flush=True) diff --git a/tools/validation/legacy111/run_runtime_checks.py b/tools/validation/legacy111/run_runtime_checks.py index ddf01336..408e7ad9 100644 --- a/tools/validation/legacy111/run_runtime_checks.py +++ b/tools/validation/legacy111/run_runtime_checks.py @@ -82,7 +82,7 @@ def main(): if 'mekanism' in selected: selected.add('mcmultipart') jars = [dependency(s,args.mirror) for s in specs if s.get('runtime') or s['id'] in selected] - jars += [ROOT/'build/libs/ModernMetals-2.5.1.111021.jar', ROOT/'build/test-mods/modernmetals-probe-packaged.jar'] + jars += [ROOT/'build/libs/ModernMetals-2.5.2.111021.jar', ROOT/'build/test-mods/modernmetals-probe-packaged.jar'] prepare(args.output, args.template, jars) if args.baseline: run(args.java,args.output,'first',{'modern.baseline':'true'},expect_failure=True) diff --git a/tools/validation/legacy111/runtime-probe/review/modern/ModernMetalsProbe.java b/tools/validation/legacy111/runtime-probe/review/modern/ModernMetalsProbe.java index bb73b43e..1611de6d 100644 --- a/tools/validation/legacy111/runtime-probe/review/modern/ModernMetalsProbe.java +++ b/tools/validation/legacy111/runtime-probe/review/modern/ModernMetalsProbe.java @@ -73,7 +73,7 @@ public static void run(final MinecraftServer server) throws Exception { final JsonArray failures = new JsonArray(); final Set disabled = new HashSet<>(Arrays.asList(System.getProperty("modern.disabled", "").split(","))); final JsonObject catalog = new JsonObject(); - check("2.5.1.111021".equals(Loader.instance().getIndexedModList().get("modernmetals").getVersion()), "mod version", failures); + check("2.5.2.111021".equals(Loader.instance().getIndexedModList().get("modernmetals").getVersion()), "mod version", failures); for (final String name : MATERIALS) { final MMDMaterial material = Materials.getMaterialByName(name); if (disabled.contains(name)) {