Modscraper Modscraper Minecraft
Create Ore Excavation Deposits logo

Create Ore Excavation Deposits

Mod

Multi-chunk ore deposits for Create Ore Excavation — richer the further you explore.

Type

Mod

Modrinth Downloads

24

Modrinth ID

XfN8l56o

Last Updated

May 28, 2026

Description

Create Ore Excavation Deposits

Multi-chunk ore deposits for Create Ore Excavation — distance-driven richness, Xaero map overlay, per-player reveal policies, full multi-dimension support.

Example

What you get

  • Multi-chunk deposits — irregular Perlin-shaped blobs of 2–40 chunks, all sharing one ore type.
  • Distance gradient — log-curve drives deposit size, richness, and which ores are eligible.
  • Per-chunk gradient — the core chunk is peak yield; outer chunks fade down to a configurable floor (default 30 %).
  • Biome-aware — You can configure spawn biomes (In default config: iron in mountains/taiga, gold in badlands/savanna, nether_quartz in nether biomes, etc.).
  • Multi-dimension — You can configure recipie's dimensions
  • Reveal policies — four modes per type: always / on_discovery (walk near) / on_proximity (visible while close) / on_prospect (Vein Finder reveals). Per-player tracking.
  • World-map overlay — coloured chunks on Xaero's World Map with diagonal stripes, alpha-fade as the vein depletes, and a hover tooltip showing remaining / initial units per chunk.
  • Reproducible patterns — per-dimension depositSeed override lets you copy a layout from one world to another via /coedeposits regenerate <seed>.
  • Per-type placement mode — managed (our blob algorithm) or coe (let vanilla COE place, we just track for the map).
  • Server-authoritative — all state in SavedData, full client-side sync.

Required

Recommended

  • Xaero's World Map — needed for the deposit overlay on the map. Soft dependency: if absent, generation works fine but you lose the visual.

The mod's mixin is gated client-only, so dedicated servers without Xaero won't crash.

Commands

All /coedeposits subcommands require permission level 2 (standard OP via /op <player>).

Command What it does /coedeposits tier Show distance + tier fraction at the player's position. /coedeposits list Top-10 nearest known deposits in the current dimension. /coedeposits here Info about the deposit owning the player's current chunk. /coedeposits scan Re-prospect around the player (no wipe). /coedeposits regenerate [seed] Wipe the current dimension + fresh prospect-scan. Optional seed override locks placement for reproducible patterns. /coedeposits seed Print effective deposit seed + whether it's an override or world seed. /coedeposits refill / refill all Restore the deposit at the current chunk / every deposit in the dimension. /coedeposits delete here / delete chunk Remove a whole deposit / single chunk from a deposit. /coedeposits place [<type> [<pos> [<amount> [<chunks>]]]] Admin-place a deposit. amount<0 → infinite vein, amount>0 → exact unit budget. /coedeposits replenish <rate> / replenish all <rate> Set the per-hour replenish rate for the deposit under the player, or for every deposit in the dimension. 0 disables.

Configuration

All three config files auto-create on first launch with sensible defaults. You don't need to touch them to play — they exist for tuning and per-server customization.

Deposit registry

config/coedeposits/deposits.json — top-level JSON map of deposit ids → type bodies. Edit + /reload to refresh in-game. Per-entry parse errors are logged but don't break the rest.

Real entry from the bundled defaults — iron ore in overworld mountains/taiga/hills:

{ "coedeposits:iron": { "vein_recipe": "coedeposits:iron_vein", "items": [{"item": "minecraft:raw_iron", "weight": 1, "min": 1, "max": 1}], "placement": "managed", "dimensions": "minecraft:overworld", "distance": {"min": 0, "max": 99999}, "size_chunks": {"min": 4, "max": 30}, "per_chunk_units": {"min": 20000, "max": 200000}, "weight": 150, "map_color": 12895428, "biome_filter": ["c:is_mountain", "minecraft:is_taiga", "minecraft:is_hill"] } }

A more advanced example — nether quartz, restricted to the nether dimension, hidden until found with a Vein Finder:

{ "coedeposits:nether_quartz": { "vein_recipe": "coedeposits:nether_quartz_vein", "dimensions": "minecraft:the_nether", "size_chunks": {"min": 4, "max": 25}, "per_chunk_units": {"min": 25000, "max": 220000}, "weight": 220, "map_color": 15790824, "biome_filter": ["minecraft:is_nether"], "reveal": "on_prospect" } }

Field reference:

Field Purpose vein_recipe COE VeinRecipe id applied to the chunk's OreData. placement managed (our blob algorithm) or coe (vanilla COE places, we track for the map). Default managed. dimensions Allow-list of dimension ids. "minecraft:overworld" or ["minecraft:the_nether", "minecraft:the_end"]. Empty = any enabled dimension. distance Block distance window from spawn (managed only). size_chunks Blob size range; tier-lerped between min and max. per_chunk_units Per-chunk unit budget. max optional — without it, budget grows as min × (1 + tier × unbounded_growth). weight Weight in the weighted pick among eligible managed types. map_color RGB int for the world-map overlay. biome_filter Any-of biome tag list. Empty = any biome. reveal always / on_discovery / on_proximity / on_prospect. Defaults to the global reveal_mode. vein_recipes Alternative to vein_recipe — pool of [{recipe, weight}, …] for per-chunk weighted picks across multiple ores. vein Inline VeinRecipe (display_name, amount_multiplier_min/max, icon). Synthesised by the bundled virtual datapack — no separate file needed. drilling Inline DrillingRecipe (outputs: [{item, chance, count}], ticks, stress). Synthesised alongside vein. fillers Optional [{weight}] — adds patchy empty "tailings" chunks. Default off. replenish_rate_per_hour Units restored per hour to drilled chunks while loaded. Capped at each chunk's original yield. Default 0 (off).

Server tuning

config/coedeposits-common.toml:

# Distance curve — log-scale: tier ≈ 0.5 at base_radius, ≈ 1.0 at max_radius base_radius = 1000.0 max_radius = 25000.0 # Per-chunk roll to become a deposit core core_spawn_probability = 0.02 # Per-chunk gradient floor — edges get this fraction of the core's peak edge_amount_mul = 0.3 # Pre-scan radius around spawn on server start (0 = disabled, max 16000) prospect_radius = 2000 # Open-ended growth when per_chunk_units.max is absent unbounded_growth = 50.0 # Default reveal policy (per-type override in deposits.json) reveal_mode = "ALWAYS" proximity_reveal_blocks = 256 discovery_radius_blocks = 24 # Dimensions where the mod is active enabled_dimensions = ["minecraft:overworld", "minecraft:the_nether", "minecraft:the_end"] # Max pending placements materialised on the main thread per tick from the # async prospect queue. Dry-run picking runs off-thread; this only throttles # the hand-off step. Raise to drain the queue faster after a large /regenerate; # lower if you see tick spikes on weak CPUs. prospect_chunks_per_tick = 256 # ── Logging toggles ───────────────────────────────────────────────────── log_placement = true # new deposit placed log_discovery = true # ON_DISCOVERY / ON_PROSPECT reveal triggered log_depletion = true # chunk fully extracted, OreData wiped log_replenish_actions = false # very noisy — per-(deposit, chunk) replenish lines log_scan_summary = true # one-line summary per prospect-scan job log_scan_rejections = false # per-chunk diagnostic for failed deposit-type matches log_lifecycle = true # picker install, types loaded, queue drain

Client UI

config/coedeposits-client.toml:

# Show the toggle widget on Xaero's world map. Disable if it overlaps # another mod's UI (e.g. Create: Steam 'n' Rails' Train Routes button). # The Options → Controls keybind still works either way. map_button_enabled = true map_button_x_offset = 21 map_button_y_offset = 5 map_button_anchor = "LEFT" # LEFT or RIGHT — which edge the widget anchors to # Client-cache sync packets log ("cache: +N → total M"). Noisy — off by default. log_client_sync = false

Full schema and design notes in the GitHub README.

Compatibility

  • Third-party COE veins coexist — recipes you don't declare in deposits.json spawn via vanilla COE behaviour when a placement: "coe" entry exists; otherwise they're suppressed in enabled dimensions.
  • JEI / Jade — drilling recipes appear in the Drilling category and in-world tooltips.
  • Create: Steam 'n' Rails — no conflict. Both mods place a map widget though; coedeposits-client.toml lets you move/disable ours.
  • c2me — works. The picker runs on the chunk's worker thread. (Avoid the Fabric+Connector port with Lootr — use native NeoForge c2me.)

Pattern sharing

Generation is deterministic on (depositSeed, chunkX, chunkZ) + biome + distance-from-spawn:

# In world A: /coedeposits seed → deposit seed: 4823651729 (world seed) | dim: minecraft:overworld # In world B with the same deposits.json: /coedeposits regenerate 4823651729 → regenerated: placed 47 new in 2000-block radius → deposit seed is now 4823651729

Same seed + same deposits.json + similar biome layout → same pattern. The seed is per-dimension and persisted in SavedData.

Links

For bug reports, feature requests, or PRs — please use GitHub Issues.

Compatibility

Mod Loaders

Neoforge

Game Versions

1.21.1

Screenshots

Similar Mods

External Resources