I want to spawn-proof the main island in the End by filling every block above (only above) each End Stone block (only if that block is air) with White Stained Glass in a specific area. I have OP and WorldEdit access, and am the server owner so I am able to add Bukkit plugins if need be. The world version I am running is a CraftBukkit 1.14.4 world.

Are there any commands available to do this, either vanilla commands or WorldEdit commands? Are there any other Bukkit plugins that will allow me to do this? Or will I have to place everything by hand?


There is no simple command to do this, at least in Vanilla. But you could use a ridiculously complicated system of commands to reach the same effect. And who doesn't like that?

First, spawn an armour stand at the lowest X and Z coordinate of your area, high in the air:

/summon armor_stand <x> 255 <z> {NoAI:1,NoGravity:1,Tags:["xMover"]}

Then run these two commands for at least as many times as the area is long in the X direction (more doesn't matter much, except for performance, so I recommend just leaving a repeating command chain on for a few seconds):

execute at @e[tag=xMover] run summon armor_stand ~ ~ ~ {NoAI:1,NoGravity:1,Tags:["zMover"]}
execute as @e[tag=xMover] at @s run tp @s ~1 ~ ~

This should give you a long line of hovering armour stands.

Now you let this line spawn lots of non-hovering armour stands. Those will fall down and land on the top block of the column they're in.

Warning: Water, lava, signs and other blocks that armour stands can fall through might mess with this. Also end crystals like placing fire below themselves in many situations, potentially overwriting your slabs.
And, of course, this creates a TON of lag. You should better stay in a position where you can turn the lever off again at any point and just look at the coordinates in chat (command output) to determine when to deactivate it, because even entering commands lags a lot if you full your entire End island this way.

execute at @e[tag=zMover] run summon armor_stand ~ ~ ~ {NoAI:1,Tags:["placeHere"]}
execute as @e[tag=zMover] at @s run tp @s ~ ~ ~1

Then you wait a bit until all armour stands have fallen and run these two commands (if you don't trust that all chunks are loaded, you can also run these together in a chain multiple times):

execute at @e[tag=placeHere] run setblock ~ ~ ~ stone_slab
kill @e[tag=placeHere]

And finally you can also kill the other armour stands:

/kill @e[tag=xMover]
/kill @e[tag=zMover]

Another warning: This only works for the top layer of each column. In spots where there is e.g. End stone above three blocks of air above more End stone, then it still leaves those spots uncovered. A ridiculous solution would be to run this entire system on every single Y layer.

Alternatively you could use spawning to your advantage. Simply use these three commands in a repeating and a chain command block:

execute at @e[type=enderman] run setblock ~ ~ ~ stone_slab
kill @e[type=enderman]
kill @e[type=item,nbt={Item:{id:"minecraft:ender_pearl"}}]

Then wait for an hour or so and most of the End should be slabbed, at least from 32 to 128 blocks around you. Move around occasionally if you also want the rest to get slabbed, but usually the End has a radius of 128 and no caves very close to the center, so if you just stand in the middle, it should leave out very few spots.

| improve this answer | |

It would be a lot easier to just reach the max spawn cap by building a enderman farm:

Nothing else should spawn since the mob cap has already been reached. You can also do this using the minecart method (sorry I couldn't find a link to it. Basically you put a mob in a minecart and stack them on top of one another right on the separation of a chunk, filling both chunk's mob caps). Here's a quick explanation of mob caps:

If you would still rather fill in all the blocks, I recommend using the /fill command, which I use all the time. https://www.dummies.com/programming/programming-games/minecraft/how-to-fill-areas-in-minecraft-with-the-fill-command/

| improve this answer | |
  • Thank you for this answer, however I was more wondering if there is a command to do exactly what I asked (I'm unsure as to whether the /fill command can do it, but am going to keep looking and testing). The main reason I want to have the farm near the end island (it will be an automatic farm) is because I want it to run whenever someone comes to the end, whether to refight the ender dragon or to kill the wither (I made a wither cage there) rather than it only running whenever someone has to manually go to it and AFK at it. – Lobster2 Oct 3 '19 at 0:05
  • Ah ok. I was kinda unsure as to what you wanted. I don't think there is a specific command for what you're looking for but you could also look into command block commands or mods? – 117Halo Oct 3 '19 at 7:00

Using offset masks is the correct way to do this with WorldEdit.

If you want to replace every air block above an End Stone with White Stained Glass, use //replace ">end_stone air" white_stained_glass.
However, do note that Minecraft now has 3 types of air blocks, so !#existing is often more useful, as that matches any location that doesn't contain a block (e.g. it only matches air types).

Source: https://worldedit.enginehub.org/en/latest/usage/general/masks/#offset-mask

| improve this answer | |

Just use dx dy and dz coordinates because after you type in the x y z then dx would be distance away from command block (or where the command is comming from) in a positive or negative direction to y and z same with dy but instead of filling in the range to y and z it's x and z, same with dz but instead x and y (would req. Brackets)

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.