Skip to content

Commit 327beb7

Browse files
authored
Merge the Forge 1.21.11 port
Bring the tested 1.21.11 port into the release branch, keeping the existing gameplay and save protections.
2 parents c07f6f3 + f56d534 commit 327beb7

3,535 files changed

Lines changed: 17037 additions & 9922 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/ci.yml‎

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
name: Base Metals 1.21.1 CI
1+
name: Base Metals 1.21.11 CI
22

33
on:
44
push:
55
branches:
6-
- master-1.21.1
6+
- master-1.21.11
77
- 'feature/**'
88
pull_request:
99
branches:
10-
- master-1.21.1
10+
- master-1.21.11
1111

1212
permissions:
1313
contents: read
1414

1515
concurrency:
16-
group: basemetals-1.21.1-${{ github.workflow }}-${{ github.ref }}
16+
group: basemetals-1.21.11-${{ github.workflow }}-${{ github.ref }}
1717
cancel-in-progress: true
1818

1919
jobs:
@@ -71,19 +71,19 @@ jobs:
7171
--no-daemon --stacktrace
7272
first="$RUNNER_TEMP/basemetals-first"
7373
mkdir -p "$first"
74-
cp build/libs/BaseMetals-3.1.1.121011.jar "$first/"
75-
cp build/libs/BaseMetals-3.1.1.121011-sources.jar "$first/"
76-
cp build/libs/BaseMetals-3.1.1.121011-javadoc.jar "$first/"
74+
cp build/libs/BaseMetals-3.1.1.121111.jar "$first/"
75+
cp build/libs/BaseMetals-3.1.1.121111-sources.jar "$first/"
76+
cp build/libs/BaseMetals-3.1.1.121111-javadoc.jar "$first/"
7777
cp build/release/SHA256SUMS "$first/"
7878
7979
- name: Rebuild and prove byte-identical archives
8080
run: |
8181
./gradlew clean assemble verifyReleaseArtifacts writeReleaseChecksums \
8282
-PorespawnVerificationRepository="${{ steps.orespawn.outputs.repository }}" \
8383
--no-daemon --stacktrace
84-
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121011.jar" build/libs/BaseMetals-3.1.1.121011.jar
85-
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121011-sources.jar" build/libs/BaseMetals-3.1.1.121011-sources.jar
86-
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121011-javadoc.jar" build/libs/BaseMetals-3.1.1.121011-javadoc.jar
84+
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121111.jar" build/libs/BaseMetals-3.1.1.121111.jar
85+
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121111-sources.jar" build/libs/BaseMetals-3.1.1.121111-sources.jar
86+
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.121111-javadoc.jar" build/libs/BaseMetals-3.1.1.121111-javadoc.jar
8787
cmp "$RUNNER_TEMP/basemetals-first/SHA256SUMS" build/release/SHA256SUMS
8888
8989
- name: Run all required GameTests
@@ -95,14 +95,14 @@ jobs:
9595
- name: Install official Forge packaged runtimes
9696
id: forge-runtimes
9797
run: |
98-
server_runtime="$RUNNER_TEMP/forge-1.21.1-52.1.0-server"
99-
client_runtime="$RUNNER_TEMP/forge-1.21.1-52.1.0-client"
100-
installer="$RUNNER_TEMP/forge-1.21.1-52.1.0-installer.jar"
98+
server_runtime="$RUNNER_TEMP/forge-1.21.11-61.1.0-server"
99+
client_runtime="$RUNNER_TEMP/forge-1.21.11-61.1.0-client"
100+
installer="$RUNNER_TEMP/forge-1.21.11-61.1.0-installer.jar"
101101
mkdir -p "$server_runtime" "$client_runtime"
102102
curl --fail --location --retry 3 \
103103
--output "$installer" \
104-
https://maven.minecraftforge.net/net/minecraftforge/forge/1.21.1-52.1.0/forge-1.21.1-52.1.0-installer.jar
105-
echo "F1B620F2879AD6A5BBE15DABA4D8F81EAB9F5E08004967604960B98996BDEBC4 $installer" | sha256sum --check --strict
104+
https://maven.minecraftforge.net/net/minecraftforge/forge/1.21.11-61.1.0/forge-1.21.11-61.1.0-installer.jar
105+
echo "8BD1724EAEAF26F51DACFB7FDC46D79E9B640705B70D5F0019ED38907145EB48 $installer" | sha256sum --check --strict
106106
(
107107
cd "$server_runtime"
108108
java -jar "$installer" --installServer
@@ -147,21 +147,21 @@ jobs:
147147
- name: Upload audited release candidate
148148
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
149149
with:
150-
name: BaseMetals-1.21.1-${{ github.sha }}
150+
name: BaseMetals-1.21.11-${{ github.sha }}
151151
if-no-files-found: error
152152
retention-days: 30
153153
path: |
154-
build/libs/BaseMetals-3.1.1.121011.jar
155-
build/libs/BaseMetals-3.1.1.121011-sources.jar
156-
build/libs/BaseMetals-3.1.1.121011-javadoc.jar
154+
build/libs/BaseMetals-3.1.1.121111.jar
155+
build/libs/BaseMetals-3.1.1.121111-sources.jar
156+
build/libs/BaseMetals-3.1.1.121111-javadoc.jar
157157
build/release/SHA256SUMS
158158
CHANGELOG.txt
159159
160160
- name: Upload bounded diagnostics on failure
161161
if: failure()
162162
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
163163
with:
164-
name: BaseMetals-1.21.1-diagnostics-${{ github.sha }}
164+
name: BaseMetals-1.21.11-diagnostics-${{ github.sha }}
165165
if-no-files-found: ignore
166166
retention-days: 14
167167
path: |

‎.github/workflows/codeql-analysis.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ name: CodeQL
33
on:
44
push:
55
branches:
6-
- master-1.21.1
6+
- master-1.21.11
77
- 'feature/**'
88
pull_request:
99
branches:
10-
- master-1.21.1
10+
- master-1.21.11
1111

1212
permissions:
1313
actions: read

‎.github/workflows/validate-gradle-build.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ name: Validate Gradle Wrapper
33
on:
44
push:
55
branches:
6-
- master-1.21.1
6+
- master-1.21.11
77
- 'feature/**'
88
pull_request:
99
branches:
10-
- master-1.21.1
10+
- master-1.21.11
1111

1212
permissions:
1313
contents: read

‎CHANGELOG.txt‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
Base Metals 3.1.1.121111
2+
3+
- Port the released 1.21.1 version to Minecraft 1.21.11 and Forge 61, keeping Java 21.
4+
- Keep the existing gameplay, raw metals, ore overlays, filled buckets and High/Low Fantasy modes.
5+
- Update equipment, recipes, projectiles, configuration screens and item models for the newer Minecraft APIs.
6+
- 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.
7+
- Replace the old JavaScript migration hooks with required Mixins, keeping the checks which protect modern worlds and current player data.
8+
- Use the published OreSpawn 4.1.0.121111 release with the same eleven ore rules and copper defaults.
9+
- Let OreSpawn defer early ore-host tag lookups until Minecraft has loaded the world's tags.
10+
- Keep older Forge world-capability data readable after the saved-data format change.
11+
- Keep filled-bucket textures together on the new texture atlases, including resource-pack replacements.
12+
113
Base Metals 3.1.1.121011
214

315
- 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.

‎README.md‎

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[![Discord](https://img.shields.io/badge/Discord-MMD-green.svg?style=flat&logo=Discord)](https://discord.moddev.zone)
22
[![CurseForge downloads](https://cf.way2muchnoise.eu/full_base-metals_downloads.svg)](https://www.curseforge.com/minecraft/mc-mods/base-metals)
33
[![Supported Minecraft versions](https://cf.way2muchnoise.eu/versions/Minecraft_base-metals_all.svg)](https://www.curseforge.com/minecraft/mc-mods/base-metals)
4-
[![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)
4+
[![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)
55

66
# Base Metals
77

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

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

2121
## Requirements
2222

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

28-
This version uses OreSpawn `4.1.0.121011`. Put
29-
`BaseMetals-3.1.1.121011.jar` and a compatible OreSpawn JAR in the `mods`
28+
The port has also been checked against Forge `61.2.4`.
29+
30+
This version uses OreSpawn `4.1.0.121111`. Put
31+
`BaseMetals-3.1.1.121111.jar` and a compatible OreSpawn JAR in the `mods`
3032
directory. MMDLib and Additional Loot Tables must not be carried forward from
3133
an older installation. Mineralogy is optional.
3234

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

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

5357
Notable mechanics include:
5458

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

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

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

201205
Release artifacts use Maven coordinate
202-
`zone.moddev.mc.basemetals:BaseMetals:3.1.1.121011`.
206+
`zone.moddev.mc.basemetals:BaseMetals:3.1.1.121111`.
203207

204208
Report defects and compatibility problems through the
205209
[Base Metals issue tracker](https://github.com/MinecraftModDevelopmentMods/BaseMetals/issues).

‎build.gradle‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ plugins {
99
ext.mavenizerCompatibilityJar = layout.projectDirectory.file(
1010
'ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.jar')
1111
ext.mavenizerCompatibilitySha256 =
12-
'019032A4A26ECB473D403EF017054D5892CE59A9904E8831B452287CD756397E'
12+
'B36CA046DB72E30F27BD38E02B4AE34274ADB51AE1D65BAF9E1D07763755682E'
1313

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

29-
// Forge 52 needs no source repairs. The sealed fixture records that result
30+
// Forge 61 needs no source repairs. The sealed fixture records that result
3031
// and stays separate from the mod and its runtime dependencies.
3132
fgtools.configure('mavenizer') {
3233
classpath.from(mavenizerCompatibilityJar)
@@ -117,7 +118,7 @@ sourceSets {
117118
}
118119
dataGenerator {
119120
java.srcDir 'src/dataGenerator/java'
120-
resources.setSrcDirs([])
121+
resources.setSrcDirs(['src/dataGenerator/resources'])
121122
compileClasspath += sourceSets.main.output
122123
runtimeClasspath += sourceSets.main.output
123124
}
@@ -191,6 +192,7 @@ minecraft {
191192
workingDir.set(layout.projectDirectory.dir('run-optional-mods'))
192193
}
193194
jvmArgs '--add-opens', 'java.base/java.lang.invoke=ALL-UNNAMED'
195+
args '--mixin', 'basemetals.mixins.json'
194196

195197
// Keep registry diagnostics available in development logs.
196198
systemProperty 'forge.logging.markers', 'REGISTRIES'

‎ci-fixtures/tools/README.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

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

88
## Provenance and licence
99

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

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

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

3333
## Rebuild
3434

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

-1 Bytes
Binary file not shown.

‎ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.patch‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ index 0000000..702d759
371371
+{
372372
+ "schema": 1,
373373
+ "targets": {
374-
+ "net.minecraftforge:forge:1.21.1-52.1.0": {
374+
+ "net.minecraftforge:forge:1.21.11-61.1.0": {
375375
+ "expectedApplications": 0,
376376
+ "rules": []
377377
+ }

‎ci-fixtures/tools/minecraft-source-compatibility.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"schema": 1,
33
"targets": {
4-
"net.minecraftforge:forge:1.21.1-52.1.0": {
4+
"net.minecraftforge:forge:1.21.11-61.1.0": {
55
"expectedApplications": 0,
66
"rules": []
77
}

0 commit comments

Comments
 (0)