A seamless, grief-resistant solution for preventing players from entering The Nether, The End, and any further custom dimensions, with optional per-dimension conditions.
Allows you to disable dimensions by intercepting teleportation, seamlessly preventing players and entities from entering. Each dimension can be enabled or disabled independently, with optional conditions that override that status.
It's the official successor to the Disable Dimensions data pack/mod utilizing the full capabilities of Minecraft modding.
Perfect for modded multiplayer servers where you want to disable further dimensions to prevent players from progressing too fast.
TL;DR: A stable and lightweight way to stop unwanted dimension travel, made to just work.
When a dimension is disabled, the mod intercepts the teleportation event before it happens. The player or entity is never actually teleported to the disabled dimension, and players receive feedback that the dimension is blocked.
Determining if a dimension is disabled is done through the disabled flag in the config, as well as any optional conditions which can override that flag. The conditions are evaluated as the player/entity attempts to teleport.
To be grief-resistant and compatible, the mod also has a fallback mechanism which triggers after the player entered the dimension. Then, similar to the predecessor, it teleports the player back to the spawn point or entering location (only for The Nether).
After adding the mod to your world or server, you should be able to open the about panel, which is fully controllable with the mouse:
/ddr about
or
/disabledimensionsreimagined about

Translated text is available for supported languages. This is primarily intended for server admins, since the messages shown to players can be customized. The language files are bundled with the mod, so clients must also install it to see translated command text.
To add new translations, please refer to this README.
A config file is created at:
./config/disable-dimensions-reimagined.json
Default contents:
{
"dimensions": {
"minecraft:the_nether": {
"disabled": true,
"message": {
"text": "A sinister presence denies your passage...",
"color": "dark_red"
},
"conditions": []
},
"minecraft:the_end": {
"disabled": true,
"message": {
"text": "The End rejects your presence...",
"color": "light_purple"
},
"conditions": []
}
}
}
This makes The Nether and The End be disabled by default, with custom messages for each.
dimensions: Containing dimension identifiers as keys, and their configuration as values.After adding the dimension identifier in the format of namespace:id, the following fields are available:
disabled: Whether the dimension is disabled or not.message: The message shown to players when they attempt to enter the dimension.conditions: An array of conditions which can override the disabled flag.Here is an example for two custom dimensions:
The Aether
"aether:the_aether": {
"disabled": true,
"message": {
"text": "A radiant force from the heavens bars your ascent...",
"color": "aqua"
},
"conditions": []
}
ATM10 - The Other
"allthemodium:the_other": {
"disabled": true,
"message": {
"text": "A mysterious force from The Other prevents your entry...",
"color": "dark_purple"
},
"conditions": []
}
The message consists of the following fields:
text: The text shown to players when they attempt to enter the dimension.color: The color of the text shown to players when they attempt to enter the dimension. The color can be any valid Text Component color.Conditions can overwrite the current set status if they're true. With them you can partially enable/disable dimension travel after a specific time, for a specific gamemode and so on.
Each condition requires:
type: Determines what the value gets checked against.ADVANCEMENT: Checks the player's advancements. The value is the advancement ID.DAY: Checks the in-game day count. The value is the at least required day count.GAMEMODE: Checks the player's current gamemode. The value can be survival, creative, adventure, or spectator.GAMETIME: Checks how long the world has been running. The value is given in seconds, so use a formula like day_count * 24 * 60 * 60 for days. This time only advances while the world is running, so server downtime affects accuracy.ITEM: Checks the items inside the entity's inventory. The value is an item ID with an optional item component filter, for example minecraft:diamond[count=64].PLAYTIME: Checks the player's playtime. The value is given in seconds, so use a formula like hours * 60 * 60 for hours. This time only advances while the player is online, so offline time does not count.SCORE: Checks the entity's scoreboard scores. The value uses the format objective_name=score_value, for example nether_entries=5.TAG: Checks the entity's tags. You can give players custom tags, like enter_nether.TEAM: Checks the entity's team. The value is the team name, for example red_team.value: The specific value to check against. Its format depends on the selected type.disabled: The disabled value which overwrites the current status if the condition applies.If you have multiple conditions, the ordering matters. These get evaluated in order from top to bottom, and the first condition which applies will overwrite the current status.
Here are three examples of conditions:
Enable after three days
{
"type": "GAMETIME",
"value": "259200",
"disabled": false
}
Enable for creative mode
{
"type": "GAMEMODE",
"value": "creative",
"disabled": false
}
Disable after 7 in-game days
{
"type": "DAY",
"value": "7",
"disabled": true
}
The active configuration can be reviewed in-game with:
/ddr config
or
/disabledimensionsreimagined config

The screenshot shows the default config listed above.
After editing the config file, apply changes without restarting by running:
/ddr reload
or
/disabledimensionsreimagined reload
If the config is invalid, the command reports the error and keeps the previous valid config active.
Each configured dimension entry's base status can be toggled in-game with:
/ddr toggle <dimension_id>
or
/disabledimensionsreimagined toggle <dimension_id>
The mod primarily intercepts teleportation, but a few rare transitions require manual cleanup or may behave differently than expected:
spawnpoint command, or the world spawn is set inside a dimension that later gets disabled, the player will continue to respawn there until the respawn point is cleared or updated accordingly.I warmly welcome:
Please open issues or PRs on GitHub.
This project is licensed under the LGPLv3 License. See LICENSE for details.