Skip to content

Commit 72205b9

Browse files
authored
Fix imported ore placement on 1.12.2
2 parents 0d5569c + 5ba25c9 commit 72205b9

35 files changed

Lines changed: 1971 additions & 120 deletions

‎.github/workflows/ci.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ jobs:
126126
if-no-files-found: error
127127
retention-days: 30
128128
path: |
129-
build/libs/OreSpawn-4.1.2.112021.jar
130-
build/libs/OreSpawn-4.1.2.112021-sources.jar
131-
build/libs/OreSpawn-4.1.2.112021-javadoc.jar
129+
build/libs/OreSpawn-4.1.3.112021.jar
130+
build/libs/OreSpawn-4.1.3.112021-sources.jar
131+
build/libs/OreSpawn-4.1.3.112021-javadoc.jar
132132
build/release/SHA256SUMS
133133
CHANGELOG.txt
134134

‎CHANGELOG.txt‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
Version 4.1.3.112021
2+
3+
* Apply hybrid and replacement background limits to imported built-in ore
4+
patterns, just as for ordinary native rules. Keep explicit channels and
5+
third-party deposit patterns independent.
6+
* Retain older Ore Sources selections under their saved pattern names without
7+
rewriting imported settings or regenerating existing chunks.
8+
* Show imported placement choices in the editor without duplicate old-channel
9+
rows. Distinguish an inactive source from a missing mod, and keep custom
10+
channels and saved choices intact.
11+
* Keep the empty Ore Sources message inside its pane in smaller windows.
12+
* Remove old 1.10-only ABI test tasks that could start an empty server on 1.12.
13+
114
Version 4.1.2.112021
215

316
* Respect Manage Vanilla Ores for imported OS1/OS3 rules. With it off, leave

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ It gives mods and modpacks one place to configure ores, deposit shapes, optional
1010
rock strata and geomes, provider-owned underground fluid deposits, biome
1111
palettes and world materials, flat bedrock, and bounded ore retrogen.
1212

13-
This branch builds target-qualified version `4.1.2.112021`: the OreSpawn 4.1.2
13+
This branch builds target-qualified version `4.1.3.112021`: the OreSpawn 4.1.3
1414
feature set for Minecraft 1.12.2 and Forge. It adds stable generation identity,
1515
non-loading geology sampling, per-resource background control, existing-world
1616
provider merge policy, an Ore Sources arbiter for equivalent provider ores, a

‎docs/CONFIGURATION.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,14 @@ informational because the original rules remain independent. The compact help
309309
and row tooltips explain fixed, selectable, missing and inactive states without
310310
reducing the alias-list height.
311311

312+
Built-in patterns use the standard channel whether their names are short
313+
(`default`, `vein`) or fully qualified (`orespawn:default`, `orespawn:vein`).
314+
This lets a child's hybrid or replacement policy reduce imported ordinary
315+
veins too. An explicit `placement_channel` always wins, and third-party pattern
316+
channels remain independent. Older saved source selections still select the
317+
same rule; changing this classification does not rewrite their ore settings
318+
or existing terrain.
319+
312320
Native vanilla ore rules are active placement sources only when
313321
`manage_vanilla_ores` is enabled. Changing that option refreshes the pending
314322
Ore Sources snapshot before the editor opens. While it is disabled, Group
@@ -338,6 +346,12 @@ BaseSciences has no ordinary ore-source role. An Ore Dictionary member whose
338346
generator is not controlled by OreSpawn is reported as external generation and
339347
is never suppressed, so total abundance may still be increased by that mod.
340348

349+
Older imported profiles may still store a built-in pattern name as their
350+
placement channel. The Ore Sources editor shows a single ordinary placement
351+
row for that choice; opening the screen does not rewrite the saved profile.
352+
Explicit custom channels stay separate. A source whose placement is switched
353+
off remains listed as output-only, rather than being reported as a missing mod.
354+
341355
## Fluid Deposits, Retrogen, And Bedrock
342356

343357
Each `fluid_deposits` entry has a stable provider-namespaced rule ID, an

‎docs/MIGRATION.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,13 @@ Original), preserving prior placement frequency, ordering and output behaviour.
159159
Missing selected sources and dormant policies remain recorded. Policy changes
160160
affect new chunks only and do not add retrogen.
161161

162+
Legacy imports may spell built-in patterns as `orespawn:default` or another
163+
fully qualified built-in name. These are ordinary generation, so hybrid and
164+
replacement background limits apply to them. Saved Ore Sources choices under
165+
those older inferred channel names remain valid without changing the saved
166+
ore rule. Explicit channels, custom patterns, imported quantities and heights,
167+
and already generated chunks are left alone.
168+
162169
The old `place_crude_oil` and singleton `oil` fields migrate to
163170
`place_fluid_deposits` and a provider-owned rule. A valid block becomes
164171
`<namespace>:fluid_deposit/<path>`; `minecraft:air` creates no rule. Mineralogy

‎docs/VERSIONS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Examples:
5252
| Minecraft | Loader | Target | Example full OreSpawn version |
5353
| --- | --- | ---: | --- |
5454
| 1.10.2 | Forge | `110021` | `4.0.6.110021` |
55-
| 1.12.2 | Forge | `112021` | `4.1.2.112021` |
55+
| 1.12.2 | Forge | `112021` | `4.1.3.112021` |
5656
| 1.13.2 | Forge | `113021` | `4.0.6.113021` |
5757
| 1.20.6 | Forge | `120061` | `4.0.6.120061` |
5858
| 1.21.11 | Forge | `121111` | `4.0.6.121111` |

‎gradle.properties‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ mod_vendor=Minecraft Mod Development
3030
mod_license=LGPL-2.1
3131
mod_license_name=GNU Lesser General Public License, Version 2.1
3232
mod_license_url=https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
33-
mod_version=4.1.2.112021
33+
mod_version=4.1.3.112021
3434
mod_group=zone.moddev.mc.orespawn
3535
mod_authors=SkyBlade1978, dshadowwolf, the MMD Team
3636
mod_description=Configurable, provider-driven terrain, ore, and deposit generation.

‎gradle/README.md‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ to the tasks they configure:
1111
| Script | Responsibility |
1212
| --- | --- |
1313
| `verification/support.gradle` | Sealed fixtures, Java 8 verification, Forge-run delegation, runtime log audits. |
14-
| `verification/legacy-and-migration.gradle` | Surface and migration worlds, Mineralogy lineage, opt-in OS1/OS3 ABI probes. |
14+
| `verification/legacy-and-migration.gradle` | Surface and migration worlds, including both Mineralogy lineages. |
1515
| `verification/client-and-benchmark.gradle` | Client integration and opt-in worldgen benchmark. |
1616
| `verification/packaged-forge.gradle` | Fresh/reload test of the reobfuscated jar under installed Forge 14. |
1717
| `release/artifacts.gradle` | API and release jars, release configuration and artifact audits, checksums. |
@@ -28,8 +28,12 @@ The routine offline gate runs `clean check build javadoc verifyReleaseArtifacts
2828
Run `clientIntegrationProcess` separately for rendered client and editor coverage,
2929
and `genEclipseRuns verifyEclipseProductionClasspath` for ordinary production-only
3030
IDE launches.
31-
`legacyAbiIntegrationTest` and `benchmarkIntegrationProcess` remain opt-in
32-
compatibility and performance gates. The benchmark requires `benchmarkRunDir`;
33-
the packaged server gate requires `packagedMinecraftServerJar` and
31+
`benchmarkIntegrationProcess` is an opt-in performance gate and requires
32+
`benchmarkRunDir`. The packaged server gate requires `packagedMinecraftServerJar` and
3433
`packagedForgeLibrariesRoot`, and its server command ends with literal `nogui`.
3534
All gates support the existing `--offline --no-daemon` workflow.
35+
36+
The ordinary tests cover the OS3 bridge and legacy Codec linkage. Published
37+
OS3 3.2.2 and 3.3.1 consumer binaries are also checked in separate packaged
38+
Forge runs with the sealed 1.12 fixtures. Those checks use the original
39+
target-native binaries, not the removed 1.10 fixture source layout.

‎gradle/release/artifacts.gradle‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ tasks.register('verifyReleaseConfiguration') {
8181
description = 'Validates the target-qualified release, API, schemas, reports, and publishing identity.'
8282

8383
doLast {
84-
if (project.mod_version != '4.1.2.112021'
84+
if (project.mod_version != '4.1.3.112021'
8585
|| project.mod_group != expectedMavenGroup) {
8686
throw new GradleException("Unexpected OreSpawn release version: ${project.mod_version}")
8787
}
@@ -108,8 +108,8 @@ tasks.register('verifyReleaseConfiguration') {
108108
'src/main/java/zone/moddev/mc/orespawn/worldgen/LegacyOs3ProfileMigration.java',
109109
'README.md', 'CHANGELOG.txt'
110110
].each { path ->
111-
if (!file(path).getText('UTF-8').contains('4.1.2.112021')) {
112-
throw new GradleException("Authoritative release location does not contain 4.1.2.112021: ${path}")
111+
if (!file(path).getText('UTF-8').contains('4.1.3.112021')) {
112+
throw new GradleException("Authoritative release location does not contain 4.1.3.112021: ${path}")
113113
}
114114
}
115115
if (!file('docs/API.md').getText('UTF-8').contains('orespawn@[4.0.6,5.0.0)')) {

‎gradle/verification/legacy-and-migration.gradle‎

Lines changed: 0 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
def verification = project.ext.oreSpawnVerification
2-
def legacyFixtureArtifacts = verification.fixtureArtifacts
32
def legacyFixtureWorlds = verification.fixtureWorlds
43
def legacyMineralogy112OracleJar = verification.mineralogy112Oracle
54
def verifyLegacyFixtures = tasks.named('verifyLegacyFixtures')
@@ -162,84 +161,6 @@ if (project.hasProperty('migrationRunDir')) {
162161
}
163162
}
164163

165-
// These probes were compiled against older OreSpawn APIs. Run them on demand to
166-
// confirm that those public binaries still load without rebuilding the mods.
167-
def os1AbiFixtureClasses = file("${buildDir}/legacy-abi/os1/classes")
168-
def os3AbiFixtureClasses = file("${buildDir}/legacy-abi/os3/classes")
169-
170-
task compileOs1AbiFixture(type: JavaCompile, dependsOn: verifyLegacyFixtures) {
171-
source fileTree('src/os1AbiFixture/java')
172-
classpath = files(sourceSets.main.compileClasspath,
173-
new File(legacyFixtureArtifacts, 'OreSpawn_1.10.2-1.1.0.jar'))
174-
destinationDirectory = os1AbiFixtureClasses
175-
options.encoding = 'UTF-8'
176-
}
177-
178-
task os1AbiFixtureJar(type: Jar, dependsOn: compileOs1AbiFixture) {
179-
archiveFileName = 'os1abiprobe.jar'
180-
destinationDirectory = file("${buildDir}/legacy-abi/os1")
181-
from os1AbiFixtureClasses
182-
from 'src/os1AbiFixture/resources'
183-
}
184-
185-
task compileOs3AbiFixture(type: JavaCompile, dependsOn: verifyLegacyFixtures) {
186-
source fileTree('src/os3AbiFixture/java')
187-
classpath = files(sourceSets.main.compileClasspath,
188-
new File(legacyFixtureArtifacts, 'OreSpawn-1.10.2-3.2.2.104.jar'))
189-
destinationDirectory = os3AbiFixtureClasses
190-
options.encoding = 'UTF-8'
191-
}
192-
193-
task os3AbiFixtureJar(type: Jar, dependsOn: compileOs3AbiFixture) {
194-
archiveFileName = 'os3abiprobe.jar'
195-
destinationDirectory = file("${buildDir}/legacy-abi/os3")
196-
from os3AbiFixtureClasses
197-
from 'src/os3AbiFixture/resources'
198-
}
199-
200-
def configureLegacyAbiProcess = { String generation, Task fixtureJar, String markerName ->
201-
File runDirectory = file("${buildDir}/legacy-abi/${generation}/run")
202-
Task prepare = tasks.create("prepare${generation.capitalize()}AbiRun", Copy) {
203-
dependsOn fixtureJar
204-
into new File(runDirectory, 'mods')
205-
from fixtureJar.archiveFile
206-
doFirst { project.delete(runDirectory) }
207-
doLast {
208-
new File(runDirectory, 'eula.txt').setText('eula=true\n', 'UTF-8')
209-
new File(runDirectory, 'server.properties').setText(
210-
'eula=true\nonline-mode=false\nlevel-name=world\nlevel-seed=zsjpxah\n' +
211-
'spawn-animals=false\nspawn-monsters=false\n', 'UTF-8')
212-
}
213-
}
214-
tasks.create("${generation}AbiIntegrationProcess", JavaExec) {
215-
group = 'verification'
216-
dependsOn prepare
217-
workingDir runDirectory
218-
configureFromForgeRun(delegate, 'runServer')
219-
doLast {
220-
File marker = new File(runDirectory, "world/${markerName}")
221-
if (!marker.isFile() || !marker.text.contains('registered=true')) {
222-
throw new GradleException("${generation.toUpperCase()} binary ABI probe did not complete: ${marker}")
223-
}
224-
File latest = new File(runDirectory, 'logs/latest.log')
225-
if (latest.isFile() && latest.text.contains('Encountered an unexpected exception')) {
226-
throw new GradleException("${generation.toUpperCase()} binary ABI probe logged a server failure")
227-
}
228-
}
229-
}
230-
}
231-
232-
configureLegacyAbiProcess('os1', os1AbiFixtureJar, 'os1-abi-probe.properties')
233-
configureLegacyAbiProcess('os3', os3AbiFixtureJar, 'os3-abi-probe.properties')
234-
235-
task legacyAbiIntegrationTest {
236-
group = 'verification'
237-
dependsOn os1AbiIntegrationProcess, os3AbiIntegrationProcess
238-
}
239-
240-
// Forge 1.12's published OS3 ABI fixture remains an opt-in external gate; the
241-
// 1.10 OS1/OS3 compiled probes are not part of this target's standard check.
242-
243164
// The same old save is exercised with 1.10-origin and native 1.12 Mineralogy
244165
// settings. Both paths must keep their intended values through a reload.
245166
def legacyMineralogyArchive = new File(legacyFixtureWorlds, 'os3-331-default-source.zip')

0 commit comments

Comments
 (0)