Compatibility
Minecraft: Java Edition
1.21.11
Platforms
Supported environments
Server-side
Singleplayer
Links
Tags
Creators
Details
Licensed CC0-1.0
Published last month
Updated last month
Ancient City Underground ποΈ
Let Ancient Cities Fill the Underground
Introduction
Ancient City Underground is a Fabric mod that completely reworks Ancient City generation:
- All Biomes β Ancient Cities are no longer restricted to the Deep Dark. They generate in all Overworld biomes underground.
- High Density β Generation spacing of 10 chunks. With a 128-block city radius, every chunk is covered by city structures.
- Moderate Overlap β Cities overlap just enough for full coverage without excessive clustering.
- Safe Spawning β On first join, players spawn at a random safe spot inside the nearest city β a walkway, courtyard, or other open area.
- Bedrock Roof β A bedrock layer at Y=60 seals the underground world. No blocks or mobs generate above it.
- Fully Compatible β Does not affect End Portals, Strongholds, or any other vanilla structures.
Features
| Feature | Description |
|---|---|
| πΊοΈ All Biomes | Generate under plains, deserts, forests, oceans, mountains β every Overworld biome |
| π Optimized Density | spacing=10, separation=2, ~160 block average spacing, 128-block coverage radius |
| π² Random Spawn | Each new world spawns you at a different spot β courtyard, walkway, or city gate |
| π‘οΈ Safety Check | Automatically verifies ground is solid, body and head are in open air |
| π§± Bedrock Roof | Bedrock layer at Y=60 with no blocks or mobs above β a sealed underground world |
| β‘ Lightweight | Pure datapack overrides + Mixin, no vanilla structure definitions modified |
Versions
Two versions are available:
| Version | Features | JAR |
|---|---|---|
| Full | Ancient cities + spawn + bedrock roof Y=60 + no mobs | ancient-city-underground-full-1.0.0.jar |
| Classic | Ancient cities + spawn only | ancient-city-underground-classic-1.0.0.jar |
Requirements
- Minecraft: 1.21.11
- Loader: Fabric Loader β₯ 0.19.3
- Dependency: Fabric API β₯ 0.141.4+1.21.11
- Java: β₯ 21
This is a SERVER-SIDE mod. It works on dedicated servers, and clients do not need to install it. For single-player, it works as normal.
Installation
- Install Fabric Loader
- Download Fabric API
- Download the mod JAR
- Place the JAR into
.minecraft/mods/ - Launch the game and create a new world
Technical Details
How it works
| Mechanism | Method |
|---|---|
| All-biome generation | Datapack override: has_structure/ancient_city.json β #minecraft:is_overworld |
| Generation density | Datapack override: structure_set/ancient_city.json β spacing=10, separation=2 |
| Player spawn | Mixin into PlayerList#placeNewPlayer β finds nearest city, picks random safe position |
| Bedrock roof | Mixin into LevelChunk constructor β clears blocks above Y=60, places bedrock at Y=60 |
| Mob restriction | Mixin into NaturalSpawner β cancels spawns above Y=60 |
Structure Set Parameters
{
"placement": {
"type": "minecraft:random_spread",
"spacing": 10,
"separation": 2,
"salt": 191119
}
}
| Parameter | Value | Description |
|---|---|---|
spacing |
10 | Grid size in chunks. One city per 10Γ10 chunk cell |
separation |
2 | Minimum distance from cell boundary |
| Min center distance | 64 blocks | Closest two cities can be |
| Max center distance | 256 blocks | Farthest two cities can be (edges just touch) |
| Coverage radius | 128 blocks | Vanilla max_distance_from_center, unchanged |
Screenshots

Compatibility
- β Ancient Cities in all Overworld biomes
- β No vanilla structure definitions modified
- β End Portals unaffected
- β Strongholds unaffected
- β Other structures unaffected
- βΉοΈ Only affects newly generated chunks (requires new world)
License
This project is available under the CC0 1.0 Universal license. Feel free to use, modify, and share.
Made with β€οΈ by xiaomaiya


