A hard-to-break, 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 all known dimension-entry methods and returning players immediately. Each dimension can be separately enabled or disabled, with optional conditions which override that status.
Perfect for vanilla and 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.
After adding the data pack/mod to your world or server, you should be able to open the about panel, which is fully controllable with the mouse:
/function disable_dimensions:about
!about_panel
Translated text is available for supported languages. This is mainly intended for server admins, since the configurable messages shown to players can be customized anyway.
To add new translations, please refer to this README.
Open the configuration panel by the following command:
/function disable_dimensions:config
!config_panel
From here, you can:
enabled / disabledA default World Spawn exists, but you should set it to your desired location once before production use by standing there and pressing
Replace.
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:
name: A unique name for the condition.type: Determines what the value gets checked against.
advancement: Against the advancements of the player. The value is the advancement ID.gamemode: Against the current gamemode. The value can be survival, creative, adventure, spectator.gametime: Against the time the game was run. This is given in ticks, so make sure to apply a formula like this for days day_count * 24 * 60 * 60 * 20. This time only advances while the world is running, so server downtime will affect accuracy.item: Against the items inside the player's inventory. It can be checked after the item id with an optional filter by item components, for example minecraft:diamonds[count=64].score: Against the scoreboard scores of the player. The value is given in the format objective_name=score_value, for example nether_entries=5.tag: Against the tags of the player. You can give players custom tags, like enter_nether.team: Against the team of the player. The value is the team name, for example red_team.value: The specific value which gets checked against. Is different based on the set type.disabled: The disabled value which overwrites the current status if the condition applies.If you have multiple conditions, only one of them needs to be true to overwrite the current status.
It's not adviced to have multiple conditions which can cancel each other out, like both applying for the current player but one enabling and the other one disabling travel. This will result in unexpectable behavior.
Here are three examples of conditions for minecraft:the_nether:
/function disable_dimensions:config/dimension/condition/add {id:"minecraft:the_nether",name:"1d Enable",type:"gametime",value:"1728000", disabled:"false"}
/function disable_dimensions:config/dimension/condition/add {id:"minecraft:the_nether",name:"Allow Creative",type:"gamemode",value:"creative", disabled:"false"}
/function disable_dimensions:config/dimension/condition/add {id:"minecraft:the_nether",name:"7d Disable",type:"gametime",value:"12096000", disabled:"true"}
To block a custom dimension, add a new entry via the config panel.
Each entry requires:
name: The display name of the entry. Used for display in the config panel and shouldn't be empty.id: The in-game dimension identifier, needs to match the one of the custom dimension.type: Determines how and where the player will be sent back.
nether_entered_pos: Sends the player to their last Nether entry position. Only valid for The Nether.respawn: Sends the player to their respawn point, or to the World Spawn if none is set. Used for The End and other custom dimensions.message_color: The color of the message shown to the player on return, use valid text component colors.message_text: The text of the message shown to the player on return.Here are two examples of adding a custom dimension:
/function disable_dimensions:config/dimension/add {name: "The Aether", id: "aether:the_aether", type: "respawn", message_color: "aqua", message_text:"A radiant force from the heavens bars your ascent..."}
/function disable_dimensions:config/dimension/add {name: "The Other", id: "allthemodium:the_other", type: "respawn", message_color: "dark_purple", message_text:"A mysterious force from The Other prevents your entry..."}
The config panel will only be usable when you're physically logged in to the server and have op.
To configure the data pack/mod, you can use the config commands used by the config panel directly inside the server terminal as follows:
function disable_dimensions:config/dimension/add {name: "", id: "", type: "", message_color: "", message_text:""}function disable_dimensions:config/dimension/enable {id: ""}function disable_dimensions:config/dimension/disable {id: ""}function disable_dimensions:config/dimension/message {id: "", message_color: "", message_text:""}function disable_dimensions:config/dimension/remove {id: ""}function disable_dimensions:config/dimension/resetfunction disable_dimensions:config/dimension/condition/add {id:"",name:"",type:"",value:"", disabled:"false"}function disable_dimensions:config/dimension/condition/enable {id:"", name:""}function disable_dimensions:config/dimension/condition/disable {id:"", name:""}function disable_dimensions:config/dimension/condition/edit {id:"", name:"", type:"", value:""}"function disable_dimensions:config/dimension/condition/remove {id:"", name:""}The
idwill be the dimension identifier from the game. For The Nether it's{id: "minecraft:the_nether"}and for The End it's{id: "minecraft:the_end"}.
This data pack/mod is intentionally event-driven, with a few rare transitions requiring manual cleanup or resulting in different from expected behavior:
spawnpoint command is set inside a dimension that later gets disabled, the player will continue to respawn there until the respawn point is cleared or reset.'Going Through' Nether Portal
!through_nether_portal
Throwing Ender Pearl at Nether Portal
!pearl_nether_portal
Teleporting to The Nether
!pearl_nether_portal
'Going Through' End Portal
!through_end_portal
Throwing Ender Pearl at End Portal
!pearl_end_portal
Teleporting to The End
!pearl_end_portal
I warmly welcome:
Please open issues or PRs on GitHub.
This project is licensed under the LGPLv3 License. See LICENSE for details.

A hard-to-break, grief-resistant solution for preventing players from entering The Nether, The End, and any further custom dimensions, with optional per-dimension conditions.