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
42 changes: 21 additions & 21 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
name: Base Metals 26.1.2 CI
name: Base Metals 26.2 CI

on:
push:
branches:
- master-26.1.2
- master-26.2
- 'feature/**'
pull_request:
branches:
- master-26.1.2
- master-26.2

permissions:
contents: read

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

jobs:
Expand Down Expand Up @@ -49,7 +49,7 @@ jobs:
"$RUNNER_TEMP/nbt-tests/bin/python" -m unittest discover -s tools/validation -p 'test_*.py'

- name: Test upgrade log boundaries
run: node --test tools/validation/test_painting_registry.js
run: node --test tools/validation/test_painting_registry.js tools/validation/test_runtime_log.js

- name: Build, test, and audit first candidate
run: |
Expand All @@ -59,19 +59,19 @@ jobs:
--no-daemon --stacktrace
first="$RUNNER_TEMP/basemetals-first"
mkdir -p "$first"
cp build/libs/BaseMetals-3.1.1.2601021.jar "$first/"
cp build/libs/BaseMetals-3.1.1.2601021-sources.jar "$first/"
cp build/libs/BaseMetals-3.1.1.2601021-javadoc.jar "$first/"
cp build/libs/BaseMetals-3.1.1.2602001.jar "$first/"
cp build/libs/BaseMetals-3.1.1.2602001-sources.jar "$first/"
cp build/libs/BaseMetals-3.1.1.2602001-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.2601021.jar" build/libs/BaseMetals-3.1.1.2601021.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.2601021-sources.jar" build/libs/BaseMetals-3.1.1.2601021-sources.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.2601021-javadoc.jar" build/libs/BaseMetals-3.1.1.2601021-javadoc.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.2602001.jar" build/libs/BaseMetals-3.1.1.2602001.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.2602001-sources.jar" build/libs/BaseMetals-3.1.1.2602001-sources.jar
cmp "$RUNNER_TEMP/basemetals-first/BaseMetals-3.1.1.2602001-javadoc.jar" build/libs/BaseMetals-3.1.1.2602001-javadoc.jar
cmp "$RUNNER_TEMP/basemetals-first/SHA256SUMS" build/release/SHA256SUMS

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

- name: Upload bounded diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: BaseMetals-26.1.2-diagnostics-${{ github.sha }}
name: BaseMetals-26.2-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-26.1.2
- master-26.2
- 'feature/**'
pull_request:
branches:
- master-26.1.2
- master-26.2

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-26.1.2
- master-26.2
- 'feature/**'
pull_request:
branches:
- master-26.1.2
- master-26.2

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

- Port the released 26.1.2 version to Minecraft 26.2 and Forge 65, keeping Java 25.
- Keep raw metals, ore overlays, filled buckets, High/Low Fantasy and the existing gameplay fixes.
- Use published OreSpawn 4.1.0.2602001 with the same eleven rules and copper defaults.
- Keep existing world profiles, saved items and legacy-upgrade protections.
- Keep generated Javadoc icons consistent between Windows and Linux builds.

Base Metals 3.1.1.2601021

- Port the released 1.21.11 version to Minecraft 26.1.2, Forge 64 and Java 25.
Expand Down
22 changes: 11 additions & 11 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-26.1.2)](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml?query=branch%3Amaster-26.1.2)
[![Build, test, and audit](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml/badge.svg?branch=master-26.2)](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml?query=branch%3Amaster-26.2)

# Base Metals

Expand All @@ -12,23 +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 26.1.2 Forge version, `3.1.1.2601021`. It keeps the
fixes and features from the released 1.21.11 version, including raw metals, ore
This is the Minecraft 26.2 Forge version, `3.1.1.2602001`. It keeps the
fixes and features from the released 26.1.2 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 `26.1.2`
- Forge `64.0.9` or newer in the Minecraft 26.1.2 Forge 64 line
- Minecraft `26.2`
- Forge `65.1.0` or newer in the Minecraft 26.2 Forge 65 line
- A current Java 25 runtime
- OreSpawn `[4.1.0.2601021,5.0.0)` on both client and server
- OreSpawn `[4.1.0.2602001,5.0.0)` on both client and server

The build uses Forge `64.0.9` and is also tested on `64.1.5`.
The build uses Forge `65.1.0` and is also tested on `65.1.5`.

This version uses OreSpawn `4.1.0.2601021`. Put
`BaseMetals-3.1.1.2601021.jar` and a compatible OreSpawn JAR in the `mods`
This version uses OreSpawn `4.1.0.2602001`. Put
`BaseMetals-3.1.1.2602001.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 Down Expand Up @@ -150,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 26.1.2 port. Do not add jars made for older Minecraft versions or
in this Forge 26.2 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 @@ -201,7 +201,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.2601021`.
`zone.moddev.mc.basemetals:BaseMetals:3.1.1.2602001`.

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

ext.mavenizerFixtureChecksums = [
'minecraft-mavenizer-0.5.21-orespawn-compat.jar': mavenizerCompatibilitySha256,
'minecraft-source-compatibility.json': '21D1F5984E735BCEA1B1EFB9F965655796B39538FC91AAED1C3474004710423D',
'minecraft-mavenizer-0.5.21-orespawn-compat.patch': '7C8EC895E79DF31AFD2CA3B505B43573C7052718A24050832189AAA2D3CC6137',
'minecraft-source-compatibility.json': '9437E03FC5E1CB5D605D72F0538C4DF4417B64DB0A57D0AABDC5184781517AC1',
'minecraft-mavenizer-0.5.21-orespawn-compat.patch': '2DA8DD0FD5F112F5B7591113AED06D9A58C584A25F8705E26445A6D2E9D5C78E',
'LICENSE-MAVENIZER.txt': '20C17D8B8C48A600800DFD14F95D5CB9FF47066A9641DDEAB48DC54AEC96E331',
'README.md': '7686880D2B0F6BD6ACAFA4F0AB7585189767813174BC36DB675FEC0142440A77'
'README.md': 'EAD1477F393897C491A10FB86178213A99C360571A8063D551DA0579DF65BA6F'
]
// Mavenizer runs during configuration, so verify its inputs before configuring Forge.
mavenizerFixtureChecksums.each { name, expected ->
Expand All @@ -27,7 +27,7 @@ mavenizerFixtureChecksums.each { name, expected ->
}
}

// Forge 64 needs no source repairs. The sealed fixture records that result
// Forge 65 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
6 changes: 3 additions & 3 deletions ci-fixtures/tools/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

This directory contains a build-only derivative of MinecraftForge's
MinecraftMavenizer `0.5.21`. It is used only while ForgeGradle prepares the
exact Forge `26.1.2-64.0.9` development dependency and is excluded from every
exact Forge `26.2-65.1.0` development dependency and is excluded from every
OreSpawn publication artifact.

## Provenance and licence
Expand All @@ -21,13 +21,13 @@ 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 `26.1.2-64.0.9` compiles without source compatibility edits. Its explicit
Forge `26.2-65.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, OreSpawn and Minecraft 26.1.2 all
`ORESPAWN_MAVENIZER_OFFLINE=true`. Mavenizer, OreSpawn and Minecraft 26.2 all
run and compile with Java 25.

## Rebuild
Expand Down
Binary file modified ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.jar
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:26.1.2-64.0.9": {
+ "net.minecraftforge:forge:26.2-65.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:26.1.2-64.0.9": {
"net.minecraftforge:forge:26.2-65.1.0": {
"expectedApplications": 0,
"rules": []
}
Expand Down
2 changes: 1 addition & 1 deletion docs/COMPATIBILITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,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 26.1.2 port. Do not substitute
and runtime jars are not included in this Forge 26.2 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
7 changes: 6 additions & 1 deletion docs/MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Always upgrade a copy and retain the original legacy world. Install Base Metals
3.1.1 and OreSpawn 4.1.0, but do not carry MMDLib, Additional Loot Tables, the
OreSpawn 3 plugin, or the old native fallback generator into the 26.1.2 instance.
OreSpawn 3 plugin, or the old native fallback generator into the 26.2 instance.

Minecraft's data fixer cannot identify third-party numeric block IDs from
before the 1.13 flattening. Base Metals snapshots those positions, runs
Expand Down Expand Up @@ -148,6 +148,11 @@ when the current world metadata confirms an upgrade from the previous storage
format. The source files are kept for recovery. A modern world with leftover
old files does not activate this step.

Minecraft 26.2 also moves world-generation settings, game rules and world clocks
out of `level.dat` into separate saved-data files. Minecraft handles that move
during the upgrade. Keep the whole world folder together rather than copying
an older `level.dat` over the upgraded save.

If an older single-player save has its player only in `level.dat`, Base Metals
preserves a separate player file before Minecraft converts the folders. An
existing player file always wins; a stale backup cannot restore an older player.
22 changes: 11 additions & 11 deletions docs/VERSIONS.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# Supported versions

Base Metals `3.1.1.2601021` targets Minecraft 26.1.2, Forge 64.0.9 and Java 25.
Forge 64.1.5 is the additional compatibility target.
OreSpawn `4.1.0.2601021` is the exact build and test dependency. Clients and
servers need OreSpawn `[4.1.0.2601021,5.0.0)`.
Base Metals `3.1.1.2602001` targets Minecraft 26.2, Forge 65.1.0 and Java 25.
Forge 65.1.5 is the additional compatibility target.
OreSpawn `4.1.0.2602001` is the exact build and test dependency. Clients and
servers need OreSpawn `[4.1.0.2602001,5.0.0)`.

The pinned CurseForge artifact is project 245586, file 9299079:
`curse.maven:mmd-orespawn-245586:9299079`.
The pinned CurseForge artifact is project 245586, file 9332183:
`curse.maven:mmd-orespawn-245586:9332183`.
Its SHA-256 is
`6D5CE2017C3314968083D140309E2F1A54BC239AC65C48944C995E9ECF937948`.
`F74785025898DF059E0F00F6ADA53364E07ECBBC306807ED7CD55350609E2547`.

Release artifacts use Maven coordinate
`zone.moddev.mc.basemetals:BaseMetals:3.1.1.2601021`.
`zone.moddev.mc.basemetals:BaseMetals:3.1.1.2602001`.

The provider remains schema 3, revision 1. OreSpawn 4.1 is needed for the
configuration-screen API; the provider's eleven rule IDs and 1.18 distributions
have not changed.

The data pack uses format `101.1`. Forge wraps client mod resources with the
native resource-pack format `84.0`. The resource metadata retains the minor
version rather than rounding the data format down to `101`.
The data pack uses format `107.1`. Forge wraps client mod resources with the
native resource-pack format `88.0`. The resource metadata retains the minor
version rather than rounding the data format down to `107`.
4 changes: 2 additions & 2 deletions docs/WORLDGEN.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# OreSpawn world generation

Base Metals requires OreSpawn `[4.1.0.2601021,5.0.0)` and packages provider schema 3,
Base Metals requires OreSpawn `[4.1.0.2602001,5.0.0)` and packages provider schema 3,
revision 1 at `data/basemetals/orespawn/provider.json`. Builds and tests use the
published OreSpawn `4.1.0.2601021` release. The provider is checked against the
published OreSpawn `4.1.0.2602001` release. The provider is checked against the
included 4.1.0 schema.

The provider declares ores only: it has no rocks, geomes, biome rules, terrain
Expand Down
4 changes: 2 additions & 2 deletions docs/schemas/orespawn-4.1.0/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# OreSpawn 4.1.0 schemas

These public schemas match OreSpawn 4.1.0.2601021. The Base Metals provider
These public schemas match OreSpawn 4.1.0.2602001. The Base Metals provider
still uses schema 3 and revision 1; its ore rules have not changed.

The build validates the provider against this snapshot. OreSpawn 4.1 is also
needed for the Base Metals configuration button in its world-creation screen.

Source: [OreSpawn 4.1.0.2601021](https://github.com/MinecraftModDevelopmentMods/OreSpawn/releases/tag/4.1.0.2601021).
Source: [OreSpawn 4.1.0.2602001](https://github.com/MinecraftModDevelopmentMods/OreSpawn/releases/tag/4.1.0.2602001).
Loading
Loading