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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
40 changes: 20 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
name: Base Metals 1.21.1 CI
name: Base Metals 1.21.11 CI

on:
push:
branches:
- master-1.21.1
- master-1.21.11
- 'feature/**'
pull_request:
branches:
- master-1.21.1
- master-1.21.11

permissions:
contents: read

concurrency:
group: basemetals-1.21.1-${{ github.workflow }}-${{ github.ref }}
group: basemetals-1.21.11-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand Down Expand Up @@ -71,19 +71,19 @@ jobs:
--no-daemon --stacktrace
first="$RUNNER_TEMP/basemetals-first"
mkdir -p "$first"
cp build/libs/BaseMetals-3.1.1.121011.jar "$first/"
cp build/libs/BaseMetals-3.1.1.121011-sources.jar "$first/"
cp build/libs/BaseMetals-3.1.1.121011-javadoc.jar "$first/"
cp build/libs/BaseMetals-3.1.1.121111.jar "$first/"
cp build/libs/BaseMetals-3.1.1.121111-sources.jar "$first/"
cp build/libs/BaseMetals-3.1.1.121111-javadoc.jar "$first/"
cp build/release/SHA256SUMS "$first/"

- name: Rebuild and prove byte-identical archives
run: |
./gradlew clean assemble verifyReleaseArtifacts writeReleaseChecksums \
-PorespawnVerificationRepository="${{ steps.orespawn.outputs.repository }}" \
--no-daemon --stacktrace
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121011.jar" build/libs/BaseMetals-3.1.1.121011.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121011-sources.jar" build/libs/BaseMetals-3.1.1.121011-sources.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121011-javadoc.jar" build/libs/BaseMetals-3.1.1.121011-javadoc.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121111.jar" build/libs/BaseMetals-3.1.1.121111.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121111-sources.jar" build/libs/BaseMetals-3.1.1.121111-sources.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121111-javadoc.jar" build/libs/BaseMetals-3.1.1.121111-javadoc.jar
cmp "$RUNNER_TEMP/basemetals-first/SHA256SUMS" build/release/SHA256SUMS

- name: Run all required GameTests
Expand All @@ -95,14 +95,14 @@ jobs:
- name: Install official Forge packaged runtimes
id: forge-runtimes
run: |
server_runtime="$RUNNER_TEMP/forge-1.21.1-52.1.0-server"
client_runtime="$RUNNER_TEMP/forge-1.21.1-52.1.0-client"
installer="$RUNNER_TEMP/forge-1.21.1-52.1.0-installer.jar"
server_runtime="$RUNNER_TEMP/forge-1.21.11-61.1.0-server"
client_runtime="$RUNNER_TEMP/forge-1.21.11-61.1.0-client"
installer="$RUNNER_TEMP/forge-1.21.11-61.1.0-installer.jar"
mkdir -p "$server_runtime" "$client_runtime"
curl --fail --location --retry 3 \
--output "$installer" \
https://maven.minecraftforge.net/net/minecraftforge/forge/1.21.1-52.1.0/forge-1.21.1-52.1.0-installer.jar
echo "F1B620F2879AD6A5BBE15DABA4D8F81EAB9F5E08004967604960B98996BDEBC4 $installer" | sha256sum --check --strict
https://maven.minecraftforge.net/net/minecraftforge/forge/1.21.11-61.1.0/forge-1.21.11-61.1.0-installer.jar
echo "8BD1724EAEAF26F51DACFB7FDC46D79E9B640705B70D5F0019ED38907145EB48 $installer" | sha256sum --check --strict
(
cd "$server_runtime"
java -jar "$installer" --installServer
Expand Down Expand Up @@ -147,21 +147,21 @@ jobs:
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: BaseMetals-1.21.1-${{ github.sha }}
name: BaseMetals-1.21.11-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/BaseMetals-3.1.1.121011.jar
build/libs/BaseMetals-3.1.1.121011-sources.jar
build/libs/BaseMetals-3.1.1.121011-javadoc.jar
build/libs/BaseMetals-3.1.1.121111.jar
build/libs/BaseMetals-3.1.1.121111-sources.jar
build/libs/BaseMetals-3.1.1.121111-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt

- name: Upload bounded diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: BaseMetals-1.21.1-diagnostics-${{ github.sha }}
name: BaseMetals-1.21.11-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ name: CodeQL
on:
push:
branches:
- master-1.21.1
- master-1.21.11
- 'feature/**'
pull_request:
branches:
- master-1.21.1
- master-1.21.11

permissions:
actions: read
Expand Down
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.21.1
- master-1.21.11
- 'feature/**'
pull_request:
branches:
- master-1.21.1
- master-1.21.11

permissions:
contents: read
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
Base Metals 3.1.1.121111

- Port the released 1.21.1 version to Minecraft 1.21.11 and Forge 61, keeping Java 21.
- Keep the existing gameplay, raw metals, ore overlays, filled buckets and High/Low Fantasy modes.
- Update equipment, recipes, projectiles, configuration screens and item models for the newer Minecraft APIs.
- Use vanilla copper nuggets, tools, armour, horse armour and bars for new crafting outputs. Keep old Base Metals items valid and accept both versions in shared ingredients.
- Replace the old JavaScript migration hooks with required Mixins, keeping the checks which protect modern worlds and current player data.
- Use the published OreSpawn 4.1.0.121111 release with the same eleven ore rules and copper defaults.
- Let OreSpawn defer early ore-host tag lookups until Minecraft has loaded the world's tags.
- Keep older Forge world-capability data readable after the saved-data format change.
- Keep filled-bucket textures together on the new texture atlases, including resource-pack replacements.

Base Metals 3.1.1.121011

- Fix startup failures when Base Metals is added to an existing modern world, including worlds with LZ4-compressed chunks, external chunks or empty region files.
Expand Down
38 changes: 21 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[![Discord](https://img.shields.io/badge/Discord-MMD-green.svg?style=flat&logo=Discord)](https://discord.moddev.zone)
[![CurseForge downloads](https://cf.way2muchnoise.eu/full_base-metals_downloads.svg)](https://www.curseforge.com/minecraft/mc-mods/base-metals)
[![Supported Minecraft versions](https://cf.way2muchnoise.eu/versions/Minecraft_base-metals_all.svg)](https://www.curseforge.com/minecraft/mc-mods/base-metals)
[![Build, test, and audit](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml/badge.svg?branch=master-1.21.1)](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml?query=branch%3Amaster-1.21.1)
[![Build, test, and audit](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml/badge.svg?branch=master-1.21.11)](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml?query=branch%3Amaster-1.21.11)

# Base Metals

Expand All @@ -12,21 +12,23 @@ shields, bows, crossbows, arrows, and bolts. The mod also includes Crack
Hammers, scythes, metal anvils, the human detector, villager trades,
advancements, and structure loot.

This is the Minecraft 1.21.1 Forge version, `3.1.1.121011`. It keeps the
fixes and features from the released 1.20.6 version, including raw metals, ore texture
overlays and High/Low Fantasy modes. Existing Base Metals items and blocks keep
their registry IDs. OreSpawn handles ore generation; MMDLib and Additional Loot
Tables are no longer needed.
This is the Minecraft 1.21.11 Forge version, `3.1.1.121111`. It keeps the
fixes and features from the released 1.21.1 version, including raw metals, ore
texture overlays and High/Low Fantasy modes. Existing Base Metals items and
blocks keep their registry IDs. OreSpawn handles ore generation; MMDLib and
Additional Loot Tables are no longer needed.

## Requirements

- Minecraft `1.21.1`
- Forge `52.1.0` or newer in the Minecraft 1.21.1 Forge 52 line
- Minecraft `1.21.11`
- Forge `61.1.0` or newer in the Minecraft 1.21.11 Forge 61 line
- A current Java 21 runtime
- OreSpawn `[4.1.0.121011,5.0.0)` on both client and server
- OreSpawn `[4.1.0.121111,5.0.0)` on both client and server

This version uses OreSpawn `4.1.0.121011`. Put
`BaseMetals-3.1.1.121011.jar` and a compatible OreSpawn JAR in the `mods`
The port has also been checked against Forge `61.2.4`.

This version uses OreSpawn `4.1.0.121111`. Put
`BaseMetals-3.1.1.121111.jar` and a compatible OreSpawn JAR in the `mods`
directory. MMDLib and Additional Loot Tables must not be carried forward from
an older installation. Mineralogy is optional.

Expand All @@ -45,10 +47,12 @@ ingots, powders, plates, rods, gears and other components from different mods
can be used together.

Where vanilla has the same copper forms, recipes now produce vanilla ingots,
blocks, doors, trapdoors, cut-copper slabs and stairs. The old Base Metals items
and blocks stay registered and continue working in existing saves. Shared
ingredient tags accept both versions, so older items and the rest of the copper
recipe chains remain usable. Other Base Metals copper equipment is unchanged.
blocks, nuggets, tools, armour, horse armour, bars, doors, trapdoors, cut-copper
slabs and stairs. The old Base Metals items and blocks stay registered and
continue working in existing saves. Shared ingredient tags accept both versions,
so older items and the rest of the copper recipe chains remain usable.
Existing Base Metals copper equipment keeps its
original behaviour.

Notable mechanics include:

Expand Down Expand Up @@ -146,7 +150,7 @@ Forge item, block, and fluid tags are Base Metals' public compatibility API.

Compatible tags and the existing recipe data for Mekanism, Thermal, Tinkers'
Construct and Ender IO are retained, but their Java integrations are not enabled
in this Forge 1.21.1 port. Do not add jars made for older Minecraft versions or
in this Forge 1.21.11 port. Do not add jars made for older Minecraft versions or
NeoForge to this instance. No optional integration API is required to compile
or launch Base Metals.

Expand Down Expand Up @@ -199,7 +203,7 @@ early splash window. Minecraft still opens its game window and runs the full
world check. Ordinary client launches keep the normal splash screen.

Release artifacts use Maven coordinate
`zone.moddev.mc.basemetals:BaseMetals:3.1.1.121011`.
`zone.moddev.mc.basemetals:BaseMetals:3.1.1.121111`.

Report defects and compatibility problems through the
[Base Metals issue tracker](https://github.com/MinecraftModDevelopmentMods/BaseMetals/issues).
Expand Down
14 changes: 8 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,14 @@ plugins {
ext.mavenizerCompatibilityJar = layout.projectDirectory.file(
'ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.jar')
ext.mavenizerCompatibilitySha256 =
'019032A4A26ECB473D403EF017054D5892CE59A9904E8831B452287CD756397E'
'B36CA046DB72E30F27BD38E02B4AE34274ADB51AE1D65BAF9E1D07763755682E'

ext.mavenizerFixtureChecksums = [
'minecraft-mavenizer-0.5.21-orespawn-compat.jar': mavenizerCompatibilitySha256,
'minecraft-source-compatibility.json': '7F669F225520D0382E76991A8A3E5E4020840F0FA975F7DCB86681D7E7C3F766',
'minecraft-mavenizer-0.5.21-orespawn-compat.patch': '84FEA234619CC2D1931E609B22B6E5D96F59366F7D6C2783C3BEE0F726F3E876',
'LICENSE-MAVENIZER.txt': '20C17D8B8C48A600800DFD14F95D5CB9FF47066A9641DDEAB48DC54AEC96E331'
'minecraft-source-compatibility.json': '88F2EE4C6B7C903EB1C7D693C0BEEFC0EFC601C1023FB197F7CBA187B1142DB7',
'minecraft-mavenizer-0.5.21-orespawn-compat.patch': '88F9035C8545CF1CBC7342C14F2F95076C4E415EDB7A74D585409CFC3F1BDD5C',
'LICENSE-MAVENIZER.txt': '20C17D8B8C48A600800DFD14F95D5CB9FF47066A9641DDEAB48DC54AEC96E331',
'README.md': 'A097E126C606BDC86B34F5DDFB9580228A7C5BC866C6509C6BB362152EBACED7'
]
// Mavenizer runs during configuration, so verify its inputs before configuring Forge.
mavenizerFixtureChecksums.each { name, expected ->
Expand All @@ -26,7 +27,7 @@ mavenizerFixtureChecksums.each { name, expected ->
}
}

// Forge 52 needs no source repairs. The sealed fixture records that result
// Forge 61 needs no source repairs. The sealed fixture records that result
// and stays separate from the mod and its runtime dependencies.
fgtools.configure('mavenizer') {
classpath.from(mavenizerCompatibilityJar)
Expand Down Expand Up @@ -117,7 +118,7 @@ sourceSets {
}
dataGenerator {
java.srcDir 'src/dataGenerator/java'
resources.setSrcDirs([])
resources.setSrcDirs(['src/dataGenerator/resources'])
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
Expand Down Expand Up @@ -191,6 +192,7 @@ minecraft {
workingDir.set(layout.projectDirectory.dir('run-optional-mods'))
}
jvmArgs '--add-opens', 'java.base/java.lang.invoke=ALL-UNNAMED'
args '--mixin', 'basemetals.mixins.json'

// Keep registry diagnostics available in development logs.
systemProperty 'forge.logging.markers', 'REGISTRIES'
Expand Down
12 changes: 6 additions & 6 deletions ci-fixtures/tools/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

This directory contains a build-only derivative of MinecraftForge's
MinecraftMavenizer `0.5.21`. It is used only while ForgeGradle prepares the
exact Forge `1.21.1-52.1.0` development dependency and is excluded from every
Base Metals publication artifact.
exact Forge `1.21.11-61.1.0` development dependency and is excluded from every
OreSpawn publication artifact.

## Provenance and licence

Expand All @@ -21,14 +21,14 @@ declaration and one accessor in that record. Missing, partial, duplicate or
ambiguous states fail preparation. Targets without an explicit rule set are
left unchanged.

Forge `1.21.1-52.1.0` compiles without source compatibility edits. Its explicit
Forge `1.21.11-61.1.0` compiles without source compatibility edits. Its explicit
zero-rule entry proves that result is intentional and target-qualified rather
than an accidental fall-through. A marker beside Mavenizer's output records
the target and manifest SHA-256. Reprocessing the same source is idempotent.

The derivative also propagates Gradle offline mode when the build sets
`ORESPAWN_MAVENIZER_OFFLINE=true`. Mavenizer itself runs on Java 25; Base Metals
and Minecraft 1.21.1 continue to compile for Java 21.
`ORESPAWN_MAVENIZER_OFFLINE=true`. Mavenizer itself runs on Java 25; OreSpawn
and Minecraft 1.21.11 continue to compile for Java 21.

## Rebuild

Expand All @@ -39,7 +39,7 @@ and Minecraft 1.21.1 continue to compile for Java 21.
4. Run `./gradlew clean build --no-daemon` (or `gradlew.bat` on Windows).
5. Copy `build/libs/minecraft-mavenizer-0.5.21.jar` to
`minecraft-mavenizer-0.5.21-orespawn-compat.jar`.
6. Run Base Metals' `verifyMavenizerCompatibilityFixture` task. The build script
6. Run OreSpawn's `verifyMavenizerCompatibilityFixture` task. The build script
contains the authoritative checksums and also verifies the embedded
manifest, Java class version and licence/provenance files.

Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ index 0000000..702d759
+{
+ "schema": 1,
+ "targets": {
+ "net.minecraftforge:forge:1.21.1-52.1.0": {
+ "net.minecraftforge:forge:1.21.11-61.1.0": {
+ "expectedApplications": 0,
+ "rules": []
+ }
Expand Down
2 changes: 1 addition & 1 deletion ci-fixtures/tools/minecraft-source-compatibility.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema": 1,
"targets": {
"net.minecraftforge:forge:1.21.1-52.1.0": {
"net.minecraftforge:forge:1.21.11-61.1.0": {
"expectedApplications": 0,
"rules": []
}
Expand Down
5 changes: 3 additions & 2 deletions docs/COMPATIBILITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ shards, clumps, dirty dusts, and molten fluids.

Adamantite, Adamantium, Adamant, Quicksilver, and steel-sprocket names are
forwarding tags. Copper-consuming recipes accept `forge:ingots/copper`.
Copper ingots, storage blocks, doors, trapdoors, slabs and stairs use their
Copper ingots, nuggets, tools, armour, horse armour, bars, storage blocks, doors,
trapdoors, slabs and stairs use their
vanilla equivalents as new recipe outputs. The old Base Metals IDs remain
registered; their ingredient tags include both versions. Copper ore and powders
smelt to vanilla copper ingots. Existing copper equipment remains usable.
Expand All @@ -19,7 +20,7 @@ recycling recipes also accept the appropriate vanilla equivalent.

The tags and existing integration data for Mekanism, Thermal, Tinkers' Construct
and Ender IO remain available for future compatibility work. Their Java API hooks
and runtime jars are not included in this Forge 1.21.1 port. Do not substitute
and runtime jars are not included in this Forge 1.21.11 port. Do not substitute
jars made for older Minecraft versions or NeoForge.

Other processors can use the shared Forge tags without a direct Java integration.
Expand Down
Loading
Loading