Ores come back. Worlds stay alive.
A clean, server-friendly ore regeneration mod for NeoForge 1.21.1
What is Ore Resurgence?
Tired of traveling 10,000 blocks for diamonds because your spawn chunks are mined out?
Ore Resurgence quietly brings naturally generated ores back to life in chunks players have actually explored — after a configurable amount of real-world time. By default, 14 days after a chunk is first discovered, its ores can regenerate exactly where they would have naturally spawned.
No magic blocks. No player bases turning into diamond houses. Just natural-looking veins, at the right heights, in the right stone.
It was built for real servers: large worlds, modpacks, restarts, offline periods, and hundreds of thousands of chunks.
Server-side only — players don't need to install anything.
✨ Why You'll Love It
For Players:
- Explore without guilt — the world recovers.
- No need to constantly reset the world or create a mining dimension.
- Feels 100% vanilla. Ores return in natural clusters, not checkerboard patterns.
For Server Owners & Modpack Makers:
- Keeps long-term worlds playable.
- Zero hard dependencies. Works with vanilla, modded ores, and modded dimensions.
- Safe for existing worlds. Install it today, it just starts tracking from now.
- Designed to never destroy what players build.
🌍 How It Works
- You explore → a new chunk generates.
- The mod notes the time: e.g.,
August 31, 10:00 PM. - After 14 real days (even if the server is offline for a week), that chunk becomes eligible again.
- The next time someone loads it, the mod gently restores the deficit — only what was actually mined — as natural veins.
It remembers everything through restarts and crashes, and it never force-loads chunks to do it. If no one visits a chunk, it just waits.
Your stone house will stay a stone house. The mod only replaces natural stone, deepslate, netherrack and other host rocks — never chests, furnaces, machines, or any block with an inventory.
⛏️ True Ore Support
This isn't just coal_ore and diamond_ore.
- Automatically finds ores via the standard
c:orestag. If a mod addsmythril_orecorrectly, it's supported instantly — no update needed. - Supports vanilla, deepslate variants, nether ores, ancient debris, and modded ores.
- No, it won't regenerate Heavy Cores, comparators, or other non-ores. Only real
*_oreblocks andancient_debris. - Each ore regenerates at its correct height and in its correct rock — diamonds stay deep, coal stays high, nether gold stays in the Nether.
And if you want control, you have it.
🎮 See It Happening — New Live UI
Want to watch the magic?
Use the new boss-bar overlay:
/oregenui on— Show live progress (per-player, no OP needed)/oregenui off— Hide it/oregen ui— OP toggle version
When active, a boss bar at the top of your screen shows:
Regenerating Overworld [12, -45] — Queue: 18 | Tracked: 4,821 | +14 ores
Perfect for testing or just satisfying curiosity. Toggle it on and off anytime.
⚙️ Made for Servers
- Performance first: Regeneration is batched — a few chunks per tick, never a TPS-killing spike. Large worlds with 100k+ tracked chunks are expected.
- Offline-aware: If your server is down for 10 days, timers don't reset. Overdue chunks catch up when you return.
- Unloaded-safe: No chunk is force-loaded just to regenerate it.
- Crash-safe: Every chunk's state is saved atomically. A crash mid-vein won't duplicate ores.
- Global disable: One config toggle pauses everything but keeps data intact.
🔧 Configuration
Everything lives in config/oreregen-server.toml (and world/serverconfig/). No restart needed for most changes — just /oregen reload.
Popular tweaks:
# How long before ores can return?
regeneration_interval_days = 14
# Need to test quickly? Use seconds instead of days
test_mode = false
test_interval_seconds = 60
# How aggressive should it be per tick?
max_chunks_per_tick = 5
# Which dimensions?
mode = "ALL" # or WHITELIST / BLACKLIST
blacklist = ["minecraft:the_end"]
# Existing worlds?
existing_chunk_policy = "REGISTER_ON_PLAYER_VISIT"
# Fine-tune each ore: 1.0 = full, 0.5 = half, 0.0 = off
rates = ["minecraft:diamond_ore=1.0", "minecraft:ancient_debris=0.5", "mythrilmod:mythril_ore=1.0"]
💬 Commands
All main commands need OP (level 2). The UI toggle is available to everyone via /oregenui.
| Command | What it does |
|---|---|
/oregen status |
Overall health: tracked, eligible, queued, supported ores, next regeneration |
/oregen scan |
Breakdown per dimension |
/oregen regenerate |
Force current chunk to regenerate now |
/oregen regenerate 5 |
Force a 11x11 area (great for testing) |
/oregen chunk status |
Details for the chunk you're standing in |
/oregen chunk force |
Force this one chunk overdue & queue it |
/oregen reload |
Reload config & re-scan ores |
/oregen reset |
Destructive — forgets all tracked chunks |
/oregenui on/off |
Toggle the live boss-bar UI |
Pro-tip for testing: Set test_mode = true and test_interval_seconds = 60, then /oregen regenerate 0 and watch the UI!
📦 Compatibility & Installation
Requires: Minecraft 1.21.1, NeoForge 21.1.235+, Java 21
Installation:
- Drop
oreresurgence-1.0.0.jarinto yourmodsfolder on the server only. - Start the server once to generate the config.
- That's it. It works with existing worlds.
Compatible with:
- Vanilla, NeoForge modpacks, world-gen mods, dimension mods (Twilight Forest, etc.), tech/magic mods, and performance mods.
- No mixins, no world-gen replacement. It runs after chunks exist, so it won't break terrain, structures, or biomes.
❓ FAQ
Will it eat my base? No. It only replaces natural host rocks and skips any block with an inventory, plus it avoids exposed/thin walls. Your stone house is safe.
Does it work if my server is offline for days? Yes. It uses real-world time, not in-game ticks. If a chunk was due on Sept 10 and you were offline until Sept 20, it will be queued as overdue the moment someone visits.
My modded ore isn't regenerating?
Make sure the mod adds it to the c:ores tag (most do) and that its block name ends in _ore. If needed, add it to the rates list and set it to 1.0, then /oregen reload.
I ran /oregen regenerate 100 and the server lagged!
Radius 100 = 40,401 chunks. That's huge on purpose — it will take many minutes and unloaded chunks will show as "Queued" until visited. Use 5 or 10 for testing.
Keep your world mining-friendly — forever.
Made for communities that want to explore without end.

