Skip to content

Commit a886942

Browse files
authored
Merge pull request #301 from SkyBlade1978/feature/1.12.2-4.1.0
Bring OreSpawn 4.1 to Forge 1.12.2
2 parents 8315da4 + e90bf21 commit a886942

130 files changed

Lines changed: 15762 additions & 2139 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.

‎.editorconfig‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ root = true
44
end_of_line = lf
55
insert_final_newline = true
66

7+
[*.bat]
8+
end_of_line = crlf
9+
10+
[*.cmd]
11+
end_of_line = crlf
12+
713
[*.java]
814
charset = utf-8
915
indent_style = tab

‎.gitattributes‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* text=auto eol=lf
44

55
*.bat text eol=crlf
6-
#*.bat text eol=lf
6+
*.cmd text eol=crlf
77
*.gradle text diff=java
88
mcmod.info text
99
*.java text

‎.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.0.17.112021.jar
130-
build/libs/OreSpawn-4.0.17.112021-sources.jar
131-
build/libs/OreSpawn-4.0.17.112021-javadoc.jar
129+
build/libs/OreSpawn-4.1.0.112021.jar
130+
build/libs/OreSpawn-4.1.0.112021-sources.jar
131+
build/libs/OreSpawn-4.1.0.112021-javadoc.jar
132132
build/release/SHA256SUMS
133133
CHANGELOG.txt
134134

‎CHANGELOG.txt‎

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,108 @@
1+
Version 4.1.0.112021
2+
3+
* Clarify dimension-wide material controls and replace light-equivalent custom
4+
aquifer-fluid injection with an exact one-shot generation mask, preserving
5+
surfaces, caves and later decorator fluids while keeping generation near the
6+
native path. Differently lit fluids retain the compatible generator path.
7+
* Replace the first-palette-only biome editor with a responsive biome directory
8+
that reports every loaded, referenced and missing biome once, together with
9+
palette ownership, effective order, placement count and surface conflicts.
10+
Its dimension selector filters routine entries through Forge biome domains
11+
while retaining explicit placement, replacement and missing-provider rules.
12+
* Add exact one-to-one biome replacements for newly generated terrain through a
13+
reserved terminal palette which always runs after ordinary provider/profile
14+
palettes. Replacement chains flatten, cycles are rejected and missing targets
15+
remain dormant until their owning mod returns. Valid unmanaged targets no
16+
longer produce a misleading warning or duplicate new-terrain notice.
17+
* Expose palette enablement, placement weights, climate and dependency limits,
18+
surfaces, namespace scope, region size, coverage, fallback weight, dimension
19+
materials and geome influences without adding arbitrary weighted biome output.
20+
* Add confirmed biome, palette, dimension and all-biome resets. Active providers
21+
return to their shipped defaults, user-only palettes are removed and entries
22+
owned by missing providers are preserved; all changes retain Done/Cancel
23+
editor-session semantics and never rewrite existing chunks.
24+
* Add Ore Sources policies that group equivalent configured outputs by material
25+
and dimension while keeping ordinary and custom placement channels independent.
26+
* Consolidate only reviewed high-confidence MMD conflicts for new worlds;
27+
upgraded worlds retain their previous separate placement and output behaviour.
28+
* Select one weighted output for an entire ordinary vein or custom deposit body
29+
using stable world/deposit identity, including safe missing-mod restoration.
30+
* Replace the technical Ore Sources list/detail flow with compact independently
31+
scrolling group and output lists that remain visible together at compact
32+
resolutions. The default view hides harmless single-source entries behind
33+
a compact Show All control; red groups need attention, yellow groups have a saved rule and
34+
green entries need no action. Each group has a cog for its name and aliases.
35+
* Rename the old Advanced channel controls to Placement Rules and explain their
36+
separate ownership of frequency, shape, depth and host restrictions. Single
37+
managed sources are read-only, multiple sources are selectable and external
38+
generators remain excluded.
39+
* Add Keep Original, Balanced, Single and Custom output modes. Reviewed fresh
40+
MMD conflicts balance every eligible output through one placement budget;
41+
inactive provider definitions remain selectable outputs without contributing
42+
another placement rule. Returning to Keep Original restores the output and
43+
placement selections from when the editor was opened. An explicit Accept
44+
action keeps that policy unchanged while clearing its pending review state;
45+
the main editor's Done action remains the persistence boundary.
46+
* Keep tooltips inside the available side of the screen and move Placement
47+
Rules guidance into a compact help tooltip, with an explicit fixed,
48+
selectable, missing or Keep Original status instead of an unexplained
49+
disabled control. Keep the group-name label inline, expand the alias list by
50+
two rows and reduce the Placement Rules list by one row at compact sizes.
51+
* Ship curated Sulfur/Sulphur and Aluminum/Aluminium groups, keep Niter and
52+
Saltpeter distinct, deduplicate identical registry states, and allow confirmed
53+
alias reassignment plus stable custom groups. Group edits are saved to the
54+
world and future-world defaults only when the main editor's Done is accepted.
55+
* Keep unrelated ambiguous Ore Dictionary alias families in separate stable
56+
review groups. Legacy shared Review required data is rediscovered into those
57+
groups, so Adamantine aliases can no longer appear in Mercury settings.
58+
* Ignore missing historical external-candidate records when the same registry
59+
state is now supplied by a loaded managed provider, preventing resolved
60+
groups from remaining falsely red while retaining the dormant record.
61+
* Keep Group Settings validation visible on a dedicated bottom row, with the
62+
Done action in the lower-right corner and full clipped messages available by
63+
tooltip during confirmed Ore Dictionary alias reassignment.
64+
* Prevent Balanced, Single or Custom consolidation when a material group has
65+
no active OreSpawn-managed placement rule, retaining the review action and
66+
Keep Original behaviour instead of entering an unresolved red policy.
67+
* Refresh Ore Sources immediately when Manage Vanilla Ores changes. Native
68+
vanilla rules become usable placement sources while it is enabled; while it
69+
is disabled, attempts to move their Ore Dictionary aliases are rejected with
70+
guidance instead of creating a policy OreSpawn cannot enforce.
71+
* Reconcile output candidates, placement choices and review state immediately
72+
after every group edit. Keep Original now exposes every moved candidate,
73+
Accept clears only the edited group's review, and placement rows report their
74+
available choice count while remaining inactive until consolidation.
75+
* Restrict Delete to empty custom groups. Populated custom groups use a
76+
confirmed Dissolve Group action that restores every alias to its inferred or
77+
curated group; discovered groups remain non-deletable facts.
78+
* Keep reassigned source policies dormant when a saved custom group is reopened,
79+
so their former inferred groups do not reappear as false conflicts. Add a
80+
confirmed Reset All action that restores built-in and inferred Ore Sources
81+
defaults inside the pending editor session without rewriting existing chunks.
82+
* Add provider schema 5 material and placement-channel declarations, global
83+
schema 8 and world-profile schema 7 while retaining older readable schemas.
84+
* Add an extended, binary-compatible ore generation context exposing stable
85+
world seed, dimension and current-chunk identity to compiled pattern add-ons.
86+
* Expose the active geology sampler to patterns when the generated dimension
87+
has OreSpawn geology, including identical identity during supported retrogen.
88+
* Replace per-add-on world-settings buttons with one fixed Mods directory that
89+
lists loaded native OS4, legacy OS1-OS3 and UI-only integrations with their
90+
mod version, provider lineage, revision and status.
91+
* Add a packaged cog action for add-on-owned configuration screens, including
92+
pagination, disabled-state explanations, safe failure handling and a return
93+
path through the Mods directory.
94+
* Preserve the original three-argument client registration descriptor while
95+
adding one-screen-per-mod `registerConfigScreen` registration.
96+
* Add optional per-resource background-generation scaling for controller
97+
patterns, including deterministic vanilla gating and lowest-controller wins.
98+
* Let structural providers keep newly introduced entries out of existing world
99+
profiles while retaining the historical merge behavior by default.
100+
* Guarantee geology column sampling does not load or generate neighbouring
101+
chunks.
102+
* Preserve API major 1, provider schemas 1-4, existing pattern binaries,
103+
migration behaviour and generated chunks while advancing active schemas to
104+
provider 5, global 8 and world profile 7.
105+
1106
Version 4.0.17.112021
2107

3108
* Avoid a client-startup IncompatibleClassChangeError when another legacy

‎README.md‎

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,15 @@ 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.0.17.112021`: the OreSpawn 4.0.17
14-
feature set for Minecraft 1.12.2 and Forge. This release avoids a startup
15-
linkage failure when a legacy modpack supplies an interface-shaped Mojang
16-
serialization `Codec` ahead of OreSpawn's compatibility adapter. See the
17-
[versioning policy](docs/VERSIONS.md) for the encoding and release convention.
13+
This branch builds target-qualified version `4.1.0.112021`: the OreSpawn 4.1.0
14+
feature set for Minecraft 1.12.2 and Forge. It adds stable generation identity,
15+
non-loading geology sampling, per-resource background control, existing-world
16+
provider merge policy, an Ore Sources arbiter for equivalent provider ores, a
17+
biome directory with exact new-terrain replacement overrides, and a client
18+
world-settings extension point for add-ons such as Realistic Deposits. It also
19+
retains the Forge 1.12 Cleanroom-compatible Codec bridge while preserving API
20+
major 1. See the [versioning policy](docs/VERSIONS.md) for the encoding and
21+
release convention.
1822

1923
Its deprecated OS3 compatibility layer imports OreSpawn 3 configuration and
2024
keeps existing OreSpawn 3 consumer jars working while translating their rules
@@ -44,7 +48,33 @@ TerraBlender.
4448

4549
When a provider exposes world settings, use **OreSpawn...** on the Create World
4650
screen. **Recommended Defaults** restores the settings supplied by the
47-
installed mods and pack. The in-game **Help & Guide** explains the controls.
51+
installed mods and pack. **Mods** opens a directory of every loaded mod that
52+
OreSpawn recognizes through a current provider, legacy compatibility path, or
53+
client configuration hook. It shows each mod's version, integration lineage,
54+
provider revision and status; its cog opens an add-on-owned configuration
55+
screen when one is available. The in-game **Help & Guide** explains the other
56+
controls.
57+
58+
On the ORES tab, **Ore Sources...** opens a material-group editor with compact,
59+
independently scrolling group and output lists. Routine one-alias, one-output
60+
entries are hidden behind **Show All**. Red groups need review, yellow groups
61+
have a saved policy, and green entries need no action. **Balanced**, **Single**
62+
and **Custom** use one managed placement budget and choose one output for a
63+
whole vein or stable custom-deposit body; **Keep Original** preserves each
64+
active rule. A group's cog edits its friendly name, exact Ore Dictionary aliases
65+
and Placement Rules. Custom groups can be dissolved deterministically, and
66+
**Reset All** restores inferred and curated defaults. All changes remain pending
67+
until the main editor's **Done** action; Cancel discards them.
68+
69+
**Biomes** opens a directory covering every loaded, referenced and missing
70+
biome, all palettes in their effective order, replacement status, surfaces and
71+
placement constraints. Exact replacements apply only to newly generated
72+
terrain through a final reserved palette; chains flatten, cycles are rejected,
73+
and missing targets remain dormant until their mod returns. Dimension materials
74+
are shown beside the dimension selector because they apply to every biome in
75+
that dimension. Light-equivalent aquifer fluids use a compact generation mask
76+
and pre-decoration substitution, while fluids with different light properties
77+
retain the compatible generator path. Existing chunks are never rewritten.
4878

4979
Important files:
5080

@@ -121,14 +151,22 @@ from an empty Gradle home followed by an offline replay from that same cache:
121151
.\gradlew.bat genEclipseRuns verifyEclipseProductionClasspath --no-daemon
122152
```
123153

154+
Git stores text with LF endings and checks out source, guides, and `gradlew`
155+
with LF on every platform. Windows `.bat` and `.cmd` files use CRLF. The
156+
`.gitattributes` and `.editorconfig` files agree on this policy; a fresh
157+
checkout applies it without changing any Git or editor-wide settings.
158+
124159
`build` runs the standard `check` lifecycle. In addition to the JUnit suite,
125160
that lifecycle packages a test-only provider mod and verifies 2,304 exposed
126161
surface columns per built-in normal-noise End and Nether dimension, including
127162
underwater, immediate filler, and ceiling-underside behavior. It also proves
128163
later vegetation, structures, and block entities
129164
survive, validates provider-rock vanilla springs and an external ore-pattern
130165
registration, then reopens and checks the exact saved world. The fixture is
131-
not included in OreSpawn's published jars.
166+
not included in OreSpawn's published jars. It also verifies multiple palettes,
167+
an unmanaged loaded biome, exact new-terrain replacement, unchanged old chunks,
168+
Ore Sources persistence/reset behavior, dimension-scoped materials, and
169+
fresh/reload profile and generation parity.
132170

133171
Import or refresh the project with Eclipse Buildship, then run
134172
`genEclipseRuns` and `verifyEclipseProductionClasspath`. This branch uses

0 commit comments

Comments
 (0)