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.110021{,-sources,-javadoc}.jar "$bundle/"
cp build/libs/ModernMetals-2.5.2.110021{,-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.110021.jar
build/libs/ModernMetals-2.5.1.110021-sources.jar
build/libs/ModernMetals-2.5.1.110021-javadoc.jar
build/libs/ModernMetals-2.5.2.110021.jar
build/libs/ModernMetals-2.5.2.110021-sources.jar
build/libs/ModernMetals-2.5.2.110021-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt

Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2.5.2.110021 for 1.10.2

Requires Base Metals 2.6.0.110021 and OreSpawn 4.1.6.110021 or compatible updates.
This picks up the latest Base Metals and OreSpawn fixes for 1.10.2.

2.5.1.110021 for 1.10.2

This brings the 1.10.2 branch up to date. Use Java 8, Forge 12.18.3.2511 or later for 1.10.2, Base Metals 2.5.1.110021 and MMD OreSpawn 4.1.2.110021.
Expand Down
8 changes: 4 additions & 4 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.10.2**, version **2.5.1.110021**.
**1.10.2**, version **2.5.2.110021**.

## Installation

Use Java **8** and Forge **12.18.3.2511 or newer for Minecraft 1.10.2**.
Put these three jars in `mods/` on both the client and server:

- Modern Metals `2.5.1.110021`.
- [Base Metals 2.5.1.110021](https://www.curseforge.com/minecraft/mc-mods/base-metals/files/9280029), supported range `[2.5.1.110021,2.6.0)`.
- [MMD OreSpawn 4.1.2.110021](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9276430), supported range `[4.1.2.110021,5.0.0)`.
- Modern Metals `2.5.2.110021`.
- [Base Metals 2.6.0.110021](https://www.curseforge.com/minecraft/mc-mods/base-metals/files/9524447), supported range `[2.6.0.110021,2.7.0)`.
- [MMD OreSpawn 4.1.6.110021](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9518063), supported range `[4.1.6.110021,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
2 changes: 1 addition & 1 deletion docs/BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ another location. Original jars stay unchanged; development copies are remapped
and stripped of invalid signatures. No floating mod versions, JCenter or
`mavenLocal()` are used. A normal build never publishes.

`build/libs/ModernMetals-2.5.1.110021.jar` is the installed jar. Sources/Javadocs
`build/libs/ModernMetals-2.5.2.110021.jar` is the installed jar. Sources/Javadocs
are separate. Test probes are isolated from all release archives.

## Eclipse
Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ mappings_version=29-1.10.2

mod_id=modernmetals
mod_group=zone.moddev.mc.modernmetals
mod_version=2.5.1.110021
mod_version=2.5.2.110021
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.2.110021
orespawn_version_range=[4.1.2.110021,5.0.0)
orespawn_version=4.1.6.110021
orespawn_version_range=[4.1.6.110021,5.0.0)

basemetals_version=2.5.1.110021
basemetals_version_range=[2.5.1.110021,2.6.0)
basemetals_version=2.6.0.110021
basemetals_version_range=[2.6.0.110021,2.7.0)
12 changes: 6 additions & 6 deletions gradle/dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ tasks.register('verifyReleaseDependencies') {
doLast {
def artifacts = configurations.legacyModArtifacts.resolvedConfiguration.resolvedArtifacts
def orespawn = specs.find { it.id == 'orespawn' }
if (orespawn.coordinate != 'curse.maven:mmd-orespawn-245586:9276430'
|| orespawn.sha256 != '4D4975421FEEBF17505056306D06B0344D7A4553B6275885D7C5C5065B0348A6') {
throw new GradleException('Use the verified OreSpawn 4.1.2.110021 release.')
if (orespawn.coordinate != 'curse.maven:mmd-orespawn-245586:9518063'
|| orespawn.sha256 != '05DB7CBFAADC815D6A713DACDFB9F0647BCED49CCFC357FB2FF010E95BD1379F') {
throw new GradleException('Use the verified OreSpawn 4.1.6.110021 release.')
}
def basemetals = specs.find { it.id == 'basemetals' }
if (basemetals.coordinate != 'curse.maven:base-metals-240967:9280029'
|| basemetals.sha256 != '8BB1823592DCD558D17C4848AE917266FE7197B754CA628297DF837CFB3D20A3') {
throw new GradleException('Use the verified Base Metals 2.5.1.110021 release.')
if (basemetals.coordinate != 'curse.maven:base-metals-240967:9524447'
|| basemetals.sha256 != '9CA948215549C4A3D30D76339932ED489FB7D2C73A71A5F4F8F68456B8BC276B') {
throw new GradleException('Use the verified Base Metals 2.6.0.110021 release.')
}
specs.each { spec ->
def parts = spec.coordinate.split(':')
Expand Down
8 changes: 4 additions & 4 deletions gradle/dependencies.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
[
{
"id": "basemetals",
"coordinate": "curse.maven:base-metals-240967:9280029",
"sha256": "8BB1823592DCD558D17C4848AE917266FE7197B754CA628297DF837CFB3D20A3",
"coordinate": "curse.maven:base-metals-240967:9524447",
"sha256": "9CA948215549C4A3D30D76339932ED489FB7D2C73A71A5F4F8F68456B8BC276B",
"repository": "https://www.cursemaven.com",
"runtime": true
},
{
"id": "orespawn",
"coordinate": "curse.maven:mmd-orespawn-245586:9276430",
"sha256": "4D4975421FEEBF17505056306D06B0344D7A4553B6275885D7C5C5065B0348A6",
"coordinate": "curse.maven:mmd-orespawn-245586:9518063",
"sha256": "05DB7CBFAADC815D6A713DACDFB9F0647BCED49CCFC357FB2FF010E95BD1379F",
"repository": "https://www.cursemaven.com",
"runtime": true
},
Expand Down
10 changes: 6 additions & 4 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.110021'
if (project.group != 'zone.moddev.mc.modernmetals' || project.version != '2.5.2.110021'
|| project.minecraft_version != '1.10.2' || project.forge_version != '12.18.3.2511'
|| project.mappings_channel != 'stable' || project.mappings_version != '29-1.10.2') {
throw new GradleException('Modern Metals target, mappings or Maven identity changed.')
Expand All @@ -47,13 +47,15 @@ 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.2.110021'
|| project.orespawn_version_range != '[4.1.2.110021,5.0.0)'
if (project.orespawn_version != '4.1.6.110021'
|| project.orespawn_version_range != '[4.1.6.110021,5.0.0)'
|| !source.contains('required-after:orespawn@' + project.orespawn_version_range)
|| !source.contains('required-after:Forge@[12.18.3.2511,)')) {
throw new GradleException('The OreSpawn or Forge runtime requirement changed.')
}
if (!source.contains('required-after:basemetals@[2.5.1.110021,2.6.0)')) {
if (project.basemetals_version != '2.6.0.110021'
|| project.basemetals_version_range != '[2.6.0.110021,2.7.0)'
|| !source.contains('required-after:basemetals@' + project.basemetals_version_range)) {
throw new GradleException('The published Base Metals 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@[12.18.3.2511,);required-after:basemetals@[2.5.1.110021,2.6.0);required-after:orespawn@[4.1.2.110021,5.0.0);after:tconstruct;after:IC2;after:cofhcore;after:thermalexpansion;after:Mekanism;before:buildingbricks",
dependencies = "required-after:Forge@[12.18.3.2511,);required-after:basemetals@[2.6.0.110021,2.7.0);required-after:orespawn@[4.1.6.110021,5.0.0);after:tconstruct;after:IC2;after:cofhcore;after:thermalexpansion;after:Mekanism;before:buildingbricks",
acceptedMinecraftVersions = "[1.10.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.110021";
public static final String VERSION = "2.5.2.110021";

public static final String UPDATEJSON = "https://raw.githubusercontent.com/MinecraftModDevelopmentMods/ModernMetals/master-1.10.2/update.json";

Expand Down
4 changes: 2 additions & 2 deletions tools/validation/legacy110/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ and confirms that imports/reloads do not rewrite it.
scrolling, Escape/Done, saved restart-required switches, unchanged live registries, baked models,
creative tabs, achievement labels and integrated-world fresh/reload checks.

`packagedForgeRuntimeTest` runs 16 world scenarios plus four dependency rejection
`packagedForgeRuntimeTest` runs 18 world scenarios plus six dependency rejection
cases. See [BUILDING](../../../docs/BUILDING.md) for setup. The server template
contains Forge 1.10.2-12.18.3.2511, vanilla server and libraries, without mods,
configuration or worlds. Do not point a test at an active installation.
Expand Down Expand Up @@ -85,7 +85,7 @@ prompt to remove missing blocks or items. The source worlds are fingerprinted.

## Limits and separately owned defects

Public Base Metals 2.5.1.110021 catches errors in its own optional IC2/Mekanism
The previous Base Metals 2.5.1.110021 release caught errors in its own optional IC2/Mekanism
plugins: IC2 recipe registration runs before its input factory is ready, and the
shared Mekanism helper references the absent `sulphuricAcid` gas. Modern Metals
registers its own processing later and uses Mekanism's direct recipe API. Passing
Expand Down
2 changes: 1 addition & 1 deletion tools/validation/legacy110/check_content_modes.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def main():
args.output.mkdir(parents=True,exist_ok=False)
specs=json.loads((ROOT/'gradle/dependencies.json').read_text())
jars=[dependency(s) for s in specs if s.get('runtime')]
jars += [ROOT/'build/libs/ModernMetals-2.5.1.110021.jar',ROOT/'build/test-mods/modernmetals-probe-packaged.jar']
jars += [ROOT/'build/libs/ModernMetals-2.5.2.110021.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
25 changes: 16 additions & 9 deletions tools/validation/legacy110/dependency_requirements.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@

OLD = {
'base':('base-metals-240967','2323100','f919cef794c73f02758bbd967346dba0b53f6383153c7e29bd79f211cda8c319'),
'os':('mmd-orespawn-245586','2533153','d964148c20175e16ccefab02ae43a181a50dc08a1d636a77e59cfe8c8ea8d41a')
'previous_base':('base-metals-240967','9280029','8bb1823592dcd558d17c4848ae917266fe7197b754ca628297df837cfb3d20a3'),
'os':('mmd-orespawn-245586','2533153','d964148c20175e16ccefab02ae43a181a50dc08a1d636a77e59cfe8c8ea8d41a'),
'previous_os':('mmd-orespawn-245586','9276430','4d4975421feebf17505056306d06b0344d7a4553b6275885d7c5c5065b0348a6')
}

def verify(java,template,output,base,orespawn,modern):
Expand All @@ -19,21 +21,26 @@ def verify(java,template,output,base,orespawn,modern):
with urllib.request.urlopen(request,timeout=45) as response:target.write_bytes(response.read())
assert hashlib.sha256(target.read_bytes()).hexdigest()==expected,'Public fixture checksum mismatch'
old[key]=target
scenarios={
'missing-base':([orespawn,modern],'basemetals','2.5.1.110021'),
'old-base':([old['base'],orespawn,modern],'basemetals','2.5.1.110021'),
'missing-orespawn':([base,modern],'orespawn','4.1.2.110021'),
'old-orespawn':([base,old['os'],modern],'orespawn','4.1.2.110021')
modern_owner = 'modernmetals (Modern Metals)'
base_owner = 'basemetals (Base Metals)'
# Forge checks Base Metals first. Both mods require the same OreSpawn minimum.
scenarios = {
'missing-base': ([orespawn, modern], modern_owner, 'basemetals', '2.6.0.110021'),
'old-base': ([old['base'], orespawn, modern], modern_owner, 'basemetals', '2.6.0.110021'),
'previous-base': ([old['previous_base'], orespawn, modern], modern_owner, 'basemetals', '2.6.0.110021'),
'missing-orespawn': ([base, modern], base_owner, 'orespawn', '4.1.6.110021'),
'old-orespawn': ([base, old['os'], modern], base_owner, 'orespawn', '4.1.6.110021'),
'previous-orespawn': ([base, old['previous_os'], modern], base_owner, 'orespawn', '4.1.6.110021'),
}
result={}
for name,(jars,modid,version) in scenarios.items():
for name, (jars, owner, modid, version) in scenarios.items():
target=output/name;prepare(target,template,jars)
log=target/'rejection-console.log'
with log.open('wb') as stream:
subprocess.run([str(java),'-Xmx1G','-jar',FORGE,'nogui'],cwd=target,stdout=stream,stderr=subprocess.STDOUT,timeout=90)
text=log.read_text(errors='replace')
assert ('MissingModsException' in text or 'Missing mandatory dependencies' in text) and modid in text and version in text,log
assert f'MissingModsException: Mod {owner} requires [{modid}@[{version},' in text, log
assert not (target/'world/level.dat').exists(),'Incompatible dependencies reached world loading'
result[name]={'rejected_before_world':True,'required_mod':modid,'minimum':version}
result[name]={'rejected_before_world':True,'requirement_owner':owner,'required_mod':modid,'minimum':version}
print(name,'PASS',flush=True)
write_json(output/'dependency-requirements.json',result)
2 changes: 1 addition & 1 deletion tools/validation/legacy110/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.110021.jar')
parser.add_argument('--mod-jar',type=Path,default=ROOT/'build/libs/ModernMetals-2.5.2.110021.jar')
args=parser.parse_args()
if args.phase=='first':args.output.mkdir(parents=True,exist_ok=False)
assert hashlib.sha256(args.installer.read_bytes()).hexdigest().upper()=='664393C5A924B8F06CFB953903ABCF9FE5E99ECBE6AF8C7EA217339C766E519C'
Expand Down
4 changes: 2 additions & 2 deletions tools/validation/legacy110/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.110021.jar',ROOT/'build/test-mods/modernmetals-probe-packaged.jar']
jars += [ROOT/'build/libs/ModernMetals-2.5.2.110021.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/legacy110/fixtures/orespawn3-modernmetals.json').read_text())

Expand Down Expand Up @@ -169,7 +169,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.110021.jar')
dependency(next(s for s in specs if s['id']=='orespawn'),args.mirror),ROOT/'build/libs/ModernMetals-2.5.2.110021.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/legacy110/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.110021.jar', ROOT/'build/test-mods/modernmetals-probe-packaged.jar']
jars += [ROOT/'build/libs/ModernMetals-2.5.2.110021.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.110021".equals(Loader.instance().getIndexedModList().get("modernmetals").getVersion()), "mod version", failures);
check("2.5.2.110021".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