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

6.1 KiB
Raw Blame History

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 temperatezoneName() 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! 🌍⛏️