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
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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" \
Expand Down Expand Up @@ -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

Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 3 additions & 8 deletions docs/BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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=<mirror>`. 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='<one workspace cache shared with Eclipse>'
Expand All @@ -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
Expand Down
20 changes: 7 additions & 13 deletions docs/RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
10 changes: 5 additions & 5 deletions gradle/dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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 ->
Expand Down
12 changes: 6 additions & 6 deletions gradle/dependencies.json
Original file line number Diff line number Diff line change
@@ -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
},
{
Expand Down
6 changes: 3 additions & 3 deletions gradle/release/artifacts.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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.')
Expand All @@ -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.')
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/zone/moddev/mc/modernmetals/ModernMetals.java
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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";

Expand Down
5 changes: 3 additions & 2 deletions tools/validation/legacy111/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,14 @@ The server log verifies that a rejected client never enters the world.
--public-jars <download folder> --candidate <installed jar>
--output <new disposable directory>` 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.

Expand Down
2 changes: 1 addition & 1 deletion tools/validation/legacy111/check_content_modes.py
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
6 changes: 3 additions & 3 deletions tools/validation/legacy111/dependency_requirements.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down
2 changes: 1 addition & 1 deletion tools/validation/legacy111/run_packaged_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
4 changes: 2 additions & 2 deletions tools/validation/legacy111/run_packaged_suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -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())

Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion tools/validation/legacy111/run_runtime_checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public static void run(final MinecraftServer server) throws Exception {
final JsonArray failures = new JsonArray();
final Set<String> 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)) {
Expand Down
Loading