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
11 changes: 6 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ jobs:
build:
name: Build, test, and audit
runs-on: ubuntu-latest
timeout-minutes: 120
timeout-minutes: 240

steps:
- name: Check out source
Expand Down Expand Up @@ -138,7 +138,8 @@ jobs:

- name: Build the isolated packaged-server probe
run: >-
./gradlew preparePolicyQualification prepareDiamondQualification prepareMineQualification --init-script tools/qualification/probes.init.gradle
./gradlew preparePolicyQualification prepareCoalQualification prepareDiamondQualification
prepareGoldQualification prepareMineQualification --init-script tools/qualification/probes.init.gradle
--offline --no-daemon --max-workers=2
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64"
-Dorg.gradle.java.installations.auto-detect=false
Expand All @@ -156,9 +157,9 @@ jobs:
if-no-files-found: error
retention-days: 30
path: |
build/libs/RealisticDeposits-0.3.0.110021.jar
build/libs/RealisticDeposits-0.3.0.110021-sources.jar
build/libs/RealisticDeposits-0.3.0.110021-javadoc.jar
build/libs/RealisticDeposits-0.4.0.110021.jar
build/libs/RealisticDeposits-0.4.0.110021-sources.jar
build/libs/RealisticDeposits-0.4.0.110021-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.md

Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## 0.4.0.110021

Beta for Minecraft 1.10.2.

- Add steep gold veins with branches, pinching sections and richer ore shoots.
Keep 15% ordinary background gold and leave existing iron, coal and diamond
layouts unchanged.
- Use suitable existing rocks when Mineralogy strata are active, or natural
vanilla stone otherwise. Add no quartz carrier rock or terrain replacement.
- Add linked river pockets of gold-bearing gravel. Mining leaves spent gravel
and has a one-in-four nugget chance, with Fortune increasing successful drops.
Silk Touch and falling preserve the rich block.
- Attempt safe gradual workings at goldfields. Leave river placers untouched
and preserve previously saved mine plans.
- Keep gold settings in their own catalogue. Existing world profiles and
terrain do not gain gold rules or lose background gold automatically.
- Add gold previews and separate packaged-server and manual-testing profiles.
- Require OreSpawn 4.1.5.110021 so Mesa's extra gold follows the same background
controls as ordinary gold, without changing saved settings or existing chunks.

## 0.3.0.110021

Beta for Minecraft 1.10.2.
Expand Down
34 changes: 22 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
![Realistic Deposits logo](src/main/resources/assets/realisticdeposits/textures/logo.png)

Realistic Deposits makes finding ore a reason to explore, then build a proper
mine. Rare iron districts, layered coalfields and diamond pipes give you
deposits worth returning to, with old workings leading into some of them.
Small pockets of diamond-bearing river gravel offer another way to prospect.
mine. Rare iron districts, layered coalfields, diamond pipes and gold veins
give you deposits worth returning to, with old workings leading into some of them.
Small pockets of diamond- and gold-bearing river gravel offer another way to prospect.
It runs on [MMD OreSpawn](https://github.com/MinecraftModDevelopmentMods/OreSpawn).

The project starts with Minecraft 1.10.2 and is intended to follow the
maintained OreSpawn branches across Forge and NeoForge.

Version 0.3.0.110021 is a beta for Minecraft 1.10.2. It adds diamond deposits
and replaces deep ladder shafts in new workings with stepped entrances.
Version 0.4.0.110021 is a beta for Minecraft 1.10.2. It adds gold
veins and linked river placers to the existing deposits and stepped workings.
Existing worlds keep their settings and saved mine layouts. Back up important
worlds before updating.

Expand All @@ -37,15 +37,17 @@ worlds before updating.
ordinary ore generation.
- Rare diamond pipes and linked river placers, without adding new host rocks
or reshaping rivers. See [diamond deposits](docs/DIAMONDS.md).
- Steep gold veins with rich shoots, lean stretches and linked river gravel.
See [gold deposits](docs/GOLD.md).
- Configurable support for vanilla and modded resources.
- Safe generation that avoids air, fluids, bedrock, block entities, structures,
and undeclared host blocks.
- Live reload for iron and coal geometry. Diamond geometry and other structural
- Live reload for iron and coal geometry. Gold, diamond and other structural
changes wait until restart.
- An entry in both Forge's Mods configuration and OreSpawn's World Settings.
- Abandoned workings with sloping, stepped entrances and short underground galleries.
New defaults attempt them at every iron formation, coalfield and diamond
pipe where safe. River placers stay untouched. See the [mine settings](docs/ABANDONED_MINES.md).
New defaults attempt them at every iron formation, coalfield, diamond pipe
and goldfield where safe. River placers stay untouched. See the [mine settings](docs/ABANDONED_MINES.md).

Coalfields can already use Mineralogy's existing shale, siltstone and
conglomerate. Wider catalogues for Mineralogy, Base Metals, Modern Metals,
Expand All @@ -57,7 +59,7 @@ The current branch requires:

- Minecraft 1.10.2;
- Forge 12.18.3.2511 or a compatible newer Forge 12 build;
- [MMD OreSpawn 4.1.4.110021](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9356289)
- [MMD OreSpawn 4.1.5.110021](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9397156)
or a newer compatible 1.10.2 release, but earlier than OreSpawn 5;
- Java 8 to run Minecraft.

Expand All @@ -73,6 +75,7 @@ The first launch creates:
config/realisticdeposits/deposits/vanilla.json
config/realisticdeposits/deposits/coal.json
config/realisticdeposits/deposits/diamonds.json
config/realisticdeposits/deposits/gold.json
```

The supplied definition describes one rare iron district using a 640–960 block
Expand All @@ -91,6 +94,13 @@ use plain stone without physical strata, or suitable existing sedimentary
rocks when those strata are active. Old catalogues are never overwritten, and
old worlds do not receive new coal rules automatically.

Goldfields add narrow, steep veins with richer pockets rather than walls of
solid ore. Nearby river sediments can contain gold-bearing gravel: mining it
leaves spent gravel and has a one-in-four chance of a gold nugget. Fortune
increases successful drops. The gold catalogue keeps 15% ordinary background
gold; the larger deposits are deliberately unevenly distributed. Their total
reward is not forced to match vanilla.

Deposits only affect newly generated chunks. Changing these settings does not
retrogen, replace, or rewrite an existing chunk.

Expand Down Expand Up @@ -136,7 +146,7 @@ formations:

`reload` requires operator permission. For iron and coal it applies `enabled`,
selection, shape, height, geome, family, and alignment changes. Diamond geometry
and source links require a restart. Resource,
and source links require a restart, as do gold settings. Resource,
dimension, host, biome-filter, interaction-policy, scale, added, and removed
definition changes are structural and take effect after restart. Abandoned-mine
settings are also captured with the world's deposit definition. New provider
Expand All @@ -151,9 +161,9 @@ World Settings screen.
The Gradle build runs on Java 17 and compiles the mod for Java 8 using the
configured toolchain. ForgeGradle's Minecraft preparation utility uses Java 25.

OreSpawn 4.1.4.110021 is downloaded from Curse Maven, checked against its
OreSpawn 4.1.5.110021 is downloaded from Curse Maven, checked against its
official checksum and mapped for development automatically. The exact dependency
is `curse.maven:mmd-orespawn-245586:9356289`. No sibling checkout, local jar or
is `curse.maven:mmd-orespawn-245586:9397156`. No sibling checkout, local jar or
`local.properties` file is needed.

An optional local-candidate override is still available for development, but it
Expand Down
9 changes: 5 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -450,11 +450,11 @@ tasks.register('verifyProjectIdentity') {
}
if (project.minecraft_version != '1.10.2'
|| project.forge_version != '12.18.3.2511'
|| project.orespawn_version != '4.1.4.110021'
|| project.orespawn_version_range != '[4.1.4.110021,5.0.0)'
|| (!oreSpawnCandidateMode && oreSpawnCoordinate != 'curse.maven:mmd-orespawn-245586:9356289')
|| project.orespawn_version != '4.1.5.110021'
|| project.orespawn_version_range != '[4.1.5.110021,5.0.0)'
|| (!oreSpawnCandidateMode && oreSpawnCoordinate != 'curse.maven:mmd-orespawn-245586:9397156')
|| project.orespawn_sha256
!= 'DB254E9E865685A74262DE9D469A006AB3C8053573CC6136FD4A8591AD806CA3') {
!= '1E580EBB8D93B1256E2E81C7D0D815DEAAAC58A028CB5A77A52773B62048E010') {
throw new GradleException('Unexpected target or OreSpawn dependency identity')
}
if (project.mod_version.toString().contains('-')) {
Expand Down Expand Up @@ -648,3 +648,4 @@ tasks.named('check') {
apply from: 'gradle/release.gradle'
apply from: 'gradle/coal-manual.gradle'
apply from: 'gradle/diamond-manual.gradle'
apply from: 'gradle/gold-manual.gradle'
108 changes: 108 additions & 0 deletions docs/GOLD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Goldfields and river gold

A goldfield is worth exploring, but its gold is not spread evenly. Narrow,
steep veins branch and pinch out, with rich shoots separated by lean stretches.
Following one promising vein can lead to another pocket rather than a solid
wall of gold. Where it is safe, abandoned workings provide a gradual entrance
and a short route into the principal vein.

The idea comes from gold deposited by fluids moving through fractures, followed
by weathering and concentration in rivers. This is one family of gold deposits,
not a model of every way gold occurs in nature. The
[Geological Survey of South Australia](https://energymining.sa.gov.au/industry/minerals-and-mining/mineral-commodities/gold)
describes both lode and alluvial deposits.

## With Mineralogy

Goldfields favour mountain belts and selected older crustal or volcanic
districts. They use suitable declared natural rocks, including slate, phyllite,
schist, amphibolite and selected granitic or metasedimentary hosts. The veins
cut across the rocks already there; they do not create surrounding strata.

Mineralogy does not yet have vein quartz. This update therefore represents the
gold-bearing parts of a fracture system, without a visible quartz filling.
Quartzite is not used as a substitute for vein quartz. A modern surface biome
also need not resemble the setting in which the deposit originally formed.

## Without Mineralogy

The same vein planner works in natural vanilla stone, granite, diorite and
andesite. Polished variants are excluded. OreSpawn still supplies geological
classification without replacing terrain. If a legacy geology profile lacks
that classification, a rarer, seed-based approximation is used instead. It
does not change the world's geology settings.

## River placers

Some rivers near a planned goldfield contain patches of gold-bearing gravel.
Only suitable natural submerged sediment is replaced. Rivers are not reshaped,
and the source link is a regional approximation, not a simulation of drainage
and erosion. Mining the source first does not change the placer.

Mine rich gravel with a shovel. Each block leaves one ordinary gravel and has
a one-in-four chance of one vanilla gold nugget. Fortune multiplies a successful
drop; Silk Touch returns the rich block instead. Falling also preserves its
identity. The ordinary gravel left behind is spent: placing it again cannot
produce more gold. There are no panning or processing recipes for rich gravel.

Both the gravel background and the small gold flecks use vanilla textures, so
resource packs can replace them. River placers do not receive mine entrances.

Before Fortune, 36 rich gravel blocks give one ingot's worth of nuggets on
average. Individual drops vary, and a small pocket may give no gold at all.

## How much gold to expect

Gold is deliberately concentrated rather than evenly available. In the
six-seed standalone survey, the default settings gave an estimated 2.41
ingots per chunk overall, against 10.91 in the vanilla controls: about 22% of
vanilla's generated supply. The two holdout seeds gave a similar result. The
defaults were not changed to meet a vanilla-equivalent target.

The 179 productive fields in that survey averaged about 27,000 ore blocks
each, ranging from roughly 7,400 to 57,700. Those are terrain-based reserve
estimates before collisions with other ores, structures or workings. They
are not a promise that every field can be mined completely.

From fixed prospecting points, the median horizontal distance to a productive
district was about 1.1–1.5 km across the six seeds. The 90th-percentile distance
was about 2.2–3.1 km. Walking routes and finding a safe entrance can take longer.

Background generation supplied about 68% of the estimated total, lodes 32%
and placers less than 1%. Placers are a little extra while exploring rivers,
not the main source of gold. Fortune helps nugget drops; vanilla 1.10 gold
ore still smelts to one ingot regardless of Fortune.

These figures come from a limited, fixed sample: four survey seeds and two
holdouts, with 1,024 sampled chunks per seed for decorated river sediments.
The bulk comparison leaves vanilla structures off; the manual mine and river
locations were checked separately with normal structures enabled.
The whole-seed bootstrap range was about 21–23% of vanilla, but it is not a
guarantee for other seeds. River sampling is particularly sparse. Mineralogy
and third-party ore processing can change the experience; they are not part
of these standalone reward estimates. Mob drops, chest loot and trading are
not included either.

## Settings and existing worlds

The first launch installs `config/realisticdeposits/deposits/gold.json` only if
it is absent. Defaults use 64-chunk regions with 50% candidate selection before
geological filtering, two to four veins, 256–512 block strike lengths, widths
of one to three blocks and dips of 55–85 degrees. Gold stays within Y 8–128
and beneath the local surface. River pockets are one to three blocks thick
and must be within 1,024 blocks of a planned source district.

The lode rule retains 15% ordinary background gold, including the managed Mesa
supply. The placer does not reduce it again. Explicit OreSpawn overrides and
custom placement channels retain their existing meaning. Turning off the
effective lode rule also turns off its linked placers; placers can be disabled
independently.

Gold geometry and source links are captured with the world and require a
restart after structural changes. Installing this version does not silently
add gold rules to an existing world, reduce its gold supply or regenerate old
chunks. Existing catalogues and saved mine layouts are preserved.

Use `/realisticdeposits preview <regionX> <regionZ> realisticdeposits:overworld_gold_lodes`
for a read-only preview. The separate [gold walkthrough](../tools/qualification/GOLD_TESTING.md)
uses disposable saves for manual testing.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Releasing Realistic Deposits

Coalfields use published OreSpawn 4.1.4.110021, pinned by file and checksum.
This candidate uses published OreSpawn 4.1.5.110021, pinned by file and checksum.
The publication guard still rejects local OreSpawn candidates; a release must
use the public dependency, not an experimental jar.

The **Release Realistic Deposits** action runs from the repository's default
branch. Enter the full numeric version, such as `0.3.0.110021`; the final
branch. Enter the full numeric version, such as `0.4.0.110021`; the final
component identifies the Minecraft version and loader. CurseForge's alpha,
beta or release label is separate from the numeric version.

Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ gradle_java_version=17
mod_id=realisticdeposits
mod_name=Realistic Deposits
mod_license=LGPL-2.1
mod_version=0.3.0.110021
mod_version=0.4.0.110021
mod_group=zone.moddev.mc.realisticdeposits
mod_authors=SkyBlade1978, the MMD Team
mod_description=Rare, massive, and geologically aware ore deposits powered by MMD OreSpawn.

orespawn_version=4.1.4.110021
orespawn_version_range=[4.1.4.110021,5.0.0)
orespawn_version=4.1.5.110021
orespawn_version_range=[4.1.5.110021,5.0.0)
orespawn_curse_project_id=245586
orespawn_curse_file_id=9356289
orespawn_sha256=DB254E9E865685A74262DE9D469A006AB3C8053573CC6136FD4A8591AD806CA3
orespawn_curse_file_id=9397156
orespawn_sha256=1E580EBB8D93B1256E2E81C7D0D815DEAAAC58A028CB5A77A52773B62048E010

curseforge_project_slug=realisticdeposits

Expand Down
42 changes: 42 additions & 0 deletions gradle/gold-manual.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Gold testing has its own settings and saves, away from ordinary development.
tasks.named('isolateEclipseProductionRuns') {
doLast {
[['runClient.launch', 'runGoldDepositsClient.launch'],
['runServer.launch', 'runGoldDepositsServer.launch']].each { pair ->
String contents = file(pair[0]).getText('UTF-8')
contents = contents.replaceAll(
/(<stringAttribute key="org\.eclipse\.jdt\.launching\.WORKING_DIRECTORY" value=")[^"]*("\/>)/,
'$1' + file('run-gold-deposits').absolutePath.replace('\\', '\\\\') + '$2')
file(pair[1]).setText(contents.replace('\r\n', '\n'), 'UTF-8')
}
}
}

tasks.named('verifyEclipseProductionClasspath') {
doLast {
['runGoldDepositsClient.launch', 'runGoldDepositsServer.launch'].each { name ->
String contents = file(name).getText('UTF-8').replace('\\', '/')
if (!contents.contains('run-gold-deposits') || !contents.contains('ATTR_EXCLUDE_TEST_CODE')) {
throw new GradleException("Gold launch is not isolated: ${name}")
}
}
}
}

tasks.register('prepareGoldDepositsManual') {
group = 'verification'
description = 'Prepares separate gold-testing settings and Eclipse launches.'
dependsOn tasks.named('verifyEclipseProductionClasspath')
doLast {
['vanilla', 'coal', 'diamonds', 'gold'].each { name ->
File target = file("run-gold-deposits/config/realisticdeposits/deposits/${name}.json")
if (!target.isFile()) {
target.parentFile.mkdirs()
target.setText(file("src/main/resources/assets/realisticdeposits/defaults/${name}.json")
.getText('UTF-8').replace('\r\n', '\n'), 'UTF-8')
}
}
logger.lifecycle('Use runGoldDepositsClient.launch and tools/qualification/GOLD_TESTING.md.')
logger.lifecycle('Existing settings and saves were left alone. Create a fresh test world.')
}
}
4 changes: 2 additions & 2 deletions gradle/release.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ tasks.register('verifyPublicationAllowed') {
group = 'verification'
doLast {
if (project.oreSpawnCandidateMode) {
throw new GradleException('Local OreSpawn candidates cannot be published. Pin a separately released exact-host API first.')
throw new GradleException('Local OreSpawn candidates cannot be published. Pin a public OreSpawn release first.')
}
}
}
Expand Down Expand Up @@ -81,7 +81,7 @@ tasks.register('verifyJavadocOrdering') {
tasks.register('verifyReleaseConfiguration') {
group = 'verification'
doLast {
if (project.mod_version != '0.3.0.110021'
if (project.mod_version != '0.4.0.110021'
|| project.curseforge_project_id != '1689703'
|| project.mod_artifact != 'RealisticDeposits'
|| project.java_version != '8' || project.gradle_java_version != '17'
Expand Down
Loading
Loading