feat(worldgen): v4.1 - latitude zones via density function + Lithosphere
- Replace custom LatitudeBiomeSource/BiomeBand system with LatitudeSignalDensityFunction + LatitudeZonePlacement (mixin-based) - Add mandatory Lithosphere (mr_lithosphere) dependency + mixin config - Override overworld/large_biomes noise_settings for ultra-wide terrain - Rename remove_vanilla_ores -> z_remove_vanilla_ores (load order) - Merge cold/hot/tempered biome tags into latitude_*_surface tags - Rework OresCommand, OreBiomeFinderItem, ModConfigs for new system - Remove obsolete latitude classes, tests & world preset overrides - Bump mod_version 3.2 -> 4.1
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# Custom Ore Gen — 4.0 Changelog
|
||||
|
||||
**Custom Ore Gen 4.0** is a full rewrite, rebuilt from the ground up for **NeoForge 1.21.1**. It drops KubeJS entirely, introduces a brand-new **latitude-based ore system**, ships custom **ultra-wide terrain** via the Lithosphere companion, and turns the **Deep Dark into a legendary northern feature**.
|
||||
|
||||
This is the biggest update in the mod's history. Existing worlds from 2.x are **not** compatible — create a new world.
|
||||
|
||||
---
|
||||
|
||||
## 🆕 New Features
|
||||
|
||||
* **Latitude-based ore generation** — Ores are now distributed by your **Z coordinate** instead of biome categories. The world is split into three bands:
|
||||
* ❄️ **Cold** (Z < −8000, north): Lapis, Deepslate Diamond
|
||||
* 🔥 **Hot** (Z > 8000, south): Pure Gold, Redstone, Copper
|
||||
* 🌳 **Temperate** (middle): Iron, Concentrated Coal
|
||||
* Works with **any biome mod** out of the box — no per-biome classification needed.
|
||||
* **Legendary Deep Dark** — The Deep Dark now only generates in cold northern latitudes, making it a true endgame destination rather than a random underground encounter. (Implemented via a safe, targeted mixin.)
|
||||
* **Custom ultra-wide terrain** — Ships a handcrafted world generation through the new **Lithosphere** companion mod (now a required dependency).
|
||||
* **Config-gated feature toggles** — A custom `ConfigGatedFeaturesModifier` makes the config feature toggles (`concentratedOres`, `impureOres`, `vanillaOreVariants`, etc.) actually gate world generation at runtime.
|
||||
* **Global Loot Modifier for drops** — Replaced fragile event-based drops with a proper data-driven loot modifier (also fixed a crash with the Create drill).
|
||||
* **Color-coded `/ores` command & Ore Biome Finder** — Output is now color-coded per zone (cold = aqua, hot = gold, temperate = green, shard ores = light purple) and clearly explains that the **Z coordinate** determines your zone.
|
||||
* **Configurable zone thresholds** — The cold/hot thresholds (default Z = ±8000) are now adjustable in `custom-ore-gen-common.toml`.
|
||||
* **Create & Mekanism compat** — Standalone-safe recipes for crushing, milling, mixing and enriching shard diamonds.
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Changes
|
||||
|
||||
* **Migrated from Forge 1.20.1 → NeoForge 1.21.1.**
|
||||
* **Removed KubeJS dependency entirely.** Vanilla ores are now removed via NeoForge **biome modifiers** (`z_remove_vanilla_ores.json`) — no startup scripts, nothing to run.
|
||||
* **New required dependency: Lithosphere 1.7+** — provides the custom terrain the mod is balanced for.
|
||||
* Tool & armor stats are now **linked to config** — durability, speed, damage and armor values can all be tuned.
|
||||
* Emeralds remain **biome-based** (mountain and rare-biome tags), since they're tied to terrain, not latitude.
|
||||
* Rebalanced ore drop counts and XP to align with vanilla 1.21.
|
||||
* Iron and Gold ores now **ignore Fortune** like vanilla.
|
||||
* Paxel now affects every block mineable by pickaxe/shovel/axe tags.
|
||||
* Rebalanced Diamond Shard tier as a clear bridge between iron and diamond.
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Bug Fixes
|
||||
|
||||
* **Vanilla diamond leaked everywhere** — All **4** vanilla diamond placed features are now removed (`ore_diamond`, `ore_diamond_buried`, `ore_diamond_large`, `ore_diamond_medium`). Previously only 2 were removed, so buried/medium diamonds spawned in every biome.
|
||||
* **Copper showed the wrong texture in deepslate** — Custom copper now uses the vanilla two-target approach (stone → `copper_ore`, deepslate → `deepslate_copper_ore`) instead of forcing `copper_ore` everywhere.
|
||||
* **`/ores` always reported temperate** — `zoneName()` was reading static fields instead of the config getters; it now reads the live thresholds.
|
||||
* **Garbage `6a9` prefix in ore listings** — Removed a broken color-code remnant that appeared in front of every ore name.
|
||||
* **Diamond rate was way too high in cold zones** — Reduced the custom Deepslate Diamond `count` from 6 → 3 (combined with the vanilla leak fix, diamonds are now properly rare).
|
||||
* **Server hung on startup** — Removed the `SpawnRelocator` and `OreAuditHandler` entirely. They forced synchronous chunk generation on the main server thread (a known cause of deadlocks and world corruption) and the audit handler shipped a `System.exit(0)` hard-kill. Both were dev-only diagnostics that never belonged in a release.
|
||||
* **Badlands gold leaked into non-hot zones** — Added `ore_gold_extra` to the vanilla removal list.
|
||||
* **Cross-climate tag leaks** — Removed copper/gold appearing in temperate spawns due to overlapping surface tags.
|
||||
* **Caves piercing the surface** — Reverted the stretched terrain that caused cave openings to break the surface.
|
||||
* **Create processing recipes** — Repaired and made them standalone-safe (no leftover references to removed ores).
|
||||
* Various startup crashes, build errors and config-load race conditions resolved.
|
||||
|
||||
---
|
||||
|
||||
## 🗑️ Removals
|
||||
|
||||
* **KubeJS** — no longer used or required.
|
||||
* Auto-generated `kubejs/startup_scripts/custom_ore_gen_remove_vanilla_ores.js` — replaced by biome modifiers.
|
||||
* Dead config categories, unused `EnchantabilityFix` class, and redundant `tectonic`/custom noise settings.
|
||||
* Legacy biome-tag surface files (`latitude_cold_surface`, `latitude_hot_surface`, `latitude_temperate_surface`, `cold_biomes`, `hot_biomes`, `tempered_biomes`, etc.) — superseded by the Z-based system.
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Technical / Internal
|
||||
|
||||
* Mixed-in `MultiNoiseBiomeSource` to intercept Deep Dark biome resolution safely (Mojmap, no refmap needed on production).
|
||||
* Custom `LatitudeZonePlacement` placement modifier filters ore placement by Z at the placed-feature level.
|
||||
* Comprehensive test suite added: `OresCommandTest`, `ModConfigsTest`, `ConfigurableOreDropsProcedureTest`, `OreDropMathTest`, plus an automated GameTest server for latitude validation.
|
||||
* Cleaned up block/item classes and migrated the entire test suite to NeoForge.
|
||||
|
||||
---
|
||||
|
||||
## 📦 Requirements
|
||||
|
||||
* Minecraft 1.21.1
|
||||
* NeoForge 21.1.x
|
||||
* **Lithosphere 1.7+** (required)
|
||||
* Biomes O' Plenty, Create, Mekanism (optional, recommended)
|
||||
|
||||
---
|
||||
|
||||
> ⚠️ **Create a NEW world after updating.** Chunks generated before 4.0 keep their old ore distribution.
|
||||
|
||||
**Happy mining!** 🌍⛏️✨
|
||||
Reference in New Issue
Block a user