Skip to content

Commit a7c92a2

Browse files
authored
Merge pull request #271 from SkyBlade1978/master-1.19
Port OreSpawn 4.0.16 to Forge 1.19.4
2 parents 939a608 + 1923316 commit a7c92a2

27 files changed

Lines changed: 581 additions & 93 deletions

‎.github/workflows/ci.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,9 @@ jobs:
132132
if-no-files-found: error
133133
retention-days: 30
134134
path: |
135-
build/libs/OreSpawn-4.0.11.119041.jar
136-
build/libs/OreSpawn-4.0.11.119041-sources.jar
137-
build/libs/OreSpawn-4.0.11.119041-javadoc.jar
135+
build/libs/OreSpawn-4.0.16.119041.jar
136+
build/libs/OreSpawn-4.0.16.119041-sources.jar
137+
build/libs/OreSpawn-4.0.16.119041-javadoc.jar
138138
build/release/SHA256SUMS
139139
CHANGELOG.txt
140140

‎CHANGELOG.txt‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,41 @@
1+
Version 4.0.16.119041
2+
3+
* Leave benchmark shutdown to the GameTest harness when a benchmark is run
4+
through Forge's GameTest server, preventing a null test-tracker crash and
5+
allowing the harness to report its real test result.
6+
* Ordinary dedicated benchmark servers still stop automatically when requested.
7+
8+
Version 4.0.15.119041
9+
10+
* Classify generated geology and public geology samples through the same
11+
stable quart-biome cell at three-dimensional biome boundaries.
12+
* Keep ore family-host filters and sampler predictions consistent when later
13+
surface features alter the final heightmap by a small amount.
14+
* Existing chunks, profiles, API signatures, and schemas are unchanged.
15+
16+
Version 4.0.14.119041
17+
18+
* Convert naturally exposed one-layer Snow at the first free block above the
19+
motion-blocking surface while retaining the existing Snow and Ice scan.
20+
* Preserve buried or authored Snow and Ice, unconfigured dimensions, fluids,
21+
bedrock, block entities, profiles, schemas, and existing chunks.
22+
23+
Version 4.0.13.119041
24+
25+
* Give the public ore-dimension builder the exact biome include/exclude and
26+
biome-dictionary filter support already available in provider JSON.
27+
* Accept valid namespaced geome IDs in both creation-editor validation paths
28+
while preserving legacy unnamespaced geome keys.
29+
* API major 1, schemas, existing profiles, generated chunks, and worldgen
30+
behaviour are unchanged.
31+
32+
Version 4.0.12.119041
33+
34+
* Classify public geology samples at the same highest occupied block used by
35+
chunk geology generation, rather than the first free block above it.
36+
* Keep public sampler predictions consistent with generated rock at vertical
37+
biome seams without changing existing chunks, profiles, or generation.
38+
139
Version 4.0.11.119041
240

341
* Preserve biome-dictionary geome weights when a data-driven biome is reached

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ End" policy used by mods such as Base Metals.
1717
This is not the unrelated mod that adds mobs and dimensions under the same
1818
name.
1919

20-
This branch builds target-qualified version `4.0.11.119041`: the OreSpawn 4.0.11
20+
This branch builds target-qualified version `4.0.16.119041`: the OreSpawn 4.0.16
2121
feature set for Minecraft 1.19.4 and Forge. See the
2222
[versioning policy](docs/VERSIONS.md) for the encoding and release convention.
2323

‎build.gradle‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -845,7 +845,7 @@ def preparedReleaseDir = providers.gradleProperty('preparedReleaseDir')
845845
tasks.register('verifyReleaseConfiguration') {
846846
group = 'verification'
847847
doLast {
848-
if (project.mod_version != '4.0.11.119041'
848+
if (project.mod_version != '4.0.16.119041'
849849
|| project.mod_group != expectedMavenGroup
850850
|| project.minecraft_version != '1.19.4'
851851
|| project.forge_version != '45.4.0'
@@ -859,9 +859,9 @@ tasks.register('verifyReleaseConfiguration') {
859859
throw new GradleException('Unexpected dispatcher or Java target metadata')
860860
}
861861
List<String> expectedPublicArtifacts = [
862-
'OreSpawn-4.0.11.119041.jar',
863-
'OreSpawn-4.0.11.119041-sources.jar',
864-
'OreSpawn-4.0.11.119041-javadoc.jar'
862+
'OreSpawn-4.0.16.119041.jar',
863+
'OreSpawn-4.0.16.119041-sources.jar',
864+
'OreSpawn-4.0.16.119041-javadoc.jar'
865865
]
866866
if (base.archivesName.get() != expectedMavenArtifact
867867
|| expectedReleaseFiles.get().collect { it.toString() } != expectedPublicArtifacts) {
@@ -878,7 +878,7 @@ tasks.register('verifyReleaseConfiguration') {
878878
'src/main/java/zone/moddev/mc/orespawn/worldgen/LegacyMineralogyProfileMigration.java',
879879
'README.md', 'CHANGELOG.txt'
880880
].each { path ->
881-
if (!file(path).getText('UTF-8').contains('4.0.11.119041')) {
881+
if (!file(path).getText('UTF-8').contains('4.0.16.119041')) {
882882
throw new GradleException("Release identity missing from ${path}")
883883
}
884884
}

‎docs/API.md‎

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ WorldgenProvider provider = WorldgenProvider.builder("examplemod", 1)
7777
`OilDefinition` and template `.oil(...)` remain deprecated migration adapters
7878
for one legacy oil rule. New integrations should use `FluidDepositDefinition`.
7979

80+
Ore dimension builders expose the same biome filters as provider JSON and
81+
fluid-deposit builders. Use `.biome(...)` and `.biomeDictionary(...)` for
82+
inclusions, with `.excludeBiome(...)` and `.excludeBiomeDictionary(...)` for
83+
exclusions. These methods work on both explicit `.dimension(...)` rules and
84+
`.dimensionSelector(...)` fallbacks; built definitions and their returned
85+
filter sets are immutable.
86+
8087
Register custom biomes with Forge as usual. `OreSpawnBiomes.copyAndRegister`
8188
provides a small optional convenience for cloning a known biome:
8289

@@ -126,9 +133,14 @@ OreSpawnApi.createSampler(server.overworld()).ifPresent(sampler -> {
126133
```
127134

128135
`sampleColumn` performs one biome/geome classification and reuses it for every
129-
Y query. Sampling is read-only and is intended for gameplay decisions,
130-
diagnostics, and compatible generation outside OreSpawn's block loops.
131-
Callbacks inside OreSpawn generation loops are intentionally unsupported.
136+
Y query. Pass the first-free surface height returned by `Level.getHeight`;
137+
OreSpawn uses the highest occupied block immediately below it for biome/geome
138+
classification and resolves the same stable quart-biome cell used by chunk
139+
geology. This avoids display-oriented fuzzy biome zoom changing the prediction
140+
after later surface work alters a heightmap. Sampling is read-only and is
141+
intended for gameplay decisions, diagnostics, and compatible generation outside
142+
OreSpawn's block loops. Callbacks inside OreSpawn generation loops are
143+
intentionally unsupported.
132144

133145
Custom pattern mods create a Forge `DeferredRegister<OrePatternType>` using
134146
`OreSpawnPatternRegistry.REGISTRY_NAME`. An `OrePatternType` contains a codec

‎docs/CONFIGURATION.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@ is omitted. `dimensions` limits membership, and `geomes` multiplies selection
117117
weight by province. A weight of zero prevents selection in that context.
118118

119119
Geomes contain a non-negative `base` weight and non-negative weights for each
120-
rock family. Biome and biome-dictionary maps multiply those geome weights.
120+
rock family. Keys may retain the legacy unnamespaced form or use a provider
121+
resource ID such as `examplemod:crystal_basin`; the creation editor preserves
122+
both forms. Biome and biome-dictionary maps multiply those geome weights.
121123
Missing optional-mod biome IDs are ignored during baking.
122124

123125
Terrain dimensions require `enabled`, `host_blocks`, and `host_tags`.

‎docs/DEVELOPER_GUIDE.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ private void enqueueWorldgen(InterModEnqueueEvent event) {
100100
.quantityRange(4, 11)
101101
.pattern(OrePattern.VEIN)
102102
.heightDistribution(OreHeightDistribution.TRIANGLE)
103+
.biome(new ResourceLocation("minecraft", "plains"))
104+
.biomeDictionary("FOREST")
105+
.excludeBiome(new ResourceLocation("minecraft", "dark_forest"))
106+
.excludeBiomeDictionary("SPOOKY")
103107
.hostTag(new ResourceLocation("minecraft", "stone_ore_replaceables"))))
104108
.build();
105109

@@ -114,6 +118,8 @@ Use `.quantity(8)` when every attempt should have a fixed budget. The selector
114118
above preserves old OS3 behavior in every ordinary dimension except Nether and
115119
End. Add an explicit `.dimension(overworld, ...)` as well when the Overworld
116120
needs different settings; the explicit rule overrides the selector there.
121+
Ore dimension builders support the same exact-ID and biome-dictionary include
122+
and exclude filters as provider JSON and fluid-deposit builders.
117123

118124
## Pack Override Quick Start
119125

‎docs/VERSIONS.md‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Examples:
5757
| 1.16.5 | Forge | `116051` | `4.0.9.116051` |
5858
| 1.17.1 | Forge | `117011` | `4.0.9.117011` |
5959
| 1.18.2 | Forge | `118021` | `4.0.10.118021` |
60-
| 1.19.4 | Forge | `119041` | `4.0.11.119041` |
60+
| 1.19.4 | Forge | `119041` | `4.0.16.119041` |
6161
| 1.20.6 | Forge | `120061` | `4.0.6.120061` |
6262
| 1.21.11 | Forge | `121111` | `4.0.6.121111` |
6363
| 26.1.2 | Forge | `2601021` | `4.0.6.2601021` |
@@ -157,7 +157,16 @@ therefore legitimately skip functional version numbers.
157157

158158
Forge 1.19.4 then advanced to `4.0.11.119041` to retain biome-dictionary
159159
weights and ore biome filters when a data-driven biome is represented by a
160-
different runtime object with the same stable registry key.
160+
different runtime object with the same stable registry key, to
161+
`4.0.12.119041` so public geology samples classify the same highest occupied
162+
block as chunk generation at vertical biome seams, and to `4.0.13.119041` to
163+
restore API biome-filter parity and accept provider-namespaced geomes in the
164+
creation editor, and to `4.0.14.119041` to convert exposed one-layer Snow
165+
without touching buried or authored weather materials. It then advanced to
166+
`4.0.15.119041` so generated geology and public samples use the same stable
167+
quart-biome cell at three-dimensional biome boundaries, and to
168+
`4.0.16.119041` so GameTest benchmark runs leave shutdown and result reporting
169+
to the test harness.
161170

162171
This provides three useful guarantees:
163172

‎gradle.properties‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ mcp_version=20230314.122934
1919
mod_id=orespawn
2020
mod_name=MMD OreSpawn
2121
mod_license=LGPL-2.1
22-
mod_version=4.0.11.119041
22+
mod_version=4.0.16.119041
2323
mod_group=zone.moddev.mc.orespawn
2424
mod_authors=SkyBlade1978, dshadowwolf, the MMD Team
2525
mod_description=Configurable, provider-driven terrain, ore, and deposit generation.

0 commit comments

Comments
 (0)