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
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,9 @@ jobs:
if-no-files-found: error
retention-days: 30
path: |
build/libs/Mineralogy-6.1.2.121111.jar
build/libs/Mineralogy-6.1.2.121111-sources.jar
build/libs/Mineralogy-6.1.2.121111-javadoc.jar
build/libs/Mineralogy-6.1.4.121111.jar
build/libs/Mineralogy-6.1.4.121111-sources.jar
build/libs/Mineralogy-6.1.4.121111-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt

Expand Down
27 changes: 27 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
Mineralogy 6.1.4.121111 for Minecraft 1.21.11

- Goats can spawn on natural Mineralogy terrain. Hard raw rocks can break
their horns; rock salt, scoria, siltstone and the other soft materials cannot.
- Restored azalea root replacement and forest-rock placement on raw stone,
without making bare rock suitable soil for growing an azalea tree.
- Fixed dripstone water pockets and exposed large columns checking only
vanilla base stone. These checks now recognise natural Mineralogy terrain,
without expanding general terrain or ore-generation host tags.
- Rock-salt lamps retain the post on straight walls, like vanilla torches.
- Added raw-stone, furnace-workstation, ore, storage and dyed-drywall common
tags, plus vanilla slab, stair and wall classifications. Double slabs remain
full blocks. Normal cobblestone follows the existing equivalence option.
- Construction switches no longer leave required missing tag members or
missing construction items in loot tables when those forms are disabled.
- Restored natural bat spawning on Mineralogy terrain through the additive
vanilla bats_spawnable_on block tag. Applies to existing worlds, preserves
normal light/height restrictions, and excludes crafted construction blocks.
Eligibility is independent of cobblestone equivalence.
- Restored vanilla sculk catalyst conversion and dripstone/moss replacement on
37 natural terrain identities, including native aliases and special rocks.
- Sculk works in existing worlds after updating; natural cave decoration
improves in newly generated chunks. No sulfur-cube tags on this target.
- Added deterministic tag, real-loader/reload, vanilla consumer, cave sample
and packaged-runtime validation. No recipes, IDs, configurations, provider,
OreSpawn engine, translations, or existing textures changed.

Mineralogy 6.1.2.121111 for Minecraft 1.21.11

- Updated all pickaxe and harvest-tier tags to Minecraft 1.21.11's optional
Expand Down
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,28 @@ mineral ores and dusts, rock furnaces, drywall, rock-salt lighting, fertilizer,
and crude oil. OreSpawn 4 is the sole terrain, strata, ore, and deposit engine;
Mineralogy no longer installs a parallel world generator.

This branch builds Mineralogy `6.1.2.121111` for Forge `61.1.0` and is built
This branch builds Mineralogy `6.1.4.121111` for Forge `61.1.0` and is built
and tested against OreSpawn `4.0.16.121111`. Its declared compatibility range is
OreSpawn `[4.0.6,5.0.0)`. Install both mods on clients and servers.

Version 6.1.4 restores vanilla sculk conversion and dripstone/moss replacement
on natural Mineralogy terrain. Sculk works in existing worlds after updating;
improved natural cave decoration appears in newly generated chunks. These
additive tags are independent of the cobblestone-equivalence option and exclude
crafted or shaped construction blocks. Sulfur cubes do not exist on this target.

Natural bats can spawn above Mineralogy terrain under Minecraft's normal dark,
below-surface conditions. The additive bat tag applies to existing worlds and
is independent of cobblestone equivalence; crafted construction blocks remain
excluded.

Goats can also spawn on natural rock, and hard raw rocks can break their horns.
Azalea roots and forest rocks recognise raw Mineralogy stone; bare rock is
not tree-growing soil. Rock-salt lamps keep the centre post on straight walls.
Construction tags remain loadable when their registration switches are off.
Slabs, stairs, walls, furnaces, ores, storage blocks and coloured drywall now
join the matching vanilla or common tags without changing recipes.

## Configuration and help

Mineralogy's content and recipe switches remain in
Expand Down
17 changes: 10 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -267,12 +267,12 @@ processResources {
}
}

// ForgeGradle 7 merges the main Java and resource outputs into one directory.
// ForgeGradle 7 merges each source set's Java and resource outputs.
// A cache restore for either producer replaces that directory and can erase the
// other producer's files, yielding a resource-only or class-only release jar.
['compileJava', 'processResources'].each { taskName ->
// other producer's files: incomplete jars or a test run with no test classes.
['compileJava', 'processResources', 'compileTestJava', 'processTestResources'].each { taskName ->
tasks.named(taskName) {
outputs.doNotCacheIf('ForgeGradle merged main output has multiple producers') { true }
outputs.doNotCacheIf('ForgeGradle merged output has multiple producers') { true }
}
}

Expand Down Expand Up @@ -612,7 +612,7 @@ tasks.register('verifyReleaseConfiguration') {
description = 'Verifies the exact Mineralogy 1.21.11 release identity.'
dependsOn tasks.named('verifyMavenizerCompatibilityFixture')
doLast {
if (project.mod_version != '6.1.2.121111'
if (project.mod_version != '6.1.4.121111'
|| project.mod_group != expectedMavenGroup
|| project.minecraft_version != '1.21.11'
|| project.forge_version != '61.1.0'
Expand All @@ -627,7 +627,7 @@ tasks.register('verifyReleaseDependencies') {
group = 'verification'
description = 'Resolves and verifies the exact released OreSpawn dependency.'
doLast {
if (project.mod_version != '6.1.2.121111'
if (project.mod_version != '6.1.4.121111'
|| project.minecraft_version != project.mc_version
|| project.mc_version != '1.21.11'
|| project.loader_name != 'forge'
Expand Down Expand Up @@ -1393,7 +1393,7 @@ tasks.register('verifyEclipseProductionClasspath') {
throw new GradleException('Eclipse output contains stale or unexpanded mods.toml metadata')
}
String eclipseMetadata = eclipseModsToml.getText('UTF-8')
if (eclipseMetadata.contains('${') || !eclipseMetadata.contains('version="6.1.2.121111"')) {
if (eclipseMetadata.contains('${') || !eclipseMetadata.contains('version="6.1.4.121111"')) {
throw new GradleException('Eclipse output contains unresolved or invalid Mineralogy version metadata')
}
}
Expand All @@ -1415,3 +1415,6 @@ tasks.named('check') {
dependsOn tasks.named('verifyOilCompatibilityFixtureIsolation')
dependsOn tasks.named('compileRecipeIntegrationFixture')
}

apply from: 'gradle/verify-terrain-compatibility.gradle'
apply from: 'gradle/terrain-compatibility-probe.gradle'
19 changes: 19 additions & 0 deletions docs/DEVELOPER_GUIDE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Mineralogy Developer Guide

## Tag compatibility contracts

`mineralogy:terrain_rocks` covers provider outputs and retained raw aliases,
not construction forms. Natural feature eligibility does not depend on
`COBBLESTONE_EQUIVILENT`. `raw_stones` excludes sandstone from common stone
classification. Slab aggregates include upright single slabs, not the separate
double-slab full blocks. Config-dependent members are optional objects inside
`values`, and their loot tables use Forge's item-existence condition.

Only the dripstone pool and exposed-column base-stone checks are redirected
to the dedicated terrain union. Each Mixin requires exactly one hook. General
base-stone, carver and ore-host tags remain unchanged. Forge's existing common
stone check supplies forest-rock eligibility; azalea root replacement does not
change the tree's soil requirements.

Every port must audit target tag availability, recursive inheritance, registry
types and optional construction references, then load the data through the
target loader under both equivalence settings and disabled construction.

## Responsibility Split

| Mineralogy owns | OreSpawn owns |
Expand Down
15 changes: 15 additions & 0 deletions docs/PLAYER_GUIDE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Mineralogy Player Guide

## Natural stone compatibility

Sculk catalysts can convert natural Mineralogy terrain after an XP-producing
mob dies nearby. Goats can spawn on it, and hard raw rock can break a goat's
horn. Bats keep Minecraft's normal darkness and below-surface restrictions.
These changes work in existing worlds after updating.

Moss, dripstone, azalea roots and forest rocks recognise natural terrain in
newly generated chunks. Crafted bricks and polished construction blocks are
not natural cave substrates. Bare rock is not suitable soil for an azalea tree.
Rock-salt lamps retain the centre post on straight and junction walls.

Sulfur cubes do not exist in Minecraft 1.21.11. On newer supported versions,
Mineralogy contributes only its raw rocks to their swallowing rules.

## Installing

Mineralogy 6 needs Minecraft 1.21.11, Forge 61.1.0, and OreSpawn
Expand Down
49 changes: 41 additions & 8 deletions docs/VERSIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ exact Minecraft/loader target are both visible in one number.
Major.Minor.Bug.Target
```

The first three components are the **functional version**. Mineralogy `6.1.2`
means major generation 6, minor release 1, and bug revision 2.
The first three components are the **functional version**. Mineralogy `6.1.4`
means major generation 6, minor release 1, and bug revision 4.

The fourth component identifies the target build. The complete version for
this Minecraft 1.21.11 Forge release is therefore:

```text
6.1.2.121111
6.1.4.121111
```

This expanded numeric form is compatible with Maven version ordering, but it
Expand All @@ -25,7 +25,7 @@ components.

The release tag is exactly the complete four-component version, with no
redundant Minecraft-version prefix. For this branch the tag is therefore
`6.1.2.121111`, not `1.21.11-6.1.2.121111`. The Target already makes tags unique
`6.1.4.121111`, not `1.21.11-6.1.4.121111`. The Target already makes tags unique
across Minecraft versions and loaders.

## Reading the target component
Expand Down Expand Up @@ -57,7 +57,7 @@ minor digits, and all remaining digits for the Minecraft major version.
| 1.20.1 | Forge | `120011` | `6.1.2.120011` |
| 1.20.6 | Forge | `120061` | `6.1.2.120061` |
| 1.21.1 | Forge | `121011` | `6.1.2.121011` |
| 1.21.11 | Forge | `121111` | `6.1.2.121111` |
| 1.21.11 | Forge | `121111` | `6.1.4.121111` |
| 26.2 | Forge | `2602001` | `6.0.0.2602001` |
| 26.2 | NeoForge | `2602002` | `6.0.0.2602002` |

Expand All @@ -69,6 +69,33 @@ Historical Mineralogy releases may also have four numeric components that used
the last number as an ordinary build sequence. The target policy applies to
new releases and does not reinterpret an old file's version.


## Vanilla stone compatibility campaign

The following local candidates share the 6.1.4 additive terrain compatibility
fix. This is a candidate matrix, not a claim that every release is published.
NeoForge 26.3 retains its existing 6.1.3 compatibility correction.

| Minecraft | Forge candidate | NeoForge candidate |
| --- | --- | --- |
| 1.16.5 | 6.1.4.116051 | Not in scope |
| 1.17.1 | 6.1.4.117011 | Not in scope |
| 1.18.2 | 6.1.4.118021 | Not in scope |
| 1.19.4 | 6.1.4.119041 | Not in scope |
| 1.20.1 | 6.1.4.120011 | Not in scope |
| 1.20.6 | 6.1.4.120061 | 6.1.4.120062 |
| 1.21.1 | 6.1.4.121011 | 6.1.4.121012 |
| 1.21.11 | 6.1.4.121111 | 6.1.4.121112 |
| 26.1.2 | 6.1.4.2601021 | 6.1.4.2601022 |
| 26.2 | 6.1.4.2602001 | 6.1.4.2602002 |
| 26.3 | 6.1.4.2603001 | 6.1.4.2603002 |

The revised campaign includes Forge 1.16.5–1.18.2 where each interface exists.
Minecraft 1.17 retains its native goat-spawning rule. Sulfur cubes on 26.2 and
26.3 consume only raw Mineralogy rocks, not polished or brick forms; vanilla's
own consumption rules are unchanged. Every revised local candidate needs
renewed manual acceptance. Native-texture synchronization remains separate.

## Major version

The **Major** number changes for a fundamental or breaking new generation of
Expand All @@ -93,7 +120,7 @@ When Major changes, Minor and Bug reset to zero. When Minor changes, Bug resets
to zero. The target for the actual build is then appended:

```text
6.1.2.121111 -> 6.2.0.121111
6.1.4.121111 -> 6.2.0.121111
6.2.4.121111 -> 7.0.0.121111
```

Expand Down Expand Up @@ -124,7 +151,7 @@ Minecraft 1.19.4 / Forge / Mineralogy 6.1.2.119041
Minecraft 1.20.1 / Forge / Mineralogy 6.1.2.120011
Minecraft 1.20.6 / Forge / Mineralogy 6.1.2.120061
Minecraft 1.21.1 / Forge / Mineralogy 6.1.2.121011
Minecraft 1.21.11 / Forge / Mineralogy 6.1.2.121111
Minecraft 1.21.11 / Forge / Mineralogy 6.1.4.121111
```

Minecraft and loader APIs may require different internal code without changing
Expand Down Expand Up @@ -167,10 +194,16 @@ feature generation, not the exact jar.

## Builds and release notes

This local 6.1.4 candidate also repairs natural bat substrate eligibility.
Minecraft introduced the bats_spawnable_on block tag in 1.21.2; the compatibility
interface belongs only on 1.21.2-and-later targets. Earlier Mineralogy candidates
remain unchanged. The additive block tag reuses natural terrain membership,
not the broad base_stone_overworld tag, and preserves vanilla spawn restrictions.

The Gradle build reads the complete version from `mod_version`, verifies that
it has four numeric components, and checks that its Target matches the declared
Minecraft version and Forge loader. CI build numbers are not appended. For this
branch, published metadata and artifacts therefore use `6.1.2.121111`.
branch, published metadata and artifacts therefore use `6.1.4.121111`.

Every release note should state:

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ org.gradle.caching=true
org.gradle.parallel=false
net.minecraftforge.gradle.merge-source-sets=true

mod_version=6.1.2.121111
mod_version=6.1.4.121111
mod_group=zone.moddev.mc

# Release metadata consumed by the generic dispatcher.
Expand Down
23 changes: 23 additions & 0 deletions gradle/terrain-compatibility-probe.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
def probeClasses = layout.buildDirectory.dir('terrain-compatibility-fixture/classes')
tasks.register('compileTerrainCompatibilityProbe', JavaCompile) {
dependsOn tasks.named('classes'), tasks.named('compileRecipeIntegrationFixture')
source fileTree('src/terrainCompatibilityTest/java')
classpath = files(sourceSets.main.output, sourceSets.main.compileClasspath, layout.buildDirectory.dir('recipe-integration-fixture/classes'))
destinationDirectory = probeClasses
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Integer.parseInt(project.java_version))
vendor = JvmVendorSpec.ADOPTIUM
}
options.encoding = 'UTF-8'
options.release = Integer.parseInt(project.java_version)
}
tasks.register('terrainCompatibilityProbeJar', Jar) {
dependsOn tasks.named('compileTerrainCompatibilityProbe')
archiveFileName = 'terraincompatibilityprobe.jar'
destinationDirectory = layout.buildDirectory.dir('terrain-compatibility-fixture')
from probeClasses
from 'src/terrainCompatibilityTest/resources'
from(layout.buildDirectory.dir('recipe-integration-fixture/classes')) { include 'zone/moddev/mc/mineralogy/fixture/RecipeIntegrationAssertions*.class' }
from('src/test/resources') { include 'tag-compatibility-contract.json' }
}
tasks.named('check') { dependsOn tasks.named('compileTerrainCompatibilityProbe') }
Loading
Loading