Files
custom_ore_gem/CHANGELOG_4.0.md
T
feldenr e179baaf25 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
2026-07-20 23:11:16 +02:00

86 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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!** 🌍⛏️✨