Worldgen Router

Quick rating

Worldgen Router

No reviews yet

Partition dimensions into world sets and control what other mods may generate, spawn, or drop in each one - entirely from config, with no required content mods.

QoL & Tweaks
Mod Loaders
NeoForge
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

About

Project Details

Type
Mod
Latest Version
worldgenrouter-1.0.0.jar
Authors

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID

Resources

External Links

Source Issues Wiki Discord

About

Description

Worldgen Router lets modpack authors control what other mods may generate, spawn, or drop in each dimension — entirely from config files. No content mods required, no code, no per-mod compatibility patches.

What you can control

  • Biomes, structures, features and carvers — per dimension, at generation time
  • Natural spawning, including mobs placed during chunk generation
  • Loot, trades, crafting and player inventories, each switchable on its own
  • Whole mod namespaces or individual IDs, with a fixed precedence between them
  • Several isolated Overworld–Nether–End sets, with portals routed inside each one
  • Custom dimensions declared from config, with templates, fixed seeds and portal routing
  • Every allow/deny decision can be explained in-game, including the exact rule that won
  • Denied structure IDs fail /locate immediately, instead of scanning chunks for something that can never generate

Installing it changes nothing

The starter config ships default = "allow". Drop the jar in and your pack plays exactly as it did. Nothing is refused until you write a rule saying so.

Curating is one value away:

[world_sets.curated]
overworld = "minecraft:overworld"
nether    = "minecraft:the_nether"
end       = "minecraft:the_end"

default = "deny"
allow_namespaces = ["minecraft", "yourmod"]

That set now generates only content owned by the namespaces it allows. Dimensions no world set claims behave exactly like vanilla.

Blocking two mods in an otherwise open pack is one line:

deny_namespaces = ["somemod", "othermod"]

Requirements

Minecraft 1.21.1 and NeoForge 21.1.x only. The range is pinned deliberately: this mod hooks 1.21.1 worldgen internals directly and is not verified anywhere else.

Boots on Minecraft + NeoForge alone — no required dependencies. Allow-lists live in config, so adding or removing a mod from your pack never means rebuilding a jar.

Rules that say what you mean

Rules are per categorystructure, feature, carver, entity, biome, item — and per enforcement point. So "curate what generates here, but leave players' inventories alone" is a few lines, not a wish:

[world_sets.curated.rules.item]
apply_to = ["loot", "trade"]

The same axis is why you can curate the spawn cycle without taking the tools away:

[world_sets.curated.rules.entity]
apply_to = ["natural_spawn"]   # mobs stop spawning; /summon and spawn eggs still work

Precedence is fixed, total, and inspectable

deny_ids > allow_ids > deny_namespaces > allow_namespaces > default

Never guess which rule won:

/worldgenrouter explain structure somemod:some_structure
result    DENIED
matched   rules.structure.deny_namespaces
priority  3 of 5 - checked after deny_ids, allow_ids did not match

/worldgenrouter status prints the effective rules per category. /worldgenrouter reload re-reads them live — a bad edit keeps the previous rules rather than breaking your server.

Dimensions, datapacks and reusable profiles

  • Declare custom dimensions in config. Use an overworld, nether or end template, or supply your own generator JSON, with an optional fixed seed.
  • Route portals inside each world set. A set can have its own Overworld, Nether and End, and a portal lit in that Overworld arrives in that set's own Nether — never in the vanilla one.
  • Datapacks can ship a world set, so a pack brings its dimensions and the rules governing them. A datapack can also add denials to an existing set, but never loosen one: an installed pack cannot quietly undo a server owner's isolation.
  • Themes let several world sets share one rule set through extends.
  • Snapshots turn a 200-mod allow-list into a single line.

When it refuses to start

This mod fails loudly rather than silently doing nothing — an unknown key, a tag in a rule list, or a removed key stops the boot and names the file, the world set and the key. Silently ignoring a misspelled allow_namespace could leave a world set enforcing nothing, and you might not discover it until terrain had already generated.

Known limitations, stated up front

  • Global biome systems. Mods that place biomes through their own world-wide region system, rather than through the dimension's own biome source, are not fully contained by a curated set — foreign biomes can still appear there. The mod detects this at startup and warns instead of pretending otherwise, and where no verified adapter exists it refuses to boot rather than letting a global system through an isolation rule. Adapters are version-pinned, so an untested version of a system they hook also refuses to load rather than mis-generating your world. This applies only when a detected global biome system would bypass an isolation rule you actually enforced — an unsupported mod on its own never stops the game. Startup names exactly what it found; the pack-author guide lists which systems are covered and which are not.
  • Mobs already saved in a chunk stay. Spawn rules apply from the moment a mob would be created; there is no sweep that removes entities a world already holds. Inventories are swept.
  • Tags (#namespace:id) in rule lists are refused for now, instead of silently matching nothing.
  • /locate on a tag is not the same as /locate on an ID. A denied ID disappears from the search at once; a tag usually holds allowed members too, and vanilla keeps looking for those. That search can run a long time and looks like a freeze. Locate a plain ID before concluding a denial failed.
  • Worldgen is not retroactive. Rules apply to chunks generated after them; existing terrain keeps what it already has.

Documentation

The full setup walkthrough — every config file, category overrides, enforcement points, snapshots, declaring dimensions, both datapack formats, themes, the validation report, and the compatibility matrix — is in the pack-author guide.

Bug reports and pack-author questions: GitHub issues.

Screenshots

Gallery

  • 01-village-before-plains.jpg
    01-village-before-plains.jpg 01-village-before-plains.jpg
  • 02-village-after-desert.jpg
    02-village-after-desert.jpg 02-village-after-desert.jpg
  • 03-structure-denied-no-village.jpg
    03-structure-denied-no-village.jpg 03-structure-denied-no-village.jpg
  • 04-explain-denied.jpg
    04-explain-denied.jpg 04-explain-denied.jpg
  • 05-terrain-before-plains.jpg
    05-terrain-before-plains.jpg 05-terrain-before-plains.jpg
  • 06-terrain-after-desert.jpg
    06-terrain-after-desert.jpg 06-terrain-after-desert.jpg

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

<1,000
Downloads
Last Updated
Created
Last synced
When ModDex last fetched this project from CurseForge or Modrinth. Every project is re-checked on a schedule, and any project that ships a new file is synced automatically within hours of the release.
New file updates sync automatically
How syncing works