- 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
6.1 KiB
6.1 KiB
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
ConfigGatedFeaturesModifiermakes 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
/orescommand & 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 forcingcopper_oreeverywhere. /oresalways reported temperate —zoneName()was reading static fields instead of the config getters; it now reads the live thresholds.- Garbage
6a9prefix 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
countfrom 6 → 3 (combined with the vanilla leak fix, diamonds are now properly rare). - Server hung on startup — Removed the
SpawnRelocatorandOreAuditHandlerentirely. They forced synchronous chunk generation on the main server thread (a known cause of deadlocks and world corruption) and the audit handler shipped aSystem.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_extrato 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
EnchantabilityFixclass, and redundanttectonic/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
MultiNoiseBiomeSourceto intercept Deep Dark biome resolution safely (Mojmap, no refmap needed on production). - Custom
LatitudeZonePlacementplacement 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! 🌍⛏️✨