How can I block people getting onto the roof of the Nether in Minecraft?
Andrew Henderson
I'm building a Minecraft "War" server where there are 2 teams. Each has a 750×750 area of the Nether to gain resources from. However, I don't want them getting onto the Nether roof and then breaking bedrock to gain access into the other team's side. I can use command blocks and commands.
82 Answers
My method uses scoreboards for detecting position. Since with scoreboards you can execute if a score is in a range.
Note: This will work in a infinite area, and may cause less lag then some other methods
Hovering your mouse over italicized words will give you a short explanation/tooltip
Important: You must be in a Minecraft version of at least 1.13 for this method to work
Preparation
In Minecraft, you need to create a scoreboard objective with a dummy critera. You can do that with the following command.
scoreboard objectives create ypos dummyAfter Preparation
Next, you need to have in a Repeating Command Block or a Ticking Function a command that gets the Pos[1] of all players/entities and stores it in our ypos scoreboard. The following command will accomplish that.
execute as @a at @s store result score @s ypos run data get entity @s Pos[1]If you want it to work for all entities, replace @a with @e. Next, you need a Repeating Command Block or a Ticking Function with a command testing for players that have a ypos score of 122 or more and teleport them to 121 or lower. The following command accomplishes that.
execute as @a[scores={ypos=122..}] at @s run tp ~ 121 ~Again, if you want this to work with entities, change the @a to @e
Summary
This method stores the ypos of every player/entity in a scoreboard, then checks to see if the ypos value is greater than or equal to 122 and if so, it will teleport them down.
1Note: The following method is for a finite area.
1.13+
Command (obviously adjust the coordinates for your needs):
/execute as @a[x=0,y=123,z=0,dx=750,dy=200,dz=750] at @s run tp @s ~ 121 ~x=0..y=..z=... - Corner 1dx=750..dy=..dz=... - Corner 2~ 121 ~- Location of player, but atY121
1.8 - 1.12
Command (obviously adjust the coordinates for your needs):
/execute @a[x=0,y=123,z=0,dx=750,dy=200,dz=750] tp @s ~ 121 ~x=0..y=..z=... - Corner 1dx=750..dy=..dz=... - Corner 2~ 121 ~- Location of player, but atY121
1.7-
The selector arguments dx, dy, and dz did not exist pre-1.8.