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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ root = true
end_of_line = lf
insert_final_newline = true

[*.bat]
end_of_line = crlf

[*.cmd]
end_of_line = crlf

[*.java]
charset = utf-8
indent_style = tab
Expand Down
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* text=auto eol=lf

*.bat text eol=crlf
#*.bat text eol=lf
*.cmd text eol=crlf
*.gradle text diff=java
mcmod.info text
*.java text
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,9 @@ jobs:
if-no-files-found: error
retention-days: 30
path: |
build/libs/OreSpawn-4.0.17.112021.jar
build/libs/OreSpawn-4.0.17.112021-sources.jar
build/libs/OreSpawn-4.0.17.112021-javadoc.jar
build/libs/OreSpawn-4.1.0.112021.jar
build/libs/OreSpawn-4.1.0.112021-sources.jar
build/libs/OreSpawn-4.1.0.112021-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt

Expand Down
105 changes: 105 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,108 @@
Version 4.1.0.112021

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

Version 4.0.17.112021

* Avoid a client-startup IncompatibleClassChangeError when another legacy
Expand Down
52 changes: 45 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@ It gives mods and modpacks one place to configure ores, deposit shapes, optional
rock strata and geomes, provider-owned underground fluid deposits, biome
palettes and world materials, flat bedrock, and bounded ore retrogen.

This branch builds target-qualified version `4.0.17.112021`: the OreSpawn 4.0.17
feature set for Minecraft 1.12.2 and Forge. This release avoids a startup
linkage failure when a legacy modpack supplies an interface-shaped Mojang
serialization `Codec` ahead of OreSpawn's compatibility adapter. See the
[versioning policy](docs/VERSIONS.md) for the encoding and release convention.
This branch builds target-qualified version `4.1.0.112021`: the OreSpawn 4.1.0
feature set for Minecraft 1.12.2 and Forge. It adds stable generation identity,
non-loading geology sampling, per-resource background control, existing-world
provider merge policy, an Ore Sources arbiter for equivalent provider ores, a
biome directory with exact new-terrain replacement overrides, and a client
world-settings extension point for add-ons such as Realistic Deposits. It also
retains the Forge 1.12 Cleanroom-compatible Codec bridge while preserving API
major 1. See the [versioning policy](docs/VERSIONS.md) for the encoding and
release convention.

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

When a provider exposes world settings, use **OreSpawn...** on the Create World
screen. **Recommended Defaults** restores the settings supplied by the
installed mods and pack. The in-game **Help & Guide** explains the controls.
installed mods and pack. **Mods** opens a directory of every loaded mod that
OreSpawn recognizes through a current provider, legacy compatibility path, or
client configuration hook. It shows each mod's version, integration lineage,
provider revision and status; its cog opens an add-on-owned configuration
screen when one is available. The in-game **Help & Guide** explains the other
controls.

On the ORES tab, **Ore Sources...** opens a material-group editor with compact,
independently scrolling group and output lists. Routine one-alias, one-output
entries are hidden behind **Show All**. Red groups need review, yellow groups
have a saved policy, and green entries need no action. **Balanced**, **Single**
and **Custom** use one managed placement budget and choose one output for a
whole vein or stable custom-deposit body; **Keep Original** preserves each
active rule. A group's cog edits its friendly name, exact Ore Dictionary aliases
and Placement Rules. Custom groups can be dissolved deterministically, and
**Reset All** restores inferred and curated defaults. All changes remain pending
until the main editor's **Done** action; Cancel discards them.

**Biomes** opens a directory covering every loaded, referenced and missing
biome, all palettes in their effective order, replacement status, surfaces and
placement constraints. Exact replacements apply only to newly generated
terrain through a final reserved palette; chains flatten, cycles are rejected,
and missing targets remain dormant until their mod returns. Dimension materials
are shown beside the dimension selector because they apply to every biome in
that dimension. Light-equivalent aquifer fluids use a compact generation mask
and pre-decoration substitution, while fluids with different light properties
retain the compatible generator path. Existing chunks are never rewritten.

Important files:

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

Git stores text with LF endings and checks out source, guides, and `gradlew`
with LF on every platform. Windows `.bat` and `.cmd` files use CRLF. The
`.gitattributes` and `.editorconfig` files agree on this policy; a fresh
checkout applies it without changing any Git or editor-wide settings.

`build` runs the standard `check` lifecycle. In addition to the JUnit suite,
that lifecycle packages a test-only provider mod and verifies 2,304 exposed
surface columns per built-in normal-noise End and Nether dimension, including
underwater, immediate filler, and ceiling-underside behavior. It also proves
later vegetation, structures, and block entities
survive, validates provider-rock vanilla springs and an external ore-pattern
registration, then reopens and checks the exact saved world. The fixture is
not included in OreSpawn's published jars.
not included in OreSpawn's published jars. It also verifies multiple palettes,
an unmanaged loaded biome, exact new-terrain replacement, unchanged old chunks,
Ore Sources persistence/reset behavior, dimension-scoped materials, and
fresh/reload profile and generation parity.

Import or refresh the project with Eclipse Buildship, then run
`genEclipseRuns` and `verifyEclipseProductionClasspath`. This branch uses
Expand Down
Loading
Loading