COWMODSКаталог модов

Multi Village Selector

A mod for allowing modpack creators to have as many village replacing mods as they like, setting biome, weights, and frequency of pool structures.

Автор: RhettL4,7 тыс.16обновлён 17 окт. 2026 г.
Генерация мира

Описание

Multi Village Selector (MVS)

Minecraft 1.21.1 | NeoForge & Fabric | MIT License

Multi Village Selector gives you control over village spawning in Minecraft. Instead of each village mod fighting for spawn slots, MVS intercepts village generation and selects from all your installed village mods using configurable weights.

The Problem MVS Solves

When you install multiple village mods (Cobblemon Additions, ChoiceTheorem's Overhauled Village, Towns & Towers, etc.), they compete for the same spawn locations. Some mods override others, some never spawn, and you have no control over the mix. MVS fixes this by:

  • Intercepting vanilla village spawns before any mod processes them
  • Selecting from all configured village structures using weighted random selection
  • Respecting biome rules so desert villages spawn in deserts, snowy villages in snow, etc.
  • Providing you control over village spawning and the mix/ratio of different village types

Download

Requirements:

  • Minecraft 1.21.1
  • NeoForge 21.1.80+ or Fabric Loader 0.16.0+ with Fabric API
  • Architectury API (required for both platforms)

Quick Start

  1. Install MVS and Architectury API in your mods/ folder
  2. Launch Minecraft and load a world
  3. Run /mvs generate in-game to scan your installed mods
  4. Review the generated config at local/mvs/multivillageselector.json5
  5. Move the config to config/multivillageselector.json5
  6. Restart Minecraft to apply changes

That's it! Villages from all your mods will now spawn with weighted representation -- but be sure to look over the weights, the generator makes some guesses and isn't perfect.

For detailed setup instructions, see the Getting Started Guide.

Configuration

MVS uses a JSON5 config file with four main sections:

{
  // Which structure sets MVS controls (usually just minecraft:villages)
  intercept_structure_sets: ["minecraft:villages"],

  // Your village structures with per-biome weights
  structure_pool: [
    { structure: "minecraft:village_plains", biomes: {"#minecraft:is_plains": 25} },
    { structure: "bca:village/default_mid", biomes: {"#bca:villages": 29} },  // Cobblemon Additions
    // ... more structures
  ],

  // Optional: Reduce spawn rate in specific biomes
  biome_frequency: {
    "#minecraft:is_ocean": 0.3,  // Only 30% of ocean spawn attempts proceed
  },

  // Optional: Control village density (vanilla defaults shown)
  placement: {
    "minecraft:villages": {
      spacing: 34,
      separation: 8,
    }
  }
}

See the Configuration Guide for complete documentation.

Commands

/mvs generate              # Scan mods and generate config
/mvs biome                 # Show current biome info
/mvs locate <structure>    # Find nearest structure with teleport links
/mvs structure biomes <id> # Show biome rules for a structure
/mvs structure pool        # List structures in MVS config pool
/mvs structure list        # Dump all game structures to file
/mvs structure nearby      # List structures near player
/mvs structure predict     # Predict what would spawn at current location
/mvs help                  # Show all commands

See the Commands Reference for full documentation.

Supported Mods

MVS works with mods that add new villages to structure sets:

  • Vanilla Minecraft - All 5 village types
  • Cobblemon Additions (BCA) - Cobblemon-themed villages
  • ChoiceTheorem's Overhauled Village (CTOV)
  • Towns & Towers
  • Terralith
  • And many more...

Some mods require disabling their own village spawning. See Mod Compatibility for setup instructions.

Tested Compatible Mods

These mods have been tested alongside MVS without issues:

  • C2ME - Concurrent chunk generation works fine with MVS
  • Explorer's Compass - Structure location still works
  • Nature's Compass - Biome location still works
  • Chunky - Pre-generation works correctly with MVS structures

What MVS Cannot Control

MVS intercepts structure selection, not jigsaw piece assembly. Mods that replace individual village pieces (buildings, paths) rather than adding whole village structures work differently:

  • Better Villages - Replaces vanilla village jigsaw pieces
  • Luki's Grand Capitals - Replaces/extends vanilla village pieces

These mods will still apply their changes to whatever village MVS selects, usually the vanilla villages. This is usually fine if you only use one - MVS picks which village type spawns, then the jigsaw replacer modifies its buildings. But MVS doesn't help you with fighting between those types of mods.

Documentation

GuideDescription
Getting StartedInstallation and first-time setup
ConfigurationComplete config reference
Mod CompatibilityPer-mod setup instructions
CommandsIn-game command reference
Spacing GuideControlling village density
TroubleshootingCommon issues and solutions
Project ScopeDesign philosophy and limitations

Known Issues

  • Large mod structures may fail biome validation - Structures with large starter pieces (BCA, Terralith) can fail vanilla's biome check. Use relaxed_biome_validation: true in config.
  • Terralith sky biomes - Terralith adds 3D biomes above ground level. Structures on tall terrain may sample a sky biome instead of the expected surface biome, causing biome validation failures.

See Troubleshooting for details and workarounds.

FAQ

Do I need village mods installed?

MVS works with vanilla, but you'll only see vanilla villages. Install village mods like Cobblemon Additions or Towns & Towers for variety.

Why aren't my villages spawning?

Check the Troubleshooting Guide. Common causes: mod conflicts, biome mismatches, or spacing settings.

Can MVS control other structures (temples, mansions)?

Currently, MVS focuses on villages. See Scope for design rationale. You can add any structure to MVS's pool, but it's designed for only one structure pool.

Fabric or NeoForge?

Both! MVS v0.3.0+ supports both platforms via Architectury.

Can I add this to my modpack?

Yes! Please file an issue if you have feature requests or find bugs. If it's outside the project scope, I'll likely say no.

Can you do this for all structures?

That's harder. Managing ALL structure pools this way is much more complex. I'm considering it, but honestly comprehensive datapacks are probably easier for that use case.

How do I make villages spawn more or less often?

Use the placement config section to adjust spacing and separation. See the Spacing Guide for details and recommendations.

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Submit a Pull Request

For bug reports and feature requests, use GitHub Issues.

Authors

Project Design: RhettL

Implementation: As a career application developer in other languages, I (RhettL) don't write Java as fluently as I can think in code. The code in this repo was written almost entirely with Claude Code (Claude Sonnet 4.5), an AI coding assistant by Anthropic. I provided design, direction, corrective reasoning, testing, project management, and much more.

License

MIT License - see LICENSE for details.

Acknowledgments

  • Village mod creators for their amazing structures
  • Cobblemon Additions creators for encouragement and allowing me to tell people about this mod on their Discord
  • Architectury for multi-loader support
  • json5-java for config parsing
  • NeoForge and Fabric teams
  • Claude Code (Sonnet 4.5) for doing most of the work coding this at RhettL's direction

Последние версии

Все версии →
beta

Multi Village Selector 0.4.3

0.4.3-fabric
17 окт. 2026 г.132Minecraft: 1.21.1fabric
Скачать
Что нового
## What's New ### Apply your generated config from chat `/mvs generate` now ends with an **[Apply changes now]** button, so you no longer have to find the file and copy it by hand. 1. `/mvs generate` writes the config to `local/mvs/multivillageselector.json5` and shows the button. 2. Clicking it runs `/mvs generate do-confirm`, which warns you to review the list first (it is a best guess and can be wrong) and offers **[Confirm, move now]**. 3. That runs `/mvs generate apply`, which moves the file into `config/`. If the generated file isn't there, it tells you. If your existing config is still the untouched default MVS created, it is simply replaced. If it has your own changes, it is saved first as `multivillageselector.json5.bak` (only the latest backup is kept). Restart Minecraft afterwards. Copying the file yourself still works. ### Under the hood - Mappings are now Mojang + Parchment. - Gradle build migrated to the Kotlin DSL; NeoForge entry point moved to its own package. - JaCoCo coverage report for the common module, with a regression floor enforced in `check`. - CI: Gradle wrapper validation, Gradle caching via `setup-gradle`, concurrency control, coverage report artifact. - Docs updated for the new flow. No config format changes. Drop-in upgrade from 0.4.2. **Full Changelog**: https://github.com/rhettl/multi-village-selector/compare/v0.4.2...v0.4.3
beta

Multi Village Selector 0.4.3

0.4.3-neoforge
17 окт. 2026 г.141Minecraft: 1.21.1neoforge
Скачать
Что нового
## What's New ### Apply your generated config from chat `/mvs generate` now ends with an **[Apply changes now]** button, so you no longer have to find the file and copy it by hand. 1. `/mvs generate` writes the config to `local/mvs/multivillageselector.json5` and shows the button. 2. Clicking it runs `/mvs generate do-confirm`, which warns you to review the list first (it is a best guess and can be wrong) and offers **[Confirm, move now]**. 3. That runs `/mvs generate apply`, which moves the file into `config/`. If the generated file isn't there, it tells you. If your existing config is still the untouched default MVS created, it is simply replaced. If it has your own changes, it is saved first as `multivillageselector.json5.bak` (only the latest backup is kept). Restart Minecraft afterwards. Copying the file yourself still works. ### Under the hood - Mappings are now Mojang + Parchment. - Gradle build migrated to the Kotlin DSL; NeoForge entry point moved to its own package. - JaCoCo coverage report for the common module, with a regression floor enforced in `check`. - CI: Gradle wrapper validation, Gradle caching via `setup-gradle`, concurrency control, coverage report artifact. - Docs updated for the new flow. No config format changes. Drop-in upgrade from 0.4.2. **Full Changelog**: https://github.com/rhettl/multi-village-selector/compare/v0.4.2...v0.4.3
beta

Multi Village Selector 0.4.2

0.4.2-fabric
10 мар. 2026 г.2,2 тыс.Minecraft: 1.21.1fabric
Скачать
Что нового
## What's Changed * Claude/explore yacl config h4p rp by @rhettl in https://github.com/rhettl/multi-village-selector/pull/2 * Revert "Claude/explore yacl config h4p rp" by @rhettl in https://github.com/rhettl/multi-village-selector/pull/3 **Full Changelog**: https://github.com/rhettl/multi-village-selector/compare/v0.4.1...v0.4.2
beta

Multi Village Selector 0.4.2

0.4.2-neoforge
10 мар. 2026 г.1 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## What's Changed * Claude/explore yacl config h4p rp by @rhettl in https://github.com/rhettl/multi-village-selector/pull/2 * Revert "Claude/explore yacl config h4p rp" by @rhettl in https://github.com/rhettl/multi-village-selector/pull/3 **Full Changelog**: https://github.com/rhettl/multi-village-selector/compare/v0.4.1...v0.4.2
beta

Multi Village Selector 0.4.1

0.4.1-fabric
11 дек. 2025 г.512Minecraft: 1.21.1fabric
Скачать
Что нового
Fixing Neoforge issue and found new bug with explorer's compass compatability.
beta

Multi Village Selector 0.4.1

0.4.1-neoforge
11 дек. 2025 г.296Minecraft: 1.21.1neoforge
Скачать
Что нового
Fixing Neoforge issue and found new bug with explorer's compass compatability.
beta

Multi Village Selector 0.4.0

0.4.0-fabric
9 дек. 2025 г.37Minecraft: 1.21.1fabric
Скачать
Что нового
## v0.4.0 Release Notes ### 🎮 Placement Control MVS now controls village spacing directly - no more datapacks needed! ```json5 placement: { "minecraft:villages": { spacing: 34, // Grid cell size in chunks separation: 8, // Buffer zone on edges spreadType: "triangular", // linear, triangular, gaussian, etc. } } ``` Use `/mvs info` to see current placement values and their sources. ### 🔍 Locate Command Find structures with `/mvs locate <structure>`: - Autocomplete for all pool structures - Click coordinates to teleport - Use `/mvs locate <structure> more` for multiple results ### 🐛 Bug Fixes - **Spawn chunk fix:** Villages now correctly spawn near world origin - **Biome sampling:** Fixed position mismatch causing wrong biome detection - **Large structures:** Added `relaxed_biome_validation: true` option for mods with large villages (BCA, CTOV large, etc.) ### ✨ Quality of Life - `/mvs help` - now paginated with clickable navigation - `/mvs config fill-placements` - auto-fill placement config with registry values - `/mvs structure nearby` - structure IDs are now click-to-copy - Config auto-migrates from v0.3.x (adds `placement{}` section) ### 🔧 Compatibility - Tested compatible with **C2ME** (concurrent chunk generation) - Tested compatible with **Explorer's Compass** (structure locations match `/mvs locate`) ### 📖 Documentation - New [Spread Types Guide](https://github.com/RhettL/multi-village-selector/blob/master/docs/SpreadTypes.md) with visual diagrams - Rewritten [Spacing Guide](https://github.com/RhettL/multi-village-selector/blob/master/docs/SpacingGuide.md) for v0.4.0 - Updated all docs for new placement config format
beta

Multi Village Selector 0.4.0

0.4.0-neoforge
9 дек. 2025 г.46Minecraft: 1.21.1neoforge
Скачать
Что нового
## v0.4.0 Release Notes ### 🎮 Placement Control MVS now controls village spacing directly - no more datapacks needed! ```json5 placement: { "minecraft:villages": { spacing: 34, // Grid cell size in chunks separation: 8, // Buffer zone on edges spreadType: "triangular", // linear, triangular, gaussian, etc. } } ``` Use `/mvs info` to see current placement values and their sources. ### 🔍 Locate Command Find structures with `/mvs locate <structure>`: - Autocomplete for all pool structures - Click coordinates to teleport - Use `/mvs locate <structure> more` for multiple results ### 🐛 Bug Fixes - **Spawn chunk fix:** Villages now correctly spawn near world origin - **Biome sampling:** Fixed position mismatch causing wrong biome detection - **Large structures:** Added `relaxed_biome_validation: true` option for mods with large villages (BCA, CTOV large, etc.) ### ✨ Quality of Life - `/mvs help` - now paginated with clickable navigation - `/mvs config fill-placements` - auto-fill placement config with registry values - `/mvs structure nearby` - structure IDs are now click-to-copy - Config auto-migrates from v0.3.x (adds `placement{}` section) ### 🔧 Compatibility - Tested compatible with **C2ME** (concurrent chunk generation) - Tested compatible with **Explorer's Compass** (structure locations match `/mvs locate`) ### 📖 Documentation - New [Spread Types Guide](https://github.com/RhettL/multi-village-selector/blob/master/docs/SpreadTypes.md) with visual diagrams - Rewritten [Spacing Guide](https://github.com/RhettL/multi-village-selector/blob/master/docs/SpacingGuide.md) for v0.4.0 - Updated all docs for new placement config format
beta

Multi Village Selector 0.3.2

0.3.2-fabric
1 дек. 2025 г.34Minecraft: 1.21.1fabric
Скачать
Что нового
## What's New ### New Command: `/mvs structure list [filter]` Dumps ALL structures in your game to a file - perfect for discovering what structures you have available. **Output:** `local/mvs/structure-list-<timestamp>.txt` **Filter examples:** - `/mvs structure list` - All structures - `/mvs structure list bca:*` - Only BCA structures - `/mvs structure list *village*` - Structures with "village" in name **Output format:** ``` === minecraft (23 structures) === [minecraft:villages] minecraft:village_plains Biomes: #minecraft:has_structure/village_plains weight: 1 (normalized: 25) ``` ### Breaking Change `/mvs structure list` → `/mvs structure pool` The old command that showed structures in your MVS config pool has been renamed to `/mvs structure pool` for clarity. --- **Full Changelog**: https://github.com/rhettl/multi-village-selector/compare/v0.3.1...v0.3.2
beta

Multi Village Selector 0.3.2

0.3.2-neoforge
1 дек. 2025 г.52Minecraft: 1.21.1neoforge
Скачать
Что нового
## What's New ### New Command: `/mvs structure list [filter]` Dumps ALL structures in your game to a file - perfect for discovering what structures you have available. **Output:** `local/mvs/structure-list-<timestamp>.txt` **Filter examples:** - `/mvs structure list` - All structures - `/mvs structure list bca:*` - Only BCA structures - `/mvs structure list *village*` - Structures with "village" in name **Output format:** ``` === minecraft (23 structures) === [minecraft:villages] minecraft:village_plains Biomes: #minecraft:has_structure/village_plains weight: 1 (normalized: 25) ``` ### Breaking Change `/mvs structure list` → `/mvs structure pool` The old command that showed structures in your MVS config pool has been renamed to `/mvs structure pool` for clarity. --- **Full Changelog**: https://github.com/rhettl/multi-village-selector/compare/v0.3.1...v0.3.2