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 @@ -124,9 +124,9 @@ jobs:
if-no-files-found: error
retention-days: 30
path: |
build/libs/Mineralogy-6.1.2.2603001.jar
build/libs/Mineralogy-6.1.2.2603001-sources.jar
build/libs/Mineralogy-6.1.2.2603001-javadoc.jar
build/libs/Mineralogy-6.1.4.2603001.jar
build/libs/Mineralogy-6.1.4.2603001-sources.jar
build/libs/Mineralogy-6.1.4.2603001-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt

Expand Down
31 changes: 31 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,34 @@
Mineralogy 6.1.4.2603001 for Minecraft 26.3 Forge

- Fixed sculk catalysts and moss failing to spread across natural Mineralogy
rocks, including chalk, chert, gypsum, pumice and older Mineralogy blocks.
- Fixed missing dripstone and moss decoration where OreSpawn had replaced
vanilla stone. This improves newly generated caves, not existing chunks.
- Fixed bats being unable to spawn above Mineralogy rocks. Minecraft's normal
darkness and below-surface checks still apply.
- Sulfur cubes can absorb the 31 raw Mineralogy rocks as Slow Bouncy stones.
Polished blocks, bricks and all other crafted Mineralogy items are excluded.
Minecraft's existing rules for its own blocks are unchanged.
- Goats can spawn on natural Mineralogy terrain and lose horns against the
harder raw rocks. Soft rocks and crafted blocks do not break horns.
- Fixed dripstone water pockets and large columns rejecting natural Mineralogy
rock. Azalea roots and forest rocks also recognise their natural substrates,
without making bare rock suitable for growing azalea trees.
- Added the missing slab, stair, furnace, ore, storage and dyed-block tags.
Double slabs remain full blocks, and disabled construction forms no longer
prevent their tags from loading. Normal cobblestone follows the same option
as the existing cobblestone tag, with chert and pumice always included.
- Fixed construction loot tables preventing a world from loading when those
blocks are disabled. Their normal drops are unchanged when enabled.
- Rock-salt lamps keep the centre post on straight walls. Cats can sit on lit
Mineralogy furnaces, but not unlit ones.
- These fixes work with cobblestone equivalence on or off, and keep vanilla
and other mods' tag entries intact. Sculk, moss, bats and sulfur cubes work
in existing worlds after updating.
- Recipes, saved block IDs, configs, migrations, textures and OreSpawn's
generation settings are unchanged. Requires Forge 66.0.0 or later and the
matching OreSpawn 4 release for Minecraft 26.3.

Mineralogy 6.1.2.2603001 for Minecraft 26.3 Forge

- Ported the accepted Forge 26.2 product to Minecraft 26.3 and Forge 66.0.0
Expand Down
21 changes: 20 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,30 @@ 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.2603001` for Forge `66.0.0`, with an
This branch builds Mineralogy `6.1.4.2603001` for Forge `66.0.0`, with an
additional compatibility smoke on Forge `66.0.2`, and is built and tested
against OreSpawn `4.0.16.2603001`. Its declared compatibility range is
OreSpawn `[4.0.6,5.0.0)`. Install both mods on clients and servers.

Mineralogy 6.1.4 fixes a few places where Minecraft wasn't treating Mineralogy
rocks like natural stone. Sculk catalysts and moss can now spread across them,
dripstone and lush caves get their missing decoration, and bats can spawn above
them under Minecraft's normal dark, below-surface conditions. Sulfur cubes can
absorb the 31 raw Mineralogy rocks as Slow Bouncy stones, but not Mineralogy's
polished blocks, bricks or other crafted items. Minecraft's own vanilla rules
are left alone.

Goats can spawn on natural rock and break horns against the harder raw rocks.
Slabs, stairs, walls, furnaces, ores, storage blocks and coloured drywall now
have the appropriate Minecraft and common-mod classifications. Rock-salt lamps
keep the centre post on straight walls, and cats can sit on lit rock furnaces.
Construction tags also load correctly when the corresponding blocks are
disabled in the configuration.

These fixes work with cobblestone equivalence on or off. Sculk, moss, bats and
goats, cats, lamps and sulfur cubes work in existing worlds after updating. The cave-generation fix
applies to new chunks; it won't redecorate caves you've already explored.

## Configuration and help

Mineralogy's content and recipe switches remain in
Expand Down
9 changes: 6 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -650,7 +650,7 @@ tasks.register('verifyReleaseConfiguration') {
description = 'Verifies the exact Mineralogy 26.3 release identity.'
dependsOn tasks.named('verifyMavenizerCompatibilityFixture')
doLast {
if (project.mod_version != '6.1.2.2603001'
if (project.mod_version != '6.1.4.2603001'
|| project.mod_group != expectedMavenGroup
|| project.minecraft_version != '26.3'
|| project.forge_version != '66.0.0'
Expand All @@ -665,7 +665,7 @@ tasks.register('verifyReleaseDependencies') {
group = 'verification'
description = 'Resolves and verifies the exact released OreSpawn dependency.'
doLast {
if (project.mod_version != '6.1.2.2603001'
if (project.mod_version != '6.1.4.2603001'
|| project.minecraft_version != project.mc_version
|| project.mc_version != '26.3'
|| project.loader_name != 'forge'
Expand Down Expand Up @@ -1539,7 +1539,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.2603001"')) {
if (eclipseMetadata.contains('${') || !eclipseMetadata.contains('version="6.1.4.2603001"')) {
throw new GradleException('Eclipse output contains unresolved or invalid Mineralogy version metadata')
}
}
Expand All @@ -1562,3 +1562,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'
22 changes: 22 additions & 0 deletions docs/DEVELOPER_GUIDE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# Mineralogy Developer Guide

## Stone compatibility tags

`mineralogy:terrain_rocks` contains the provider's natural terrain outputs and
retained legacy aliases. It does not contain construction blocks, ores or
storage conversions. Natural replacement and animal behaviour use this
interface independently of the cobblestone option.

`mineralogy:raw_stones` omits sandstone for common stone consumers.
`mineralogy:horn_breaking_rocks` is an explicit hard-rock whitelist, excluding
rock salt, scoria, siltstone, chalk, gypsum and pumice. Sulfur cubes receive only
the 31 raw Mineralogy items through `mineralogy:sulfur_cube_stones`; no crafted
forms are contributed, including through aggregate tags.

Config-dependent construction members are optional objects inside `values`.
Their loot tables also check that the dropped item is registered before loading;
disabled construction does not leave dangling loot references.
Slab aggregates classify single/upright slabs, not separate double-slab blocks.
The two dripstone hooks use `mineralogy:dripstone_base_stones` only at the pool
containment and column boundary checks. Global base-stone and ore-host tags
are unchanged. Ports must review new native tags explicitly rather than copy
an adjacent version's interfaces blindly.

## Responsibility Split

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

## Natural stone compatibility

Natural Mineralogy rocks support sculk, moss, dripstone, bats and goat spawning.
Goats can break horns against the harder raw rocks, but not soft rocks or
crafted blocks. Sulfur cubes accept the 31 raw Mineralogy rocks as Slow Bouncy
stones; polished blocks, bricks and other crafted Mineralogy items are not food.
Vanilla blocks keep Minecraft's own consumption rules.

Cats can sit on lit Mineralogy furnaces, and rock-salt lamps keep the post on a
straight wall. These changes work in existing worlds. Improved dripstone,
root and forest-rock generation applies to new chunks, not explored terrain.

## Installing

Mineralogy 6 needs Minecraft 26.3, Forge 66.0.0 or compatible Forge 66.0.x,
Expand Down
45 changes: 38 additions & 7 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 26.3 Forge release is therefore:

```text
6.1.2.2603001
6.1.4.2603001
```

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.2603001`, not `26.3-6.1.2.2603001`. The Target already makes tags unique
`6.1.4.2603001`, not `26.3-6.1.4.2603001`. The Target already makes tags unique
across Minecraft versions and loaders.

## Reading the target component
Expand Down Expand Up @@ -65,7 +65,7 @@ minor digits, and all remaining digits for the Minecraft major version.
| 26.1.2 | NeoForge | `2601022` | `6.1.2.2601022` |
| 26.2 | Forge | `2602001` | `6.1.2.2602001` |
| 26.2 | NeoForge | `2602002` | `6.1.2.2602002` |
| 26.3 | Forge | `2603001` | `6.1.2.2603001` |
| 26.3 | Forge | `2603001` | `6.1.4.2603001` |
| 26.3 | NeoForge | `2603002` | `6.1.2.2603002` |

The 26.3 Forge row records this branch's current release. The other rows illustrate
Expand All @@ -78,6 +78,32 @@ new releases and does not reinterpret an old file's version.

## Major version

### Vanilla stone compatibility campaign

The following local candidates share the 6.1.4 additive terrain compatibility
fix. This table is a candidate matrix, not a claim that every release has
already been published. NeoForge 26.3 retains its 6.1.3 compatibility correction.
Publication is paused while the expanded tag fixes are checked and retested.

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

Natural cave and animal interfaces apply only where Minecraft supports them.
Sulfur cubes use raw Mineralogy items only on 26.2 and 26.3. Forge 1.17 keeps its
native goat-spawning rule. Forge 1.13.2–1.15.2 are deferred until their later
6.1 ports; native-texture synchronization remains a separate campaign.

The **Major** number changes for a fundamental or breaking new generation of
Mineralogy.

Expand Down Expand Up @@ -139,7 +165,7 @@ Minecraft 26.1.2 / Forge / Mineralogy 6.1.2.2601021
Minecraft 26.1.2 / NeoForge / Mineralogy 6.1.2.2601022
Minecraft 26.2 / Forge / Mineralogy 6.1.2.2602001
Minecraft 26.2 / NeoForge / Mineralogy 6.1.2.2602002
Minecraft 26.3 / Forge / Mineralogy 6.1.2.2603001
Minecraft 26.3 / Forge / Mineralogy 6.1.4.2603001
Minecraft 26.3 / NeoForge / Mineralogy 6.1.2.2603002
```

Expand Down Expand Up @@ -183,10 +209,15 @@ feature generation, not the exact jar.

## Builds and release notes

This 6.1.4 release also fixes natural bat spawning above Mineralogy rocks.
Minecraft introduced the bats_spawnable_on block tag in 1.21.2; the compatibility
entry applies to the maintained 1.21.11 and 26.x Forge/NeoForge targets, not to
1.21.1 or earlier. Vanilla darkness and surface restrictions remain authoritative.

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.2603001`.
branch, published metadata and artifacts therefore use `6.1.4.2603001`.

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.2603001
mod_version=6.1.4.2603001
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