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

on:
push:
branches:
- master-1.10.2
- master-1.11.2
- 'feature/**'
pull_request:
branches:
- master-1.10.2
- master-1.11.2

permissions:
contents: read

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

jobs:
Expand Down Expand Up @@ -133,11 +133,11 @@ jobs:
shell: bash
run: |
set -euo pipefail
runtime="$RUNNER_TEMP/forge-1.10.2-2511-runtime"
runtime="$RUNNER_TEMP/forge-1.11.2-2588-runtime"
bash gradle/prepare-packaged-forge-runtime.sh "$runtime" "$JAVA_HOME_8_X64/bin/java"
echo "runtime=$runtime" >> "$GITHUB_OUTPUT"

- name: Install world-audit tools
- name: Install Python for packaged runtime checks
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: '3.12'
Expand Down Expand Up @@ -171,7 +171,7 @@ jobs:
set -euo pipefail
bundle="$RUNNER_TEMP/release-input"
mkdir -p "$bundle"
cp build/libs/BaseMetals-2.5.1.110021{,-sources,-javadoc}.jar "$bundle/"
cp build/libs/BaseMetals-2.5.1.111021{,-sources,-javadoc}.jar "$bundle/"
cp build/release/SHA256SUMS CHANGELOG.txt "$bundle/"
./gradlew verifyPreparedReleaseArtifacts verifyMavenCoordinates \
-PpreparedReleaseDir="$bundle" \
Expand Down Expand Up @@ -200,21 +200,21 @@ jobs:
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: BaseMetals-1.10.2-${{ github.sha }}
name: BaseMetals-1.11.2-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/BaseMetals-2.5.1.110021.jar
build/libs/BaseMetals-2.5.1.110021-sources.jar
build/libs/BaseMetals-2.5.1.110021-javadoc.jar
build/libs/BaseMetals-2.5.1.111021.jar
build/libs/BaseMetals-2.5.1.111021-sources.jar
build/libs/BaseMetals-2.5.1.111021-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.10.2-diagnostics-${{ github.sha }}
name: BaseMetals-1.11.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-1.10.2
- master-1.11.2
- 'feature/**'
pull_request:
branches:
- master-1.10.2
- master-1.11.2
schedule:
- cron: '47 7 * * 4'

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.10.2
- master-1.11.2
- 'feature/**'
pull_request:
branches:
- master-1.10.2
- master-1.11.2

permissions:
contents: read
Expand Down
58 changes: 21 additions & 37 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,40 +1,24 @@
2.5.1.110021 for 1.10.2
2.5.1.111021 for 1.11.2

- Require OreSpawn 4.1.2.110021 or a compatible newer 4.x release, with Forge
12.18.3.2511 or later. Development uses the checksum-verified public release.
- Replace the old OreSpawn plugin and internal fallback generator with a native
OreSpawn provider. Keep the eleven ore rules and their historical distributions.
- Let OreSpawn import existing OS1 and OS3 configuration files, preserving custom
and disabled rules. Existing world profiles remain authoritative.
- Keep existing OreSpawn 4 provider settings when importing older files for the
first time, using the fix in the required OreSpawn release.
- Respect OreSpawn's Manage Vanilla Ores switch after importing old rules.
With it off, Minecraft places its own ores. With it on, the imported settings
replace the matching vanilla/default pass without generating the ores twice.
Existing terrain and saved settings are left alone.
- Retire the using_orespawn and fallback_orespawn switches. Ore generation is
now configured in OreSpawn, including when another mod places the ores.
- Keep door items, coal powder and liquid Mercury when upgrading from the original
Cyano release. Old item names continue to work after restarting, including items
stored in chunks that have not been opened yet.
- Leave Base Metals iron nuggets unchanged; Minecraft 1.10 has no vanilla equivalent.
- Support all eighteen Base Metal Golems from the unchanged 6.02.1 add-on,
including golems saved by the original Cyano release.
- Move Base Metals' Java packages and Maven group to zone.moddev.mc.basemetals.
Existing MMD add-ons keep using the same classes through a name adapter;
saved IDs, configuration names and the bundled library API are unchanged.
- Use the same Major.Minor.Patch.Target version format as the newer branches.
- Update to ForgeGradle 7 and Gradle 9.6.1 while keeping Java 8 game compatibility.
Eclipse launches now quote paths with spaces, use processed resources and leave
optional integration APIs and test mods off the normal runtime classpath.
- Pin and checksum the old integration dependencies, and add repeatable main,
sources and Javadoc jars with release-artifact checks.
- Add build, CodeQL and wrapper checks for master-1.10.2, with automated
Cyano/MMD save upgrades, OreSpawn configuration imports and vanilla takeover tests.
- Connect this target to the shared release action, using one verified bundle
for Maven, CurseForge and GitHub. Keep publication behind explicit confirmation.
- Normalize changed text files to LF and fix the stray import whitespace.
- Leave Windows folder metadata out of downloads and use UTF-8 for sources
and Javadocs on every platform.
This update brings the newer Base Metals features to 1.11.2. It requires
Forge 13.20.1.2588 or later and MMD OreSpawn 4.1.6.111021 or a compatible
newer 4.x version for 1.11.2.

- Open the Base Metals settings from the Mods list or the cog in OreSpawn.
- High Fantasy keeps the usual recipes and is the default. Low Fantasy limits
what you can make without removing anything from your world or changing
where ores spawn. Use the same setting on the client and server.
- Molten metal now burns even in shallow flows. Mercury still causes nausea.
- OreSpawn handles all eleven Base Metals ore rules. It keeps existing
overrides when importing older settings and avoids adding a second set of
veins when you move an imported OreSpawn 1 world to a new instance.
- JEI shows Crack Hammer recipes, Base Metals rods use the 1.11.2 fishing
hook, and the material API still uses Minecraft's iron nugget.
- The Java packages and Maven group move to zone.moddev.mc.basemetals.
Existing add-ons can still use the old class names. Saved block and item
IDs and config names stay the same.
- The build now uses ForgeGradle 7 and Gradle 9.6.1. Minecraft still runs on
Java 8. Eclipse launches handle paths with spaces, and CI checks old-world
upgrades as well as the build and release files.

2.5.0 for 1.10.2
191 changes: 52 additions & 139 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,161 +1,74 @@
# Base Metals 1.10.2
# Base Metals 1.11.2

[![Build](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml/badge.svg?branch=master-1.10.2)](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml?query=branch%3Amaster-1.10.2)
[![CodeQL](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/codeql-analysis.yml/badge.svg?branch=master-1.10.2)](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/codeql-analysis.yml?query=branch%3Amaster-1.10.2)
[![Build](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml/badge.svg?branch=master-1.11.2)](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/ci.yml?query=branch%3Amaster-1.11.2)
[![CodeQL](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/codeql-analysis.yml/badge.svg?branch=master-1.11.2)](https://github.com/MinecraftModDevelopmentMods/BaseMetals/actions/workflows/codeql-analysis.yml?query=branch%3Amaster-1.11.2)

## Base Metals Mod
Base Metals adds metals like copper, tin, lead and silver, plus alloys such as
bronze and steel. There are a few fantasy metals too: look for Cold Iron and
Adamantine in the Nether, and Star Steel in the End.

This mod adds historically commonly used metals to Minecraft, specifically Silver, Copper, Tin, Lead, Zinc, Mercury, and Nickel. You will also find a number of metal alloys in this mod and a new tool: the Crack Hammer.
## Installing and updating

Fantasy metals have been added to the Nether and the End: Cold Iron, Mithril, Adamantine, and Star Steel
Install Forge `13.20.1.2588` or later and
[MMD OreSpawn `4.1.6.111021`](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9524249)
or a newer compatible 4.x release for Minecraft 1.11.2. Put the OreSpawn and
`BaseMetals-2.5.1.111021.jar` files in your `mods` folder.

If you're updating an existing world, back up the world and the `config` folder
first. Replace Base Metals and OreSpawn together, but keep your old OreSpawn
config files so their settings can be imported. OreSpawn now handles all Base
Metals ore placement, and the eleven default rules haven't changed. Check
[the ore generation guide](docs/ORE_GENERATION.md) before exploring new chunks,
especially if your pack changes where vanilla ores spawn.

## Using the Crack Hammer

## Metals and Alloys
Break an ore block with a Crack Hammer to get two piles of powder. Smelt the
powder into ingots, or mix different powders and smelt the blend to make an
alloy. You can also drop a crushable item and right-click the ground beneath
it with the hammer. If you use JEI, its Crack Hammer category shows what you
can crush.

### Natural Metals
## Making alloys

**Antimony**:
Mix three copper powders with one tin powder for bronze, or swap the tin for
zinc to make brass. Equal parts silver and gold make electrum. Two parts iron
to one part nickel make invar; eight parts iron to one part carbon make steel.
Mithril uses two parts silver to one part each of mercury and Cold Iron.

**Bismuth**:
## Choosing a Fantasy Level

**Copper**: Copper is soft, easy to work, and fairly abundant. It is needed to make bronze and brass metal alloys.
Open **Mods → Base Metals → Config** from the main menu, or use the Base Metals
cog under **Create World → OreSpawn → Mods**. Both edit `config/BaseMetals.cfg`.
Restart Minecraft or the server to apply changes.

**Lead**: Lead is a very soft metal that is best known for being very heavy and somewhat toxic. Lead tools are fragile, but can dish out a lot of damage when used as weapons.

**Mercury**: This toxic liquid metal has many alchemical uses. The Mithril metal alloys requires mercury.

**Nickel**: This metal is as soft as copper, but it has alchemical properties and forms the invar metal alloy when mixed with iron.

**Platinum**:

**Silver**: Silver is a soft, shiny metal that is valued for both is beauty and its alchemical uses.

**Tin**: Tin is an extremely soft metal that is not useful by itself, but can be combined with copper to make bronze, a metal alloy nearly as strong as iron.

**Zinc**: Like tin, zinc is worthless on its own, but can be used to make the metal ally brass.



### Metal Alloys
*Metal alloys are made by crafting together the powdered forms of the required metals, and then smelting the resulting alloy blend in a furnace.*

**Brass**: This alloy of copper and zinc (3:1 ratio) is soft, but has a beautiful golden color.

**Bronze**: This alloy of copper and tin (3:1 ratio) is as hard as iron, but not quite as durable.

**Electrum**: This alloy of silver and gold (1:1 ratio) can be enchanted like gold, but is slightly more durable.

**Invar**: This alloy of iron and nickel (2:1 ratio) is harder than steel, but less durable.

**Pewter**:

**Steel**: This alloy of iron and carbon (8:1 ratio) is as hard as iron and much more durable.


### Fantasy Metals

**Adamantine**: (found in the Nether): Adamantine is a rare magical metal that is as strong as diamond, maybe even stronger. Armor made from Adamantine grants resistance to damage and tools made from adamantine are extra effective against monsters that have more than 10 hearts of health.

**Aquarium**:

**Cold-Iron**: (found in the Nether): Cold-Iron is a magical metal that is as strong as iron. Tools made from Cold Iron are extra effective against denizens of the Nether and any creature that is immune to fire.

**Mithril**: Mithril is an alloy of alloy of silver, mercury, and cold-iron (2:1:1 ratio). It is as strong as steel and Mithril weapons are extra effective against undead.

**Star-Steel**: (found in the End): Armor made from Star Steel reduces the weight of the wearer, allowing the wearer to jump higher and fall slower. Star-Steel tools slowly repair themselves while held.



## Crack Hammer

Also known as a sledgehammer, this tool is designed for pulverizing rocks. Using this tool on ores will cause them to drop powdered metal instead of the standard ore block. Use can then use the powdered metals to make metal alloy mixes or just smelt the powder into ingots. You can crush items by dropping them on the ground and then right-clicking on the ground beneath the items.



## Requirements

Install Forge `12.18.3.2511` or later and
[MMD OreSpawn `4.1.2.110021`](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9276430)
or a newer compatible 4.x release for Minecraft 1.10.2. Base Metals no longer
includes its own fallback ore generator.

OreSpawn handles ore placement and imports old OreSpawn configuration files.
The eleven ore defaults are unchanged. See [ore generation and upgrades](docs/ORE_GENERATION.md)
for configuration locations and advice for existing worlds.
**High Fantasy** keeps the usual recipes and is the default for older configs.
**Low Fantasy** limits what you can make from each material. For example, you
can still make an Adamantine pickaxe, but not an Adamantine bow. Items you
already have still work, and ore placement doesn't change. In multiplayer,
use the same Fantasy Level on the client and server.

## Building and running from source

This branch uses ForgeGradle 7 and the Gradle wrapper, like the newer branches.
Minecraft and the mod still run on Java 8. Gradle uses Java 17, while the initial
Minecraft setup also needs Java 25 for Mavenizer.

Import the inner `BaseMetals` directory as an existing Gradle project. Use the
wrapper, then run `prepareEclipse` and choose `runClient` or `runServer`.
Optional integration mods are compile-time APIs, not ordinary launch dependencies.
See [the build guide](docs/BUILDING.md) for toolchains, checks and legacy-world tests.

Source for this version lives on `master-1.10.2`. Releases use the shared
**Release Base Metals** action after the branch's build and compatibility checks
pass. Normal builds and tags do not publish anything.



## Installing

Install Forge and OreSpawn, then put `BaseMetals-2.5.1.110021.jar` in your
`mods` folder. Downloads are available on CurseForge and the repository's
Releases page once the version is published.

## NEI

The Crack Hammer recipes from this mod will appear in NEI if you have NEI installed. Hooray!

## Upgrading an existing 1.10 world

Back up your world before updating any mods. This build recognizes the original
Cyano names for door items, coal powder and liquid Mercury, including items in
chunks you visit later. Base Metals iron nuggets keep their existing identity.

Mods that use Cyano's old Java API may need their own updates. Restoring saved
items cannot, by itself, repair those Java references. Base Metal Golems
`6.02.1`, with Extra Golems `6.02`, is supported by a small compatibility layer:
its eighteen golems use the existing Base Metals blocks and ingots. Neither
add-on needs changing, and neither is required when playing without golems.

This release uses version `2.5.1.110021`. The final six digits identify Minecraft
1.10.2 on Forge, following the same version format as the newer branches.
The mod ID, saved block and item names, resources and configuration names remain
`basemetals`; moving the Java packages does not rename anything in your world.
Minecraft and the mod still run on Java 8. The Gradle wrapper uses Java 17,
and ForgeGradle's Minecraft setup needs Java 25 for Mavenizer. Import
`BaseMetals` as an existing Gradle project in Eclipse, run `prepareEclipse`,
then choose `runClient` or `runServer`. The normal launches don't load optional
integration mods or test mods.

See [the build guide](docs/BUILDING.md) for toolchains, checks and legacy-world
tests. The source for this version is on `master-1.11.2`.

## Mod API

New integrations should use `zone.moddev.mc.basemetals.init` for materials,
blocks and items. Maven builds use
`zone.moddev.mc.basemetals:BaseMetals:2.5.1.110021`. Crack Hammer recipes still
use `com.mcmoddev.lib.registry.CrusherRecipeRegistry`; the bundled library API
has not moved.

An early-loading adapter redirects compiled references to the former
`com.mcmoddev.basemetals` classes to their new names. They share the same mod
instance, material objects and registries, rather than registering a second
copy. This covers class references and literal reflection names, not arbitrary
class names assembled by an add-on at runtime. The Cyano compatibility layer
only supplies the block and ingot fields used by Base Metal Golems; it is not a
replacement for the complete Cyano API.


## Q&A

Q: Why make this mod?

A: Minecraft appears to have a pre-industrial fantasy setting, but the fantasy literature (and pre-industrial history) is full of references to silver and copper as well as gold.



Q: What does the Crack Hammer do?

A: When you break ores with the Crack Hammer, you get two piles of metal powders instead of a single block of ore. This is necessary to make metal alloys, which is done by combining the powders of the various components and then smelting the alloy mix.
blocks and items. The Maven coordinate is
`zone.moddev.mc.basemetals:BaseMetals:2.5.1.111021`. Crack Hammer recipes still
use `com.mcmoddev.lib.registry.CrusherRecipeRegistry`.

Existing add-ons can still use the old `com.mcmoddev.basemetals` class names.
The adapter handles compiled references and literal class names used in
reflection, but not names an add-on assembles at runtime. Saved block and item
IDs still use `basemetals`.


Loading
Loading