Dimensional Control
Dimensional Control is a lightweight Minecraft NeoForge mod for Minecraft 1.21.1 that allows you to control where resources can spawn based on dimension-based rules. This mod was derived from DimStructRestrict, a mod by Troy Cook (@cookta2012). This mod provides fine-grained control over world generation and spawning behavior โ especially useful for modpack developers and world designers.
๐ Features
- Prevent or allow the following resources from generating in specific dimensions:
- Structures
- Structure Pool Elements (structure pieces)
- Features (biome decorations)
- Entities (spawning mobs and friendly creatures)
- Loot (items filled in generated chests and item drops)
- Define whitelist or blacklist rules.
- Describe dimension and resource locations with regex to easily create overarching rules.
- JSON-based configuration.
- Provides registries.json to easily look up all possible resource locations that you can use to write your definitions.
- Provides expanded-definitions.json to verify your full definitions once the regex has been expanded.
- Logs rule enforcement with context for debugging.
๐ง Configuration
The config file is located at:
<minecraft_root>/config/dimensionalcontrol/definitions.json
If the file doesn't exist, it will be generated with example entries.
๐ Structure of dimstructrestrict.json
{
// Defines rules for allowing or denying structures.
"structures": [
{
// Dimension ResourceLocation (ID).
"dimension": "minecraft:overworld",
// Allowed structures, defined by ResourceLocation.
"whitelist": ["minecraft:village_plains"],
// Denied structures, cannot be present with whitelist!
//"blacklist": []
// Whether this rule is active.
"active": true
}
],
// Defines rules for allowing or denying structure pool elments.
"structurePoolElements": [
{
"dimension": "minecraft:overworld",
"blacklist": ["minecraft:village/common/well_bottom"],
"active": true
}
],
// Defines rules for allowing or denying features.
"features": [
{
"dimension": "minecraft:overworld",
"whitelist": ["minecraft:tree"],
"active": true
}
],
// Defines rules for allowing or denying entity spawns.
"entities": [
{
"dimension": "minecraft:the_end",
"blacklist": ["minecraft:enderman"],
"active": true
}
],
// Defines rules for allowing or denying loot.
"loot": [
{
"dimension": "minecraft:.+",
"whitelist": ["minecraft:diamond"],
"active": true
}
]
}
๐ง Rule Types
โ
whitelist
Only listed resources are allowed. Cannot be present if blacklist is already present!
โ blacklist
Listed resources will be prevented. Cannot be present if whitelist is already present!
๐ active (optional, default false)
Controls whether the rule is enforced. Useful for temporarily disabling rules without removing them.
๐งช Example Use Case
{
"structures": [
{
// This rule will only allow all village types (plains, desert, etc.) to generate in the overworld.
// Other structures in the overworld will not generate!
"dimension": "minecraft:overworld",
"whitelist": ["minecraft:village_.+"],
"active": true
},
{
// This rule will prevent the generation of bastion remnants in the nether.
"dimension": "minecraft:the_nether",
"blacklist": ["minecraft:bastion_remnant"],
"active": true
},
],
"structurePoolElements": [
{
// This rule will prevent wells being added to villages during overworld generation.
"dimension": "minecraft:overworld",
"blacklist": ["minecraft:village/common/well_bottom"],
"active": true
}
],
"features": [
{
// This rule will prevent all features except trees to be placed during overworld biome generation.
"dimension": "minecraft:overworld",
"whitelist": ["minecraft:tree"],
"active": true
}
],
"entities": [
{
// This rule will prevent enderman from spawning in the end dimension.
"dimension": "minecraft:the_end",
"blacklist": ["minecraft:enderman"],
"active": true
}
],
"loot": [
{
// This rule will only permit diamonds to be found in all loot pools of all minecraft dimensions.
// This includes mob and block drops as well as generated chests.
"dimension": "minecraft:.+",
"whitelist": ["minecraft:diamond"],
"active": true
}
]
}
๐งโ๐ป Developer Notes
Author: MattMckenzy, GitHub: @MattMckenzy
Original author: Troy Cook, GitHub: @cookta2012
๐ License
MIT License.
๐ฌ Feedback & Contributions
Feel free to open an issue or fork the project if you'd like to expand the system (e.g., game rule based control, datapack integration, or GUI support).