Skip to content

Commit fa0bb32

Browse files
authored
Merge pull request #180 from SkyBlade1978/master-26.1.2
Restore vanilla stone behaviour in Mineralogy 6.1.4 for Forge 26.1.2
2 parents 31a7fce + f9bd4b8 commit fa0bb32

1,157 files changed

Lines changed: 14854 additions & 1037 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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ jobs:
124124
if-no-files-found: error
125125
retention-days: 30
126126
path: |
127-
build/libs/Mineralogy-6.1.2.2601021.jar
128-
build/libs/Mineralogy-6.1.2.2601021-sources.jar
129-
build/libs/Mineralogy-6.1.2.2601021-javadoc.jar
127+
build/libs/Mineralogy-6.1.4.2601021.jar
128+
build/libs/Mineralogy-6.1.4.2601021-sources.jar
129+
build/libs/Mineralogy-6.1.4.2601021-javadoc.jar
130130
build/release/SHA256SUMS
131131
CHANGELOG.txt
132132

‎CHANGELOG.txt‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
Mineralogy 6.1.4.2601021 for Minecraft 26.1.2
2+
3+
- Restored natural bat spawning on Mineralogy terrain through the additive
4+
vanilla bats_spawnable_on block tag. Applies to existing worlds, preserves
5+
normal light/height restrictions, and excludes crafted construction blocks.
6+
Eligibility is independent of cobblestone equivalence.
7+
- Restored vanilla sculk catalyst conversion and dripstone/moss replacement on
8+
37 natural terrain identities, including native aliases and special rocks.
9+
- Goats can spawn on natural terrain and break horns against harder raw rocks.
10+
Soft rocks and crafted blocks are excluded from horn breaking.
11+
- Fixed dripstone water-pocket and column checks rejecting natural rocks.
12+
Roots and forest rocks recognise natural substrates without making bare
13+
rock suitable for growing azalea trees.
14+
- Added slab, stair, furnace, ore, storage and dyed-block classifications.
15+
Double slabs remain full blocks. Disabled construction references are
16+
configuration-safe, and normal cobblestone follows the existing option.
17+
- Rock-salt lamps retain the centre post on straight walls.
18+
- Disabled construction loot tables no longer refer to missing items. Their
19+
normal drops remain unchanged when construction is enabled.
20+
- Sculk works in existing worlds after updating; natural cave decoration
21+
improves in newly generated chunks. No sulfur-cube tags on this target.
22+
- Added deterministic tag, real-loader/reload, vanilla consumer, cave sample
23+
and packaged-runtime validation. No recipes, IDs, configurations, provider,
24+
OreSpawn engine, translations, or existing textures changed.
25+
126
Mineralogy 6.1.2.2601021 for Minecraft 26.1.2
227

328
- Ported the complete Mineralogy 6.1.2 content, recipe, migration, and

‎README.md‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,25 @@ mineral ores and dusts, rock furnaces, drywall, rock-salt lighting, fertilizer,
1010
and crude oil. OreSpawn 4 is the sole terrain, strata, ore, and deposit engine;
1111
Mineralogy no longer installs a parallel world generator.
1212

13-
This branch builds Mineralogy `6.1.2.2601021` for Forge `64.0.9`, with an
13+
This branch builds Mineralogy `6.1.4.2601021` for Forge `64.0.9`, with an
1414
additional compatibility smoke on Forge `64.1.0`, and is built and tested
1515
against OreSpawn `4.0.16.2601021`. Its declared compatibility range is
1616
OreSpawn `[4.0.6,5.0.0)`. Install both mods on clients and servers.
1717

18+
Mineralogy 6.1.4 fixes places where Minecraft wasn't recognising natural
19+
Mineralogy stone. Sculk and moss can spread across it, dripstone and roots
20+
recognise their natural substrates, and bats and goats keep their normal
21+
spawning rules. Goats can break horns against harder raw rocks, not soft rocks
22+
or crafted blocks. Sulfur cubes do not exist on this target.
23+
24+
Slabs, stairs, walls, furnaces, ores, storage blocks and coloured drywall now
25+
have the appropriate classifications. Rock-salt lamps keep the post on straight
26+
walls. Construction references stay loadable when their blocks are disabled.
27+
28+
These fixes work with cobblestone equivalence on or off. Existing worlds gain
29+
the behaviour fixes after updating; improved cave decoration applies to newly
30+
generated chunks and won't redecorate explored caves.
31+
1832
## Configuration and help
1933

2034
Mineralogy's content and recipe switches remain in

‎build.gradle‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ tasks.register('verifyReleaseConfiguration') {
650650
description = 'Verifies the exact Mineralogy 26.1.2 release identity.'
651651
dependsOn tasks.named('verifyMavenizerCompatibilityFixture')
652652
doLast {
653-
if (project.mod_version != '6.1.2.2601021'
653+
if (project.mod_version != '6.1.4.2601021'
654654
|| project.mod_group != expectedMavenGroup
655655
|| project.minecraft_version != '26.1.2'
656656
|| project.forge_version != '64.0.9'
@@ -665,7 +665,7 @@ tasks.register('verifyReleaseDependencies') {
665665
group = 'verification'
666666
description = 'Resolves and verifies the exact released OreSpawn dependency.'
667667
doLast {
668-
if (project.mod_version != '6.1.2.2601021'
668+
if (project.mod_version != '6.1.4.2601021'
669669
|| project.minecraft_version != project.mc_version
670670
|| project.mc_version != '26.1.2'
671671
|| project.loader_name != 'forge'
@@ -1449,7 +1449,7 @@ tasks.register('verifyEclipseProductionClasspath') {
14491449
throw new GradleException('Eclipse output contains stale or unexpanded mods.toml metadata')
14501450
}
14511451
String eclipseMetadata = eclipseModsToml.getText('UTF-8')
1452-
if (eclipseMetadata.contains('${') || !eclipseMetadata.contains('version="6.1.2.2601021"')) {
1452+
if (eclipseMetadata.contains('${') || !eclipseMetadata.contains('version="6.1.4.2601021"')) {
14531453
throw new GradleException('Eclipse output contains unresolved or invalid Mineralogy version metadata')
14541454
}
14551455
}
@@ -1472,3 +1472,6 @@ tasks.named('check') {
14721472
dependsOn tasks.named('verifyOilCompatibilityFixtureIsolation')
14731473
dependsOn tasks.named('compileRecipeIntegrationFixture')
14741474
}
1475+
1476+
apply from: 'gradle/verify-terrain-compatibility.gradle'
1477+
apply from: 'gradle/terrain-compatibility-probe.gradle'

‎docs/DEVELOPER_GUIDE.md‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,25 @@ Mineralogy requires OreSpawn `[4.0.6,5.0.0)`. Reusable worldgen integrations
1313
belong in `zone.moddev.mc.orespawn.api` or an OreSpawn provider rather than
1414
Mineralogy internals.
1515

16+
## Compatibility Tags
17+
18+
`mineralogy:terrain_rocks` contains this target's 32 provider outputs and five
19+
retained aliases. Natural replacement, roots, forest rocks and animal
20+
substrates use that dedicated interface, not the configurable cobblestone
21+
union. Horn breaking uses a separate hard-raw-rock whitelist.
22+
23+
Single/upright slabs, stairs and walls join the vanilla block and item
24+
aggregates; separate double slabs remain full blocks. Common raw-stone,
25+
furnace-workstation, ore, storage and dyed tags are additive. Unregisterable
26+
construction members are optional, and their loot tables use native
27+
item-existence guards without changing enabled drops. Normal cobblestone
28+
follows the same runtime option as the root, preserving unrelated members.
29+
30+
The two dripstone Mixins redirect only the water-pocket and exposed-column
31+
base-stone checks. They require exactly one hook each. Global base-stone,
32+
ore-host, carver and azalea-growing-soil tags are deliberately unchanged.
33+
Future ports must check the native consumers, not just copy tag names.
34+
1635
## Packaged Provider
1736

1837
The schema-4, revision-3 provider is at:

‎docs/PLAYER_GUIDE.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@ and OreSpawn 4.0.16.2601021.
77
Install matching Mineralogy and OreSpawn jars on both clients and servers. Do
88
not open a world containing Mineralogy blocks without Mineralogy installed.
99

10+
## Vanilla Stone Behaviour
11+
12+
Natural Mineralogy rocks support sculk spreading, moss, dripstone, rooted
13+
dirt and forest-rock placement. Bats and goats can use natural terrain under
14+
Minecraft's normal spawning rules. Harder raw rocks can break a charging
15+
goat's horn; soft rocks and crafted blocks cannot.
16+
17+
Rock-salt lamps keep the centre post on straight walls. Slabs, stairs,
18+
furnaces and coloured drywall have their matching common classifications.
19+
These behaviours do not depend on cobblestone equivalence. They apply after
20+
updating an existing world, but cave decoration needs newly generated chunks.
21+
Sulfur cubes are not present in Minecraft 26.1.2.
22+
1023
## Creating Or Upgrading A World
1124

1225
Open **OreSpawn World Generation** while creating a world. **Recommended

‎docs/VERSIONS.md‎

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ exact Minecraft/loader target are both visible in one number.
99
Major.Minor.Bug.Target
1010
```
1111

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

1515
The fourth component identifies the target build. The complete version for
1616
this Minecraft 26.1.2 Forge release is therefore:
1717

1818
```text
19-
6.1.2.2601021
19+
6.1.4.2601021
2020
```
2121

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

2626
The release tag is exactly the complete four-component version, with no
2727
redundant Minecraft-version prefix. For this branch the tag is therefore
28-
`6.1.2.2601021`, not `26.1.2-6.1.2.2601021`. The Target already makes tags unique
28+
`6.1.4.2601021`, not `26.1.2-6.1.4.2601021`. The Target already makes tags unique
2929
across Minecraft versions and loaders.
3030

3131
## Reading the target component
@@ -58,7 +58,7 @@ minor digits, and all remaining digits for the Minecraft major version.
5858
| 1.20.6 | Forge | `120061` | `6.1.2.120061` |
5959
| 1.21.1 | Forge | `121011` | `6.1.2.121011` |
6060
| 1.21.11 | Forge | `121111` | `6.1.2.121111` |
61-
| 26.1.2 | Forge | `2601021` | `6.1.2.2601021` |
61+
| 26.1.2 | Forge | `2601021` | `6.1.4.2601021` |
6262
| 26.2 | Forge | `2602001` | `6.0.0.2602001` |
6363
| 26.2 | NeoForge | `2602002` | `6.0.0.2602002` |
6464

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

73+
74+
## Vanilla stone compatibility campaign
75+
76+
The following local candidates share the 6.1.4 additive terrain compatibility
77+
fix. This is a candidate matrix, not a claim that every release is published.
78+
NeoForge 26.3 retains its existing 6.1.3 compatibility correction.
79+
80+
| Minecraft | Forge candidate | NeoForge candidate |
81+
| --- | --- | --- |
82+
| 1.16.5 | 6.1.4.116051 | Not in scope |
83+
| 1.17.1 | 6.1.4.117011 | Not in scope |
84+
| 1.18.2 | 6.1.4.118021 | Not in scope |
85+
| 1.19.4 | 6.1.4.119041 | Not in scope |
86+
| 1.20.1 | 6.1.4.120011 | Not in scope |
87+
| 1.20.6 | 6.1.4.120061 | 6.1.4.120062 |
88+
| 1.21.1 | 6.1.4.121011 | 6.1.4.121012 |
89+
| 1.21.11 | 6.1.4.121111 | 6.1.4.121112 |
90+
| 26.1.2 | 6.1.4.2601021 | 6.1.4.2601022 |
91+
| 26.2 | 6.1.4.2602001 | 6.1.4.2602002 |
92+
| 26.3 | 6.1.4.2603001 | 6.1.4.2603002 |
93+
94+
The revised local candidates need renewed testing before publication resumes.
95+
Minecraft 1.13.2–1.15.2 remain unchanged; applicable classifications and
96+
target-native substrate checks are recorded for their later 6.1 ports.
97+
Native-texture synchronization remains a separate campaign.
98+
7399
## Major version
74100

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

96122
```text
97-
6.1.2.2601021 -> 6.2.0.2601021
123+
6.1.4.2601021 -> 6.2.0.2601021
98124
6.2.4.2601021 -> 7.0.0.2601021
99125
```
100126

@@ -126,7 +152,7 @@ Minecraft 1.20.1 / Forge / Mineralogy 6.1.2.120011
126152
Minecraft 1.20.6 / Forge / Mineralogy 6.1.2.120061
127153
Minecraft 1.21.1 / Forge / Mineralogy 6.1.2.121011
128154
Minecraft 1.21.11 / Forge / Mineralogy 6.1.2.121111
129-
Minecraft 26.1.2 / Forge / Mineralogy 6.1.2.2601021
155+
Minecraft 26.1.2 / Forge / Mineralogy 6.1.4.2601021
130156
```
131157

132158
Minecraft and loader APIs may require different internal code without changing
@@ -169,10 +195,16 @@ feature generation, not the exact jar.
169195

170196
## Builds and release notes
171197

198+
This local 6.1.4 candidate also repairs natural bat substrate eligibility.
199+
Minecraft introduced the bats_spawnable_on block tag in 1.21.2; the compatibility
200+
interface belongs only on 1.21.2-and-later targets. Earlier Mineralogy candidates
201+
remain unchanged. The additive block tag reuses natural terrain membership,
202+
not the broad base_stone_overworld tag, and preserves vanilla spawn restrictions.
203+
172204
The Gradle build reads the complete version from `mod_version`, verifies that
173205
it has four numeric components, and checks that its Target matches the declared
174206
Minecraft version and Forge loader. CI build numbers are not appended. For this
175-
branch, published metadata and artifacts therefore use `6.1.2.2601021`.
207+
branch, published metadata and artifacts therefore use `6.1.4.2601021`.
176208

177209
Every release note should state:
178210

‎gradle.properties‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ org.gradle.caching=true
77
org.gradle.parallel=false
88
net.minecraftforge.gradle.merge-source-sets=true
99

10-
mod_version=6.1.2.2601021
10+
mod_version=6.1.4.2601021
1111
mod_group=zone.moddev.mc
1212

1313
# Release metadata consumed by the generic dispatcher.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
def probeClasses = layout.buildDirectory.dir('terrain-compatibility-fixture/classes')
2+
tasks.register('compileTerrainCompatibilityProbe', JavaCompile) {
3+
dependsOn tasks.named('classes'), tasks.named('compileRecipeIntegrationFixture')
4+
source fileTree('src/terrainCompatibilityTest/java')
5+
classpath = files(sourceSets.main.output, sourceSets.main.compileClasspath, layout.buildDirectory.dir('recipe-integration-fixture/classes'))
6+
destinationDirectory = probeClasses
7+
javaCompiler = javaToolchains.compilerFor {
8+
languageVersion = JavaLanguageVersion.of(Integer.parseInt(project.java_version))
9+
vendor = JvmVendorSpec.ADOPTIUM
10+
}
11+
options.encoding = 'UTF-8'
12+
options.release = Integer.parseInt(project.java_version)
13+
}
14+
tasks.register('terrainCompatibilityProbeJar', Jar) {
15+
dependsOn tasks.named('compileTerrainCompatibilityProbe')
16+
archiveFileName = 'terraincompatibilityprobe.jar'
17+
destinationDirectory = layout.buildDirectory.dir('terrain-compatibility-fixture')
18+
from probeClasses
19+
from 'src/terrainCompatibilityTest/resources'
20+
from(layout.buildDirectory.dir('recipe-integration-fixture/classes')) { include 'zone/moddev/mc/mineralogy/fixture/RecipeIntegrationAssertions*.class' }
21+
from('src/test/resources') { include 'tag-compatibility-contract.json' }
22+
}
23+
tasks.named('check') { dependsOn tasks.named('compileTerrainCompatibilityProbe') }

0 commit comments

Comments
 (0)